How to Optimize VFX and Retain Quality at Low Graphics

I need to know how to optimize my vfx for low graphics. is this done through scripting? ive seen some posts but im not sure if this is how games do this.

some questions:

  1. what causes particle emitters to tank performance? is it the emit rate? if so then having the particle disappear as quickly as possible would fix this? but if then why would it still cause lag if the emit rate is high? (low emit rate is basically invisible on low graphics without high lifetime- i avoid this)
  2. how would i work around vfx with low graphics? its okay to lose some quality, thats not the problem, the problem is when chunks of the vfx disappear and the whole thing isnt usable anymore
  3. do games just use utilize emitter:Emit(n) on low values so no matter what the detail you put will look the same on graphics and doesnt use that many resources? I can see this as a fix because enabled vfx is just a hassle but u cant cant achieve some vfx without the enabled function

my vfx below is an enabled vfx, all the low lifetime particles have a rate of 50-100 with a lifetime ranging from 0.2-1. on graphics 1 basically not usable, 2 its ok, 3-5 its good, 6-10 perfect

there are 0 detailed references to this topic on youtube and on roblox docs so it would be nice to know this

my vfx im talking about (streamable)

1 graphics
a sad pulsing lines

10 graphics
perfect

4 Likes

you need to make a vfx module that fires a local script to emit the said particleemitter to do

local GraphicsQualityNumber = UserSettings().GameSettings.SavedQualityLevel.Value
ParticleEmitter:Emit(Rate* 10 / GraphicsQualityNumber )

1 Like

i believe emit() ignores clients quality level the vfx im showing is all enabled. or are you saying to use emit to act as the enabled property?

2 Likes

wait i thought u were doing a regular emit not a running particle my bad :sob:

but Emit(n) does lower based on client quality. You would need to make a client script that would fix up the vfx rate based on quality

local GraphicsQualityNumber = UserSettings().GameSettings.SavedQualityLevel.Value
ParticleEmitter.Rate = (Rate* 10 / GraphicsQualityNumber )

1 Like

interesting ill check this out if i ever remember to ty

2 Likes