Your client shows your character moving before the server confirms it, but if the server calculates something different, your character gets pulled back.
Why The client moves the character before the server confirms (prediction) → Effect The server calculates collisions, movement speed, or buffs differently, or never receives the command → On screen When the confirmation arrives, your character gets pulled back
Primary owner Game team (Client development) · Also Game team (Server development)
Game team action items
Client: use the same movement code as the server, send inputs redundantly, smooth out corrections. Server: use the same movement code as the client, filter duplicate inputs by input number so each one is processed only once.
Ballpark numbers
The pull-back distance is “time out of sync × movement speed”. Losing just a few commands means 1–3 m.
On the graph
Random spikes · Server corrections (mispredictions)
Where to look
Record how often and how far the server corrects position. In Unreal, count the server’s ClientAdjustPosition corrections; in Unity Netcode for Entities, count rollbacks and resimulations caused by mispredictions
Confirmed if
Corrections cluster at the times of rubber-banding reports, and correction distance is repeatedly large with specific buffs, terrain, or movement skills
Ruled out if
Corrections cluster only when loss is high: input packet loss on the connection. Only other characters look pulled back with no corrections: “Excessive extrapolation (dead reckoning)”
Check with
Game server or client logs and metrics
Sources
Introduction to prediction (Netcode for Entities 6.5)Unity Client and server predict with the same simulation code; when the result differs from the server state (misprediction), the client rolls back and resimulates, and the correction becomes visible