한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Game Lag White Paper › L1 Client game process

Slow storage delays asset streaming Slow storage stalls asset streaming

Cause ID cg-asset-stream · Primary owner Game team (Client development) · Also External (External)

Open the interactive card with figures and simulations →

On slow storage such as an HDD, reading open-world textures and models can’t keep up with movement, so objects appear late or the game stutters while it waits for reads.

Why Moving fast on a mount or by teleport, or entering a crowded area, suddenly calls for many new textures and models → Effect Slow storage such as an HDD can’t read at the needed speed, so read requests pile up, and some loads make the main thread wait until they finish → On screen Textures stay blurry for a while, buildings and characters pop in late, and the game stutters or freezes while it waits on reads

Symptoms
Invisible / ghost entities, Stutter, Freeze
Factors
Stall
Who’s affected
Just me
When
While moving or changing zones, When crowds gather
Owner
Primary owner Game team (Client development) · Also External (External)
Game team action items
Use asynchronous streaming so the main thread never waits on reads, prefetch based on movement direction and speed, show low-resolution textures (mipmaps) and simple models first and swap them in later, briefly cap movement speed or use a loading screen when streaming falls behind during fast travel, state in the minimum and recommended specs whether an SSD is required.
External action items
Tell players to install the game on an SSD and to check whether downloads or antivirus scans are running on the same disk.
Ballpark numbers
According to Microsoft, older hard drives read tens of MB per second and NVMe SSDs read several GB per second, while previous-generation games used around 50 MB per second for streaming. A game built around SSD speeds that reads far more than that can easily fall behind your movement when it runs from an HDD.
On the graph
Outliers only · Frame spike count (by storage type), disk read latency
Where to look
While moving fast, record PhysicalDisk\Avg. Disk sec/Read (average time per read) and Current Disk Queue Length in Windows Performance Monitor together with PresentMon frame time. In a development build, check Unreal’s stat Streaming and stat AsyncLoad, or AssetBundle.asset/allAssets warnings in the Unity Profiler (the result was requested before loading finished, so the main thread waits)
Confirmed if
Disk read latency and queue length shoot up when moving fast, and at the same moments frames spike or textures and objects load late. Gone when the same scene runs from an SSD
Ruled out if
Disk idle but textures blurry: “Out of graphics memory (VRAM).” Fine from the second visit to the same place: “Synchronous loading and shader compilation on the main thread”
Check with
The player’s own environment
Learn more
If it freezes only the first time and is fine afterward, it’s closer to “Synchronous loading and shader compilation on the main thread.” If it repeats on every move only on PCs with slow storage, it’s this cause. “Out of graphics memory (VRAM),” where textures get dropped and reloaded because graphics memory runs short, also causes blurry textures, so check disk read waits and graphics memory usage together. Antivirus real-time scanning can also step in every time the game opens a file and slow reads down further.

Sources

  1. DirectStorage is coming to PC Microsoft
    Older hard drives read tens of MB per second and NVMe SSDs several GB per second; the asset streaming budget of previous-generation games was around 50 MB per second; open-world games read and discard distant scenery in real time as the player moves
  2. Texture and mesh loading Unity
    Synchronous upload reads and uploads in one frame on the main thread and causes a visible freeze; asynchronous upload streams over several frames
  3. Texture Streaming Overview for Unreal Engine Epic Games
    The streamer raises and lowers texture resolution (mips) to match the camera view, does most of the work on async worker threads, and loads the mips visible on screen first
  4. Profiler markers reference Unity
    AssetBundle.asset/allAssets warning: the result was requested before loading finished, so the main thread stops and waits
  5. Stat Commands in Unreal Engine Epic Games
    stat Streaming (memory use and count of streaming textures), stat AsyncLoad (async loading statistics)
  6. Windows Performance Monitor Disk Counters Explained Microsoft
    Avg. Disk sec/Read is the average time one read takes to complete (I/O latency); Current Disk Queue Length is the disk queue length at the moment of measurement
  7. PresentMon Capture Application (README-CaptureApplication.md) Intel
    Records per-frame time as FrameTime (CPU time between frames)
  8. About regular quick and full scans with Microsoft Defender Antivirus Microsoft
    Real-time protection scans a file every time it’s opened or closed

See also

Same layer: L1 Client game process

Same symptom (Invisible / ghost entities), other layers

View the interactive card with figures and simulations