ParticleFix - Steady particle emission rate

Does this ever annoy you?

Graphics quality level 10:
lvl10
Graphics quality level 1:
lvl1

Although the emission rate property always stays at 300, the visual emission rate drastically inceases/decreases based on graphics level. This helps to take up less memory, but can be quite annoying and produce a lot of visual inconsistencies in situations like:

  • footstep particles based on walk speed
  • making any particle with a low emission rate almost nonexistent on graphics levels < 4
  • particle trails
  • large explosions

ParticleFix is a module that forces a given Particle Emitter to emit the visually correct amount of particles, regardless of graphics quality setting. Please note that this does not correct all particle emitters in your game, only the ones that you specify.

ParticleFix in action:

Graphics quality level 10:
newLVL10
Graphics quality level 1:
newLVL1

Heres a gif of the live change

Before using this module, please consider its limitations
  • technically caps at emission rate of 50, cap becomes noticable at around 70 (this is because the Rate property visually caps at 500)
  • using ParticleFix on a large amount of ParticleEmitters can cause lower performance
  • quality level set to automatic defaults to 5 (still working on better way to detect this)
  • this doesn’t work very well with small particles, as they usually come in large amounts. Use larger particles for best results.

All functions of the module are explained in the README file, here is a link the the module:
https://www.roblox.com/library/3746481589/ParticleFix

If you encounter any bugs or unknown limitations, please reply below.

56 Likes

It isn’t a “problem”, it is an intended result of scaling particles and other things that lowers a device’s performance. To purposely counteract the level of detail scaling feature built into the graphics setting is well… Not recommended.

Overall I think people want to run your game smoothly rather than seeing an increased amount of particles.

11 Likes

While LoD scaling for particles is definitely intended, the fact that it’s not optional does present a problem for some developers.

For games that this doesn’t affect in any great capacity, sure, it doesn’t make sense to use this. However, if the developer needs or wants particles to look a certain way regardless of the graphics setting being played on, this plugin makes sense. Smooth performance across all devices is desirable, but sometimes compromise has to be made to ensure the visual experience is being delivered to the player as intended.

16 Likes

I entirely understand that it is a feature intended to increase performance, I was simply outlining the problems that this feature can bring. Sometimes use cases arise that don’t necessarily line up with Roblox’s default settings and features; I’ve already explained this particular one.

Also, I did warn against the performance issues this can cause if used on a larger scale. The module isn’t intended to affect all of your games particles, only a select few.

8 Likes

It’s great :grinning_face_with_smiling_eyes:

for most cases, showing fewer particles on lower graphic quality is fine but if the particle amount is an indication of something (for example, how damaged a vehicle is) then the module may be useful.

2 Likes

This has EXTREME uses, thank you.

3 Likes

i have a bit of a problem with this. I want to try to apply the module to every particle in the game, but I can’t seem to get it working.

local ParticleBalance = require(game.ReplicatedStorage.ParticleFix)

while not game:IsLoaded() do
	task.wait()
end

for i,v in pairs(game.Workspace:GetDescendants()) do
	if v:IsA("ParticleEmitter") then
		ParticleBalance:AddGroup({v})
		ParticleBalance.AutoUpdate = true
	end
end