EN
Back to the archive

The archive · Games & Play · Technical decision · 1996

QuakeWorld: Carmack makes 300 ms dial-up multiplayer feel like single player

Rearchitecting Quake for modem links, Carmack cut server turnaround below 4 ms and let each client predict its own movement.

id Software

The ideaRedesign netcode around the worst link: serve each packet as it arrives and let each client predict its own movement until the server's authoritative reply.transformative

What it had to solve

In August 1996 Carmack was reworking Quake for internet play. v1.01's netcode assumed sub-200 ms links and ran servers on a 20 fps tick loop, while most players were stuck on 300 ms+ modem connections; the old reliable-stream code was, in his words, a big mess - so he took it out and started over.

How it works

In August 1996 John Carmack copied the Quake codebase and began a project he called QuakeWorld: internet play as its own product, with separate client and server executables that would peacefully coexist with the registered game. His motivation was blunt - v1.01's netcode had been designed for connections under 200 ms, but at the time about 99% of the world reached the internet over slip or ppp modem links that delivered 300 ms or worse, often through overcrowded ISPs.

His first move was architectural: he scrapped the reliable-stream netcode, which he had retrofitted with an unreliable sideband until it became a mess, and rebuilt it with the unreliable datagram as the basic primitive. The server stopped being a 20 fps game loop and became a fileserver-style loop that handled each incoming packet on arrival - moving only that player forward in time and answering in under 4 ms instead of over 50 ms. Bandwidth estimation let a clogged dial-up link simply stop sending rather than let routers buffer latency into multi-second stalls.

The biggest change was client-side movement simulation: the client guessed the outcome of its own movement until the server's authoritative reply arrived, so even over a 200 ms+ link movement felt like a local single-player game. Around it Carmack sketched a master server, persistent accounts, a global frag ranking and a roughly $10 name registration, while noting honest limits: other players and projectiles still lagged, so you had to lead your shots. The predict-locally pattern he described became the template for hiding latency in online shooters.

Why it lands

  • Client-side prediction hid the round trip from the player's own movement, so 300 ms links felt instant instead of floaty.
  • A per-packet event loop cut server turnaround from ~50 ms to under 4 ms because it never waited for a whole world tick.
  • Bandwidth estimation gave modem links a graceful failure mode - fewer updates per second instead of buffer pile-ups and multi-second stalls.
  • Persistent accounts, a global ranking list and a ~$10 registration fee turned an internet feature into a revenue line and a reason to buy rather than pirate.

What it did

Server turnaround fell from over 50 ms to under 4 ms, and on 200 ms+ connections Carmack reported that player movement felt exactly like playing a single-player game. Reposted in 2019, the plan drew 395 points and 162 comments on Hacker News; the predict-locally, correct-from-the-server pattern it describes became the standard anatomy of online action games.

Write-upCarmack's original .plan

What you can take

When the network is the bottleneck, redesign around the worst case: push simulation to the edge, answer each request as it arrives, and let slow links shed update rate instead of buffering latency.

Since then

The .plan said the QuakeWorld work would roll back into the single-player game on the road to Quake 2, while flagging open problems: time no longer advanced uniformly, and projectiles appeared to come from where the player was, not where the player is. Testing was expected to start around the end of August 1996. Archived in the john-carmack-plan-archive, the letter still drew 395 points and 162 comments when Hacker News reposted it in May 2019 - the client-prediction and event-driven-server ideas it spelled out remained the reference model for networked action games decades later.

Sources

spotted an error? The archive wants to know.

Your turn

You just read one. Describe the brief you are staring at, and see who has been given the same problem.

Free account · 3 free questions · no card

Related cases