Session save — capture netplay session state to disk (host) #3
Labels
No Label
blocked
bounced
in-progress
in-review
manual-only
needs-guidance
netplay
p1
p2
p3
rust
No Milestone
No project
No Assignees
1 Participants
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: pbwraith/gopher64-netplay#3
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Repo: gopher64-netplay (fork of https://github.com/gopher64/gopher64)
Context: Full scope doc at upstream analysis — see commit history. Netplay uses GGRS over WebRTC (matchbox_socket), reliable channel carries
NetplayMessage { name, data }in 16KB chunks. Savestates serialize full Device via postcard + compress.Goal: Host saves an active netplay session to a
.netplay-statefile so it can be resumed later.Background:
savestates::create_savestate_in_memory(issue #2) provides the state snapshotcurrent_frame()— that frame must be captured so a resume can restart at the same pointsrc/ui/storage.rspaths struct owns file paths; add a netplay-state pathAcceptance:
storage::paths.netplay_state_file_path(persisted per-slot style, e.g.netplay-statenext to other save files)netplay::save_netplay_session(device, path):create_savestate_in_memory{ state, frame: session.current_frame(), input_delay, rom_hash, players }via postcardsrc/ui/input.rsand config) — default e.g. F7, configurableVerification:
cargo test; manual: start 2-player netplay, play a few frames, save, inspect file.Stale
in-reviewremoved — this is an orphaned review that would eat a lanein-reviewon this issue is no longer describing anything. Its PR !13 is CLOSEDand UNMERGED (closed as subsumed on 2026-08-26).
That combination is actively harmful rather than merely untidy. In
gitea-worker-lane.pythe pick order is:An issue is only suppressed as a candidate while a PR links it. !13 is closed,
so this issue is no longer suppressed — and
in-reviewpromotes it to priority1, ahead of every p1 on the board. The next lane to run would claim #3 and find
the work already shipped elsewhere.
The work is not lost — verified this sweep, not inferred
Re-checked against the Gitea compare API rather than trusting the earlier review
comment:
Zero commits on
issue-3are absent fromissue-4, i.e.issue-3is fullycontained in
issue-4, which is!18.!18's own commit log carries itexplicitly:
So session-save-to-disk ships in
!18.What I changed and why
in-review— there is no open PR for #3 to reviewblocked, prerequisite named:!18must merge. Notneeds-guidance(nothing is being asked) and not closed (the acceptance criteria in this body
have not been verified against a merged tree yet).
!18is currentlybouncedwith the specific rebase it needs. When it merges,verify this issue's acceptance criteria against the merged state, then close.
The branch
issue-3is untouched.