A simple breakdown of Halo 4’s network models, and why players might experience lag in some gametypes more than others.
Issue: Lag during Spartan Ops and co-op campaign.
Halo 4 uses 2 different network models for online play. Spartan Ops and Co-op run on a “synchronous” network model. Let’s say you are playing 4-player co-op. One player is the “host”, the other 3 are “clients”. All 4 players load the level, and all 4 players start the mission at the same time. Now, when a “client” presses a button, such as ‘jump’, their Xbox sends a signal to the “host” Xbox, telling it what the client player is doing. The host Xbox receives these signals from all 3 clients, then calculates every movement, bullet fired, damage done, etc, and sends the updated information out to all the clients, who’s Xboxs then reproduce the changes. But, the host will only send out these updates when it has received signals from all 3 clients. It does this to maintain accurate and consistent information across all 4 players (In other words, all 4 players are seeing the same things in the same places at the same time).
This is where the lag comes in: If just one of the players in the game has a bad connection, it slows down their ability to send information to the host, which means the host has to wait longer before it can send out gameplay updates to the other players. So, even if you are a client with a great connection, and the host has a great connection, you can still get major lag if one of the other clients has a slow connection.
This is experienced as a sort of input delay (the game will not instantly react to your button presses).
But I don’t get lag playing War Games in Halo 4?
The reason this does not happen in competitive multiplayer (called “War Games|) is that Halo 4 uses a different network model for standard multiplayer. When playing “Infinity Slayer” or any other standard multiplayer mode, the host doesn’t wait for a lagging player before it updates the gameplay and sends info to all other clients. So, if I have a slow connection, and I join a multiplayer match, I won’t directly effect the performance of the other players (unless the laggy player is the Host). A player with a good connection might have a hard time shooting a laggy player, because the host won’t have accurate information of where exactly the laggy player is, but they won’t suffer input delay themselves. This creates a less accurate game for all players (since a laggy player will think they are in one spot, while the other players will see them in a different spot) but it keeps things running smoother than the co-op model.
Why not use the standard multiplayer network code for Spartan Ops and co-op?
Both co-op campaign and Spartan Ops have lots of AI scripting going on. This makes it very important that all players in a co-op or Spartan Ops game are 100% in-sync with with each other. If the host didn’t wait for updates from all players before moving the game forward, then you would have constant crashes.
For example: lets say I’m playing Spartan Ops. I’m a client, and I have a very slow connection. I’m shooting at a grunt. On my screen, I see that I’ve shot the grunt in the head and killed it. But, because my connection is so slow, the host doesn’t yet know that I’ve hit the grunt in the head. This means that the host’s Xbox thinks that Grunt is still alive, and is still running it’s AI routine. Suddenly you have a situation where my Xbox and the host Xbox have 2 different versions of the match being processed (1 version where the grunt is alive, and 1 version where the grunt is dead). This situation = CRASH.
So, to avoid this, the Host will not move the game forward until it receives update signals from all other players. Again, if just 1 of those players has a bad connection, the entire games slows down.
How do I avoid playing with people who have slow connections?
Unfortunately, there is very little you can do to avoid being matched up with players who have poor connection speeds. Halo Reach featured the option to set your matchmaking preferences to prioritize good connection speeds, but that option has been removed from Halo 4. I general, playing with people who live in other parts of the world increases your chances of experiencing lag, but that is not true in all cases. For now, all we can do is try to make sure our own internet connections are as fast as possible.
Check out SHADOWSTRIKE1′s guide to improving your connection for more tips.
Hope this helps answer some questions!