RUDPFramework/openspec/changes/archive/2026-04-06-align-replay-gra.../specs/client-authoritative-player.../spec.md

3.4 KiB

client-authoritative-player-state Specification

Purpose

Define how the Unity client owns, applies, and exposes authoritative PlayerState snapshots for local and remote players.

MODIFIED Requirements

Requirement: Local player reconciliation applies the full authoritative state by tick

The controlled client SHALL continue reconciling local prediction from authoritative PlayerState snapshots while keeping authoritative HP and optional velocity synchronized with the owned player-state snapshot. Reconciliation MUST use the acknowledged movement-input tick defined by the sync strategy, and the visible controlled-player transform MUST keep authoritative gameplay truth separate from short-lived visual correction state. Replay of pending inputs during reconciliation MUST use fixed-step substeps matching the server authoritative movement cadence, producing identical trajectory to live prediction for the same input sequence. Small divergence after replay MUST converge through explicit bounded correction state, while large divergence or failed convergence MUST still snap immediately to authoritative position and rotation.

Scenario: Local authoritative state corrects predicted presentation

  • WHEN the controlled player accepts an authoritative PlayerState whose acknowledged movement-input tick is N
  • THEN local reconciliation prunes or replays predicted movement using tick N according to the sync strategy
  • THEN the replay uses fixed-step substeps matching the server authoritative movement cadence
  • THEN the controlled player's authoritative gameplay state updates immediately to the accepted position, rotation, HP, and optional velocity
  • THEN the local player's visible transform may temporarily differ only through bounded visual correction state that converges back to the authoritative baseline

Scenario: Replay produces identical trajectory to live prediction

  • WHEN the controlled player replays pending inputs after accepting authoritative PlayerState
  • THEN the replay applies inputs in fixed-duration substeps equal to the server authoritative movement cadence
  • THEN the final predicted pose equals what live FixedUpdate prediction would produce for the same input sequence
  • THEN the result is stable across multiple replays of the same input sequence

Scenario: Consecutive small corrections replace or fold into active visual correction

  • WHEN the controlled player accepts a newer authoritative PlayerState while a bounded visual correction is still active and the new residual error remains inside the configured bounded-correction limits
  • THEN the client updates the active visual correction state according to the sync strategy instead of preserving stale correction targets indefinitely
  • THEN the controlled player's authoritative gameplay state still reflects only the newest accepted PlayerState

Scenario: Large local divergence bypasses bounded correction

  • WHEN the controlled player accepts an authoritative PlayerState and the remaining transform error exceeds the configured snap threshold or the active bounded correction can no longer converge within its budget
  • THEN the controlled player's visible transform snaps immediately to authoritative position and rotation
  • THEN any temporary visual correction state is cleared before later local prediction resumes from that authoritative baseline