Sunday, January 9, 2011

Scaling

When we released the necromancer expansion back in November, I expected a pretty large spike of new players. I figured we'd get a bunch of new people from the announcement, but also a lot of high levels would want to try out the new class from scratch to see how it worked.

And new players we got; perhaps four times as many as usual, which again was about what I expected. What I didn't expect was that we would be nearly incapable of handling them in terms of areas and content. There wasn't really any fighting over equipment and quests, but from time to time it seemed newbies literally had to queue up to get their turn at a particular quest item.

This got me thinking about scaling. If we can't effectively handle four times the standard newbie load, we'll be limited to a player base less than four times the size of our current one. And it's not just newbie areas; we have to think about it everywhere, from areas to exp thwacking to the who list to the the size of Ralnoth. We might not have five hundred people logged in right now, but even if we did the game probably couldn't handle them all.

Here are some things I think could help with that:

- Instancing. Instancing allows you to create private copies of areas for players, so that they don't interfere with each other. This is great for quests, in that each player or group can be on their own private copy of the quest, and don't need to worry about someone else getting through it first and taking the quest item. Judicious use of instancing can help eliminate quest bottlenecks, and it makes the world seem a lot bigger than it really is.

- Gold and experience thwacking. Right now, gold and experience are thwacked globally, so that if a mob is run too much the returns on it drop for everyone. This is fundamentally dependent on the number of players; a better way would be to put thwacking on individual players, so that the actions of one player don't break the game for someone else.

- Item maxload. Having limited load on items is another thing that's fundamentally dependent on the number of players. Once the player load rises to a certain level, a maxloaded or rarity-based item will simply never load again. Maxload and rarity effectively need to be removed to fix this.

- The who listings, and other display systems. Having a five hundred person who list would be ridiculous. Beyond a certain point, you pretty much have to switch to a query system instead of a global listing system.


Some of this stuff is already in transit or is being worked on; in particular, instancing was booted in earlier this evening and is being tested as we speak. Maxload for the most part was phased out last week.

It's a decent start. One bottleneck at a time...