Networking and multiplayer
Game networking is hard because the goal of networking is to keep game state in sync across multiple devices, but network latency prevents devices from communicating fast enough to keep that state from being occasionally inconsistent. Additionally, floating point rounding errors create indeterminate results across devices for the same set of input (this is where the timing and movement techniques discussed in Chapter 3, Exploring and Interacting come into play, since small differences in precision can result in huge differences over time). As a result, networking code becomes a process of reconciling differences.
There are basically two different approaches to networking depending on the requirements of the game. RTS and turn-based games usually use an approach called lock-step, which is a peer-to-peer model in which each computer in a match sends its commands to all the other computers in the match. The main strength of this model is that only a small amount of...