Taking Halo 2 to Xbox Live
An anonymous reader writes "In this new interview, Bungie Studios engineering lead Chris Butcher explains how his team took Halo 2 multiplayer battles to Xbox Live, with minimal glitches. Turns out there are a lot of clever tricks involved." From the article: "It's actually the same network model we used in Marathon back in the day, although Marathon had some bugs in it. The thing with this networking model is if there's a bug in the computer code where two machines could provide the same inputs but get different outputs, there can be problems. There are lots of different ways that could happen."
... Here ;-)
I still reckon the best game networking in the world is that in Quake and its successors, such as Half-Life and its sequel. Unlike Halo and Halo 2, where co-operative play online was apparently an insurmountable technical challenge, in Quake-based stuff even single-player games are inherently client-server anyway.
From the article, it sounds like Halo 2 multiplayer has moved in that direction away from the all-clients-equal approach of Marathon and Doom, with a single server accepting or denying player-damaging events. Although each client apparently still has a full version of the game world at hand, unlike Quake-style games where a client is only sent relevant stuff - might this allow for some audacious, map-spanning ultra-vision hacks and so on?
Still, that's how they do the recovery thing if the server gets unexpectedly removed from play...
Tedious Bloggy Stuff - hooray?
...because every client is being sent the persistent state of the entities in the world (the entities are what we call the persistent objects in the world), that means that any client has all the information about the world. Because the client knows everything about the world, we can support making them be a new server, if the server machine was to turn off, get disconnected from Xbox Live or the player just wants to leave the game...
Interestingly enough, Bungie's master server and client model is the same model humans use for perceiving the world. For example, right now, Milton Flapdoodle in New Jersey is responsible for perceiving the world, authorizing adjustments to humanity's world view, and beaming the changes to each of us telepathically. Should something happen to Milton, a new server can be chosen because we each carry a copy of the complete world state inside us.
Unfortunately, the technique isn't foolproof and due to the high density of telepathic messages required there is some unexpected bleed-through amongst the clients. You can tell this happens when you witness a profoundly anomalous event like Britney Spears sudden rise in popularity or Brussel Sprouts that inexplicably taste good.
The Marathon quote is referring to Halo 1. Halo 2 is nothing like this, as the article explains.
It doesn't necessarily suck, per se. I've played the game, and had the same problems, due mostly to flooding the connection on the end I was on with two Xboxs having four players apiece. Generally, this model would work extremely well, and is basically the same as the old model but with a priority queue (as I understand it), and would decrease bandwidth usage and increase framerate. However, the main problem is that if you flood a connection, without a proper judge of speed, then you create an alternate world in your client a few seconds behind the actual occurence. Eventually this is solved by resetting everyone back to where the slowest player is. However, with those network engines (once again, as I understand it), they still use the "transmit everything model," which doesn't lag much, but if it does stops everything in its tracks. Long story short, it's just a tradeoff for bandwidth v. client consistency v. playability
The thing with this networking model is if there's a bug in the computer code where two machines could provide the same inputs but get different outputs, there can be problems.
I'll say. Every time two machines provide the same inputs but get different outputs, Schrödinger half-kills another cat.
Oh, say does that Star-Spangled Banner entwine / The myrtle of Venus with Bacchus's vine?
I mean, this is an excellent piece on understanding how a client/server model works in an FPS game over the internet. But he's describing an authoritative server with client side lag prediction. You've been seeing this kind of stuff since like Quake II in one form or another, it's just that it's gotten better prediction over time.
Don't get me wrong - he clearly knows his stuff, and knows it well enough to explain it detail using plain words - no easy task. When my girlfriend once asked me why one of my mods wasn't working, I told her that network replication was a bit like trying to get two men in a completely dark room to solve a jigsaw puzzle. I'd say he's putting it more eloquently than I could.
Here are some of my thoughts on this matter:
(1) Anyone who has been playing a lot of Halo 2 on Xbox Live (and that describes me bigtime) will know about the "standby Glitch" that is being used to "cheat" in matchmade games. Essentially people are putting there DSL/Cable modems into standby, then taking them out of standby, and while in standby, they can actually run in and take the flag while no one else can even see them, then when they go out of standby, poof! Your flag is gone. This seems like a huge blunder in the netcode.
(3) This whole business of choosing the server for you sucks too. I guess it works for the most part, and it maybe removes a little of host advantage, and for people who don't know better overall they probably get less lag in their games. BUT, I have a GREAT upstream connection at home, and if were the host in the games I play in, there'd be no lag and the host wouldn't quit, but with this system sometimes Bungie picks a worse server, plus then they quit and you get the dredded blue screen of server-switching death.
(3) On a final note, there are no server lists and no real way to find the map/gametype of your choice in Halo 2's live implementation (you have to use "matchmaking" which gives you some control, but not enough in my view). This sucks if you like custom games because it can be really hard to find one. Basically, you have to rely on your friends list and your clan list to build up a party to play custom games. They bascially went against the way every FPS online game works with some of these decisions -- some worked out, others didn't.
I'll end with saying, that I still LOVE THIS GAME, and I actually like the ranking and matchmade games, and the whole party system thing is totally freakin' awesome, but there are problems, and it isn't perfect...