I have recently been playing World of Warcraft. While the game has much to recommend it, especially since they have a trial or starter edition that is free-to-play [up to level 20], it has a serious problem with its design of “realms” or “shards” as some games call it.
“Shards” or “Realms” of course is the name used for the “instances” of the server that are required to support very large numbers of players. These games are MMO – Massively Multi-Player – and “Persistent” which means that they do not place players in private “instances” of the game as they play. But it is not possible to have hundreds of thousands of players all playing in the same server at the time. How is the game going to solve the problem when thousands of players show up in the same town at the same time for a party or just to hang out on a Saturday night?
Well the point is that World of Warcraft solves this problem very badly. There are better solutions out there. Let’s look at the Wow solution and then look at some other games and see much better solutions.Where Are Your Characters?
To examine the problem more closely we need to understand where the characters are that you play.
They are in a database. All the information about the characters for an account are stored in a database.
So what are the performance issues? There are two issues:
- Access to the database to retrieve and save character information as each change occurs to the character. This does not include each damage hit you take, but each change to your inventory, and each change to experience you achieve, such as each quest you complete, each monster you kill or each activity such as crafting or trading that changes your character in such a way that you would not want to lose the change if you logged out at that instant.
- And the surrounding game state, that is the nearby players, and monsters and other state of the environment that affects your character. This is separate from the database.
Let’s Have a Party
So let’s see what happens when a game has a party and everybody decides to show up in the same town at the same time. Guild Wars does this all the time. About six times a year they have week-long festivals that severely tax their servers. I’m not familiar enough with Wow to know if they have parties too, but I’m sure they have the “Saturday Night” effect, I’ve experienced it, and it is a real mess. I have been playing some human characters that start out in Elwynn Forest. At about level 6 you are sent on a quest to the nearby large city of Stormwind. Well don’t go to Stormwind on a Saturday night. The place is mobbed by high level characters with their huge pets, and mounts, jockeying up and down the narrow streets showing off and visiting with their friends. I could not walk down the street, and for some reason it picked me to bump off the server repeatedly. It took several tries before I was able to “Transport” home and get out of that place. It was so bad that I moved to another Realm, but the problem is that with Wow, your characters don’t exist on that other realm.
Guild Wars parties are never a mess on festival days. Let’s see why.
Guild Wars Districts
There is a universal Guild Wars database, so all your characters and all your friends characters are in one place. Then if you want to party, the system automatically puts you in a “District”, which is the game server “instance’. If you and your friends end up in different Districts, that is no problem, you can still Whisper to each other and agree on a District where you can meet. Then you pull down the menu at the top left of your screen and it moves you to the District that you choose. Of course when you are Questing, your party is given its own instance of a server so you are alone, but this design works perfectly well for “Persistent” MMOs too. During festivals I have seen this list grow to a hundred or more districts of one town. If you move to another town where there is no party, then there are only one or two Districts.
One might argue that Guild Wars is not as popular as Wow and so it has no database problem, and this is true, but there is a design that solves the Database Scaling problem: Multiple Servers. In this case we just add more servers when we have so many users that the database can no longer handle the load.
Jade Dynasty is a “Persistent” MMO run by many folks in Asia, and by Perfect Worlds in the US.
In this case there are only two, but there could be several. Each server has a unique set of characters and you can’t “Visit” or “Party” with your friends on other servers. But if they are on the same server, then you have “Realms” which are like Districts. Once you log in to the server with your username and password, you are presented with an initial Realm, and it remembers the last one where you visited. There are special Realms for Trading to keep other realms free of all the traffic of trading.
To find what Realm you are in, just click on an icon next to the compass.
So if you and your friends meet in Jade Dynasty, then you have to go back to the Login Screen and switch Realms.
Of course it takes a little longer to logout – which takes you back to the Character Selection screen – and then change the realm, which takes you back through the big list above.
Heros of Three Kingdoms
HoTK is another game from Asia that Perfect Worlds provides. HoTK fixes this problem in the way that Guild Wars does, with a pull down to choose the Realm right in game.
As you can see they have a large number of Realms. The drop down from the Compass let’s you switch Realms instantly to join your friends or participate in “instance” dungeons that are only supported in certain Realms. For example, to do quests for “Mounted Combat” you need to switch to the “Events” which are only given in Realm 11.
The Wow design has no realms really, but only “servers” so each time you switch to another one, you have none of your characters. Of course as you play, you probably won’t meet other folks from other servers. But if you run into Saturday Night as I did, you are faced with the problem of building characters on other servers. Fenris is apparently completely loaded. And Galkrond and Nazgrel are billed as being for “New Players” but I created some characters on Galkrond and then tried to start them off, and ran into a mob in the starting area. It was so bad that I started the same character again on Nazgrel. So I have three instances of the same character on three different servers. What a mess is that?
It’s not possible to combine the Servers at this point since all these games depend on character names being unique, so if they mashed them together they will have to somehow allow you to rename the characters to make them unique. I remember that 2Moons once did this. After they combined the servers, when you logged in, your characters were forced to unique names and then you were given a chance to rename the characters to unique names of your choice.
World of Warcraft needs Realms.
But when they do this, they will end up with too many servers. If they actually implemented Realms, they probably will find that they don’t need all of those servers. If you notice the list, there are a large number of PVP servers. This is probably due to high load on those servers. Well that load is due to “Game State” load, not database load, and since Wow only has one way to “shard” its world – Servers – the design has only one way to deal with Game State load, and that is to make more servers.
What a mess.
Allow Players to Move
With their server-only design, they could allow users to Manually load level their servers. They could provide a free means to move a character or a whole group of characters between servers. It should be free and completely automatic – no person required to do it. It could work like this.
In the Character Selection Screen, there is a new button called Move to New Server. This presents a wizard that has two steps: You choose the server and a new name for your character.
- The server choice is simple. You know where your friends are, or, you are given some indication about the loading in terms of total recently active character population on that server. Say an average of character hours over the last week or month – which ever would give a smooth estimate. This would allow folks to make intelligent choices about moving to less populated servers.
- The next step of the wizard checks to see if the character name is unique. If the current character name collides on the new server, then, you can choose a name that will not collide, and of course it’s checked immediately before you go on, and you get to see if it’s unique right away and don’t have to commit until you get to try several options. This is unlike the character creation screen that only tells you after you commit.
They could limit character moves to once a week for each character if there is some reason. But you should be able to move your whole stable around once a week if you like. Also it should be free to move since the idea is to level the load on areas that are over crowded. Don’t charge for something that benefits everyone.