- Masterz1337
- |
- Exalted Heroic Member
CSS doesnt need a server side netcode, halo does. The server side netcode is needed to keep track of the vehicle locations, If it was client side like CSS, then people would be seeing the same warthog in differnt screen on each computer. Randy Pitchford puts it better than I.
Posted by: Randy Pitchford
Okay, back to Counter-Strike. Another difference is about whether you're going to be Server authoritative or client authoritative.
Halo is mostly server authoritative. There are some things that are only visual or audio related - these are okay to make client authoritative. But, for everything relevant to other players the server is the boss. We were really kind of cornered into that decision because of the game design, but it doesn't matter. There are some merits for it on its own.
Counter-Strike is client authoritative. Here's how this works. The client is simulating the game. You see a guy. You shoot the guy. The client tells the server that you shot the guy. The server says, "Thanks for the info - I'll pass that along to all of the other players." What this means is that from any given client's point of view, when you do something to the world you get the result you expected. When you shoot a guy, the server always trusts your version of the story and that's what happens for everyone in the game. The trade-off, of course, is that when other clients do stuff to you, the server trusts their version of the story. So, in Counter-Strike a frequent scenario is for a player to duck back around a corner and actually be in a safe spot, but get shot anyway. That's because some other client shot at you several hundred milliseconds ago when you were still out in the open (or so the other client says).
Of course, what happened with Counter-Strike is that people figured out how to make their clients lie to the server in such a way that the server trusts them. The lie is, basically, a cheat.
That's not really possible with Halo. Sure, you can hack the server and make the server cheat - but then people just won't play on that server.
But, the lag you see in Halo is front side. The lag in Counter-Strike is back side.
When Gearbox designs its own multiplayer only game, it will be sure to design the game so as to be very friendly to the conditions of the internet, the problems with the speed of light at best or the latency of the current infrastructure at worst.
In this case, the job was to take the existing game and change it to be a client/server system.
This is a monumental effort. Even Counter-Strike: Source is evolved from Counter-Strike's netcode, which is evolved from Half-Life's, which is evolved from Quake 2's which is evolved from Quakeworld's, which is evolved from Quake 1's.
Halo's networking system was from scratch, first generation, developed in six months by three engineers and launched into a very competitive world of PC on-line gaming with a game design that is not condusive to the inherent problems of the internet. This networking system had to be meshed into an existing C code-base that had been evolved over 10 years of Bungie games until, in it's last usage, was completely overhauled, retuned and refitted with bubblegum, duct-tape and infinite sleepless work nights specifically for the Xbox platform (which was being invented while all of this refitting was going on).
To anyone who's actually tried to solve these problems by actually writing workable net code and working with a 10 year old code base that has crossed at least three platforms, what these engineers did is, quite simply, amazing.
I know it's not perfect because it's impossible for it to be perfect.
I want it to be perfect, of course I do.
But I have to be real. I also have to realize that these engineers here who did this work are simply amazing. It just kills me to hear people who don't know anything about software development or network coding to just dismiss the effort with words like "****** netcode". That's simply not accurate.
However, as a user, we don't care. We want the experience we want and we're not happy until we get it.
Yup, I hear ya. Hopefully some information about why things are the way they are will help you cope.