// the find
gschup/ggrs
GGRS is a reimagination of GGPO, enabling P2P rollback networking in Rust. Rollback to the future!
GGRS is a Rust port of GGPO's rollback netcode for peer-to-peer multiplayer games, built in safe Rust with no unsafe or FFI bindings to the original C++ library. It's for game developers building fighting games, platformers, or anything needing frame-perfect P2P sync without a dedicated server.
The API redesign is the real contribution here: instead of GGPO's callback-based control flow, GGRS returns a list of requests for the caller to fulfill, which is much easier to reason about and test. It ships a sync-test session mode that lets you validate determinism locally without any networking involved. It has real production usage beyond toy demos — bevy_ggrs plugin, Matchbox for WASM/WebRTC, and shipped games like Jumpy and NES-bundler. The project is dual MIT/Apache licensed with no licensing friction.
The hosted matchmaking demo server is dead, so the advertised live demos don't actually demonstrate P2P matching out of the box — you're stuck testing two browser tabs on one machine. The README describes the project as 'fairly stable' with no major changes in recent versions, which reads as maintenance mode rather than active development. Rollback netcode fundamentally requires your simulation to be deterministic, and the library does nothing to help you get there — floating point drift or non-deterministic iteration order in your game logic will silently break rollback, and that footgun isn't called out anywhere in the README. There's no built-in signaling/matchmaking; you're required to bring Matchbox or roll your own, which is an extra integration step the docs don't walk through in depth.