GunZ: The Duel

GunZ: The Duel

View Stats:
How Antilead works
I've been testing and trying to understand how exactly the anti-lead works in this version of the game, and why there would be a slider from 0 to 100 instead of an on/off switch.

First, I'll list the observations I gathered so far, which are the base for my theory (both with antilead set to 100):

1) No-hit kills:
Against someone with low ping (20~30), there are instances where I get kills without the hit sound or visual marker. The same was confirmed by other players.

At first I thought this was a bug in the client side only, that actually the bullets were hitting and only the hit sound and visual markers were not working correctly.
However, I was able to test that this is actually related to the bullet spread by testing with revolvers instead of shotguns. In those instances, it was possible to see the bullets hitting the wall close to the enemy in my screen, and still some times they would take the damage. Other times, the opposite was true.

2) Lag still affects shots:
Against someone with higher ping (100~150+), especially when the ping is spiking (high variation), even when they are simply walking, it seems that shots don't get registered as well as when against lower pings. This is mostly anecdotal as it is much harder to test. But it seems also to be supported by other player's experience.

I did a couple of tests that (from possibly very biased view) confirm this:
  • While being completely still, the shots registered as well as against lower pings (taking into consideration point 1 above, which is not 100% but very close).
  • With someone dashing constantly side to side, and me shooting exactly at the "tip" of the dash (they dash right, I shoot at the end of the dash, they dash left), all shots on my end looked like full-on point-blank 100% shotgun hits, which would be hit-kills even with partial hits in this test (50% health, Avenger shotgun). Still, the hits were only partial, and one instance was a COMPLETE miss on their side.




Now, to the possible reasons to explain the above observations, I have a two-part theory that can explain these observations:

1) "Replay" system:
An explanation that fits to both observations above is that it is your client that determines the damage that you take. This is obvious at first, especially with melee damage, but for ranged damage it isn't. The thing is: both observations above would not occur if the damage was calculated instead in the shooter's client and simply sent over the network to the target's client. This is a very simple but proven to be extremely effective antilead approach that some other, erm, games, have.

However, in this game, especially the "bullet spread" effect from observation 1 above ("no-hit kills") would be proof (assuming the observation is factual) that the damage calculation is on the damage receiver's end, based on the receiver client's replay of the shot. This means that, because bullet spread is random on both sides, there will always be some level or randomness to the hit registration between clients, depending on the distance between shooter and target, because the spread in the shooter's screen may show 10 out of 12 bullets hitting while the receiver's client when replaying the shot, may calculate that only 8 hit, or actually that the 12 hit, depending on pure random luck (or lack thereof).

2) "Ping-based rewind" system:
As a consequence of the client-side damage calculation explained above, the antilead system must be way more complex than anticipated. I may have taken quite a leap in logic with this part, but having some experience with automation of event timeline correction in distributed software systems, I assume that the implementation of the antilead on top of the client-side replay must include some sort of timestamp-based rewinding, that is used to calculate the damage taken from a shot.

For example, let's assume a dash takes around 150ms to complete (complete made-up number, please bear with me).
Someone with a 150 ping shoots you exactly at the same start as you hit the second key to start the dash. That's t0.
At t150 (due to the 150 ping), in your screen the shot is being replayed right now, and your character is already 1 dash away from the place where the shot. Still, you get hit. How?
Well, with a rewind system, at the moment the shot is replayed in your screen, your client could simulate a rewind of your hitbox's position to the X,Y and Z coordinates back to where it was at t0. It's t0 again because the "now" t150 would be rewinded by the ping of 150 from that shot's "packet", taking the calculation back to the t0 positions. At the simulated t0 hitbox position, the shot is then recalculated and you take the damage. In this case, it was full-on Avenger PB and you're dead. Even though you are sure you just seemingly dashed away in time, and might even be behind an obstacle in your screen. Trade-offs of an antilead system. ¯\_(ツ)_/¯

Now, there's a further supporting argument that points me to this specific mechanism: the fact that the antilead setting is a slider from 0 to 100. The "simpler but more effective" version of antilead, where the shooter's client just sends you the exact damage you should take, would not allow for any slider at all. It would be at most an on/off switch.
Having a rewind system like described above would allow a slider to exist, because that would simply be a "factor" used in the rewind system to adjust how far back you rewind based on the received ping. In the example above, a 50% antilead setting would make the rewind go back to t75 instead of t0, and maybe you could get hit by only half of the pellets of the PB shot as you were about half-way in your dash at that point.

And finally, the fact that the higher pings (or rather, higher ping-variation) seem to not be registering damage as well as stable, low ping targets can also be explained by the rewind system not having any way to account for the variations in ping through time. For example: if someone shoots at you in a moment when the ping was 300, but suddenly the next packet takes only 150ms to arrive, then the rewind would either use 300 or 150, but neither would be completely correct because the movements on both sides of the clients is off by the difference between these two "ticks" of the pings.

PS: engine may not use pings as plain numbers and instead rely on the timestamps of the packets, but nevertheless the effect is the same.




This might be completely useless, and maybe nobody else is so interested in these mechanics, but I'd love to get some feedback from other players to understand if this is matching your observations (and better yet: tests).
Also, it would be amazing if the Masangsoft would actually disclose exactly how the antilead works, even if I'm completely off the mark. I just want to know exactly how it works (call it professional curiosity).
< >
Showing 1-2 of 2 comments
mayb its jus da p2p relay servers lagging due to ddos lelelelel or some other sheez
I think the ANTI LEAD system on this GunZ server works in a way where, if YOU hit an opponent in your own game client, he takes damage, but at the same time, if you hit them in their game game... They also take damage.

There have been situations where I died, for example, on the TOWN map when I was already safely hidden behind the wall and the opponent had no way of hitting me because I was in a narrow passage behind the wall. However, the shots were fired at the wall next to me by someone with a very high ping, and more than a second later, somehow those shots still killed me.

So in short in anti lead system both shots from your PC and opponent PC might be counted. That's just my theory.
< >
Showing 1-2 of 2 comments
Per page: 1530 50