Client-server architecture, used for a multiplayer game, is a different paradigm from what developers may be familiar with from single-player games.
For a multiplayer game, there are different ways that the communication between players could be accomplished. The method that HeroEngine uses is "client-server", which means that a central server handles most of the database and processing, and then individual software packages on different users' computers (the clients) communicate with the central server, over the network. This allows for an efficient sharing of files and resources, as well as good security for game-sensitive mechanics.
Another way of explaining client-server architecture is to think of one of the most common forms: web browsers, where an individual user's browser (the client) sends requests to a web server to request a particular page. Other types of client-server architecture include database servers and mail servers.
A common security problem in some games, is that the storing of certain game information is done on the client computer, rather than the central server. This may allow some unscrupulous players to hack their client, to give themselves an unfair advantage in the game such as infinite health, improved speed, magical spells that they might not otherwise have access to, ability to see "hidden" areas of the map, and so forth. But with the client-server architecture, the critical information stays under the control of the server, and is only passed to the client(s) as needed.
Each instance of the client software can send data requests to one or more connected servers. In turn, the servers can accept these requests, process them, and return the requested information to the client.
Characteristics of a client
- Initiates requests
- Waits for and receives replies
- Usually connects to a small number of servers at one time
- Typically interacts directly with end-users using a graphical user interface
Characteristics of a server
- Waits for requests from clients
- Upon receipt of requests, processes them and then serves replies
- Usually accepts connections from a large number of clients
- Typically does not interact directly with end-users