Halo Networking: An Interview with Chris Butcher

Stay Together Now

"Halo 1 is what's referred to as synchronous networking."
"Halo 1 is what's referred to as synchronous networking."
Photo courtesy of Bungie.net

Chris Butcher:

"Halo 1 was a network game because you could play it over the LAN (Local Area Network) with System Link. That was a very successful part of it. The thing that we really wanted to do for 'Halo 2' was to take that and extend the network model to the Internet so that you could play over Xbox Live.

'Halo 1' networking is what's referred to as synchronous networking. What that means is that if you have some number of applications and different instances of software running on different machines. In this case, the game is on four Xboxes. Those machines are all running the same game simulation and the game simulation is deterministic. That means that if you if you provide the simulation with the same inputs then it will produce the same outputs when you run all that code. We use that fact to leverage the multiplayer game. Instead of sending [the information] to every machine -- every piece of information about what's happening in the entire game world -- instead what we send is, "here are the inputs that we provide for the game simulation at this instant in time."

Now our game runs at 30 ticks per second, because NTSC is 60 hertz. So we run one game tick for every two draws of the screen.... and we render one frame at a time, so our frame rate is 30 frames per second. Every time we run the game, the machine samples what the players are doing in the game at that moment. Like, what they are doing on their controllers whether they're jumping or getting vehicles, turning three degrees to the left, pulling the fire button... or things like that.

It then sends that information about what the players inputs are in the game simulation to the all other machines. It also receives information from all of the players who are not on the local machine, and so that means every machine at the same time has all of the inputs it needs and they all run the simulation together... Then all the machines know where [each player's action] is in the world and the consequences, and the consequences are enacted on all machines... So the state of the world is maintained consistently across the machines."