README.md
A multi core friendly rigid body physics and collision detection library. Suitable for games and VR applications. Used by Horizon Forbidden West and Death Stranding 2: On the Beach.
| A YouTube video showing a ragdoll pile simulated with Jolt Physics. |
For more demos and videos go to the Samples section.
Why create yet another physics engine? Firstly, it has been a personal learning project. Secondly, I wanted to address some issues that I had with existing physics engines:
To get started, look at the HelloWorld example. A HelloWorld example using CMake FetchContent is also available to show how you can integrate Jolt Physics in a CMake project.
Every feature in Jolt has its own sample. Running the Samples application and browsing through the code is a great way to learn about the library!
To learn more about Jolt go to the latest Architecture and API documentation. Documentation for a specific release is also available.
Some algorithms used by Jolt are described in detail in my GDC 2022 talk: Architecting Jolt Physics for 'Horizon Forbidden West' (slides, slides with speaker notes, video).
If you want to run on Platform Blue you'll need to provide your own build environment and PlatformBlue.h due to NDA requirements. This file is available on the Platform Blue developer forum.
For build instructions go to the Build section. When upgrading from an older version of the library go to the Release Notes or API Changes sections.
If you're interested in how Jolt scales with multiple CPUs and compares to other physics engines, take a look at this document.
See a list of projects that use Jolt Physics here.
The project is distributed under the MIT license.
All contributions are welcome! If you intend to make larger changes, please discuss first in the GitHub Discussion section. For non-trivial changes, we require that you agree to a Contributor Agreement. When you create a PR, CLA assistant will prompt you to sign it.
Note that all PRs will be squashed before merging, so there's no need to force-push to git to keep the history clean.