Online multiplayer games are generally configured
in either a client/serveror peer-to-peer topology:
Client/Server Games
In a client/server game, network traffic
about game state (e.g., the positions of players in the
game world) flows according to a radial-topology (see right).
All the players send information to the server about what
they are doing, and the server sends information back down
to all clients about each other. The server is the final
authority about what happens in the game. It is common to
make it possible for a player's computer to also act as
the server whilst he/she is playing the game. This avoids
the need for having a lot of dedicated computer resources
in a server farm.
Peer-to-Peer (P2P) Games
In
a peer-to-peer game, game traffic flows directly from each
connected computer to every other connected computer (see
left). Each player sends information to every other player
about what he/she is doing, and steps are taken to ensure
that every player uses this information in exactly the same
way to produce exactly the same results. It is necessary
that every peer agree exactly about what happens in the
game because there is no authority to perform corrections.
Game Examples
The client/server topology
is typically
used for first-person shooter games, such as the Quake series,
Half-Life and Battlefield 1942. It is also sometimes used
in vehicle simulation games. For example, in Battlefield
1942 you can control tanks and planes.
The peer-to-peer topology
is typically
used in real-time strategy (RTS) games, turn-based based
games, simulation games, and sports games. Examples of games
that have used this kind of topology are Starcraft and MotoGP.
Client/Server |
Peer-to-Peer |
Each
game needs a server |
Games
do not need a server |
Approximate
representation of game world |
Exact
representation of game world |
Scales
well to many players |
Does
not scale well (< 16 players on DSL) |
Responsiveness
determined by server (good for twitch games |
Responsiveness
determined by slowest peer (good for RTS and games
where latency can be disguised |
Difficult
to continue game if server crashes or disconnects |
No
server so game can continue until all players disconnect |