2.3 KiB
client-prediction-cadence Specification
Purpose
Define that client forward prediction accumulation uses an explicit cadence derived from the server authoritative movement cadence, not Time.fixedDeltaTime, ensuring prediction timing aligns with authoritative timing in reconciliation-sensitive paths.
Requirements
Requirement: Forward prediction accumulation tracks real elapsed time since last authoritative state
The controlled-client forward prediction path SHALL accumulate pending input duration using the actual wall-clock elapsed time since the last authoritative state arrival, not a fixed server cadence increment per FixedUpdate. This ensures SimulatedDurationSeconds advances at the same rate as real time and is synchronized with the server's 20Hz authoritative cadence.
Scenario: Accumulation uses wall-clock time since last authoritative state
- WHEN the client receives an authoritative state at wall-clock time T
- THEN the next accumulation period starts from T
- WHEN the subsequent FixedUpdate runs
- THEN
AccumulateWithElapsedTimeadds only the wall-clock elapsed time since T (not the FixedUpdate interval) - THEN the accumulated
SimulatedDurationSecondsis proportional to actual elapsed real time
Scenario: Accumulation is decoupled from FixedUpdate cadence
- WHEN FixedUpdate runs at 50Hz (20ms per step) but the server sends authoritative state at 20Hz (50ms per broadcast)
- THEN the accumulation rate is driven by wall-clock time, not by FixedUpdate calls
- THEN the pending input duration accumulates to match the real elapsed time between authoritative state arrivals, preventing 2.5x accumulation speedup
Requirement: Forward prediction and replay use the same cadence source
The controlled-client prediction system SHALL use the same wall-clock time source for both forward accumulation and replay substepping, ensuring that SimulatedDurationSeconds consumed during replay matches the wall-clock elapsed time accumulated during forward prediction.
Scenario: Forward accumulated duration matches replay substep size
- WHEN the client accumulates pending input for 100ms of wall-clock elapsed time
- THEN the replay path consumes the same 100ms in 50ms substeps
- THEN the forward accumulated duration and replay duration are both derived from the same wall-clock time source