Re: Hit registration issues on lowest ping servers
It's mosly due to lag compensation in the netcode. Lag compensation tries to level the playing field for high ping players so they don't have to lead their targets. But it also causes desync with player movement, allowing high ping players to pop around corners and shoot you before showing up on your screen.
It's not the most pleasant experience playing with a super high ping because it takes longer for your bullet hits to register with the server, but you can abuse the player movement desync to pop around corners and shoot enemies before they see you. Plus you can kill enemies who think there're already behind cover, but on your laggy screen they haven't reach cover yet.
All this is due to lag compensation allowing high ping players to simulate more network ticks into the future compared to low ping players.
Quote: Apex Legend Developer Interview
I am being killed while behind a door/wall, and sometimes I roll back to my previous position.
This is a spicy topic. It has to do with lag compensation.
In every game since the dawn of online gaming, the main problem for developers to solve is how to fake real time action in something that is not operating in real-time. Essentially, everything you do in online games is delayed because of the latency to the server and back. A lot of things add to this: inputs, rendering, and yes, even server tickrate.
Even worse, on top of all that is your opponent who almost certainly plays with a different level of latency than yours. To solve this, our servers have to constantly look at not only what’s happening for you and your opponent at that moment, but also what was happening from both your perspectives at the time both of you input your actions. Lag compensation is the art of merging slightly different experiences into one shared reality.
There is no perfect solution. There is not one truth. At the end of the day, the server is a sort of time machine. It constantly rolls back the world state to see if your shot hit someone, and then updates the world for everyone accordingly.
To better illustrate this principle, my colleague Earl Hammon wrote a little essay about fairness and lag compensation, and how it all works in Apex Legends. I’m sharing it with you below:
Let's go through various scenarios with two players in Apex Legends called HIGH and LOW. Let's give HIGH a high ping of 300 ms, and LOW a low ping of 50 ms. The difference in their pings is 250 ms.
What happens if they shoot at each other at the same real-world time? Well, LOW's shot will arrive at the server long before HIGH's shot, so LOW has the advantage.
What happens if one of them rounds a corner, so that they can suddenly see each other? Well, LOW has the advantage here as well. LOW is less “into the past,” so they get to see HIGH first. Once again, LOW has the advantage due to their ping. This adds on to the advantage where LOW’s bullets get to the server faster.
These cases are "unfair" in the sense that LOW has an advantage, but they are "fair" in the sense that it's reasonable to expect that the player with lower ping would get the advantage in this situation.
Now, what happens if LOW goes behind a corner to get into cover? Well, HIGH is still in the past when LOW is not covered, so HIGH can shoot LOW before they get into cover, but LOW won't find out about it until HIGH's packets have made it to the server and then to LOW. By this time, LOW sees that they’re safely in cover, yet LOW still got hit. From LOW's perspective, this is a bit of nonsense.
However, this is exactly symmetrical to some of the earlier nonsense that was in LOW's favor! When LOW pops out of cover to attack HIGH, LOW gets to see and shoot HIGH while it appears to HIGH that LOW is still in cover. From HIGH's perspective, this is a bit of nonsense, that they get shot by somebody who was still in cover. This nonsense can’t be eliminated, only transferred between one player or another, because of the simple reality that ping is real and players have different amounts of it.
Some would suggest that it is unfair to LOW that HIGH can shoot them when LOW thinks they are behind cover. The alternative they suggest is that HIGH should have to compensate for their high ping themselves. This would require us to implement an unequal and asymmetrical way of handling latency.
It feels bad to get shot when you think you're behind cover due to bad ping, which is what can happen to LOW. It also feels bad to get shot by somebody before you could even see them due to bad ping, which is what can happen to HIGH. But the nonsense is distributed symmetrically.
We want to be super clear: not all online games work the way Apex does. Some games always give the advantage to players with lower ping, but we actively choose not to with our system. It’s a stance we’ve intentionally taken after looking at the tradeoffs and thinking seriously about fairness in online competition.
To explain our system in simple terms, players with low ping don’t always have an advantage over high-ping players, and sometimes experience nonsense (to us, that’s a technical term).
That’s a tradeoff which is designed intentionally into our system. But the upside is that you can play Apex Legends and play relatively well even if you have higher than average latency, which is really important for rural players, or for players in regions where connectivity is unstable. We believe we should reduce “nonsense” at every opportunity, but when we have to deal with less-than-ideal experiences, we want to do so in a way that’s equal and fair to all players.
This is the reason that almost any time you deal with a bit of nonsense like getting shot while behind a wall or getting hit right as you come around a corner, it’s probably due to unavoidable variation in latency between players and the way our system distributes it. Still, we’re committed to reducing this at every opportunity we get. Not only do we want everyone to have a fair experience, we also want you all to have a fun one.
https://www.ea.com/games/apex-legends/news/servers-netcode-developer-deep-dive
Personally, I disagree with the developer's assessment LOW ping players have more peekers advantage than HIGH pingers when popping around corners shoot their opponent before they can see them. From my experience HIGH pingers have more peekers advantage due to lag compensation.
As the Apex Legends Developer said in the above interview. "At the end of the day, the server is a sort of time machine".
In my post below. I explain how the server allows HIGH ping players to travel further into the future than LOW ping players.
@OskooI_007 wrote:
I used to think lag compensation was kind of a myth, but then I read this netcode article and it changed my mind. It talks about how the game server tries to synchronize high ping players to the server, by allowing them to run further ahead in time (network ticks) and predict (simulate) what will happen in the future.
https://timonpost.medium.com/game-networking-9-bonus-overwatch-model-4faba078cf05
The above picture is from an Overwatch GDC slide. The server is currently on tick 9. The client is on tick 15. So the client is predicting 6 network ticks into the future and that number gets bigger as ping time increases.
This is all done so that when tick 15 from the client finally reaches the server, enough time will have passed due to ping latency, the server will also now be on tick 15. Of course by the time the server simulates tick 15, the client will still be 6 ticks ahead of the server and now be simulating tick 21.
While this all sounds good in theory. It's never perfectly synchronized and some players are running a tick or 2 ahead of everyone else.
If the tick rate is 45Hz, then each tick represents a 22ms slice of time. So even being one tick ahead of you're opponent represents a 22ms advantage in reaction time.
It's no wonder sometimes players pop around corners and shoot me before I can see them. The server is letting them run more ticks into the future than me.
I find this whole thing about letting some players run more ticks into the future than other players deeply disturbing and it explains a lot of the weird out of sync issues I experience.
Hopefully this answers your question about why lag compensation was created to level the playing field for HIGH ping players, and why lag compensation ends up favoring HIGH ping players over LOW ping players due to the time machine effect the Apex Legend developers talk about.