project record / prqemu
prqEMU
Photon Realtime and Quantum GameServer for No Rest for the Wicked; nrftwEMU handles the backend.
overview
prqEMU owns the Photon gameplay leg; nrftwEMU supplies the game-specific backend and SaveData routes. The GameServer keeps Quantum session state by GameId, processes StartRequest and AddPlayer, reconstructs input deltas, and combines room input into confirmed ticks. It also reassembles fragmented AddPlayer messages, accumulates SaveCycle chunks, and expires inactive peers and empty rooms. Late-join AddPlayer RPCs now occupy the global player row, while the Event103 presence mask omits players who are not registered yet.
in the repository
- Photon Realtime ENet GameServer transport
- GameId-scoped Quantum room and session lifecycle
- StartRequest and fragmented AddPlayer handling
- Late-join AddPlayer row ordering and Event103 presence masks
- Shared input sets, delta reconstruction, and confirmed-tick scheduling
- SaveCycle chunk accounting and room cleanup
current work
Oct 25 changes align late-join AddPlayer registration with the global player row and its Event103 presence mask. Contract tests cover late-join snapshot bootstrap, the first-input gate, recipient baselines, shared input rows, and a synthetic four-player wire exchange. These tests do not establish a complete client session or synchronized multiplayer.
change history
- · prqEMU · developmentLate-join AddPlayer row and mask
REF dbd73bdLate-join registration now carries the AddPlayer RPC on its global player row and leaves unregistered players out of the Event103 presence mask. Shared-room contract tests cover row ordering, snapshot bootstrap, first-input gating, and synthetic four-player wire output. No live multiplayer acceptance is claimed.
- · prqEMU · developmentPhoton Realtime and Quantum server
REF e8f8ab9The Oct 20-22 review records GameId-scoped shared-room input, Event102 parsing, confirmed Event103 frames, and SaveCycle chunk handling. Its latest simultaneous-start capture left both clients at 100%; it did not show a complete session.