[UPDATE 0.2.0] Lumina - A custom particle system

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

I don’t really have a way for others to contribute but I’m always open to hear about feature requests or any improvement ideas.

Also if you come across any bugs then please let me know.

2 Likes

Once they’re out of beta I’ll most likely take a look but I’m not too sure on how I could incorporate the ‘editable’ part.

3 Likes

Also I noticed that you spawn a lot of parts, but is it optimized? If not did you try looking at partcache:

2 Likes

This plugin is insane!!! I don’t think I’ve ever seen such a versatile VFX plugin with these features.

I recommend adding 3d particle support, so the ability to spawn in parts and mesh particles.

Kudos to the work put into this though, will be using! :smiley:

8 Likes

This plugin is absolutely amazing, wow.

4 Likes

The particles are actually parts.

2 Likes

I believe I am already using a method like this. I create a part, store it in memory, move it to like 0, 10000, 0, when i need it I move it to wherever it’s supposed to be and when it’s lifetime ends I move it back to that ‘storage’ location of 0, 10000, 0.

I’m also using BulkMoveTo to optimize all the moving.

From my testing most of the lag comes from updating individual properties of parts such as transparency and size. And this is something I sadly haven’t found a solution to. If I do come across a solution to it then I’ll definitely implement it as soon as I can since I do want this plugin to be as optimized as possible. (though optimization as a whole is currently on low priority)

4 Likes

3D support is next on my todo! Though it will probably take a couple of days if not around a week.

4 Likes

3D support will be a great feature hope you finish it in around a week :pray:

3 Likes

Hello, you’ve made a very good plugin here. However I have some thoughts.

The main bottleneck of this plugin will at some point be performance, you simply can’t get around it. Moving 100’s of parts/images in other systems is already a huge bottleneck, but this one relies almost entirely on it. Having more than a few of these particle emitters will grind any game to a halt, especially on mobile.

However, there are likely ways to improve performance that even you haven’t though of, but I could be wrong. Firstly, it seems you have added part pooling, but there is a way to optimize part pooling/property setting even further. On top of that, have you added frustum culling? Do you throttle particle updates based on distance? And of course parallel lua which you have mentioned.

If you manage to solve the performance issues, add add the new features you were hinting at, this plugin will be the future of vfx development on Roblox.

I suggest you set the plugin to paid-access before thousands of people install it :smile:, you deserve to be paid for your work.

4 Likes

I fully agree with this. What annoys me the most with optimization currently is that roblox doesn’t offer (at least to my knowledge) any optimized ways to update other properites besides CFrames.

Could you elaborate on this? If it’s something relatively simple I’d love to implement it.

Currently I am not doing any of these but I’m planning to add all of these (and later look into more forms of optimizations).

Though as I’ve said in a previous post optimization is currently on low priority. I first want to make this plugin be something more than a 2D particle emitter clone, then make it more stable and lastly I plan to heavily focus on optimization. This is because in my head if there isn’t a good product to optimize then I’d be more or less wasting my time. I was once working on a game and spent 2 months optimizing it only for it to later be forgotten (it was my own choice to abandon that project).

Not sure if I’ve properly expressed this but setting it to paid access is something I absolutely wish to avoid. As long as I’m the owner it WILL be free (it’s will also stay open source). I’m not making this to earn money. I simply wish to create an accessible, beginner friendly yet really powerful tool that would improve the creation of vfx.

If I’d make it paid then it would be a tool that’d more or less be focused for professional work and wouldn’t be as accessible to beginners, since after all how can you know if you should invest in the tool if you’re just getting started or aren’t even able to pay.

Though I do agree that some form of funding/payment would be nice and at some point I’ll probably set up ways to support the development of this plugin.

Thanks for you feedback!

9 Likes

Yes, the idea was to create plenty of instances when the particle emitter is created, each representing different property states of emitter. So for example if you have an emitter whose particles vary in size and color, you would create all possible combinations of size and color beforehand so you can avoid setting properties.

As the number of properties that vary increase, the number of combinations grows exponentially, but even a basic implementation, like creating instances for all versions of color for example, would reduce the number of property changes by a lot. Generalizing that to any properties of course is more difficult.

Also, are you directly reusing particles after they disappear to use as new ones? or are you moving them to the sky and then taking different ones when a new particle is spawned?

5 Likes

WOW! Really good looking plugin, reminds me of UE5 niagara system, good job with it!

3 Likes

Very nice plugin! Defenitely gonna use it for my games. Have you considered using the ImageAdornment object or billboardGUIs instead of parts for particle rendering? They take up less memory and are so more efficient.

4 Likes

I’ve never considered this. It sounds like a great solution to the problem of updating properties. Though already with a simple size over life and gradient it would create massive amounts of objects. I’ll have to play around with this idea and see what works best.

I believe I move them before checking for reuse. This is another thing I’d never considered and sounds like a great little optimization.

2 Likes

I tried ImageHandleAdornments but I believe I couldn’t get them to be glowy, in other words they would have lacked emission, which is an important part for vfx.

BillboardGUIs from my understanding always face towards the camera so I didn’t try them, I wanted control over their rotation. That being said if rotation is the only disadvantage of them then I could still use them for particles that are always facing the camera.

If there is a way to have a smaller object act as the particle then it’d be great but from my testing the only combination that allowed for emission/glow and wasn’t affected by global lighting is the setup I’m currently using. (Which is Part>SurfaceGui>ImageLabel)

3 Likes

Tried the plugin out its cool but causes extreme lag when u tab out then tab back in after a while.

Would be interesting to see applications of mesh deformation with this since ur using a plane for render we can do alpha erosion. Also i feature i always wanted was a scaling pivot for texture so i scale at the pivot i define it at. I usually have to offset the texture its self halfway which is tedious