Live data from Hacker News

Latency Compensating Methods in Client/Server In-Game Protocol Design (2001)

developer.valvesoftware.com

1–10 of 15 posts

Re: Latency Compensating Methods in Client/Server In-Game Protocol Design (2001)

#3
> Getting a "feel" for your latency is difficult. Quake3 attempted to mitigate this by playing a brief tone whenever you received confirmation of your hits. That way, you could figure out how far to lead by firing your weapons in rapid succession and adjusting your leading amount until you started to hear a steady stream of tones.

Ah, so that's what that sound was! I always wondered why Q3 had that weird sound when I hit someone, and never knew what it was supposed to sound like. It ends up being one of those things you get used to, and the game wouldn't be the same without it.

Re: Latency Compensating Methods in Client/Server In-Game Protocol Design (2001)

#4
Here's my humble contribution to provide a clearer explanation, and a simple live demo with source code, of client-side prediction, entity interpolation, and server reconciliation: https://gabrielgambetta.com/client-server-game-architecture....

Over time it has become a relatively popular alternative to Valve's (excellent) documents, mostly because the concepts are explained and demoed one by one, making accessible to a non-expert audience. The live demo has embedded JS code: https://gabrielgambetta.com/client-side-prediction-live-demo..., and it's usually useful to have a standalone implementation.

Re: Latency Compensating Methods in Client/Server In-Game Protocol Design (2001)

#5
post #2

As important and related paper: https://www.gamedevs.org/uploads/tribes-networking-model.pdf It's the base for most modern FPS networking models.

Fond(?) memories of the Tribes 2 engine discussed in that paper, which became the GarageGames engine, which was so poorly architected that every function of interest ran inside the network serialization function. Why did all the code run inside the network serializer? Because the engine was such a mess that no one could figure out why their values were getting stomped on and eventually someone realized "hey! The last bit of code that runs each frame is the network serializer! If I put my player bone animation code in the network serializer nothing can stomp on my animations" and a new arms race was born as every developer rushed to put their code into the network serializer.

Re: Latency Compensating Methods in Client/Server In-Game Protocol Design (2001)

#10
When I was around 18 I thought it would be fun to implement a simple networked version of pong. While the whole implementation wasn't the best in the first place, even on Lan it was pretty much unplayable due to jitter and lag. I found this article back then and was crushed by the complexity. This is when I decided I never want to work on timing sensitive networked code ever. It's still cool to read about all the smarts that go into games for this.
Post reply on HN