godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.13k stars 92 forks source link

Rework ParticlesMaterial properties and layout for better usability #3588

Open RPicster opened 2 years ago

RPicster commented 2 years ago

Describe the project you are working on

I mainly work on FRANZ FURY, but also on occasional Game Jam projects.

Describe the problem or limitation you are having in your project

With the current ParticleMaterial layout I find it very unintuitive how properties are arranged and ordered. Properties are not grouped in a way that makes a lot of sense to me. It's also hard for beginners to find the values they are looking for because it's not categorized or sorted in a way that makes sense when working on a Particle System.

Some properties also have very unintuitive naming when compared to the rest of the engine or by common sense. Some examples:

Describe the feature / enhancement and how it helps to overcome the problem or limitation

Resorting and categorizing the properties into two main categories: Particle Setup : This contains all parameters that influence how particles are born. Over Lifetime: This contains all parameters that influence how particles behave over their lifetime.

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

https://user-images.githubusercontent.com/9423774/143017628-1c00b262-09ed-489a-84f5-2e059b6d65a6.mp4

I have made a branch to test this out, this is how it looks.

If this enhancement will not be used often, can it be worked around with a few lines of script?

It's changing the way Particles are setup and worked with. So it can't be worked around with a few lines of code and is often used.

Is there a reason why this should be core and not an add-on in the asset library?

I think especially first time users shouldn't be required to download a add-on to have a good experience. Of course it could be made into an add-on: Something like a Particle Editor - but again, I think the experience in the Engine should be a good one by default.

Calinou commented 2 years ago

See also https://github.com/godotengine/godot/pull/48385 (which is independent of this proposal, as it reorders properties outside ParticlesMaterial).

and-rad commented 2 years ago

I like the idea, but for overall naming consistency I would suggest renaming Over Lifetime to Particle Update.

RPicster commented 2 years ago

I like the idea, but for overall naming consistency I would suggest renaming Over Lifetime to Particle Update.

Where is Particle Update used? I think Particle Update doesn't sound very intuitive for peope coming from other software packages. Particle Lifetime could be an alternative that is more consistent to Particle Setup. Maybe it could be: Particle Birth or Particle Spawn and Particle Lifetime

This wording is used in a lot of packages:

I think sticking to the "industry standard" for this makes it easier for new users (and also should be done in general)

and-rad commented 2 years ago

Particle Lifetime works well, too. I was taking Unreal Engine's Niagara as reference (spawn, update).

RPicster commented 2 years ago

Ah, so it was about Making the two main Categories consistent - that makes a lot of sense! So Particle Spawn or Particle Birth and Particle Lifetime

I also think Collision could be renamed to Particle Collision just to stay consistent where it makes sense.

YuriSizov commented 2 years ago

Needs a review from @QbieShay

QbieShay commented 2 years ago

I like the general idea of this PR! Specifically, i like a lot the idea of having all the curves grouped together so it's easier to have an overview and sync curves together. Perhaps the animation curve should be together with the other curves as well?

QbieShay commented 2 years ago

I posted this in a space full of VFX artist and all of them showed support for this change. It has my full approval!