The problem
A tick number alone cannot express every meaningful event.
Multiple inputs, state changes, and events may occur within one nominal server-tick interval. Ordering them only by tick collapses evidence. Ordering them by rendered frame ties truth to display cadence.
The coordinate
Use three sortable fields.
ReplayTime = (server_tick, phase_q32, ordinal)- server_tick
- The nominal tick interval.
- phase_q32
- A fixed-point position inside the interval.
- ordinal
- A tie-breaker when multiple authoritative changes share the same time.
A convenience microsecond value can lay out the UI, but deterministic ordering should not depend on floating-point seconds.
Stepping
“Next subtick” means next evidence.
The correct operation advances to the next authoritative coordinate found in the artifact. It does not add an arbitrary 1/8, 1/16, or 1/64 slice. This makes stepping meaningful even when event density changes.
Rendering
A smooth picture can still be honest.
Between two authoritative transform samples, a renderer may interpolate position for presentation. Discrete state remains the last authoritative value at or before the target coordinate. Research mode should be able to disable interpolation and snap directly to samples.
Changing monitor refresh rate, playback speed, renderer backend, or pause history cannot change the canonical state at an authoritative coordinate.