@Devs, here is how you fix Stash loading without re-architecting it

Use Lazy Loading.
Don’t load other player’s stash into the client unless the player initiates the “Trade” action. i.e. delay loading of Player B’s stash until Player A initiates trade with Player B. All other player’s stashes remain unloaded.
The destination for the stash (in memory) can remain the same, meaning you don’t need to rearchitect where the stash loads, just when, and how many.

You’re welcome.

12 Likes

I’m sure they’ve thought of that and are trying to minimize the number of calls to the database because WOW devs have said before that is where the main bottleneck is.

1 big query is probably preferred to 100 small ones.

2 Likes

They are already making calls to load every player’s stash. This reduces the # of calls. Also, never assume they already thought of something. I manage 2 teams of really skilled and talented developers, and they don’t always think of the right solution. That’s what collaboration/paired-programming techniques are all about.

4 Likes

Not sure about that :slight_smile:

3 Likes

1 big call is probably better though. So you have all players near you in memory. So if you try and trade you have everything known already so you don’t have to query the database unless it’s something new they didn’t have previously that gets put in the trade window.

I’m sure they are just dumping the inventory to memory and then when people trade it just does a local lookup client side and if the item is in memory it doesn’t try and go out to the database.

This is what I’m saying.

I’m not saying it’s good. I’m just betting this is what is happening.

The more important question is why load all the time ?, why not load only when entering town ?

1 Like

The problem with that model is that the ratio of trading to non-trading is so low, you lose all the performance gains of the single query to the sheer number of unneeded queries.

2 Likes

I said, it’s not good, it’s just what is happening.

Do you not understand english?

They probably prefer it though for them, over 100000000 calls to the database which probably cause other performance issues.

You mean rather than 10 calls to the database - you know, the # of times players trade.

You shouldn’t do a technical post about something you don’t know, technically. We don’t know anything except “it load in memory”. It’s still a high level game technically, and Blizzard team are not beginners. It’s quite insulting for them.

2 Likes

You’re asking the wrong questions. The question isn’t how to fix their garbage coding.

The question is why they used this architecture at all To begin with?

1 Like

It depends man. There is probably a middle ground. I don’t know all the details.

I’m just telling you WOW devs complained about this exact thing before and said it’s why they have scaling issues.

The database IO is the main issue.

You’re an engineering manager? So…when was the last time you wrote code?

And at what scale?

#Of Roundtrips certainly can become a bottleneck.

Yes, but I also know re-architecting it is way longer and more time consuming than a performance fix.

If their database is limited on the number of I/O requests it can handle it will literally brick it if you exceed the number.

They have to do something.

Tell us you don’t understand without telling us.

I forgot internet people are all senior software engineers those days… they can even resolve technical issue without seeing any code :slight_smile:

The fact that the game loads up all of the character data for the 11 other players in your shard explains why the game is so laggy.

Hahaha manage 2 teams… mate if you did youd be loaded and wouldnt bother being here youd be on your yacht

I am completely ignorant on the subject, but why would the game need to load the stash for trading in the first place? Shouldn’t it just be loading the character’s inventory?

Aww can the poor babies not handle being told their cute little game sucks?

1 Like