Open thygrrr opened 1 year ago
As suggested in https://github.com/godotengine/godot-proposals/issues/4834, compatibility-breaking changes could be applied to new projects only by modifying the project.godot
file generated by the project manager.
As suggested in #4834, compatibility-breaking changes could be applied to new projects only by modifying the
project.godot
file generated by the project manager.
Thank you for clarifying, this is precisely the type of "migration" approach I had in mind.
Describe the project you are working on
A 3D game about a lone dog on a space ship, who gets treats from the ship's computer if it keeps the crew alive and the ship from exploding.
A 3D game about tactical space battles between ships, somewhere between World of Warships and Sid Meier's Pirates!
2D games as prototypes, jams etc.
Describe the problem or limitation you are having in your project
In Proposal https://github.com/godotengine/godot-proposals/issues/98 4 years ago, decisions were made to multiply various default values for 2D pyhsics by a factor of 10 to map the unit
meters
topixels
and improve the out-of-the-box feel of Godot. While this leads to non-SI-values such as980 px/s²
for gravitational acceleration, this is a sensible modification.However, in the wake of these modifications, an inadvertent change was introduced by also multiplying the angular damp default value by 10:
This is a common typo; rotations are still measured in radians/degrees, not "pixels", and as such bear no relation to uniform scale changes of the space the object lives in. Rotations are distance-preserving transforms. (see: special orthogonal group, etc.)
The change has resulted in physics out of the box feeling quite different for 2D and 3D, even though they could feel the same!
Godot-1000.webm
I propose the SAME VALUES to be applied to 2D and 3D physics.
Regardless of the intent behind the original change, since Godot has more prevalent 2D than 3D projects, and the 2D physics actually feel better for it, let's apply the same
default_angular_damp = 1.0
to 3D. (fixing the error, i.e. setting the 2D default back to 0.1, would likely affect too many existing 2D projects - what do you think?)Describe the feature / enhancement and how it helps to overcome the problem or limitation
Change the default_angular_damp for 3D physics to the same value.
This will result in 3D physics feeling more equivalent to 2D physics by default.
Increasing 3D's value to
1.0
will also result in less bouncy / floaty 3D physics, and possibly excessively so. A more robust fix would indeed be changing the default for 2D back to0.1
. This could impact a great many projects, but would also allow "throwing" mechanics and falling of objects to feel better out of the box.Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
If this enhancement will not be used often, can it be worked around with a few lines of script?
A workaround is to manually set the default values. However, this is a proposal that aims to unify the Developer Experience and behaviour of the Engine for everyone.
Is there a reason why this should be core and not an add-on in the asset library?
It's a project settings default.
Caveat: This changes existing projects, which may be undesirable. This could be handled by a migration feature. I would consider having to change all future projects and experiencing inconsistent behaviour to be the greater evil than changing a few projects from previous versions that still need the old default but want to run on the newer version of Godot.