Lumina
By MqxsyyUpdate 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.
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.
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.
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”.
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.
Saving & Loading
To save your progress press the save button in controls at the top right of the plugin window.
This will create a StringValue instance at ServerStorage > Lumina Saves
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.
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