vigrid
— DEVLOG · POST —
2026 · 03 · 14devlognetcoderollbackvaultbreakers

Rollback at 14ms — the cheap parts

A frame-accurate rollback build doesn't have to be a multi-quarter project. Here's the cut we shipped in six weeks.

↳ THE NUMBER
14ms · p99 rollback

When we started, the team assumed rollback was a multi-quarter rewrite. It wasn't — at least not for our shape of game. What it cost us was discipline about which state was deterministic, and a willingness to throw away two earlier networking layers we'd half-built and were emotionally attached to.

The biggest single win was deciding, on day one, that the renderer would have zero authority on simulation state. The view layer subscribed to a ring buffer; the simulation marched independently at 60Hz. Once that line was drawn, everything else fell into shape — input replay, lag compensation, hit confirmation. The renderer just drew what the buffer told it.

Frame 14 of the post-mortem is the one we keep coming back to: the moment our worst-case rollback dropped from 110ms to 14ms by skipping a single allocation in the snapshot path. Profilers are honest in a way design docs never are.

— END OF POST — vigrid.xyz/devlog/netcode-rollback/