Quick answer: Asset loading hitches happen when the game loads an asset on the main thread during gameplay, blocking the frame. The cause is synchronous, on-demand loading on the critical path rather than streaming or pre-loading ahead of need.

Asset loading hitches, the stutter when a new object or area appears, are a common performance problem with a clear cause. Here's what causes asset loading hitches.

Why Loading Causes Hitches

An asset loading hitch happens when the game loads an asset, a texture, model, sound, level chunk, at the moment it's needed, on the main thread, which blocks the frame until the load finishes, causing a visible stutter.

The common cause is doing loading work on the critical path (the main thread, during the frame) instead of ahead of time or in the background.

Why It's Easy to Miss

Asset loading hitches can be easy to miss in your testing, once you've loaded an area, its assets are cached, so it's smooth on replay, hiding the first-time hitch a new player experiences. And the hitch is a frame-time spike that average FPS conceals.

Bugnet's performance snapshots capture frame-time spikes from real sessions, so the loading hitches players experience surface even when your own replays are smooth. Capturing real-session performance reveals hitches your testing hides.

Reducing Asset Loading Hitches

Reducing them means moving loading off the critical path: stream assets in ahead of when they're needed (so they're ready before the player reaches them), load on background threads instead of the main thread, pre-load for upcoming areas, and decompress off the main thread. This keeps loading from blocking the frame.

Bugnet captures the frame-time spikes loading causes, so you can find and verify fixes. So asset loading hitches come from loading on the main thread on demand during gameplay, and reducing them means streaming and pre-loading ahead of need, off the critical path, so loading doesn't block the frame.

Asset loading hitches happen when assets load on the main thread on demand during gameplay, blocking the frame. The fix is streaming and pre-loading ahead of need, off the critical path, so loading doesn't block the frame.