So, I’ve been using Godot for about a week now, and I just heard about Jolt. Do you guys use it and recommend it? Are there any downsides?
1 Like
What features are there?
Better performance, mainly, but also just having different characteristics compared to Godot Physics.
There are also (completely optional) substitute nodes available for all the joints, which line up better with the interface that Jolt offers than what the default joints do. This allows for things like breakable joints, soft limits and the ability to override solver iterations per-joint.
What about determinism?
While Jolt itself offers deterministic simulations, Godot Jolt is not able to make such guarantees. Simulations in Godot Jolt may look deterministic, and may even happen to be deterministic, but this should not be relied upon if determinism is a hard requirement.
What’s not supported?
SoftBody3D
is not supported (yet)WorldBoundaryShape3D
is not supported- The physics server is not thread-safe (yet)
- Double-precision builds of Godot are not supported (yet)
- Memory usage is not reflected in Godot’s performance monitors (yet)
- Ray-casts do not support
face_index
What else is different?
Area3D
detecting static bodies is opt-in, with a potentially heavy performance/memory cost- Joints only support soft limits through their substitutes (
JoltHingeJoint3D
, etc.) - Springs and linear motors are actually implemented in
Generic6DOFJoint3D
- Ray-casts using
hit_back_faces
will hit the back/inside of all shapes, not only concave ones - Ray-casts are not affected by the
backface_collision
property ofConcavePolygonShape3D
- Shape-casts should be more accurate, but their cost also scale with the cast distance
- Shape margins are used, but are treated as an upper bound and scale with the shape’s extents
- Manipulating a body’s shape(s) after it has entered a scene tree can be costly
- Contact impulses are estimations and won’t be accurate when colliding with multiple bodies
6 Likes
Very helpful, thanks.
1 Like