Continuing from the previous post on peer to peer online infrastructures, we turn to client/server.
The Client/Server system goes back to what we talked about at the beginning of the previous post — Here, players or clients connect to a server that is running the program to play the game.
Depending on the scale and complexity of the game, some developers go with a few servers that hold a lot of players. Or developers have a lot of servers set up all throughout the world so that people can play with each other on a global scale.
When it comes to setting up a client/server architecture on the developer’s front, there are two ways to do it. You can work with a third party hosting company and use their servers and develop your games to interact with them. The best example of this would be the use of Gamespy over the last two decades who are no longer in business.
The second option would be to develop your own server architecture and integrate it yourself into the game. Since you are developing this on top of your game, this option takes a lot more time and money but can be worth it if you want complete control. And if you are a company that is going to develop multiple online games, you can use the developed architecture for your future titles and cut down on development in the future.Battle.net from Blizzard is an example of this and has become their online architecture for all their games.
Another option that’s available for players is to buy access to a server which they can then run their own version of the game for themselves and their friends to enjoy. Costs of doing this vary depending on the company and it’s best to do research on your own before deciding on which one to use.
Regardless of the amount, players still have to connect to the server in order to play. Unlike Peer to Peer, important information like player progression and stats are stored on the server instead of on the player’s computer. This allows someone to access their content from any client or computer and has become an attractive feature of Steam with their cloud server technology.
The use of servers has several advantages over Peer to Peer’s disadvantages.
The first advantage is reliability. Because the servers are maintaining and running the game, the player’s internet connection will only impact them as opposed to everyone playing. Unlike a Peer to Peer connection where if the host loses connection, then everyone does, as long as the server stays up the game can go on.
And since the server handles the sending and receiving of data, security is a major advantage. Since all players have to connect to a server in order to play, this allows the server to do security checks to make sure that the player isn’t hacking the game and makes it easier to detect if someone does hack.
The amount of control and security you have with the client/server option is what makes it attractive to designers who are working on large scale online titles. But it does have a few problems that you can’t get away from.
While the reliability of connecting to a server is an advantage, it can also be a disadvantage as well. The problem is that having to connect to a server obviously requires having a stable internet connection and there are still parts of the world that don’t.
Unlike Peer to Peer where the connections are based geographically, client/server requires everyone to connect to set locations. If there isn’t a server relatively close to your location, it will have a negative impact on your experience regardless of your actual connection.
A debate regarding this has been centered on Diablo 3 from Blizzard requiring connection to Battle.net even if you are playing the game in singleplayer mode. The reasoning from Blizzard has to do with security but this means that there are many people who have issues playing the game due to their Internet connection that they can’t get around because of the forced connectivity.
Remember, internet connection and computer specs are two separate elements; someone can have an amazingly powerful computer but poor internet. And in order to play games with forced online requirements means that you need them both to be effective.
And while having the added security of servers is great, you are also putting all your eggs in one basket. If your game comes under target by a DDOS attack or simply overloading from too many users at once, the entire game can go down until things are corrected. Leaving your fan base unable to play the game they paid for. Along those lines, if you decide to pull server support for whatever reason, unless you have an alternative option for online play will leave your fan base with a portion of their game unplayable.
And the last disadvantage is an obvious one: cost. It is far more expensive using a client/server architecture than it is Peer to Peer. If you’re dealing with third party hosting, then there is a monthly cost to renting the servers. While developers who are using their own servers must spend the money maintaining them and having people on hand to work on them if there are any problems.
But despite all these issues, client/server is still a popular option and one that has to be used.
When to use Client/Server:
As we mentioned in the last part, Peer to Peer connections are best suited for small scale online experiences. But if you’re trying to develop a game built around large online communities like MMOs or social titles, you need to use Client/Server. The reliability and security they offer compared to Peer to Peer makes them the preferred choice for game developers.
Especially if you are going for a competitive game where you don’t want to risk someone being able to easily hack their game and give themselves an unfair advantage.
As always, when deciding how you want to set up your game’s online infrastructure it’s important to do your research. Understanding the pros and cons of both as well as the relative pricing needed is crucial as a bad first impression can sour your fan base on your title no matter the quality of the gameplay present.