VFX system update features

As a Roblox developer, it is currently too hard to recreate effects people have made on other games or engines, which is limiting how much you can really improve. Roblox studio as an engine is holding many developers back, pretty much forcing many new VFX artists to move to unity, simply because Roblox doesn’t support many of the features that have been present in most other game engines for at least 3 years now.

Rate over distance
Another addition to an existing module could be “rate over distance” which would let you define how far an object needs to move before a particle is emitted. This could be great to add smoke on car wheels or smoke trails on rockets/projectiles.

Emission type: Bursts
This is a simple one. Instead of emitting particles the way it does now with the “rate” modifier, which lets you edit how many particles a second are emitted, this would instead emit every second the amount that was defined. This simple change wouldn’t require to spam the part full of emitters that have the rate of 1, but instead, you could have a single emitter doing the job. This would let you edit stuff far easier and quicker. This feature could be very useful for all kinds of explosion-like effects!

Light emission
Although we already have a modifier called light emission, it’s more like a custom blending mode than light emission. This feature could let you give your particles some “spice” by giving them the option to emit actual light as if there was a point light inside. Now the only way to do it is to add an emitter to an attachment and move that attachment manually via scripts. This would make it far easier to achieve the same effect, and I’m quite sure many builders would appreciate this feature.

Custom blending modes
As I mentioned previously, we already have one, called light emission, which behaves more like an additive blending mode, which works by only including the light parts of the sprite and excluding the dark parts. This also makes the particle look bright, giving it a bit of a transparent effect. But I feel like we could use some more, like multiply which would do the opposite of what the additive blending mode does, by only showing the dark parts of the particle sprite.

Cast shadow
This one is self-explanatory. Adding the option to let particles cast shadows could be a great feature to make stuff like leaves seem even more real.

By speed
I’ve seen this one has a lot of use in a bunch of stuff. Basically, instead of how every change happens to a particle right now, which is my lifetime, this could let you change the size, texture, color transparency of a particle, depending on its velocity.

Noise
This is a big one… A feature I’ve really wanted for quite a while. This would let you add turbulence to your particles. This would include the following modifiers:

  1. Strength - This lets you change how much does the noise influence the particles.
  2. Frequency - This lets you edit how smooth the turbulence is. The higher this modifier is, the faster and more often the particles will change direction during a flight.
  3. Scroll speed - This lets you change the noise that applies to the particles over time.
  4. Octaves - Defines how many layers of noise we can stack on each other. By adding more noise layers you can get far more interesting movement.
  5. Size, Transparency, Position. Theese are all the things the noise should be able to affect.


The noise module would let you create all these complex movements that otherwise would be extremely hard to pull off, and I feel like we finally get access to tools to give us the ability to create much higher quality effects than what we can do now.

Collissions
This module would let you enable and edit the way particles interact with the world around them. You could give them the option to collide with the world or create custom planes with which the particle emitter would be able to collide.

Triggers
The triggers module would let you trigger game logic or events upon collisions. The callback would happen when the particle enters, exits are inside, or is outside of the collider. By default, you would have the option to kill particles upon collision, but you could be able to create more advanced behaviors - a feature many scripters could find useful.

This would of course require a few more modifiers like “Dampen” and “Bounce” which would let you change how exactly the particle interacts with the plane/object, letting you change how much it bounces off the assigned planes.

Sub-Emitters
This would let you spawn new particles from a particle emitter. This could be very useful when making rain, as you would have the ability to add a splash of water right at the spot the water droplet ends, or even to make fireworks.

Trails
Right now the only way to add a trail to an object is by adding 2 attachments and assigning both of them to a trail, but this module would let you add trails to your emitters. they would realistically function the same way, the difference being, instead of the starting width scale is the distance between both attachments, instead, it would simply use studs.

Dissolve masks
This would give you options to get rid of particles, instead of just using transparency. Could be especially useful for smoke and fire effects.
OzwmG87
For example here is something I made a few weeks back.


Having an option to get rid of the smoke with a dissolve mask could sell the effect of the smoke disappearing instead of just getting more transparent.

If this issue is addressed, it would improve my development experience because not only I could make far more impressive effects, but people would now have another reason to start game development on Roblox. If this engine had more resources to work with, we would easily see an improvement in user experience, as well as quality in already existing games. All the features requested are additive, and would not break already existing effects in other games.

Render Mode
So currently a particle emitter emits a Billboard on which an image is projected. Currently, you’re limited to a billboard that has the dimensions of 1 to 1, or put it simply - a square. The first thing I’d like is for the user to have the ability to split the Size module into 2 parts. Size X and size Y. This would let the developer to for example leave the X size the same during the lifetime of the particle, but Stretch it in its Y dimension! this would be very useful to create cool sparks and water splashes.

Another addition to the render mode could be a 3D mesh. This module would let the user put out 3d meshes via a simple particle emitter, making spells for all the fighting games far much easier as it wouldn’t require scripting knowledge and time to make all those effects via scripts.

If this issue is addressed, it would improve my development experience because not only I could make far more impressive effects, but people would now have another reason to start out game development on Roblox. If this engine had more resources to work with, we would easily see an improvement in user experience, as well as quality in already existing games. All the features requested are additive, and would not break already existing effects in other games.

56 Likes