Focused reference · Unreal Engine 5.8

Debugging and profiling

unreal-niagara/references/debugging-and-profiling.md

Symptom ladder

SymptomInspect firstThen
Nothing renderssystem/component active, emitter enabled, spawn countbounds, renderer binding, compile errors
Disappears at angle/distancefixed boundsscalability/culling, LOD/platform
Particles at originparameter binding and coordinate spaceinvalid data interface/source
Pooled effect keeps old color/targetreset contractpersistent age/emitter state
GPU collision fails off-screencollision representationswitch method or design fallback
Effect never endsloop/lifetime/completionowner cleanup, Auto Deactivate
Hitch on first usecompilation/PSO/assetsprewarm/readiness strategy and packaged capture
Frame time spikes during burstssystem count and spawn multiplicationsimulation, renderer, overdraw, collision

Debug procedure

  1. Isolate one system and disable all but one emitter.
  2. Check compile messages and parameter bindings.
  3. Use attribute/parameter watch and Niagara Debugger (Tools -> Debug -> Niagara Debugger).
  4. Visualize bounds and collision/debug drawing where supported.
  5. Recreate the expected maximum system count and camera overlap.
  6. Use the Debug Overview Performance view for system/game-thread comparison.
  7. Inspect Shader Complexity for translucent overdraw and use GPU/CPU profiling for actual timing.
  8. Compare one change under the same capture conditions.

Track system/emitter instance counts, active particles, tick/simulation time, render cost, material overdraw, collision/events, and memory. A cheap simulation can still be expensive to render; a cheap sprite can still become costly through overlap, sorting, lights, or full-screen coverage.