Avatar

A Wild Kahzgul Appears! (Destiny)

by Kahzgul, Friday, July 31, 2015, 22:42 (3502 days ago) @ Kuga

I agree it would be hard to pinpoint. I feel they could log when it happens as their code predicts your movement based on the previous entry prior to conn loss (or used to) and run an algorithm to see frequency and results when you re-establish connectivity. If their algo sees a logical pattern then a flag could be raised on the player for further investigation. Reporting would also be a variable in the logic. They might already be doing this for all I know.

Apparently that is what they've been doing.

As far as netcode mechanics go, Destiny seems to compare the player locations sent by each player to the real-time locations of bullets sent by each player, and then declares a "hit" if those two locations match (so if you lag, not only does the damage you take not update right away, but the position that the other players' consoles predict for you based on pre-lag input has no real correlation to where your console thinks you are, so the odds that you take no damage whatsoever are much higher).

This looks like: Player X console: "I'm at point A moving towards point B." (lag begins. The other consoles predict that the motion of player X will continue towards point B and animate him thusly.) Player Y console: "I'm shooting player X at point B" (on player Y's screen, his shots are perfect, and all hit, but remember, player X is lagging, so no damage is dealt... yet. On player X's console, he either continues moving to point B, and will take damage as soon as his lag catches up, or he moves somewhere else, in which case he will take no damage at all when lag catches up and his avatar will teleport to the new location. In addition, any shots that player X fires during the lag will be registered as soon as his console catches up, so if he kills player Y during the lag, even if it's from point B and after the time that player Y fired what would have been the killshot, player X still deals his damage when the lag catches up).

In contrast, most AAA FPS games only care if the shooter scored a "hit" on the host console. That means that the host has a distinct advantage (no lag at all), but all others' consoles only hurt themselves by having lag (even on the upstream end). The trick is making it non-obvious who the host is, or only choosing hosts who have very reliable connections (which means they don't cheat with lag switches). Regardless, the end result is that manipulating your packets or lag only puts you at a disadvantage. I'm not saying those games can't be cheated at, but they can't be cheated at in the same ways as Destiny, and usually those cheats involved exploits of the code, which means they can be patched out in future updates (technically, Destiny could patch their entire netcode to work differently, but that's extremely unlikely as it's a massive, massive undertaking; basically they'd have to gut the whole game and start from scratch in order to create a PvP experience that was less susceptible to cheating, but also was not quite as smooth when there were no cheaters present).

This looks like: Player X console: "I'm at point A moving towards point B." (lag begins. The host stops receiving updates from player X so player X either just stands there like an asshole or keeps running in the same direction he was running when the lag starts). Player Y console: "I'm shooting player X and point B" (player X dies on everyone's console except player X's, where he'll die as soon as the lag stops).

The worst-case scenario in this kind of netcode setup is that someone has mild and constant lag which results in them sort of blinking forwards in little spurts rather than actually moving. The good news is that it's really hard to aim when your screen only updates your position twice a second, so these annoying lagging blinkers can't really shoot you, either, unless you stand still.


Complete thread:

 RSS Feed of thread