Hey All,
This has been on my mind a bit as of late for a few reasons. Namely once upon almost a year ago now I played BFBC2, and I despised being killed around corners due to the lag correction. I am not sure if I have ever played a game where so many players both get a kill on each other so often ( with bullets mind you ). The basis of the biggest annoyance with this system is that the server keeps track of where all players have been over the last second to half second. When players fire their weapons at an enemy that information goes to the server as well as the relative lag information, to check if they actually hit that enemy their shots are compared to the data from when they fired. This means that a player with 500 ping ( excessive I know ) will be seeing and shooting at and hitting you a half a second ago. In the worst case scenario this means you quickly peek a corner and start running, covering the opening in ~.5 of a second. As you were just hitting the far side of that opening a hostile player peeked around that corner and started shooting at you, they will see you a half a second ago where you might still have been peeking the corner, or running across.
Secondly is Red Orchestra Trolls of Stalingrad. * smirks *. This game tried the exact opposite, absolutely no lag correction at all. I should add as a caveat to those who dont play HOS, it does have some other netcode related problems, so some of my experiences here might be due to that.
This really does bring in some interesting quirks, like firing your weapon as a team mate is running in front of you, the pistol in this case fully cycles and returns to pointing forwards. That teammate who was not in front of you when you fired and the gun cycled then takes his next step forward, and *wham* gets hit by your bullet. Why? well because there was a 230MS ( .23 of a second ) delay before the bullet even left the barrel of my gun. I bring up that example because every person can clearly see what should have happened there. Other quirks include varying lead times, if you are playing on a 50 ping, 100 ping, and 250 ping server in order to hit a running target you will have to shoot further and further and further ahead of them in order to hit the target. The last annoyance, and I suspect this is related to game issues isntead of the lag correction. In CQB you need to shoot for where the player will be in .1 of a second, not where they are. Hence many players know how to exploit ducking left and right, and if you shoot at them, you will miss.
Obviously, whichever solution you select, the problem goes away the closer and closer you get towards a ping of 0. So all server sided software should be written in such a way to minimize server handling time. ( nothing you can do about lag over the wire ).
My question to the Alliance guys, what is your solution to this problem, or is it something you had not even thought about?
Imo I can see flaws in both, and I would be curious to test out some hybridized systems.
Or other yet un approached ideas like lag correcting the bullet. Which one could think of as simply acknowledging when the bullet was fired, recording the lag, and then spawning the bullet where it would be had it been fired X time ago. But before that first working backwards from there to ensure that bullet had not hit anything yet. That is if it is all run server side, which is common these days with it removing some options from the cheaters. ( ie worst case Client side hit detection, send to server a message saying I've just hit all the players with a headshot..)
Although, there is something to be said about designing a system as a whole just to thwart the few cheaters ( it shouldent thwart all players ! ).
* small tangent warning *. I am guessing most cheat software is written to look for memory where particular information is being stored ( locations of enemies ), or opens up messages from the server to snoop that information. With the speed of encryption technology now, is it possible to work encryption into the game for all stored data, and all messages to and from the sever? My work recently has been involving a fair bit of this, and I have been amazed how fast ( even on my antiquated work dual core ) encryption and decryption can work, especially on already compressed data.
If that is possible, then it would be interesting to see a hybrid of Client side hit detection, with the server verifying those calculations, and possibly some player movement prediction on the server side.
_________________ No sigs makes threads load faster!
|