If the server holds a few inputs per player and takes out one per tick, others see smooth motion, but your own actions are confirmed on the server that much later.
Why The server collects a lagging player’s inputs in a buffer and applies one per tick → Effect A small buffer often runs empty, so the character stands still or the server guesses from the last input; a large buffer confirms the player’s own inputs late → On screen Too small: others see hitches. Too large: your own skill results come late (input lag)
Primary owner Game team (Server development) · Also Game team (Client development)
Game team action items
Server: size each player’s buffer automatically to their connection, take two inputs at a time to catch up when behind, tell clients whose buffers often run empty to send inputs earlier. Client: send inputs slightly earlier as the server instructs (client time adjustment).
Ballpark numbers
It varies by game, but 1–3 ticks’ worth is typical. VALORANT keeps the server buffer shorter, averaging half a frame (about 4 ms) on 128-tick servers. Adaptive buffers that grow only for players with high jitter are common.
On the graph
Outliers only · Input buffer length and empty count per player
Where to look
Server-side, per player per tick: inputs left in the input buffer, times the buffer ran empty and was filled with a guess from the last input, and time from input arrival to application
Confirmed if
Players with small buffers run empty often and briefly freeze on others’ screens at those moments, and players with large buffers have input-to-application times longer by the buffer length
Ruled out if
The buffer almost never runs empty but others see stutter: interpolation problem on the viewer’s side. Short buffer but still high input lag: RTT itself or a double tick wait
Check with
Game server or client logs and metrics
Sources
Peeking into VALORANT's NetcodeRiot Games The server adjusts the client’s time base so the input queue stays just long enough to absorb uneven arrivals with minimal latency; the server buffering target averages half a frame