Marathon, a Doom-style game for the Mac, allows up to eight networked users to play with (or against) each other. Why eight? It's nearly arbitrary: The dialog box has room for eight selections. Games such as Marathon 2 may support more.
Bungie wanted its game to run on any Apple network, including AppleTalk. The problem is that on AppleTalk networks, every packet your application sends requires that the microprocessor handle two interrupts -- one for the transmission and another for the acknowledgment. With a game running at 30 frames per second, you need to send out 30 messages per second, resulting in 60 interrupts. And that's just to service the outgoing messages. Incoming messages from the other network players bring additional interrupts. Bec
ause network services still run in the 68000 emulator on Power Macs, this shortcoming affects even them.
Bungie's answer was to use a 32-bit vector to represent the player's keystroke every 1/30 of a second. The game broadcasts the vector over the network to the other computers in the game. Those computers in turn are broadcasting their own 32-bit keystroke vectors, also 30 times a second. Thus, each computer maintains the correct state of all the players in the game. According to Jason Jones, lead developer on the Marathon project, most network games employ a similar strategy to minimize network traffic.
The physics-model concept in Marathon led to an interesting problem. Because each computer independently computes the players' states, they can quickly get out of synchronization if the different computers have different physics models. That makes the game essentially unplayable, since in one computer the players might be shooting at each other, while in another they aren't even in the same room.
Marathon 2 will correct this little glitch by distributing a common physics model when starting a network game.