Quick answer: Your game stutters because of occasional frames that take far too long (spikes) amid otherwise-smooth play, even if the average frame rate is high. The causes are things that occasionally inject a big chunk of work into one frame: garbage collection pauses, loading assets or compiling shaders during gameplay, or sudden bursts of work. It's a frame-pacing problem, not an average-speed one.

Stuttering is uniquely annoying because the game can have a high average frame rate and still feel terrible, those occasional long frames are visible hitches that break the sense of smoothness. The key to understanding stutter is that it's about consistency, not average speed, and the cause is whatever produces the occasional spike.

Why Stuttering Happens

Stuttering is inconsistent frame timing: most frames complete quickly, but occasional frames take much longer, producing a visible hitch. Because it's the spikes that matter, the average FPS can look fine while the game stutters, which is why measuring average FPS misses it. The causes inject a big chunk of work into a single frame: garbage collection (a GC pause stalls a frame, common in managed engines), on-the-fly loading (loading an asset or level chunk during play blocks a frame), shader compilation (compiling a shader on first use, the infamous 'shader stutter'), and work bursts (spawning many objects at once, a heavy computation on one frame).

Each is fine on average but catastrophic in the single frame it lands on. The pattern, smooth with occasional spikes, is the signature of stuttering, distinct from a steady low frame rate.

How to Diagnose It

Measure frame time, not average FPS. A frame-time graph reveals stuttering instantly: smooth play is a flat line, stuttering shows spikes (occasional tall bars). The spikes' timing and a profiler tell you what's in those frames, a GC pause, an asset load, a shader compile, a work burst. Stutter that correlates with specific moments (entering an area, first use of an effect) points at on-demand loading or shader compilation there.

Bugnet's performance monitoring captures the bad-case frame experience (spikes and hitches), not just average frame rate, so the occasional stalls an average FPS hides surface in the data, including where and on what hardware they occur.

What to Do About It

Eliminate or spread the spiky work: reduce per-frame allocations (pool objects) to cut GC pauses, preload or stream assets ahead of time instead of loading mid-gameplay, precompile/warm up shaders so first use doesn't compile, and spread heavy work across multiple frames. The principle is that nothing should inject a big unbudgeted chunk into a single frame.

See our guide on fixing stuttering for the steps. Verify with frame-time profiling that the spikes are gone (flat line), not just that average FPS is high, since smooth frame pacing is what players feel as quality.

Stuttering is the spikes, not the average, occasional long frames from GC, loading, or shader compiles. Measure frame time, find the spike's cause, and pay that cost ahead of time.