We have encountered an unexpected issue with Niagara Lightweight Emitters (LWEs): when the spawn rate is driven by a curve value updated in System Update, the LWE fails to receive the updated value and does not emit any particles.
This issue has been consistently reproduced in multiple projects and is present in both UE 5.7 and UE 5.8.
As a point of comparison, if the same System parameter is driven by a simple boolean-controlled value rather than a curve (as demonstrated in the reproduction asset), the LWE emits the expected number of particles. This suggests that the issue is specifically related to parameter values driven by curves in System Update, rather than to Spawn Rate control or System parameters in general.
One notable observation is that if the LWE’s Loop Behavior is set to Infinite and the Loop Duration is set to a small value (for example, 0.1 seconds), the emitter correctly updates the system curve value and emits the expected number of particles. However, we do not consider this a reliable or desirable workaround and are therefore reluctant to use it in production.
Expected Result:
The LWE should continuously receive the updated curve value from System Update and emit particles accordingly, matching the behavior of the regular emitter.
Actual Result:
The LWE does not appear to receive the updated curve value and emits no particles. However, if the same parameter is driven by a simple boolean-controlled value instead of a curve, the LWE emits particles as expected. The issue can also be worked around by using an infinite loop with a very short loop duration, as described above.
Unzip the attached archive and place the BugReport_LWE_SpawnRate folder directly under the Content folder of any official UE 5.8 project. Afterward, the assets may be moved to any location within the project if desired.
Open the Niagara System NS_BugReport_LWE_SpawnRate in the Niagara Editor.
The Lightweight Emitter (LWE) should emit red particles, matching the behavior of its regular emitter counterpart, which emits green particles.
Close the Niagara Editor and place the Niagara System into any level. Reset the simulation on the Niagara actor and observe the same issue.
Play the level (PIE) and observe that the same issue persists during gameplay.
Under System Update, enable the second Set SpawnRateValue module, which drives the spawn rate using a simple boolean-controlled value instead of a curve. Once enabled, both the Lightweight Emitter and the regular emitter emit particles as expected.
This is a known caveat of LWE as they try to store as little information as possible so they only pull the spawn rate / probility value each loop.
There is also limited storage for spawn infos, and if you are modifying these values frequentlty then it will run out of space and start to discard spawns infos, you should see an on screen warning for this.
It’s possible we could come up with some changes to improve how this works, but at the moment we don’t plan on working on this.
Thanks for the reply. Just a follow-up question: Where can I find that “screen warning” or are you referring to the message in red “Lightweight Performance: (Normal) Spawn & update scripts are running”, because I can’t find additional warning on this from Output Log or Niagara Log?
(After reading your explanation, I realized that the core issue isn’t directly about curve, it’s just that LWE only interprets the spawn rate value at the start of the loop cycle. In that sense, even boolean-driven dynamic value is susceptible to this limitation.)
You will see a message something like “Stateless Simulation (%s:%s) has overflowed spawn infos (%d of %d), this can result in flickering / missing particles” on screen.
And you are correct the core issue is that LWE only read bindings for spawn infos per loop for spawn rate. I hadn’t come up with a good way to allow changes per frame that wouldn’t force me to stash a lot of state. I would like to revisit at some point as it’s one of the biggest gaps between LW and regular right now.