Sunday, May 07, 2006

Network Protocol

By design Halo: Combat Evolved was inherently not a major multiplayer game. The main original selling point of Halo was the exciting graphics and the artificial worlds created on the new Xbox platform. The average initial player most likely ran through the campaign mode and enjoyed every minute of it as Bungie managed to keep you on the edge of your seat through much of the game. However it was quickly discovered how much fun a player could have competing against his own friends in the multiplayer mode. This multiplayer mode was not designed to be played over the internet, which is quite obvious through the network design. However the desire to compete against new competitors on the internet was just too great and soon services such as Gamespy and Xbox Connect were offering the ability to play Halo online. Unfortunately playing H1 online requies a very fast internet connection (especially for the host) and a small round trip latency (or ping, ICMP Echo Request/Response).

Due to the fact that Halo operates on a Synchronous networking model there can be a large amount of lag due to the round trip flow of information. While two xbox's are playing Halo they are both operating in a deterministic world evolving by their actions predicated upon one another. The joining player's actions are carried out immediately and are rendered in relation to the Server (host) xbox. While the joining players reticule may be showing the location his bullets should be landing due to the round trip latency his bullets will be landing at a slightly later time within the game. Add in character motion and your bullets will lagging behind the player you are shooting. This can cause an unfair advantage for the host xbox and create problems effectively fighting for the client xbox. This problem can appear even more severe in up-close bombat with weapons such as a shotgun or plasma rifle. However with skill and planning the latency issue can often be overcome. Over medium to long distances (red base to blue base on Hang 'em High) a player can estimate the lag he is experiencing (based on current bullet lag pattern) and adjust to shoot and kill effectively. I feel the ability to learn and understand how much a player is lagging is a very important fact which allows experienced players to compete with lag. Due to the fact that the player can understand how much they are lagging, they are able to compensate for the lag.

Halo 2 is not based on a synchronous networking model. While Halo 2 is still based on a client/server model there is a very large amount of predictions produced in real time, in game. The client relays information about what they are doing; throwing grenades, shooting, running, jumping, and that information is then processed by the server and that information then given out to all of the other clients. As a client views another character running their xbox makes predictions of their future behavior based on their current behavior. If the player is running in a certain direction then it can be predicted that he will continue running in that direction for a certain amount of time. The prediction made is a few hundred milliseconds. The pitfalls of this mechanic can be seen in game when you may see a player running in a certain direction then suddenly jerk into another direction. The player changed his heading while you were predicting his next position, and when you (the client) received the updated version of his position (from the server) your xbox compensated for his position. Another memorable example of this behavior is the rising elevator in Ivory Tower. Your xbox creates a prediction of the behavior of the elevator as you step onto it, and as the server updates the actual position to you it can often effect your velocity throwing you into the ceiling.

Another design characteristic of Halo 2 is the fact that only the server can create destructive elements and award kills and so forth within the game. While you throw a grenade your xbox (in your first person) renders your arm pulling the grenade and throwing it, as well as creating the sound of you pulling the pin. This information is relayed to the server and the server confirms this information, relaying to everyone in the game including yourself, thus creating the grenade flying from your hand. Examples of this behavior can be experienced during a laggy game, where you will throw a grenade (created in your first person render) but the grenade isn't created in the world. Or you will snipe an opponent but you won't receive the "you sniped ______" message for an amount of time.

While this model is designed to create an atmosphere for a large number of xbox's playing over a great distance it creates one major problem: the inability to learn and predict the behavior of lag. Very often it may appear that all of your battle rifle bullets are striking your opponent, but for some reason you are unable to kill them. This is due to the prediction of opponent movement and behavior by your xbox and the latency with the server confirmation. The best way to really experience this behavior is to pull host when you often are unable to pull host. One game not long after the update (after I had reaquainted myself with the BR behavior) I pulled host in a double team game on Ascension. I had a BR at big base and began shooting an opponent that was about halfway between the needler (above the OS) and and the end of the bridge coming from Banshee. Remarkably I put this player down in 4-shots to the head. I was shocked by the effectiveness of my Battle Rifle and was amazed with the ease I could kill opponents. I was able to kill opponents who were fighting my teammate who was at small base simply with my BR. Now in exactly similiar circumstances when I am not host it is much harder to kill opponents from these distances. Very often it will appear as if my bullets are striking them exactly the same as before, but for some reason they appear to have no effect on them. This is the result of the networking protocol model within Halo 2, my shots are being displayed as being accurately placed, but their effectiveness is nullified due to the lag. I am unable to predict the lag and correct for the difference.

In reality it can be understood that the network model for Halo 2 was designed to allow players to play one another on Xbox Live with much higher latency then they were able to play in Halo 1 (where lag over LAN can be noticeable). However while this model is successful in the goal of allowing a large pool of possible opponents, it often sadly reduces the chances of victory exclusively to the xbox who is the host. This can be argued for Halo 1 as well, where I would often beat an opponent by 10 or 12 kills when I knew that if we were lanning I would likely beat them by 20 or 30. However the ability to adjust for the lag allowed me to effectively defend myself and present a useful offense. This abilily however is negated online in Halo 2.

2 Comments:

Anonymous Anonymous said...

Wow, this is very true. My biggest gripe and complaint of Halo 2 is all in this post. I hope with the release of Halo 3 in 2007 that they can fix this problem, I belive they can because the majority of 360 games I've played were very much lag free. Lag is almost not an issue on the 360.

Thanks for the info

11:39 PM, May 09, 2006  
Blogger Annihil8or said...

Yeah in reality I feel this is a problem Bungie might not even realize as an actual concern. Yes, decreasing lag is always a concern in an online game, but the fact that people can't adjust for it is pretty major. I'm pretty sure the 360 "fudges" your bullets more then the regular Xbox. I mean I have no physical proof to support this but I've played on my friend's 360 and you can unzoom people with a sniper all day long.

11:12 AM, May 10, 2006  

Post a Comment

<< Home