term for a test to verify synchronicity
between the players in a game session
. In synchronous games
, the game data gets processed simultaneously between the different machines involved in the session. The only thing to be sent across the network is user input
, typically, to reduce network traffic
. All machines, however, must process the results of these commands identically. If not, we can have the result where the game plays out differently on the players' machines, usually resulting in everybody thinking they won, as their opponents' commands start making less and less sense. Most synchronous games, such as Starcraft
and Battle Realms
, do a sync check to verify that the players are still synchronous.
This can be done any number of ways, but the most complete method would be to do a CRC check (wow, CRC check, that's EXTRA redundant!) on all of the data that must be synchronous and comparing these CRC's. Of course, collecting all of this data can be expensive, and is often split into groups of data and handled a block at a time as the game progresses, cycling through all of the data and checking. Then, all players can compare the CRC value they received from another player with their own, and if it doesn't match we can drop the connection. An added benefit of having a peer to peer game like this is that if one player has a compromised client, they can't alter game data or risk "desyncing" from the session. A little extra hassle for the hackers never hurt anyone.