Giter Site home page Giter Site logo

Godot Jolt

Godot Jolt is a native extension for the Godot game engine that allows you to use the Jolt physics engine to power Godot's 3D physics.

It functions as a drop-in replacement for Godot Physics, by implementing the same nodes that you would use normally, like RigidBody3D or CharacterBody3D.

Table of Contents

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?

  • WorldBoundaryShape3D is not supported
  • The physics server is not thread-safe (yet)
  • Memory usage is not reflected in Godot's performance monitors (yet)
  • Ray-casts do not support face_index
  • SoftBody3D does not support any interactions with Area3D

What else is different?

  • Area3D detecting static bodies is opt-in, at 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
  • Single-body joints will make node_a be the "world node" rather than node_b
  • 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 of ConcavePolygonShape3D
  • 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
  • Contact reporting for kinematic bodies is partially opt-in, at a potentially heavy performance/memory cost

Also consider this note from Jolt's documentation:

In order for the simulation to be accurate, dynamic objects should be in the order of 0.1 to 10 m long, have speeds in the order of 0 to 500 m/s and have gravity in the order of 0 to 10 m/s^2. Static object should be in the order of 0.1 to 2000 m long.

What versions of Godot are supported?

Currently the only supported version is Godot 4.2 (including 4.2.x).

What platforms are supported?

  • Windows (x86-64, x86)
  • Linux (x86-64, x86)
  • macOS (x86-64 + Apple Silicon)
  • iOS
  • Android (ARM64, ARM32, x86-64, x86)

Note that Linux support is limited to glibc 2.31 or newer, which for Ubuntu means 20.04 (Focal Fossa) or newer.

How do I get started?

  1. Download it from GitHub or from Godot Asset Library
  2. Extract the files to your project directory
  3. Start (or restart) Godot
  4. Open your project settings
  5. Make sure "Advanced Settings" is enabled
  6. Go to "Physics" and then "3D"
  7. Change "Physics Engine" to "JoltPhysics3D"
  8. Restart Godot

What settings are there?

See docs/settings.md for information about the project settings available in Godot Jolt.

How do I build from source?

See docs/building.md for information about how to build Godot Jolt from source.

What do the versions mean?

Godot Jolt adheres to Semantic Versioning, formatted as <major>.<minor>.<patch>. The major version will be incremented when backwards-incompatible API changes are made, the minor version will be incremented when backwards-compatible API changes are made and the patch version will be incremented when changes are made that don't affect the API.

"API", in this case, refers to any user-facing parts of the extension, such as nodes, properties, methods, parameters or project settings.

Note that major version 0.x.y carries a special meaning in semantic versioning, where even minor versions may contain backwards-incompatible changes.

See CHANGELOG.md for details about what notable changes were included in each version.

What's the license?

Godot Jolt is distributed under the MIT license. See LICENSE.txt for more details and THIRDPARTY.txt for third-party licenses.

Godot Jolt's Projects

asset-library icon asset-library

A repository containing Godot Jolt distributions for the Godot Asset Library

fmt icon fmt

A fork of the fmt formatting library, used by Godot Jolt.

godot-cpp icon godot-cpp

A fork of the Godot engine's C++ bindings, used by Godot Jolt.

godot-jolt icon godot-jolt

Godot Jolt is a Godot extension that integrates the Jolt physics engine

jolt icon jolt

A fork of the Jolt physics engine, used by Godot Jolt.

mimalloc icon mimalloc

A fork of the mimalloc general-purpose allocator, used by Godot Jolt.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.