// the find
pond3r/ggpo
Good Game, Peace Out Rollback Network SDK
GGPO is the original rollback networking SDK that popularized rollback netcode in fighting games — it handles input prediction, state rollback, and resync so two players feel like they're playing locally despite real network latency. It's for game developers building real-time multiplayer (fighting games especially) who need deterministic simulation and don't want to write a rollback protocol from scratch.
The core algorithm is split into readable, focused files (sync.cpp for save/rollback, udp_proto.cpp for the wire protocol, timesync.cpp, input_queue.cpp) rather than one monolithic blob, so you can actually trace how prediction and resync work. It ships a full working sample (VectorWar) that demonstrates 2-4 player synchronization end to end, not just a stub. It's genuinely battle-tested — this is the reference implementation most modern fighting-game netcode (and clones like GGRS) trace their lineage to. MIT licensed with no attribution requirement.
Build is documented and supported for Windows only (VS2019 + CMake), even though platform_linux.cpp exists in the tree — porting is acknowledged as in-progress, not done, so cross-platform use means doing that work yourself. No visible unit tests anywhere in the repo, which is a real gap for something whose entire value proposition is deterministic rollback correctness. CI is a single Appveyor badge, nothing indicating active test coverage or regression protection. Last push was mid-2024 with no sign of active issue triage, so integrating it into your own engine (outside the VectorWar pattern) means you're mostly reverse-engineering the API from one sample and the dev guide.