[UPDATE 0.2.0] Lumina - A custom particle system

Lumina

By Mqxsyy

Update details:

Introduction


Lumina is a free and open-source plugin that offers an alternative way to create vfx. It
has it’s own custom particle system and a node-based UI.

This is currently work in progress and I do not suggest to use it in production since everything in it is subject to change and it’s not fully stable yet. Though I do appriciate everyone who gives it a try.

Controls


Space to add
Middle click to move
Right click to delete
Scroll to zoom

Getting started


Get the plugin from the Creator Store or search for it in the toolbox.

image

Since this plugin utilizes UIListLayout Flex Features, you’ll need to enable these in Roblox Studio under Beta Features. Flex is officially out! Ignore this section about it.

image

Once that’s done open the plugin and press space, then under “Systems” there is an empty system and three presets: Basic, Burst and Flame. Select one of those. This will create a base system to work off of.

image

Adding nodes


Once you’ve selected a preset you’ll see a system.

A system has 4 groups: Spawn, Initialize, Update and Render. Each group only accepts nodes that are meant for those groups.

Spawn Group tells the system when to create the particles. A “Constant Spawn” node will tell the system to constantly spawn particles, while a “Burst Spawn” will tell it to only spawn particles once.

Initialize Group tells the system how the particles should look like once they’re spawned into the world, where they should be placed and set some of the properties of the particles, such as velocity.

Update Group tells the system how to handle the particles when they’re alive. This is where you can change for example the transparency and size of the particle during it’s lifetime.

Render Group tells the system how to display the particle. Currently there is only a plane (2D image) option.

In the node selection each of these groups have a correlating category. But there is also one extra called “Logic”.

image

Logic is a category which contains nodes that can affect systems via connections and don’t go inside the systems. (currently only contains a “Random Number” node)

From these categories individual nodes can be created and dragged into systems.


Connections


As previously mentioned there’s a Logic category, which you utilize via connections. To get started just create a “Random Number” node and some other node that that has a connection point on the left side.

A connection can be created by clicking the small circle on the right side of the “Random Number” node. To finish the connection just click on a small circle on the left side of some node.


Testing Effects


Once you have created a system then to see it in action all you have to do is press “Start” in the controls at the top right of the plugin window. To stop the effect from playing just press “Stop”.

The effect will be displayed at the world center unless a “Set Position” node has been used, in which case it will display at that location.

image

Saving & Loading


To save your progress press the save button in controls at the top right of the plugin window.

image

This will create a StringValue instance at ServerStorage > Lumina Saves

image

Later this effect can be loaded by first selecting it in the explorer and then in the controls pressing “Load”

Exporting & Actually using the effect


To actually use your effects ingame you need to first have a system created in the plugin and then press “Export” in the controls. This will either create a ModuleScript that contains the effect or a folder that contains multiple ModuleScripts that contain the effects.

image

image

To use the VFX ingame you need to require the ModuleScript and then call .Start() to start the effect. To stop it you can call .Stop()

Example:

local effect = require(location.effect) --replace location.effect with the path to the ModuleScript
effect.Start() -- Starts the effect
task.wait(1)
effect.Stop() -- Stops the effect

What's next


While I don’t encourage the use of this plugin in it’s current state for any real development, feel free to experiment and play around with it and try to make cool vfxs.

I’d encourage saving effects from time to time since the plugin can be a bit buggy and it may crash and if that ever happens then just re-open studio and it should be working again.

Also since this is an open-source plugin then you could attempt to improve it’s functionality. Though this project is written in TS and uses React for the UI.

Afterword


Making vfx has always been something that I’ve really wanted to get into but roblox is just not a good place to make vfx. This was the sole reason I gave up on roblox for a year and tried to develop on Unity. Though after quite some consideration, I returned to roblox, since I came to the conclusion that roblox is annoyingly just the most optimal place for me to develop on. Though the process of making vfx hadn’t improved.

After 4 months of work I’ve finally created the first version of something that I hope could improve vfx creation on roblox.

That said since it’s taken me this long to create just a prototype of this plugin, I plan to take a break from developing it. At some point I do intend to actually make it more than just a particle emitter clone (and I already have many things planned for it) but unless this gets a decent bit of positive feedback then it probably won’t be in the near time.

Thanks for reading!


GitHub | Creator Store | Documentation
Made with Roblox-TS, React and Rojo
264 Likes

Damn this could actually be insane if it gets finished.

8 Likes

I have added a small documentation. Currently just contains a list of all the nodes and what they do.

3 Likes

UPDATE 0.0.2

Features

  • Copy, Paste, Duplicate and Cut support
    • Ctrl + C, Ctrl + V, Ctrl + D, Ctrl + X
  • Two new nodes
    • Add Position
    • Set Position To Parent

And a few bugfixes

5 Likes

Dayum that is insanely cool. Could you provide some example videos that demonstrate how the particles look like in game?

2 Likes

I mean currently it’s quite literally just a particle emitter clone so not much to show but when I add some new features that make it more than a particle emitter clone then I definitely want to create some example works.

But here’s a video of the included flame preset/template.

3 Likes

Isn’t this already better than the roblox particle system???

7 Likes

This plugin is literally one of a kind! I’ve tested the plugin a bit and just have no words for it. I don’t even consider it a in-beta plugin the fact that the features it provides are already so insane!

Unbelievable, I can see the tremendous amount of effort put into this.

Nothing to say but good job!

7 Likes

Depends on how you look at it. It does already kinda allow for more customizability (allowing random values for more things), but at the same time it’s performance is quite a bit worse due to me not having access to the gpu and also just not having focused on performance a lot (it has no parallel threading atm). And since this is something very early in development it’s a bit unstable and things made currently may break in the future when I improve it. Though I’ll do my best not to break any existing systems.

There’s also the side effect of graphics settings having no effect on it, which can be either good or bad depending on your needs.

Though some of my planned features that would make it much better are 3D particles (cubes, circles, maybe even meshes), some form of physics support (collisions), many various improvements to the UI to make creation much quicker and customizeable like having variables (being able to change multiple values for particles by manually changing one number)

1 Like

I consider it in a prototype or beta state mainly because it’s probably has quite a few bugs (after release I found a few major ones that I hope I fixed), and because it lacks most of the features I wanted to add.

4 Likes

3d particles is going to be amazing, and if you also add mesh support, it’s going to be the best plugin for every vfx artist.

1 Like

Well that’s my goal since I’m also heavily interested in vfx

2 Likes

Docs Update

I have added a category in the docs that goes over my Planned Features.

1 Like

This is just absolutely amazing. Great work and I hope this gets the traction & publicity it deserves

5 Likes

UPDATE 0.0.3

Features

  • Multi connect support

8 Likes

Nice update! Btw will you add :Emit(), or is it already added? Also one more good thing to add would be that a particle could use the floor color

2 Likes

dude this is actually insane havent checked it out fully but just seeing the names of the parameters i can tell its gonna be good. there are tons of people in the vfx community that would be willing to help you if you want. im super excited for this man cant wait to get my hands on it

5 Likes

id love to contribute any way i can man just lmk

2 Likes

Emit does already exist by using Burst Spawn nodes.

And taking the color of the floor is a neat idea, I’ll add that onto my todos.

2 Likes

Impressive work! Do you plan on adding editablemeshes and editablesimages support once mesh support is added?

3 Likes