Serving Up Servers
One of the challenges of developing a massively multiplayer online game is infrastructure, something that lets us even have all you wonderful people super-ing it up in the digital world we're creating for you. We want to have as many of you over as we can, and it seems an awful lot of you are interested in joining in, so we have to make sure we've got enough room at the table. So to speak.
The solution we've come up with is more tables. Or, to break free of the tortured metaphor, more servers. Our idea is to have a separate server play host for each for each major area (usually a district of the city, instance or base map, etc), and another to handle each major task, including one to act as a coordinator of all the others (sort of like a butler). These will each run in their own virtual machine, allowing us to add instances as needed, or to reduce them when no longer needed.
The result of this is that these various servers share the load of hosting you guys in your virtual, superpowered romps, but without splitting you, the players, apart from each other. When you transition from one area to another, you switch which server instance you are connected to. This will prompt a loading screen on initial launch, but the goal is to allow for a streaming transition later on.
Most MMOs just have different servers, sometimes called shards, that each handle a parallel version of the same exact world. While this manages to share the work of hosting the players, it does in such a way that people can't really interact with the people on other servers. With most games, you have to find out which server they are on in advance, or else you'll probably end up on the wrong one and you won't be able to play with each other.
We look to avoid that. We are all in this together, and we want to keep it that way.
One option this approach enabled was the ability to create instanced maps for specific purposes. A common example we use in conceptualizing this is PvP vs PvE play. Rather than needing dedicated zones or arenas for PvP play, or having PvP players interacting with PvE players in the same zone, we can spin up an instance of any map which would be dedicated to PvP play, putting them into their own sandbox where they can PvP to their hearts content without PvE being any wiser. Switching on ones PvP mode would switch them from the PvE instance to the PvP map. This approach is not limited to just PvP either, it would allow for specialized zones for events, role-playing opportunities, even special missions. It opens up a lot of options for us, which in turn means we can offer more for you. We'll be talking about PvP some more in a later update, but for now let's stick with the servers.
While the maps may be individual, everyone in the game will be able to interact with everyone else in the game – with a dedicated chat server making this possible in combination with mission servers, a server for the auction house, etc. While we will have measures in place to make sure things don't get too crowded, we still plan to evoke a sense of everyone being in the game together.
It is not an unheard of model, several European and Asian MMO’s use a similar solution, and in testing it gives us the needed scalability without heavy development or operating costs. By splitting up these tasks, it also enables the utilization of as many off-the-shelf solutions as we can get for the persistent world database, chat server, login manager, etc. Even the instance servers are based directly on the existing Unreal Engine multiplayer server.
The goal is ultimately to give a large, and scalable MMO solution. By the use of specialized servers for the tasks needed, we know we have one which will allow us to grow over the years.