Just FYI that Gamasutra article is almost empty of any real details beyond the basics of client-side prediction and the actual linked magazine article from 2012 is a broken link. :-(
For most 2D fighting games, when a character jumps there's nothing else they can do but continue on their trajectory.
When a character attacks, there's "startup frames", then "Active frames" and "recovery frames".
So you throw a Punch with 5 Startup Frames. You send that packet with a timestamp. By the time it reaches me -- you're in Frame 2 of the Active Frame -- my client just updates straight to Frame 2, instead of starting at Frame 0 of the Startup Frames.
This works because there's really no other state the action could have gone, and the frame counts are so low it's faster than humans can react to anyways. So it feels like you're playing locally.
Same thing with jumping -- you might get my "Jump" action 20 frames later than I started it. So you just fast forward your client to that point. Our clients are effectively synchronized.
Traditional clients would have you be continuously 20 frames lagging behind. It's a clever system!
my personal compensation technique in UT3 was to program my mind to twitch my hand slightly in the opposite direction of the side-jump or side-strafe I was engaging in. Otherwise, I was waiting for the visual feedback of the character on the screen, which added 100-200ms of delay before I had an accurate shot.
I personally don't like my solution. It feels very programmatic and mechanical. I usually don't bother with it. I'm more interested in the immersion, even if it means losing.
to better dissect this, it's because I'm conscious of it. When calculating ballistic arc or Tribes:Ascend spinfusor trajectory I, like in soccer, am relying on prediction intuition. It's not something I actively manage, like twitching my hand, it's something I just am 'good at' and thus feels more genuine and 'fun' because it makes me feel 'special'
I'm more interested in the immersion, even if it means losing.
I think most lag compensation techniques have focused on being "technically correct." Instead, I think lag compensation needs to squarely focus on immersion. This may mean modifying game mechanics themselves to compensate for lag. But if it means that there are no rollbacks or teleports to break immersion, I think that's the right choice!
This isn't a disparaging comment. The explanation and detail is awesome, and lord knows I spent days on Q3 rails servers back in the early 2000s. I'm really just wondering whether this is a recent thing (in which case I'm happily astounded at the longevity of a 16-year-old game) or an older write-up that HN just found. Google has references to "Insta-Unlagged 1.0" back to 2001.