-
Notifications
You must be signed in to change notification settings - Fork 0
Netplay and Rollback
Status: not started. rustysnes-netplay is currently a 1-line stub crate — no rollback netplay implementation exists yet.
Netplay is planned as v1.2.0, a post-v1.0.0 "Reach" release (see Roadmap). It is deliberately sequenced after v1.0.0 — the production cut is gated on core accuracy, a stable save-state API, and a shippable app, not on feature breadth like netplay.
Rollback netplay needs to repeatedly snapshot and restore full emulator state at frame granularity — a requirement v0.2.0 "Persistence"'s save-state format and v0.3.0 "Continuum"'s rewind/run-ahead mechanism already exist to serve. See Frontend-Architecture for how save-states, rewind, and run-ahead are implemented today; netplay will build directly on that same primitive rather than inventing a separate one.
Rollback netplay only works if replaying the same input sequence from the same snapshot always produces the same result — which is exactly RustySNES's existing hard determinism contract (see Architecture-Overview). v1.2.0 is scheduled after v1.0.0 specifically because that contract needs to be stable (not still shifting under active development) before anything durably depends on it across a network boundary.
No design document, protocol choice, or implementation exists yet. Check Roadmap and the project's to-dos/VERSION-PLAN.md for the current sequencing; this page will be filled in once work actually begins.
RustySNES is a cycle-accurate Super Nintendo / Super Famicom emulator written in pure Rust. Licensed under MIT OR Apache-2.0. | GitHub Repository | Web Demo | API Docs