Freedom251 › Game Networking Middleware
GGRS

What GGRS is
GGRS is a free, open-source Rust library for adding peer-to-peer rollback networking to games. It predicts remote players’ inputs; if the actual inputs differ, it restores a saved game state and simulates forward again. The library handles input exchange, prediction, rollback scheduling, time synchronization, and desync detection. Developers can set up multiplayer, spectator, or network-free sync-test sessions. Games integrating GGRS must save and load their state and advance a frame from player inputs. Networking can use non-blocking UDP or a custom transport through the NonBlockingSocket trait. The project links to Bevy and Godot integrations, and its demos use Bevy and Macroquad. Browser builds can use the wasm-bindgen feature for WebAssembly support. The demos use Matchbox for WebRTC matchmaking, but the project’s hosted matchmaking server is offline, so they will not automatically find opponents. GGRS is dual-licensed under MIT or Apache License 2.0. Its maintainers describe it as fairly stable, with core functionality for players and spectators largely unchanged in recent versions.
Who it suits
GGRS is for game developers integrating rollback networking who can implement state saving, loading, and frame advancement. It includes examples and documentation for setup, sessions, and synchronization.
What it does well
- Supports multiplayer, spectator, and sync-test sessions.
- Handles input prediction, rollback, and desync detection.
- Offers UDP and custom transport options.
- Browser builds can use WebAssembly support.
What to know first
- Games must save and load their own state.
- Hosted demo matchmaking is currently offline.
Verdict
GGRS provides rollback networking and several session types, with UDP and custom transport options. It does not provide working automatic matchmaking in its demos at present, and an integrating game must manage its own state.
Facts from GGRS's own pages
- API
- The project links to API documentation hosted on docs.rs. · github.com, 8 Oct 2026
- Bevy plugin
- The Bevy GGRS plugin advances game state and handles rollbacks through a dedicated schedule, snapshotting registered components and resources. · github.com, 8 Oct 2026
- Browser support
- The wasm-bindgen feature enables WebAssembly support for browser APIs, and the project points to Matchbox for WebRTC sockets. · github.com, 8 Oct 2026
- Demo limitation
- The project README says its hosted matchmaking server is currently offline, so the demos will not automatically find opponents. · github.com, 8 Oct 2026
- Engine integrations
- The project links to a Bevy plugin and a Godot wrapper; its demos use Macroquad and Bevy. · github.com, 8 Oct 2026
- Game integration
- Games provide state save and load operations and advance a frame using player inputs; GGRS handles input exchange, prediction, rollback scheduling, time synchronization, and desync detection. · docs.rs, 8 Oct 2026
- Implementation
- The project describes GGRS as written in 100% safe Rust. · github.com, 8 Oct 2026
- Input prediction
- Built-in predictors can repeat the last received input or predict the default input. · docs.rs, 8 Oct 2026
- Intended audience
- The project is aimed at developers integrating rollback networking into games, with examples and documentation for setup, sessions, the main loop, requests and events, and time synchronization. · github.com, 8 Oct 2026
- License
- GGRS is dual-licensed under MIT or Apache License 2.0, at the user's option. · github.com, 8 Oct 2026
- Matchmaking integration
- The project’s demos use Matchbox for WebRTC-based matchmaking, and its README says Matchbox sockets can work with GGRS through a feature flag. · github.com, 8 Oct 2026
- Networking
- GGRS supports a non-blocking UDP socket and a custom transport layer through its NonBlockingSocket trait. · docs.rs, 8 Oct 2026
- Networking features
- GGRS handles input exchange, prediction, rollback scheduling, time synchronization, and desync detection. · docs.rs, 8 Oct 2026
- Project status
- The README describes GGRS as fairly stable and says its core functionality for multiple players and spectators has not changed significantly in recent versions. · github.com, 8 Oct 2026
- Purpose
- GGRS is a Rust library for peer-to-peer rollback networking, described as a reimagination of the GGPO network SDK. · github.com, 8 Oct 2026
- Rollback
- GGRS predicts remote player inputs and, when they differ from received inputs, rolls back to a saved game state and simulates forward again. · docs.rs, 8 Oct 2026
- Rollback operation
- It predicts remote player inputs, detects mispredictions, rolls back to a saved state, and simulates forward again. · docs.rs, 8 Oct 2026
- Security
- The project describes GGRS as written in 100% safe Rust. · github.com, 8 Oct 2026
- Session types
- The library provides peer-to-peer multiplayer, spectator, and network-free sync-test sessions. · docs.rs, 8 Oct 2026
- Setup requirement
- A game using GGRS must save and load its state and advance one frame given player inputs. · docs.rs, 8 Oct 2026
- Support and community
- The README points developers to the GGPO Developers Discord to discuss rollback networking. · github.com, 8 Oct 2026
Where GGRS stands on Freedom251
- Game Networking Middleware#12 of 29