1.9 KiB
1.9 KiB
client-send-interval-stabilization Specification
Purpose
Define that the client send interval is protected from oscillation when the server tick offset hovers near zero, ensuring steady-rate input submission without frame-to-frame cadence jitter.
Requirements
Requirement: Send interval correction uses hysteresis dead-band
The controlled-client send interval corrector SHALL apply a dead-band threshold before adjusting _sendInterval, so that minor server tick offset fluctuations near zero do not cause the send cadence to toggle between values.
Scenario: No correction within dead-band
- WHEN
_currentTickOffsetis between -2 and +2 ticks (inclusive) - THEN
_sendIntervalis not changed - THEN the previously active send interval is preserved
Scenario: Slow drift correction below threshold
- WHEN
_currentTickOffsetstays within the dead-band for an extended period - THEN
_sendIntervalremains stable at its current value - THEN no oscillation occurs regardless of offset sign changes within the band
Scenario: Correction applies outside dead-band
- WHEN
_currentTickOffsetexceeds +2 (client ahead of server) - THEN
_sendIntervalis set to 0.048f to send slightly faster - WHEN
_currentTickOffsetis below -2 (client behind server) - THEN
_sendIntervalis set to 0.052f to send slightly slower
Requirement: Send interval stabilizes after offset crosses threshold
Once the offset exits the dead-band and triggers a correction, subsequent corrections SHALL only occur when the offset crosses the threshold again in the opposite direction, preventing rapid re-correction.
Scenario: Correction latches until opposite threshold
- WHEN offset triggers a correction to 0.048f (offset > +2)
- THEN further offset increases within the same sign do not re-trigger correction
- THEN the send interval stays at 0.048f until offset crosses back below +2 then exceeds -2