When having Enabled ParticleEmitter objects spawned in the world, they do not emit particles until you look at them at least once.
This issue becomes apparent when having objects with long lifetimes, where the player must look at the particle first before it starts rendering. This issue is especially apparent in this video:
ParticleEmitters should always emit particles much like Beams, stacking off-screen.
ParticleEmitter_BugRepro.rbxl (34 KB)
Open the following place in Studio, and press ‘Run’ (F8), playing on the server.
The camera position starts off facing the opposite way of the particles, and rotates 180 degrees 3 seconds later.
The ParticleEmitter object should have already emitted some particles before that, but does not.
None. I originally planned to implement custom emission through the following code:
while true do
task.wait((1 / ParticleEmitter.Rate) / ParticleEmitter.TimeScale)
But when doing so, the spawned particles never de-rendered when off-screen, and instead kept stacking. The spawned particles start de-rendering normally again when looked at once.
I posted about this a while ago, and yeah, it is intended behavior. I think it is very frustrating though, and if it’s meant to be a cover-all performance optimization, then we should be given the ability to disable this behavior for specified emitters. It can be really disruptive for a game’s art direction if a large particle pops in and out of existence based on whether or not you look at it.
Agreed. Despite it being expected behavior, it is extremely disruptive to development workflows, as there are no alternatives provided - creating one’s own emitter system has it’s own bugs and demerits, making it impossible to circumnavigate this behavior in any way.