X Tutup
Skip to content

Drop the experimental label for the Jolt Physics integration#111115

Merged
Repiteo merged 1 commit intogodotengine:masterfrom
mihe:jolt/drop-experimental
Oct 1, 2025
Merged

Drop the experimental label for the Jolt Physics integration#111115
Repiteo merged 1 commit intogodotengine:masterfrom
mihe:jolt/drop-experimental

Conversation

@mihe
Copy link
Contributor

@mihe mihe commented Oct 1, 2025

Related to godotengine/godot-proposals#12289.

Since Jolt Physics is now the default 3D physics engine for newly created projects starting with Godot 4.6 (#105737), I don't think it makes much sense to have its integration be labeled as experimental anymore.

The experimental label was something I declared when the integration was first merged for the following reasons:

  1. It was highly likely that there would be regressions as a result of the port from the Godot Jolt extension.
  2. I had several large refactorings planned that could potentially introduce new (and potentially severe) regressions or changes in behavior.
  3. We did not have full feature/performance parity with Godot Physics.

Point 1 is likely resolved at this point. None of the open issues are (as far as I'm aware) a result of mistakes from the porting process.

Point 2 is mostly done at this point, with big refactorings like #100983, #101189 and #105748 behind us. I had a few more things planned, but I don't think they justify keeping the experimental label around for another release.

Point 3 is a bit more contentious I guess. This hasn't really changed at all since the integration was first merged, short of a few minor additions. The bigger feature/performance parity issues that I had in mind originally were:

  1. The node interfaces for the joints still being largely designed for Bullet, which means that things like soft limits can't be achieved with Jolt currently, because the interface for it can't reasonably be mapped to Jolt's.
    • Some argue that we should just change the joint interfaces from Bullet's to Jolt's and be done with it, which would obviously resolve this, but I'm not a fan of that idea personally. I would argue that we'd be "pulling up the ladder behind us" and making things more difficult for physics extensions.
    • I had a small prototype for allowing the physics server to modify the physics node interfaces as they saw fit, which I still think is worth exploring, but I haven't prioritized it yet.
    • In any case, I would probably argue that the joints as they currently behave in Godot Physics are unstable to the point of being unusable, which makes this more of a theoretical parity issue rather than a practical one.
  2. Mutating compound shapes (i.e. bodies with multiple shapes) can be incredibly slow when using Jolt.
    • Any change to one of multiple shapes, after their body has entered the scene tree, will force costly rebuilds due to design decisions I made early on in the development of Godot Jolt.
    • This is currently prominently seen in the Voxel Game demo project, where the "Flat Grass" level stutters heavily as it streams in the world chunks, even on the most high-end PC.
    • The refactoring needed for this is known but scary.
    • In any case, I have seen very few mentions of this problem since the integration was merged, which might suggest that it's not that big of a deal for the vast majority of projects out there.

So yes, we still don't have feature/performance parity with Godot Physics, but I would argue it's not significant enough to warrant a scary experimental label.

Copy link
Member

@akien-mga akien-mga left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doc nitpicks aside, I fully agree with the rationale.

@Repiteo Repiteo merged commit eab59f8 into godotengine:master Oct 1, 2025
34 of 40 checks passed
@Repiteo
Copy link
Contributor

Repiteo commented Oct 1, 2025

Thanks!

@Calinou

This comment was marked as outdated.

@mihe

This comment was marked as outdated.

@mihe

This comment was marked as outdated.

@mihe mihe mentioned this pull request Oct 22, 2025
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

X Tutup