Interp, ping compensation and why it should be a setting
Brainmaggot
Join Date: 2012-09-03 Member: 157535Members
Hi there.
I've been baffled by one thing since I start playing this game in September last year.
There is hardly any difference in how the game feels between a low ping of 15-35 and up to 70-100 ping.
Why is this? Well to begin with there is something in place that is commonly called ping compensation. There are systems in place that try to even out the differences between clients so that you'll get a consistent experience between someone who has for example 30 ping and someone who has 70 ping. It takes time for the client to reach the server from both sides and for the server to get information back to the clients. You want both players to experience the same thing. For example to see a skulk and be able to hit him when he quickly peeks out from a corner for a parasite and not have your bullets pass through not registering even though on your screen you hit the skulk.
Here's the issue though. In NS2 the interp, the mechanism that tries to put everyone on an even playing field, is set at 100ms. That means that in practice everyone below 100(ms) ping should have the same visuals. This is all well and good apart from one thing. Most players don't play at 100 ping.
This ping compensation is what causes your lerks and fades to die from shots even though you were way past a corner on your screen. Those are the fastest moving lifeforms so they will be the ones that get messed up the most by it.
NS2 obviously wants to give the players a cool experience by letting players both play as a slow moving marine and as a fast moving alien creating interesting combat dynamics. This all gets trampled on when the fast moving lifeforms often can't pull off clutch escapes since they'll often die even though they judged the situation well and just about made it out there. In ns2 if you just about make it out, you die anyway since the guy shooting you has at least 100ms of extra time to shoot you.
Now you might be thinking "Well, just pull out of there earlier next time and it won't be an issue".
This might be the case for just messing around but when it comes to competetive play you always try to maximize your effort. Competetive games are fought between players that all push the limits as to how effective you can be.
Competetive games are also fought between players that are very aware of on what servers they play. Pretty much everyone who wants a nice FPS experience will gravitate towards a server where their ping is the lowest. Competetive or not. This means that in most cases, there will be pretty similar pings on a server. German servers having a bunch of germans, french, dutch and belgian players for example. These will all most likely ping below 60. Most cases below 50. An interp of 100ms will in practice make their low ping meaningless, it will still feel like they're playing at a 100 ping when fast movement is involved.
Most importantly though, it doesn't give you a good game experience when you see that you made it out of a room and die anyway. It makes you feel like you died because of the game and not because of the other player outmaneuvering you. That's not fun for either side of that fight.
I really appreciate the work on the ping compensation in this game. It is a necessary and nice feature of modern FPS games. What I don't understand though is why such a progressive and mod friendly company such as UWE forces the same interp on all servers.
Tl;dr
I'd really like to see interp become a server side setting so that all players who seek servers that give them a nice ping can really feel the effects of this. I'm dead tired of losing higher lifeforms even though I'm well out of sight. I know most other people are tired of it as well. Even casual pub players seem to notice this really well most of the time. It's one of the most common complaints about the game I see around. This would also greatly help to improve how competetive friendly the game is which is important for it's survivability.
Just having the setting there won't create problems since what server you play on is voluntary. The standard will most likely remain at 100ms anyway.
Thoughts?
I've been baffled by one thing since I start playing this game in September last year.
There is hardly any difference in how the game feels between a low ping of 15-35 and up to 70-100 ping.
Why is this? Well to begin with there is something in place that is commonly called ping compensation. There are systems in place that try to even out the differences between clients so that you'll get a consistent experience between someone who has for example 30 ping and someone who has 70 ping. It takes time for the client to reach the server from both sides and for the server to get information back to the clients. You want both players to experience the same thing. For example to see a skulk and be able to hit him when he quickly peeks out from a corner for a parasite and not have your bullets pass through not registering even though on your screen you hit the skulk.
Here's the issue though. In NS2 the interp, the mechanism that tries to put everyone on an even playing field, is set at 100ms. That means that in practice everyone below 100(ms) ping should have the same visuals. This is all well and good apart from one thing. Most players don't play at 100 ping.
This ping compensation is what causes your lerks and fades to die from shots even though you were way past a corner on your screen. Those are the fastest moving lifeforms so they will be the ones that get messed up the most by it.
NS2 obviously wants to give the players a cool experience by letting players both play as a slow moving marine and as a fast moving alien creating interesting combat dynamics. This all gets trampled on when the fast moving lifeforms often can't pull off clutch escapes since they'll often die even though they judged the situation well and just about made it out there. In ns2 if you just about make it out, you die anyway since the guy shooting you has at least 100ms of extra time to shoot you.
Now you might be thinking "Well, just pull out of there earlier next time and it won't be an issue".
This might be the case for just messing around but when it comes to competetive play you always try to maximize your effort. Competetive games are fought between players that all push the limits as to how effective you can be.
Competetive games are also fought between players that are very aware of on what servers they play. Pretty much everyone who wants a nice FPS experience will gravitate towards a server where their ping is the lowest. Competetive or not. This means that in most cases, there will be pretty similar pings on a server. German servers having a bunch of germans, french, dutch and belgian players for example. These will all most likely ping below 60. Most cases below 50. An interp of 100ms will in practice make their low ping meaningless, it will still feel like they're playing at a 100 ping when fast movement is involved.
Most importantly though, it doesn't give you a good game experience when you see that you made it out of a room and die anyway. It makes you feel like you died because of the game and not because of the other player outmaneuvering you. That's not fun for either side of that fight.
I really appreciate the work on the ping compensation in this game. It is a necessary and nice feature of modern FPS games. What I don't understand though is why such a progressive and mod friendly company such as UWE forces the same interp on all servers.
Tl;dr
I'd really like to see interp become a server side setting so that all players who seek servers that give them a nice ping can really feel the effects of this. I'm dead tired of losing higher lifeforms even though I'm well out of sight. I know most other people are tired of it as well. Even casual pub players seem to notice this really well most of the time. It's one of the most common complaints about the game I see around. This would also greatly help to improve how competetive friendly the game is which is important for it's survivability.
Just having the setting there won't create problems since what server you play on is voluntary. The standard will most likely remain at 100ms anyway.
Thoughts?
Comments
Just like how wall clipping isn't very accurate. Its a small thing, but a very big thing considering skilled play. As a skulk parasiting, if you have to peek out one foot more to compensate for incorrect wall clipping, the consequences are huge in a competitive scene, and vice versa for marines.
From how you described ping-compensation, it would be something like the server trying to ensure that everyone has a minimum ping. NS2 does not do that, though it would actually be useful in competitive gaming - US/European match-ups have problems finding neutral servers without too much lag advantage to either side.
Read up on https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking for how the source engine does lag compensation; NS2 uses something very close to that.
Lag compensation does mean that it is useless to REACT to attacks on you - if you wait to dodge until you start taking damage, you will be dead before your dodge makes it to the attackers screen.
interp is the smallest problem here; your own reaction time is ~200ms, then you add in your and the enemy players latency + screen lag, say about 200-300ms more for a total of 400-500ms. Interp adds another 100ms on top of that ... 50ms to give smooth interpreted movement and another 50ms for packet loss/latency variation avoidance.
As you say, its always hard to flee as an alien as you don't know how far you have managed to flee on your enemies screen, and you are not safe until all your versions on each enemy screen has managed to make it past the corner.
Unfortunately, until we find out how trick the universe into letting us communicate faster than light, lag compensation makes this unavoidable.
Fades and skulks killing you from multiple meters away, biting/shooting behind your own back etc. Why is it a problem in ns2 but not in ns1?
Now the 2 PCs connect to the same server, meet up, look at each other and start strafing, while the cam films both. You can see the delay now directly and also how big the difference from NS1 to NS2 is.
Does someone have the hardware to set this up and post it on youtube?
I have wondered whether it would be more frustrating to be an attacker who doesn't get a kill they think they should (based on their screen/damage), or to be the escaper dying when they think they shouldn't (as happens now).
Honestly, I don't know the answer to the question posed: can this be made better, and if so how?
I hear opinions from steam friends such as 'the net code in NS2 is absolutely diabolical.' I'm not a computer professional or expert, so I have no idea about this - this isn't my opinion, but it's something I hear voiced by computer expert friends of mine who, I believe, do know what they're talking about.
I don't know anything about net code, and won't presume to comment on it, other than to say as a gamer that I do not seem to get the same problems in most other games to the extent that I do in NS2. Partly, this is due to having a slower and a faster set of entities, sure, but is there more there too? I don't know.
Is there a way to address this criticism, so the game seems somehow more fair? Can the current experience be improved in a short to medium term?
These are some of the questions I'd like to see answered by UWE, but I'm sure my techno geek friends would love to see the answers even more!
Half-life 1 engine revolutionized everything. The game itself was a GOTY, but the engine and netcoding is the gold benchmark for all games. It was that good.
If you have a problem with ns2's, then you would have a problem with all source and goldsrc games as well.
The biggest difference is the fact that movements speeds are much faster in NS2 than pretty much all other games so it's more noticeable.
I'd wager that the average ping (at least here in the U.S.) is still around ~100ms, not 50-70 like the OP would suggest.
Also if you are only getting say 50 ping, you are only being lag compensated for your current ping of 50, not for 100 still like the OP would suggest.
Yes, I know it's related to what actually hits and not to what you see. I just kept it simple in my examples. To be fair though I should have put that in there to be perfectly clear about the mechanics. So good find.
You are overrestimating reaction times. The only case reaction time is relevant in is if you're completelly surprised by what happens. You minimize reaction times immensly when you include the experience and prediction factor. If you play this game a lot you know which rooms you'll most likely be attacked in, from where and roughly when you'll be attacked. There are lots of more factors in here as well, counting enemy players on the map, sound and so on.
You and your players ping would in most cases I play in be around 50-70 each (EU competetive scene). That means that your total of 400-500 should be closer to half of that or something when decreasing the reactor time factor (we're way into guesstimation territory here). Suddenly 100ms is a HUGE factor of that equation. Closer to a third than a fifth of the sum. This is why I'd like to have a server setting to experiment with having it at for example 70 or 50.
Res:
On the scandinavian servers for example it's not uncommon to have a ping average between players of 30-40. The most important point here though is that it would be an option and not a requirement. If the average is higher on a server you can have the interp higher.
Just to clarify where this is coming from. I played a whole bunch of quake live and even when travelling at speeds much higher than fades can reach in this game there wouldn't be nearly as much dying around corners as in NS2. Except when it came to facing a player with high ping using the railgun. The railgun had extra ping compensation in quake live and the high pingers made it all kinds of funky.
Yes, I know the id3 engine is pretty much the best fps engine ever. That doesn't mean this game can't strive to be good as well though, so please refrain from that kind of argument .
If you can do this, then you should also be able to predict roughly how long you can survive before needing to retreat.
I usually ping around 80-100 and I've always had to escape as a fade/lerk in a predictive manner rather than reactive.
I'm a brazilian player who usually gets 140-250ms to USE/USC/USW servers and while I agree that sometimes being interped feels stupid, in a pure "dueling" perspective we are the ones being punished by the ping because our actions will inevitably be registered slower than enemy players' with low ping -- and don't get me wrong, I'm perfectly OK with that.
And contrary to the euros, we don't even have a competitive scene here in SA, so if we want to improve both as a team and as individuals, we have to play against NA guys with the lag advantage/disadvantage.
So valve doesn't even get credit for that one.
Hl2/Source would be a better example of their merits.
Yea, there is a lot of skill in reacting against things before they happen. It is hard - for example, when I fade, I have the bad habit of reacting to incoming damage to determine when I need to get out ... which of course means I have to add in my reaction time to the time I spend on my enemies screen after I take damage. What I should do is to get to a safe spot BEFORE checking my damage, then decide if I can back into battle or need to recover.
If you ignore reaction time, the max extra time before you behind gets behind cover is "your latency + enemy player latency + server update interval + 2/input rate+ interp". Assuming 50ms latency on both sides, that adds up to about 260-270ms ms (input rate is 30; that is how often you move/fire). I think the latency in the video cards/screens should be small enough and compensate each other so it can be ignored.
Ah, I see. The Quake3 engine used lag compensation for the railgun - only. NS2 uses lag compensation for everything. Pretty much every NS2 weapon is hit-scan, ie the same as the Quake3 railgun - gorge spit and grenades being the only non-instant weapons these days (parasite and lerk spikes used to be projectiles early beta).
The Quake3 engine used a 50ms interp equivalent in order to have two server updates to interpolate between (that's why its called interp), as Q3 servers by default sent 20 updates per second, same as NS2 does now. NS2 follows the Source lead and adds another 50ms in order to avoid problems with packet loss and latency variations.
So the major difference between Q3 and NS2 is an extra 50ms interp, which translates to about 0.4-0.8m distance at the speed of lerks or fades.
IMO, the reason why so many people feel that there is something weird about the NS2 netcode is primarly gameplay; the number of times where it is important to get around that corner and into cover is uniquely high compared to pretty much every other game, so the lag compensation effect bites you quite often - and especially in comp games, those times can be the difference between winning and loosing.
Once it looks to you like you've just moved behind cover, you're probably behind cover, though you may still perceive getting hit because of lag compensation.
Once it looks to you like you've just moved behind cover but as a giant space cow, your giant space behind is still taking hits and that's before lag compensation even comes into play.
I'm pretty sure hl1 engine is based off of some idtech engine
However what I noticed in all of those games, is that player models "twitch" instead of being smooth, I'm pretty positive that's because lag compensation is much lower and you're getting the world updated to yourself much faster. I have little to no "dying around corners" in 1.6 compared to the newer versions of source where it happens every single match
And quakeworld played below 70 ping felt like LAN, I have no explanation for that. Same for q3 cpma and quake live, heck compare original serious sam to the new ones, the online play is terrible
I think games are better off with this setting as low as possible. However the thing was, in those games if you had 80 ping or above, it was unplayable. But that was never an issue because you'd always pick a server near your location. EU/NA matchups should never happen online, always @ lan. Ideally
AFAIK 1998 Goldsrc started out with netcode quite similar to Quake netcode. But a few years down the line, Valve created their own netcode version, a more optimized version of lag compensation. I'm sure it was before NS v1.0 was released, so it was probably running on that code instead. Not sure how much of it was based on Quake Tech though
Unless you're talking about v1.0 baseq3 in which case it could have very well have been sv_fps 20. But no one played that due to horrible net code, so yeah.
I played UT2k4 Instagib with enabled lag compensation and didn't get as many hits as I did when I finally turned the compensation off again (the lag compensation was made by a community member and was letting each player choose whether or not he would like to have lag compensation or just lead the target himself based on his ping). Probably I got used to leading targets for so long already that it was rather bothering me to aim directly at models.
Is that in the next patch or what
I still try and lead the target often...
aim non-hitscan sniper rifle 5 metres infront of enemy to hit them; ahhhhh those were the days.
(played ~top div competitive ctf for a while too)
Phat grin
I think it's a combination of extrapolating data between predicted and server data, if there was no prediction you'd see them jitter across the screen with lots of missing frames. I'm not entirely sure on the terminology though
/me runs from Matso :P