For a client in a background window, the game, engine, and OS cut its frame rate and processing. Received packets aren’t processed in time, so they back up or overflow.
Why Background frame limits in game options or the graphics driver (e.g., the NVIDIA driver lets you pick 20–200 per second), power saving, the engine’s background pause setting. The OS also gives CPU and GPU priority to the window in front (foreground) → Effect Fewer packets are processed per frame, so the queue builds up, and packets are dropped when the receive buffer overflows → On screen When the window comes to the front, things appear all at once, or some NPCs never show up
Primary owner Game team (Client development) · Also External (External)
Game team action items
Keep network receiving going on a thread separate from the game loop, guarantee a minimum processing rate in the background, turn on the engine’s run-in-background setting (runInBackground in Unity).
External action items
Tell players to turn off the graphics driver’s background frame limit and the PC’s power-saving mode.
Ballpark numbers
In Unity, with runInBackground off, the game loop stops the moment the window loses focus. If receiving happens only in that loop, no packets are processed at all in the meantime.
On the graph
Gap then burst · Client frame interval, packets processed per frame
Where to look
On the same PC, one window in front and the other behind, swapping roles and comparing. Frame intervals of both processes measured with PresentMon, and with game logs, window focus state and packets processed per frame
Confirmed if
Frame intervals grow sharply (with a driver limit, flattening at the interval that matches the configured frame rate) or processing stops only while the window is in the background, and switching windows moves the problem to the other client
Ruled out if
It happens the same way in the foreground window: not background throttling. Always the same client misbehaving regardless of window position: display settings or version difference
Check with
The player’s own environment
Sources
Application.runInBackgroundUnity runInBackground defaults to false, in which case the app pauses in the background