Quick answer: Drag the source emitter above the reader in the System Overview. Niagara ticks top-to-bottom; readers below the source see fresh data, readers above see last frame’s.

A spark trail emitter reads a missile head’s position via Attribute Reader. The trail consistently lags one frame behind the missile — at high speed this looks like the sparks are spawning behind where they should. The position values are correct but stale.

Tick Order in Niagara

Within a Niagara System, emitters tick in the order shown in the System Overview panel. The first emitter completes its update, then the second, and so on. An Attribute Reader on emitter B reading from emitter A returns:

This isn’t a bug — it’s deterministic, and you can use either behavior intentionally. But for “trail follows missile”, you want fresh data.

The Fix

In the System editor:

  1. Open the System asset.
  2. In the System Overview, drag the source emitter (missile head) above the reader (sparks).
  3. Save.

Re-test — the sparks now spawn at the head’s current frame position.

Explicit Dependencies

For complex systems with many emitters where visual ordering becomes ambiguous, declare explicit dependencies:

  1. Select the reader emitter.
  2. In Emitter Properties → Tick Behavior, set Tick Dependencies to NeedsAttribute on the source emitter.
  3. Niagara’s scheduler ensures the source ticks before this emitter regardless of visual order.

Useful when one reader depends on multiple sources or vice versa.

Cross-System Reads

For Particle Reader between two different NiagaraComponents:

// In script (e.g., a level scripter)
NiagaraComponent->SetVariableNiagaraComponent(
    TEXT("SourceComponent"),
    OtherNiagaraComponent);

Cross-component reads always observe last-frame data due to actor tick ordering. To minimize lag, set the source component’s tick group to TG_PrePhysics and the reader’s to TG_PostPhysics. The source completes its frame before the reader starts.

Diagnosing

Enable Niagara’s system debug overlay (fx.Niagara.ShowSystemInfo 1). Each emitter shows its current particle count and update order. Verify the source updates earlier in the order than the reader. If swapped, dependencies aren’t enforced.

Verifying

At runtime, move the source emitter rapidly. Compare reader particle spawn positions to expected source positions. Before fix: visible lag, sparks behind missile. After fix: sparks coincide with missile head.

“Niagara emitter order is the read-after-write order. Place sources above their readers, always.”

Annotate emitter names with role (e.g., “Source_Head”, “Reader_Trail”) so order is self-documenting in the System Overview.