
Lag Compensation Technique for Quake 3 - networked
http://www.ra.is/unlagged/
======
ndesaulniers
Oh, neat! I've been researching this topic quite a bit lately. Here's some
more references:
[https://github.com/nickdesaulniers/nickdesaulniers.github.co...](https://github.com/nickdesaulniers/nickdesaulniers.github.com/issues/5)

------
mrschwabe
Also don't miss Fabien's in-depth Quake 3 code review:

[http://fabiensanglard.net/quake3/network.php](http://fabiensanglard.net/quake3/network.php)

------
felixgallo
[http://gafferongames.com/networking-for-game-
programmers/](http://gafferongames.com/networking-for-game-programmers/) is
the definitive go-to in this area.

~~~
ggambetta
Another one:
[http://gabrielgambetta.com/fast_paced_multiplayer.html](http://gabrielgambetta.com/fast_paced_multiplayer.html)
(disclaimer: I wrote it)

------
hellbanner
See also:
[http://www.gamasutra.com/view/news/177508/The_lagfighting_te...](http://www.gamasutra.com/view/news/177508/The_lagfighting_techniques_behind_GGPOs_netcode.php)

~~~
sbarre
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. :-(

~~~
networked
Here's the correct link: [http://twvideo01.ubm-
us.net/o1/vault/GD_Mag_Archives/GDM_Sep...](http://twvideo01.ubm-
us.net/o1/vault/GD_Mag_Archives/GDM_September_2012.pdf). (If this link breaks
try to go to [http://www.gdcvault.com/gdmag](http://www.gdcvault.com/gdmag)
and find a link the September 2012 issue there.)

------
stephendicato
I loved this talk from David Aldridge of Bungie detailing the networking in
Halo: Reach:

[http://www.gdcvault.com/play/1014345/I-Shot-You-First-
Networ...](http://www.gdcvault.com/play/1014345/I-Shot-You-First-Networking)

...and a link to bungie.net for the slides:

[http://downloads.bungie.net/presentations/David_Aldridge_Pro...](http://downloads.bungie.net/presentations/David_Aldridge_Programming_Gameplay_Networking_Halo_final_pub.pptx)

Bungie has some awesome publications on art, design, and engineering.

------
rancur
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'

~~~
stcredzero
_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!

------
basseq
How old is this site?

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.

~~~
dandelany
Looks like it was first crawled by archive.org in July, 2004:
[https://web.archive.org/web/20040815000000*/http://www.ra.is...](https://web.archive.org/web/20040815000000*/http://www.ra.is/unlagged/)

------
TheLoneWolfling
This doesn't get into the part of anti-lag that I find most interesting -
namely preventing lag while preventing cheating via exploiting anti-lag.

------
nichochar
Honestly these kinds of techniques are some really cool CS in my opinion. I'm
happy gaming drives such good engineering all the time

------
wfunction
When I read "lag compensation" I was so confused; I thought it was about
circuits...

------
PepeGomez
Isn't it basically what Source uses?

------
benihana
Similar page for Source Engine:
[https://developer.valvesoftware.com/wiki/Source_Multiplayer_...](https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking)

