Hmm. You can read my little essay about the net code in different versions of Halo below, and I wonder if you’d have anything to add to it. I wrote this quite a long time ago, so I could now say things better, such as the fact that machine states only give the impression of synchronizing over the net because player positions synchronize and locally change the machine states for the client.
http://www.halodemomods.com/wiki/How_to_mod#The_Halo_Multiplayer_Networking_System
The Halo Multiplayer Networking System
Terminology
Network synchronization deals with several issues:
Latency (“lag”)
Difference in states between the host and the clients, measured in milliseconds as Ping. High ping numbers means higher lag, and thus a larger difference between what the client is seeing and what the host is saying actually exists.
Network Type
Either Local Area Network (LAN) or Internet. LAN means that the computers are connected directly to each other, whereas Internet means that there are other computer servers acting as middlemen. Direct IP is an alternate way of finding a host using an internet connection.
Warpage
Warping means moving in a skipped and jagged manner instead of smoothly, due to slow updates on an object’s actual position.
Leading
Aiming ahead of the target, in advance of their presumed trajectory, so that the trajectories of your projectile and the actual position of the enemy player collide. Higher lag means larger leading and aiming further away from where the moving enemy player appears on your screen.
Marathon
Local Area Networking (LAN) was supported in Bungie’s Marathon game trilogy, and later projects such as Aleph One expanded that functionality to include Internet multiplayer gaming with up to 8 players. The system would send map files to all the connected players during the launch of the multiplayer game. Thanks to common resources used by the engine such as the Shapes and Sounds files, these transferred map files were mere kilobytes in size. Thus, a player could download a new map from a web site like Simplici7y and then host a game without the clients needing to download the map from that site.
Network synchronization latency, or “lag”, was handled very simply: the hosting player of the game would suffer about as much lag as all the other client players. Data passed between computers on the network included the positions of players, enemies, projectiles and machines. Thus, any ping over about 400 milliseconds would result in all these moving objects in the game to warp for both the host and the client. The nature of the warpage was revealing of the type of network synchronization; from the players’ perspective, shooting directly at the enemy was not effective – instead, you had to “lead” both the targets AND the firing of your weapon. There was also a dramatic decrease in network performance with the addition of more playing clients, but not with the increase of non-player characters (NPCs) such as enemy aliens.
Halo 1
Bungie improved the network code with Halo 1, which also supported LAN and server-published Internet games, but this time with up to 16 players. No longer were there dramatic decreases in performance from having many players. However, map files were much larger, so players would need to download on their own any maps that were modified beyond the scope of information sent by the network code. Player positions, locations of re-spawing item collections, projectiles, vehicles, and anything else that fell into the category of CSS was sent over the net code. However, machine positions that would be toggled by control switch states were not synchronized, and there were no plans to include control switches in multiplayer maps. Any machine states that relied upon player locations would be synchronized by the net code for the player positions.
One might say that the network synchronization methods used by Halo were more efficient than synchronization methods used in Marathon. The hosting player would not experience any lag, but the lag was unique to the joining client players. Weapon triggers were no longer attached to the net code, so players could shoot and have an immediate response. Yet projectile position would still need to be synchronized, and the effect could be that a player would shoot and see their projectile moments later. Leading was a very large requirement for winning in Halo 1 multiplayer games. Typically, before a player would experience very much projectile lag, the game would “pause” a player’s controls and display a LAG icon on the bottom right hand corner to indicate that their ping was dangerously high and they risked losing the connection to the network game. A joining player’s connection to the host would typically risk being dropped if their ping reached over 1000 milliseconds (1 second), although players have reported much higher pings, even into the 2000’s. (Still, some players would abuse the system over Xbox Live’s multiplayer server games by switching off and on their modem at critical moments; more information on this exploit is available elsewhere.)
Halo 2
Halo 2’s networking code was a great improvement in synchronization, and supported up to 64 players. Like many other popular first-person multiplayer games, a triggered event would get sent as triggered to the host - the client would not need to wait for the host to tell them that their events were triggered. Machines could be toggled by control panel and players could shoot directly where other players appeared on their screen. Leading was no longer necessary, although warping did still occur with slower connections, even with fewer people than would trigger warping in Halo 1 games.