Removing server boundaries

3rd July 2009 – 2.39 pm

Twice recently, for City of Heroes and World of Warcraft, I find getting together with a friend in an MMORPG thwarted by being on different servers, even on a different continent and different Supermicro computers. Even if there were a way to transfer a character to another server my friends list or guild would not follow and either situation would only result in a continued separation of players. I am hoping the time will come when disparate server populations and continent separations will no longer be necessary and anyone can play with anyone else in the same game, and perhaps this can be made possible with some clever and innovative use of instancing and phasing.

I have to admit that I know little about the hardware that runs MMORPGs, so I shall state some assumptions I use. Each server holds its own population, with separate servers used for instanced areas, where characters can be passed between world and instance servers. I assume EVE Online is able to maintain a single population by its use of stargates that provide a convenient method of breaking up the virtual galaxy in to manageable server-sized chunks, essentially making each constellation instanced, with exceptions for highly populated single systems like Jita and where large-scale combats are occurring.

Along with the standard instance model, where a separate instance of the environment is loaded for each group to offer an individual experience, World of Warcraft has now shown some excellent use of 'phasing'. With phasing, the same PCs, NPCs and mobs can inhabit the same virtual area with only characters in the same phase being able to interact. Phasing allows different realities to be presented to different players depending on their relative experiences in the game world and makes for a much richer environment. As it also allows many characters to exist in the same virtual area whilst only displaying a subset of the total number of characters I wonder if phasing could be used to remove server boundaries.

The game could still use multiple game servers, to cope with large populations, but present itself to the client as a single server. Logging on, the player is shown his character and a selection of the population that is 'in-phase' with him. Any other character is 'out-of-phase' and so cannot be seen or interacted with directly. Friends can be made either through external or internal channels and a friends list maintained, as well as guilds forming. When this inevitably occurs the server starts to select characters to show in-phase that are connected to your own character, either from the guild or friends list, such that the people who you are most likely to interact with are always available, phasing out distant and unconnected characters to maintain optimal populations.

When a mature character—that is, a character in a guild and a populated friends list—logs in an initial network of phasing can be established by the server. A new character can be distinguised as being either from a new account or an established account. The character from the new account can be assigned an initial arbitrary phasing, the one from an established account can use guild and friends list information to determine a likely pattern of required phasing for the session.

My first thought is that as characters get phased-in other characters with no connection can be phased-out to maintain the overall 'server' population, but that is perhaps not being ambitious enough. Instead of attempting to maintain an overall server population of phased-in characters, each zone or region in the game can have an 'ideal' population figure. Rather than deciding that, for example, the Northrend server has a maximum connection count, instead work it out per region or city. Determine that Dalaran can hold a population of a certain number, before causing latency issues or being too crowded, and then spread the total number of players currently in Dalaran between the relevant number of phased instances to meet that ideal population in each instance, respecting guild and friend connections.

We are likely to see on any given server most of the population crowded in the current levelling environment, with sparsely populated areas in the areas holding older content. Plenty of players have already lamented the lonely process that is levelling in a mature game, but imagine if the entire game population, across all servers, could be taken in to account with phasing. The designers set a population cap on a low-level region like Westfall and rather than each server only containing one or two lonely alts the entire game population is split amongst a few phased instances, creating lively and vibrant zones to quest in. Preference, but not exclusive access, can even be given to phase together characters within a level range margin for the region to help prevent problems with balance, for example, should a guild take advantage of a scenic area for a meeting.

Fewer instances of Westfall and similar regions of low population would need to be run, along with more instances of heavily populated areas like Dalaran and Icecrown, whilst maintaining similar visible population levels for each player. And settlements and quest areas can have different ideal populations, so that cities can still bustle without quest locations being over-camped.

There are some obvious problems. Selectively showing characters from guilds and friends lists could become difficult when friends of friends of guild members all come together, but I imagine it can be reduced to a solved mathematical network or graphs problem, and friends lists are already limited. A network also could be simplified by examining frequency of communications to determine stale relationships. The problem of character namespace across the entire game should be a simple matter of allowing extended names. The main issue may be how to handle chat servers, as a hugely popular game could have an unmanageable number of players in the same zone. One idea would be to restrict the locality of the general chat channels, maybe even to have a chat channel character limit, and rely on custom channels and better designed group configuration and selection tools.

As for phasing characters in and out, which would likely have to be handled by passing them across instance servers, this could be done intelligently. A population could have dual minimum, optimum and maximum settings, where there is a server limit and a phase limit. The server limit is the number of characters the server is capable of managing, the phase limit the ideal number of characters to inhabit each zone, with the server limit being much larger than the phase limit. This should make feasible phasing characters in and out as required by changes in player networks, with server limits handled by re-evaluating optimal player network phasings during occasional instance changes.

It would no doubt take some nifty code to implement a single phased reality across a server cluster, but being able to remove any boundaries to friends playing together as well as addressing issues with relative population densities must be a tempting reason to overcome any technological hurdles. Not only that, but there is surely a huge incentive in allowing everyone to play on a single server, removing all boundaries currently restricting friends in the ever-shrinking internet-enabled and blog-connected gaming world from playing together, as a game to get this right would have a distinct advantage over the old model of multiple geographical regions and servers.