Two architectures are possible with multiplayer games (with some variations), centralized server and peer-to-peer (distributed). The architecture being presented is a centralized server, and was designed as such for five reasons, world consistency, security, avoiding the game clock problem, simpler implementation, and a viable business model. The distributed architecture claims that it creates less network traffic [2], and prevents the server bottleneck. However, Cronin et al [5] claims the network traffic for a centralized architecture is roughly the same as that of a distributed architecture, whereas Diot and Gautier [6] claim the centralized architecture creates twice as much traffic. The difference may lie in network topology and an application “optimized for the client-server architecture”. In addition, the server bottleneck problems can be overcome using a scalable architecture, as presented here. Therefore, the centralized server architecture presented here overcomes the opposition to a centralized architecture and provides all the advantages of the centralized architecture that are important in today's gaming.
Overall Architecture
At the highest level, the basic architectural pattern for the proposed MMORPG engine is a simple client-server model [1, 3, 4]. A small version of the game may consist of a single server connected over the Internet to one or more clients. This small implementation would limit the number of players and the size of the world to those whose speed requirements can be met with a single server model. A large version of the game would require multiple CPUs.
Figure 1. Layered System Architecture
The server and the client each have a layered architecture with the lowest layer handling communication over the Internet using standard Internet communication protocols. For security, the next layer is an encryption/decryption layer. To hide the complexity of the encryption layer from the game application layer, a communication or message layer is placed between the application layer and the encryption layer, as illustrated in figure 1. As might be expected, the top layer in this layered architecture is the game application layer. It is by far the most complex layer and is discussed in more detail in the following sections.
The Game Application Layer
Publisher/Subscriber Pattern
Conceptually, the client-side application layer interacts with the server-side application layer in a publisher subscriber pattern [1, 3, 4]. Due to the nature of MMORPGs, a single server must service many clients; but to minimize the amount of communication traffic, the server will not automatically update all clients with all changes. Instead, clients will register as subscribers to the server. The server will receive changes from a given client, and then notify all other clients who are on the notification list. Those clients who are interested in the change will then request an update. Those clients who currently do not require the information, may opt to ignore the notification or to retrieve the changes at some later point in the game. The primary advantage of this pattern is that the publisher does not require detailed state information for each ...