10.12.2007

Carving up the world

Tobold suggests suggests that zones should be instanced and made cross-realm to overcome player density inbalances. While instancing zones like in Guild Wars might solve one problem, fragmenting the world does not come without cost.

The most obvious one is loading lag. When you step into an instance, you get a loading screen. The client loads new graphics, sounds and models into memory and discards old ones. But that's not all that happens in the background. The state of your character is transparently transferred to a completely different server, the instance server. Aside from chat channels, mail and group/guild management, nothing that happens inside the instance affects anyone else. Interacting in-game between players on different instance servers is impossible. Now why is this a bad thing? Kalimdor, Eastern Kingdoms and Outland (which includes Draenei and Blood Elf starting zones) are all on different servers. Nobody expects to interact with someone on the other side of the sea. But normal zones are adjacent to each other. You can see to Hinterlands from Hillsbrad Foothills. A player standing on the Hillsbrad side can shoot someone on the Hinterlands side, and the Hinterlands player can seamlessly run from Hinterlands to Hillsbrad and slash the other player with his sword.

Now let's take a look at the same scenario when Hinterlands and Hillsbrad are in different instances. The Hinterlands player could not see anything that happens in Hillsbrad, and vice versa. If they are on the same faction, they can chat using guild chat or other global channels. But that's it. No other interaction is possible.

Then why do game developers use instancing if it limits interaction? Scalability. One instance server is as good as the other one, so you can have a whole army of servers ready to split the load to. In a sense, splitting the world into different realms is just instancing the three world servers. No current hardware would be powerful enough to handle real-time interaction between 9 million players. Current world servers "crash" if you have 600 players in the same zone, which is not that hard to achieve during world events, especially on PvP servers. Fortunately, nobody cares if they end up in Alterac Valley #13 instead of Alterac Valley #10. Or end up on the wrong world server after returning from a battleground (don't laugh, it has happened). Except.. when you have a friend that's currently playing on AV #10. Sure, you can queue specifically to AV #10, but you might not get a spot. And if the developers allow you to freely join any instance server you like, the scalability benefit they got from instancing quickly dissipates.

What about always putting the same party/raid/guild to the same instance server? A good idea, unless your circle of friends is larger than a party/raid/guild. If you have played on a specific WoW realm for an extended period of time, you probably know dozens of players well and know hundreds by name. You might as well call it a realm instead of an instance.

But why couldn't instance servers talk to each other and seamlessly delegate responsibility when the player moves past the Hillsbrad - Hinterlands border? They could, but the issue is how much information the instance servers should share and at what point the Hillsbrad server no longer needs to care about the player that went to Hinterlands. Inter-server information exchange is relatively slow when compared to information exchange within a server, so the transfers need to be kept to a minimum to ensure a tolerable and relatively lag-free playing experience. Distance would be the obvious limiting factor. No matter what you do, a player in Silithus can't directly interact with a player in Winterspring. But where's the cutoff point? The disparity of load is an another issue. You'd probably need more servers for Shattrath City or Orgrimmar than you do for Winterspring. Except when you have a player-created event in Winterspring which is about to be attacked by other players..

Since demand for processing power depends entirely on player actions, it's always somewhat unpredictable. So any such system would have to be able to reassign servers dynamically to respond to sudden changes of demand. Such a system would in theory allow a single, shared world which could handle a large number of players. There would be no need for instances.

Just don't ask me how to implement it. If I knew, I probably would be busy making the Best MMORPG Ever.

No comments: