Hey everyone,
I've been thinking for a while about server architectures. I've been thinking about what TQ Digital did incorrectly when they maintained a game company. I mean, yes... the game concept flaws are apparent throughout all of their games, especially in Conquer Online due to its past popularity. We all know that the game was designed to be small and limiting... but it was designed a decade ago, so we really can't be harsh on TQ, right? Well... looking at how they managed their popularity, they did the most cost effective solution and kept adding new servers. Was it the right thing to do as far as potential growth? Mmm... I don't think so, and let me explain why.
It does seem like Conquer Online was never really build to succeed. Even now a decade later, the game concept hasn't really changed much. Seems odd that it has received the popularity it has, right? Well, there's no doubt about it: TQ made a successful, hit MMORPG. What I want to ask is, what if when they saw the popularity... when technology was quickly improving... what if they brought the game through the ages? I mean, you can run their game on an iPhone... what does that say about their client's quality?
So, here's where things get interesting. What if (a few years ago) they invested more in the game they created? What if they kept up with the ages? Well, let's say they fixed maps size limitations; they fixed the limitations on server growth the game is currently presented with. More maps, large large maps, more monsters, more players, larger PVP events... more server processing... a crap ton more of server processing. We're talking about expanding the game's maps to all of China and beyond the borders. Better 3D models, etc. Then, let's say people had such an interest in the game that they flooded the servers like they did with World of Warcraft. Is the server architecture TQ holds true valid in such a scenario? Obviously not... so how would they have matched this ungodly amount of traffic?
Well... I've thought about this and I've mapped situations out quite extensively. Here's what I came up with with for handling such huge amounts of traffic on one server (and I would like your feedback). I get that this doesn't matter in a game like Conquer Online, but let's go with it. I started out with my Phoenix server design: an account server, a message server, and a map server. This design is flawed and unnecessary. I mean, it works and it works well, but it's still unnecessary. It's just icing on the cake in an attempt to support what Conquer Online currently doesn't support: cross-server communication. Anyways, we'll return to that later... that's not what I wanted to rant about and this new design would support it as well. Back to the server design.
Let's say we kept the account server. All players logging in connect to an account server of their selected regional settings. I know, that's a lot of traffic... and TQ's already doing this, but let's keep going. No game content delivered, not a problem. The message and map servers are the problems; they complete the game server concept.
So, let's say that instead of having the client connect to one server, it has the ability to connect to multiple (as it currently does with the anti-bot server). Instead of having the message server handle a large portion of the game server concept, let's make it an operator (a bit weird, I know, but stay with me). Just like a telephone operator, you call in... it checks a directory for you... and redirects you. In more details, it accepts the client, reads in the player's character location from the MySQL database (the directory), and sends back the response of what map server to connect to. It also holds the MySQL database for unifying the map servers.
The client then disconnects from the message server and connects to the appropriate map server. Each map server hosts a region or collection of maps. This splits up work very effectively, as it doesn't go through a message server or any other server to deliver content. It's just the map server at this point. When players teleport to another map out of the region, the client disconnects and recontacts the message server / operator for the new map server.
I was quite content with this, so I started challenging the design with problems. The first was chatting with other players. Chat is huge in any multiplayer game - and so I came up with two servers that would handle this appropriately. The first server is the chat server. It connects directly to players. If a whisper goes out, it is handled by the chat server. If a regional message goes out, it is handled by the map server the client is connected to. If a world message goes out, it is handled by the message sever. A bit messy, I know, but most conversation is done in private... whispering, party chat, guild chat, friend chat... etc. All of those private chats contain pools of players to send information to - so most of it is managed by that chat server. Then, for cross-server chat, there's a chat router server that routes cross-server conversations or brings in IM services like AIM or Skype.
Wow. Trying to explain this design has made me realize how overly complicated it really is. What are your thoughts on this? I know it's a weird concept to think about, but I thought it may be interesting. If you have any challenges to present the design, please let me know. I'd love to try and disprove the effectiveness of the design. Thanks for your time.
Regards,
Spirited
I've been thinking for a while about server architectures. I've been thinking about what TQ Digital did incorrectly when they maintained a game company. I mean, yes... the game concept flaws are apparent throughout all of their games, especially in Conquer Online due to its past popularity. We all know that the game was designed to be small and limiting... but it was designed a decade ago, so we really can't be harsh on TQ, right? Well... looking at how they managed their popularity, they did the most cost effective solution and kept adding new servers. Was it the right thing to do as far as potential growth? Mmm... I don't think so, and let me explain why.
It does seem like Conquer Online was never really build to succeed. Even now a decade later, the game concept hasn't really changed much. Seems odd that it has received the popularity it has, right? Well, there's no doubt about it: TQ made a successful, hit MMORPG. What I want to ask is, what if when they saw the popularity... when technology was quickly improving... what if they brought the game through the ages? I mean, you can run their game on an iPhone... what does that say about their client's quality?
So, here's where things get interesting. What if (a few years ago) they invested more in the game they created? What if they kept up with the ages? Well, let's say they fixed maps size limitations; they fixed the limitations on server growth the game is currently presented with. More maps, large large maps, more monsters, more players, larger PVP events... more server processing... a crap ton more of server processing. We're talking about expanding the game's maps to all of China and beyond the borders. Better 3D models, etc. Then, let's say people had such an interest in the game that they flooded the servers like they did with World of Warcraft. Is the server architecture TQ holds true valid in such a scenario? Obviously not... so how would they have matched this ungodly amount of traffic?
Well... I've thought about this and I've mapped situations out quite extensively. Here's what I came up with with for handling such huge amounts of traffic on one server (and I would like your feedback). I get that this doesn't matter in a game like Conquer Online, but let's go with it. I started out with my Phoenix server design: an account server, a message server, and a map server. This design is flawed and unnecessary. I mean, it works and it works well, but it's still unnecessary. It's just icing on the cake in an attempt to support what Conquer Online currently doesn't support: cross-server communication. Anyways, we'll return to that later... that's not what I wanted to rant about and this new design would support it as well. Back to the server design.
Let's say we kept the account server. All players logging in connect to an account server of their selected regional settings. I know, that's a lot of traffic... and TQ's already doing this, but let's keep going. No game content delivered, not a problem. The message and map servers are the problems; they complete the game server concept.
So, let's say that instead of having the client connect to one server, it has the ability to connect to multiple (as it currently does with the anti-bot server). Instead of having the message server handle a large portion of the game server concept, let's make it an operator (a bit weird, I know, but stay with me). Just like a telephone operator, you call in... it checks a directory for you... and redirects you. In more details, it accepts the client, reads in the player's character location from the MySQL database (the directory), and sends back the response of what map server to connect to. It also holds the MySQL database for unifying the map servers.
The client then disconnects from the message server and connects to the appropriate map server. Each map server hosts a region or collection of maps. This splits up work very effectively, as it doesn't go through a message server or any other server to deliver content. It's just the map server at this point. When players teleport to another map out of the region, the client disconnects and recontacts the message server / operator for the new map server.
I was quite content with this, so I started challenging the design with problems. The first was chatting with other players. Chat is huge in any multiplayer game - and so I came up with two servers that would handle this appropriately. The first server is the chat server. It connects directly to players. If a whisper goes out, it is handled by the chat server. If a regional message goes out, it is handled by the map server the client is connected to. If a world message goes out, it is handled by the message sever. A bit messy, I know, but most conversation is done in private... whispering, party chat, guild chat, friend chat... etc. All of those private chats contain pools of players to send information to - so most of it is managed by that chat server. Then, for cross-server chat, there's a chat router server that routes cross-server conversations or brings in IM services like AIM or Skype.
Wow. Trying to explain this design has made me realize how overly complicated it really is. What are your thoughts on this? I know it's a weird concept to think about, but I thought it may be interesting. If you have any challenges to present the design, please let me know. I'd love to try and disprove the effectiveness of the design. Thanks for your time.
Regards,
Spirited