- last post: 01.01.0001 12:00 AM PDT
Posted by: ONE ONE SEVEN
Networking Guide, Version 1.3
Last updated: 2nd November 2006
Welcome to my guide on various things networking. The purpose of this document is to explain why implementing dedicated servers for Halo 3 is not a viable solution, as well as explaining the problems with Halo 2's network model, why they occur, and what possible solutions for Halo 3 are.
Before You Make Suggestions
Ask yourself the following:
Do I understand basic networking?
Do I understand the concepts of lag, latency, host, client, and so on?
Do I understand Halo 2's network model?
Do I understand the problems in Halo 2's model, and why they occur?
Do I understand the reasoning for Halo 2's network model?
If you cannot answer yes to all these questions, you need to go out and do some research (including reading this thead). Without at least knowing these 5 things, you have no hope of suggesting anything sensible nor viable.
The Jargon
Various networking terms that are often misunderstood.
Latency - the delay between information being sent, and it arriving at it's destination.
Lag - Poor connectivity due to packetloss, in turn caused by many different things.
Ping - A measure of latency.
Common Misconceptions About Servers
There's No Latency / No Host Advantage
Whilst no-one will have no ping to the server (unlike when hosting), latency will still exist nevertheless, and the xbox with the lowest ping to the server will have the biggest advantage. Depending on where the data center is located, may well still be a severe one. Thus servers will not eliminate the problem, but merely reduce the severity slightly.
There's No Lag
Servers can be more reliable, it is true, but this depends on a great many things. Servers can lag, disconnect, and crash, just like any other host. Packets can get lost en route. The data center could have problems. The ISP might have problems. There is still plenty of potential for lag to occur.
You Can't Standby
Servers can be attacked via a (Distributed) Denial of Service attack, (D)DoS, which can take them offline , achieving a similar effect to standby. There might also be the possibility of exploiting bugs in the game that cause servers to crash.
People have been known to use Denial of Service attacks in Halo 2 to disconnect players when not the host, and this certainly is a possibility if moving to a server-based host system.
"Bungie/Microsoft Have The Money To Do It"
Quite simply, wrong. Halo 2 is the most played game on Xbox Live. The sheer amount of servers needed would be astronomical. The hardware alone would cost millions (and severely eat into Microsoft/Bungie's coffers). That's not including administration, upkeep, updates, backups, bandwidth, and so on.
Microsoft's home entertainment division is currently $1.14 billion in the red as of Q4 2006 [Source], and certainly don't have millions to spend on things that would make very little difference.
"Xbox Live Fees Could Pay For It"
Xbox Live fees already go a long way. They pay for servers, updates, support, administration, bandwidth, and so on. Microsoft also has to answer to it's shareholder, and spending lots of money unnecessarily on servers isn't going to be accepted, even if the service still makes a profit. From a business viewpoint (not just a practical one), it's not reasonable.
"It solves cheating"
I hate to break it to you, but it doesn't. The game can still be manipulated, and cheating can still take place. A few networking based cheats may be harder or impossible, but it doesn't remove all cheating. Secondary Standby, Modding, Dummying, Superbouncing, can or could all be done off host.
General Questions
What's the difference between Lag and Latency?
As explained above, latency is the delay between information being sent and arriving at it's destination. Lag is caused by poor connectivity due to packetloss, which in turn is caused by many factors.
What causes Lag?
To put it mildly, lag, or packetloss, is caused by many things. Network problems anywhere along the lines at both ends (in a consumer's home, with their phone line, ISP, internet backbones, DNS servers, etc). Excess traffic. Routing problems. A huge variety of things, and they can all affect dedicated servers too.
Increased latency does increase the chances of lag, as there is more potential for packetloss, but the two are not synonymous.
What causes Latency?
The biggest factor is the physical distance a packet has to travel. As the fastest speed information can travel is limited to the speed of light, clearly larger distances will result in larger degrees of latency. Other things can affect it too, such as how quickly your connection taps into the main internet backbone, or certain services on phone lines, though these tend to be less of a factor.
How Does Halo 2's Model Work?
Halo 2 uses a distributed networking model, where 1 xbox hosts the game, and all the other xboxes in that game are clients. This requires a little more bandwidth from the xbox hosting the game than if it were connected to a dedicated server.
The host authorises all aspects of the game (notably, the creation and destruction of objects, as well as damage inflicted), is constantly overruling other player's versions of the game.
What can be done about Latency?
The problem with latency will never be fixed entirely with the technology currently available. The only thing Bungie can do is reduce the problems that latency causes by changing their netcode. For instance, making damage always count, even if it couldn't have happened on the host's xbox. This generates it's own problems of course, but it can reduce the severity of the problem.
Why wouldn't servers work?
There is very little to be gained by implementing servers, and it causes more problems than it solves. Cheating would still occur. Connection manipulation would still occur. It would not solve host advantage or cheating. The costs required for both hardware and bandwidth are also impractical.
What causes Host Advantage?
Host advantage is a direct result of latency, and how Halo 2's netcode handles it. Halo 2 uses a system where only the host decides what's going on, by processing all the information coming in, to try and make a consistent version of the world. In general, with small degrees of latency, it works reasonably well. The problem is when latency is severe, or the situation is extremely latency sensitive (such as shooting through a narrow gap), which leads to conflicting versions.
When you play the game, and take any action, that gets sent to the host, who then authorises or rejects it based on whether it was possible from the host's perspective, and factoring in error tolerances. For instance it's "I think I just hit that guy in the head", "You did; here's a kill".
So if something couldn't happen on the host's xbox, that information is rejected, even if it legitimately happened on your xbox. Now when the host shoots someone, they are exactly where they appear to be, and so the shot always counts. This is why hosts have an advantage; everything is what it appears to be, and things take effect instantly.
There is a margin for error however, when aiming, which varies. Sniping off host (client side sniping) has the largest degree of trust, but it's not foolproof, so it can still miss. Autoaim and magnetism also contribute towards this somewhat, but it's not a perfect solution.
How can the problem be solved?
There is no perfect solution. However, one viable suggestion is to allow the host to trust everything that comes in. This means that damage always counts, which means it's a lot fairer when playing off host. It has a side effect where people may be killed when they appeared safe, but this happens off host anyway; only the host would notice any significant change between Halo 2 and Halo 3.
How can "standby" and "bridging" exploits be solved?
The problem here is much harder. Fixing just one host-based attack is useless, as cheaters will move to over means of cheating (such as artificially adding latency or packet loss). Unfortunately, for security reasons, the kind of connectivity/network tests the xbox/360 can do are limited; the only thing that can be looked at is the connectivity between the consoles.
In plain English, this means that the most effective means of solving the problem is detecting the hosts that cheat, and prevent them from hosting in the future. Bungie have several ideas on how to solve this, which obviously, for security reasons, won't be released.
In the same way, the Halo 3 netcode will be more protected from people manipulating the connection to force host.
Where did you get all these details from?
Many sources, including but not limited to:
Bungie presentations on Halo 2's networking
Correspondance with Chris Butcher (Technical Lead)
My own networking knowledge
Bungie Weekly Updates
Research on Bandwidth and Hardware
Common Sense!
Final Thoughts
Bungie are aware of the problems that occured with Halo 2. Unfortunately there's a lot of behind the scenes stuff that governs how they can deal with it. There are a lot of smart people working on reducing and solving these problems (which are no small feat) and certainly they will be better prepared for cheating next time, as well coping with latency.There you have it, a guide to all these concepts that are so frequently misunderstood. Hopefully you found it informative and useful. All feedback on the guide itself is very welcome..
I couldn't find his original post so I am simply reposting one of his quotes.