Press a button and there’s no animation or sound until the server answers. Your ping becomes your response time.
Why Skills, movement, and item pickups play only after the server confirms them → Effect From the moment you press, nothing happens for a full round trip plus the tick wait → On screen At 150 ms ping, every action feels 0.2 s sluggish
Primary owner Game team (Client development) · Also Game team (Server development)
Game team action items
Client: start animations, sounds, and effects the moment the player presses (client-side feedback), show only results (damage, rewards) after the server confirms, predict movement and basic attacks and apply them immediately, when a position correction arrives from the server re-apply the unconfirmed inputs from that position. Server: compute movement from the received inputs and send a correction only when the difference from the client’s predicted position exceeds a threshold.
Ballpark numbers
Response time ≈ ping + half the tick interval + one frame. At 20 ticks and 150 ms ping, about 190 ms.
On the graph
Always high · Time from input to start of feedback, RTT (ping)
Where to look
Client log in a development build with the button press time, the time the first animation or sound starts, and the time the server response arrives, next to in-game RTT. Add latency with the engine’s network emulation (Unreal NetEmulation.PktLag) or Linux tc netem on a test server and measure at different pings
Confirmed if
Feedback always starts at the same instant the server response arrives, the time from input to feedback equals RTT plus the tick wait, and it grows by exactly the latency you add
Ruled out if
Feedback starts on the press and only results such as damage numbers come late: normal design. Delay longer than a tick interval even at low ping: points to a double tick wait or a client frame problem
Check with
Game server or client logs and metrics
Learn more
For games that don’t need fast reactions, such as turn-based, card, and idle games, this approach is the simplest and safest. The problem is real-time action games that build even movement and basic attacks this way.
Using Gameplay Abilities in Unreal EngineEpic Games Local Predicted runs immediately on press and the server makes the final decision; Server Initiated has no prediction, so the player sees the delay
Using Network Emulation in Unreal EngineEpic Games Test with minimum and maximum latency and a packet loss percentage on server and client; set from the console, e.g., NetEmulation.PktLag
tc-netem(8) — Linux manual pageiproute2 A test tool that adds delay and jitter (delay TIME JITTER) and loss (loss random PERCENT) to outgoing packets to mimic a real network