Skip to content

Releases: godot-jolt/godot-jolt

0.13.0-beta1

02 Jun 21:36
f9a4b2e
Compare
Choose a tag to compare
0.13.0-beta1 Pre-release
Pre-release

This release only supports Godot 4.3 (starting with 4.3-beta1).

Note that this is a beta release, and as such is not available through the Godot Asset Library. It has also not been very thoroughly tested, so please report any issues you may run into, especially when dealing with some of the bigger changes, like the support for SoftBody3D.

Expect version 0.13.0-stable to be out some time around the release of Godot 4.3-stable.

Changelog

These are the notable changes that have been made since 0.12.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Removed

  • ⚠️ Removed any JoltPhysicsServer3D.G6DOF_* enums that were previously (i.e. before Godot 4.3) not exposed by Godot itself. These can now be found as PhysicsServer3D.G6DOF_* instead.

Changed

  • ⚠️ Changed the way that the body_test_motion method of PhysicsServer3D discards contacts, which should fix issues related to jitter/ping-ponging. This affects move_and_slide, move_and_collide and test_move.
  • ⚠️ Changed the inertia of shapeless bodies to be (1, 1, 1), to match Godot Physics.
  • Changed SeparationRayShape3D to not treat other convex shapes as solid, meaning it will now only ever collide with the hull of other convex shapes, which better matches Godot Physics.
  • Mirrored the way in which angular limits are visualized for JoltHingeJoint3D, JoltConeTwistJoint3D and JoltGeneric6DOFJoint.

Added

  • Added support for SoftBody3D.
  • Added support for double-precision.
  • Added compatibility_maximum to godot-jolt.gdextension for controlling the maximum allowed Godot version. Note that changing this may expose you to subtle (or not so subtle) incompatibilities in the extension API. Change at your own risk.
  • ⚠️ Added new project setting, "Use Enhanced Internal Edge Detection", which can help alleviate collisions with internal edges of ConcavePolygonShape3D and HeightMapShape3D shapes, also known as ghost collisions. This setting is enabled by default and may change the behavior of character controllers relying things like move_and_slide or move_and_collide.
  • Added support for partial custom inertia, where leaving one or two components at zero will use the automatically calculated values for those specific components.
  • Added error-handling for invalid scaling of bodies/shapes.
  • Added project settings "Body Pair Cache Enabled", "Body Pair Cache Distance Threshold" and "Body Pair Cache Angle Threshold" to allow fine-tuning the scale by which collision results are reused inbetween physics ticks.
  • Added the appropriate floating-point precision feature tag to godot-jolt.gdextension to prevent accidentally loading a single-precision build of Godot Jolt in a double-precision build of Godot and vice versa.

Fixed

  • ⚠️ Fixed issue with shape queries not returning the full contact manifold. This applies to the collide_shape method of PhysicsDirectSpaceState3D as well as the body_test_motion method of PhysicsServer3D, which subsequently affects the test_move and move_and_collide methods of PhysicsBody3D as well as the move_and_slide method of CharacterBody3D.
  • ⚠️ Fixed issue with the body_get_direct_state method of PhysicsServer3D returning a non-null reference when the body has no space.
  • Fixed issue with not being able to pass a physics space RID to area_get_param, area_attach_object_instance_id and area_get_object_instance_id.
  • Fixed issue where the inverse_inertia property of PhysicsDirectBodyState3D would have some of its components swapped.
  • Fixed issue where shapeless bodies wouldn't have custom center-of-mass applied to them.
  • Fixed issue with high (>1) damping values producing different results across different update frequencies.
  • Fixed issue where physics queries performed within the editor (e.g. editor plugins or tool scripts) would end up ignoring potentially large swathes of bodies in scenes with many physics bodies.
  • Fixed crash when setting a negative max_contacts_reported on RigidBody3D.
  • Fixed issue with certain generic_6dof_joint_* methods on JoltPhysicsServer3D not having the correct parameter names.
  • Fixed issue where sleep timer would not reset when applying force/torque to a RigidBody3D.

0.12.0-stable

07 Jan 20:04
Compare
Choose a tag to compare

This release only supports Godot 4.2 (including 4.2.x).

Changelog

These are the notable changes that have been made since 0.11.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed so that single-body joints now implicitly sets node_a to be the "world node" rather than node_b. This diverges from how Godot Physics behaves, but matches how Bullet behaves in Godot 3, and yields more intuitive outcomes for the 6DOF joints.
  • ⚠️ Changed Generic6DOFJoint3D and ConeTwistJointImpl3D, as well as their substitute joints, to use pyramid-shaped angular limits instead of cone-shaped limits, to better match Godot Physics.
  • ⚠️ Reversed the direction of the equilibrium_point properties for Generic6DOFJoint3D and JoltGeneric6DOFJoint3D, to match the direction of the angular limits.
  • ⚠️ Changed the rotation order of the equilibrium_point properties for Generic6DOFJoint3D and JoltGeneric6DOFJoint3D, from ZXY to XYZ, to match the rotation order of the angular limits.
  • Mirrored the way in which linear limits are visualized for JoltSliderJoint3D and JoltGeneric6DOFJoint3D.

Added

  • Added new project setting, "World Node", for controlling which of the two nodes in a single-body joint becomes the "world node" when omitting one of the nodes. This allows for reverting back to the behavior of Godot Physics if needed, effectively undoing the breaking change mentioned above.
  • Added new project setting, "Report All Kinematic Contacts", for allowing RigidBody3D frozen with FREEZE_MODE_KINEMATIC to report contacts/collisions with other kinematic/static bodies, at a potentially heavy performance/memory cost.
  • Added support for using NaN to indicate holes in HeightMapShape3D.
  • Added support for holes in a non-square HeightMapShape3D.

Fixed

  • ⚠️ Fixed issue with non-square HeightMapShape3D not using back-face collision.
  • Fixed issue where contact shape indices would sometimes always be the same index across all contacts with a particular body.
  • Fixed runtime crash when setting the max_contacts_reported property to a lower value.
  • Fixed issue where Generic6DOFJoint3D and JoltGeneric6DOFJoint3D would yield odd limit shapes when using both linear and angular asymmetrical limits.
  • Fixed issue where the equilibrium point for Generic6DOFJoint3D and JoltGeneric6DOFJoint3D would be moved when using asymmetrical limits.
  • Fixed crash that could occur under rare circumstances when shutting down the editor after having added/removed collision shapes.
  • Fixed issue where a RigidBody3D with locked axes colliding with a StaticBody3D (or another frozen RigidBody3D using FREEZE_MODE_STATIC) would result in NaNs.
  • Fixed issue where HingeJoint3D and JoltHingeJoint3D would sometimes dull forces applied to either of its bodies when at either of its limits.
  • Fixed issue with iOS Info.plist missing the MinimumOSVersion key.

0.11.0-stable

01 Dec 20:49
Compare
Choose a tag to compare

This release only supports Godot 4.2 (including 4.2.x).

Changelog

These are the notable changes that have been made since 0.10.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed HeightMapShape3D to always use back-face collision, to match Godot Physics.

Fixed

  • Fixed issue with project randomly freezing up when having many active physics spaces.
  • Fixed issue with static and kinematic bodies not correctly incorporating surface velocities, also known as "constant velocities", as part of their reported velocities. This also makes it so move_and_slide will respect such velocities.
  • Fixed issue with global transform not being preserved when reparenting a RigidBody3D.
  • Fixed issue where the callback passed to body_set_force_integration_callback could be called even when the body is sleeping.

0.10.0-stable

12 Nov 21:56
Compare
Choose a tag to compare

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.9.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed gravity_point_unit_distance for Area3D to result in a constant gravity when set to zero, rather than resulting in a zero gravity, to match Godot Physics.
  • ⚠️ Changed so that ray-casts using the hit_from_inside parameter report a zero normal when hitting a convex shape from inside, to match Godot Physics.
  • Changed the space_get_contacts method of PhysicsServer3D (and thus also the "Visible Collision Shapes" debug rendering) to no longer include contacts generated by overlaps with Area3D.

Added

  • Added support for Android (ARM64, ARM32, x86-64 and x86).
  • Added support for iOS.

Fixed

  • Fixed issue where an error saying Parameter "body" is null would be emitted after freeing certain bodies while they were in contact with a CharacterBody3D.
  • Fixed issue where a RigidBody3D could sometimes still be moved by another RigidBody3D despite the first body not having the second body in its collision mask.

0.10.0-rc2

08 Nov 21:38
d39f692
Compare
Choose a tag to compare
0.10.0-rc2 Pre-release
Pre-release

This is the second release candidate for version 0.10.0, and assuming no major bugs/regressions are found is likely to become 0.10.0-stable.

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.9.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed so that ray-casts using the hit_from_inside parameter report a zero normal when hitting a convex shape from inside, to match Godot Physics.
  • Changed the space_get_contacts method of PhysicsServer3D (and thus also the "Visible Collision Shapes" debug rendering) to no longer include contacts generated by overlaps with Area3D.

Added

  • Added support for Android (ARM64, ARM32, x86-64 and x86).
  • Added support for iOS.

Fixed

  • Fixed issue where an error saying Parameter "body" is null would be emitted after freeing certain bodies while they were in contact with a CharacterBody3D.

0.10.0-rc1

07 Nov 15:51
Compare
Choose a tag to compare
0.10.0-rc1 Pre-release
Pre-release

This is the first release candidate for version 0.10.0, and assuming no major bugs/regressions are found is likely to become 0.10.0-stable.

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.9.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed so that ray-casts using the hit_from_inside parameter report a zero normal when hitting a convex shape from inside, to match Godot Physics.
  • Changed the space_get_contacts method of PhysicsServer3D (and thus also the "Visible Collision Shapes" debug rendering) to no longer include contacts generated by overlaps with Area3D.

Added

  • Added support for Android (ARM64, ARM32, x86-64 and x86).
  • Added support for iOS.

Fixed

  • Fixed issue where an error saying Parameter "body" is null would be emitted after freeing certain bodies while they were in contact with a CharacterBody3D.

0.9.0-stable

12 Oct 12:08
Compare
Choose a tag to compare

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.8.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • Changed ConvexPolygonShape3D to no longer emit errors about failing to build the shape when adding one to the scene tree with 0 points.

Added

  • Added new project setting, "Active Edge Threshold", for tuning the cut-off angle for Jolt's active edge detection, which can help balance trade-offs related to triangle edge collisions.

Fixed

  • ⚠️ Fixed issue where Generic6DOFJoint and JoltGeneric6DOFJoint would lock up any axis that used a spring stiffness/frequency of 0.
  • Greatly reduced creation/modification/loading times for ConcavePolygonShape3D.

0.8.0-stable

28 Sep 15:11
Compare
Choose a tag to compare

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.7.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed apply_force and apply_impulse to be applied at an offset relative to the body's origin rather than at an offset relative to the body's center-of-mass, to match Godot Physics.
  • ⚠️ Changed collision layers and masks for Area3D to behave like they do in Godot Physics, allowing for asymmetrical setups, where overlaps are only reported if the mask of an Area3D contains the layer of the overlapping object.
  • ⚠️ Changed the body_set_force_integration_callback method of PhysicsServer3D to behave like it does with Godot Physics, where omitting the binding of userdata requires that the callback also doesn't take any userdata. It also will no longer be called when the body is sleeping.

Added

  • Added timings of Jolt's various jobs to the "Physics 3D" profiler category.
  • Added registering of JoltPhysicsServer3D as an actual singleton, which makes Jolt-specific server methods (e.g. pin_joint_get_applied_force) easier to deal with from dynamic scripting languages like GDScript.
  • Added space_dump_debug_snapshot to JoltPhysicsServer3D, for dumping a binary debug snapshot of a particular physics space.
  • Added dump_debug_snapshots to JoltPhysicsServer3D, for dumping binary debug snapshots of all currently active physics spaces.
  • Added a "Dump Debug Snapshots" menu option to "Project / Tools / Jolt Physics", for dumping binary debug snapshots of all the editor's physics spaces.

Fixed

  • Fixed issue with move_and_slide, where under certain conditions you could get stuck on internal edges of a ConcavePolygonShape3D if the floor was within 5-ish degrees of floor_max_angle.
  • Fixed issue with move_and_slide, where under certain conditions, while using a BoxShape3D or CylinderShape3D shape, you could get stuck on internal edges of a ConcavePolygonShape3D.
  • Fixed issue where collision with ConvexPolygonShape3D could yield a flipped contact normal.
  • Fixed issue where an Area3D with monitoring disabled wouldn't emit any entered events for already overlapping bodies once monitoring was enabled.
  • Fixed issue where changing the center-of-mass of a RigidBody3D attached to a joint would shift its transform relative to the joint.
  • Fixed issue where the total_gravity property on PhysicsDirectBodyState3D would always return a zero vector for kinematic bodies.
  • Fixed issue with Area3D detecting overlaps slightly outside of its collision shapes.

0.8.0-rc2

27 Sep 12:47
52a8c16
Compare
Choose a tag to compare
0.8.0-rc2 Pre-release
Pre-release

This is the second release candidate for version 0.8.0, and assuming no major bugs/regressions are found is likely to become 0.8.0-stable.

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.7.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed collision layers and masks for Area3D to behave like they do in Godot Physics, allowing for asymmetrical setups, where overlaps are only reported if the mask of an Area3D contains the layer of the overlapping object.
  • ⚠️ Changed the body_set_force_integration_callback method of PhysicsServer3D to behave like it does with Godot Physics, where omitting the binding of userdata requires that the callback also doesn't take any userdata. It also will no longer be called when the body is sleeping.

Added

  • Added timings of Jolt's various jobs to the "Physics 3D" profiler category.
  • Added registering of JoltPhysicsServer3D as an actual singleton, which makes Jolt-specific server methods (e.g. pin_joint_get_applied_force) easier to deal with from dynamic scripting languages like GDScript.
  • Added space_dump_debug_snapshot to JoltPhysicsServer3D, for dumping a binary debug snapshot of a particular physics space.
  • Added dump_debug_snapshots to JoltPhysicsServer3D, for dumping binary debug snapshots of all currently active physics spaces.
  • Added a "Dump Debug Snapshots" menu option to "Project / Tools / Jolt Physics", for dumping binary debug snapshots of all the editor's physics spaces.

Fixed

  • Fixed issue with move_and_slide, where under certain conditions you could get stuck on internal edges of a ConcavePolygonShape3D if the floor was within 5-ish degrees of floor_max_angle.
  • Fixed issue with move_and_slide, where under certain conditions, while using a BoxShape3D or CylinderShape3D shape, you could get stuck on internal edges of a ConcavePolygonShape3D.
  • Fixed issue where collision with ConvexPolygonShape3D could yield a flipped contact normal.
  • Fixed issue where an Area3D with monitoring disabled wouldn't emit any entered events for already overlapping bodies once monitoring was enabled.
  • Fixed issue where changing the center-of-mass of a RigidBody3D attached to a joint would shift its transform relative to the joint.
  • Fixed issue where the total_gravity property on PhysicsDirectBodyState3D would always return a zero vector for kinematic bodies.
  • Fixed issue with Area3D detecting overlaps slightly outside of its collision shapes.

0.8.0-rc1

24 Sep 19:59
Compare
Choose a tag to compare
0.8.0-rc1 Pre-release
Pre-release

This is the first release candidate for version 0.8.0, and assuming no major bugs/regressions are found is likely to become 0.8.0-stable.

This release supports Godot 4.1.

Changelog

These are the notable changes that have been made since 0.7.0-stable was released. You can also find a list of all the commits here.

Any breaking changes are denoted with ⚠️.

Changed

  • ⚠️ Changed collision layers and masks for Area3D to behave like they do in Godot Physics, allowing for asymmetrical setups, where overlaps are only reported if the mask of an Area3D contains the layer of the overlapping object.
  • ⚠️ Changed the body_set_force_integration_callback method of PhysicsServer3D to behave like it does with Godot Physics, where omitting the binding of userdata requires that the callback also doesn't take any userdata. It also will no longer be called when the body is sleeping.

Added

  • Added timings of Jolt's various jobs to the "Physics 3D" profiler category.
  • Added registering of JoltPhysicsServer3D as an actual singleton, which makes Jolt-specific server methods (e.g. pin_joint_get_applied_force) easier to deal with from dynamic scripting languages like GDScript.

Fixed

  • Fixed issue with move_and_slide, where under certain conditions you could get stuck on internal edges of a ConcavePolygonShape3D if the floor was within 5-ish degrees of floor_max_angle.
  • Fixed issue with move_and_slide, where under certain conditions, while using a BoxShape3D or CylinderShape3D shape, you could get stuck on internal edges of a ConcavePolygonShape3D.
  • Fixed issue where collision with ConvexPolygonShape3D could yield a flipped contact normal.
  • Fixed issue where an Area3D with monitoring disabled wouldn't emit any entered events for already overlapping bodies once monitoring was enabled.
  • Fixed issue where changing the center-of-mass of a RigidBody3D attached to a joint would shift its transform relative to the joint.
  • Fixed issue where the total_gravity property on PhysicsDirectBodyState3D would always return a zero vector for kinematic bodies.