Desync
Desync (desynchronisation) occurs when the game state on a player’s client diverges from the server’s authoritative state. The player sees one thing; the server knows something different. This causes phantom hits, invisible players, players teleporting, or actions that appear to succeed on-screen but fail on the server.
Common causes
- Tick rate inconsistency — If the server’s tick rate drops due to CPU contention, state updates arrive less frequently. Clients interpolate between stale data, accumulating drift.
- High or variable latency — Large or fluctuating ping means the client’s predictions are based on old information, increasing the chance of divergence.
- Determinism bugs — In lockstep architectures (common in RTS games), any floating-point rounding difference between client and server accumulates into visible desync over time.
- Clock drift — If the server and client clocks diverge, time-based calculations (movement speed, cooldowns, projectile travel) produce different results.
Infrastructure vs game code
Desync has both infrastructure and code-level causes. Infrastructure-side desyncs come from inconsistent server performance (tick rate drops, CPU jitter from noisy neighbours) and network issues (packet loss, routing changes, DDoS). Code-level desyncs come from non-deterministic simulation, incorrect reconciliation, or floating-point inconsistencies.
Reliable infrastructure eliminates the infrastructure-side causes. Consistent tick rates on dedicated hardware, low-latency placement, and stable networking mean the server sends updates at a predictable rate and clients receive them reliably.