
| 📰 Title: | Jolt Physics | 🕹️ / 🛠️ Type: | Tool |
|---|---|---|---|
| 🗃️ Genre: | Development | 👁️ Visual: | Text |
| 🏷️ Category: | Development ➤ Engine ➤ Physics engine | 🏝️ Perspective: | First person (interface) |
| 🔖 Tags: | Framework; Physics engine; C++; C#; Rust; Python; Java; JavaScript; Zig; 3D VR | ⏱️ Pacing: | Real Time |
| 🐣️ Approx. start: | 2021-08-08 | 👫️ Played: | Single |
| 🐓️ Latest: | 2026-07-12 | 🚦 Status: | 04. Released (status) |
| 📍️ Version: | Latest: 💥️ 5.6 / Dev: d8f2c99 | ❤️ Like it: | 9. ⏳️ |
| 🏛️ License type: | 🕊️ Libre | 🎀️ Quality: | 7. ⏳️ |
| 🏛️ License: | MIT | ⭐ (temporary): | |
| 🎰️ ID: | 16383 | 🐛️ Created: | 2023-11-20 |
| 💡 Lights on: | 🚧️ Some work remains to be done: | ||
|---|---|---|---|
| 📰 What's new?: | 🍎️ (Stable) Major release | 💭️ New version published (to be updated): | |
| 🦣️ Awaiting publication on Mastodon: | 🎨️ Significant improvement: | ||
| 🦺️ Work in progress: | 🎖️ This work: | ||
| 📰 Previous News: | 🛜️ RSS (on RSS Guard): | ||
| 👫️ Contrib.: | goupildb | 🛜️ Reading frequency: | 0w (well-spaced updates) |
| 🐜️ Updated: | 2026-07-19 |
| 📜️[en]: | A libre 3D physics engine optimized for multi-core processors, video games and virtual reality applications. In particular, it offers simulation of rigid bodies of various shapes, characters, vehicles, soft bodies (soft balls, fabrics, etc.) and hair. It also supports constraints between bodies, buoyancy calculations in water, collision detection using various techniques, sensors (trigger volumes), animated ragdoll physics, and an optional double-precision mode for creating large-scale worlds. | 📜️[fr]: | Un moteur physique 3D libre optimisé pour le multicœur, les jeux vidéo et applications de réalité virtuelle. Il offre notamment la simulation de corps rigides de différentes formes, de personnages, de véhicules, de corps souples (balle molle, tissus, ...), de cheveux. Il prend aussi en charge les contraintes entre les corps, les calculs de flottabilité dans l’eau, la détection de collisions selon différentes techniques, les capteurs (volumes de déclenchement), la physique Ragdolls animée, un mode double précision optionnel permettant de créer des mondes de grande taille. |
|---|
🐹️ From Users: (5.6/202607),
🕯️ How To: (202501),
🎮️ Showcase: (202406), (202406), (202602),
🏡️ Website & videos
• Website: [Homepage] [Dev site] [Features/About] [Screenshots]
• Videos: t(202xxx) gd(202xxx) gu(5.6/202607) r(202xxx) lp(202xxx) ht(202501) d(202406) d(202406) d(202602) d(202311) d(202501) d(202505) d(202401) d(202601) d(202108) g[fr](202xxx) g[de](202xxx) g[ru](202xxx) g[pl](202xxx) g[cz](202xxx) g[sp](202xxx) g[pt](202xxx) g[it](202xxx) g[tr](202xxx)]
• Doc: [WIKI] [FAQ]
• Updates: [RSS] / [Changelog 1(news/blog) 2(release notes) 3(tags) 4(commits)]
💰 Commercial
• (empty)
🍩️ Resources
• (empty, license): [Homepage] [Dev site] 🎬️ g(202xxx)
🛠️ Technical informations
[PCGamingWiki] [MobyGames]
🦣️ Social
Devs (Jolt Physics Teams 1 2 [fr] [en]): [Site 1 2] [Chat] [mastodon] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
Devs (Jorrit Rouwe (jrouwe) 1 2 [fr] [en]): [Site 1 2] [Chat] [mastodon] [Bluesky] [X] [PeerTube] [YouTube] [PressKit] [Interview 1(202xxx) 2(202xxx)]
The Project: [Blog] [Chat] [Forums] [mastodon] [PeerTube] [YouTube] [PressKit] [Lemmy] [reddit] [Discord]
🐝️ Related
[GameFromScratch]
📦️ Misc. repositories
[Repology] [pkgs.org] [Generic binary] [Arch Linux / AUR] [openSUSE] [Debian/Ubuntu] [Flatpak] [AppImage(author's repo)] [Snap] [PortableLinuxGames]
🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB]
🕊️ Source of this Entry: [GameFromScratch]
🦣️ Social Networking Update (on mastodon)
🛠️ Title: Jolt Physics
🦊️ Idea: A libre 3D physics engine optimized for multi core, video games & VR applications
🏡️ -
🐣️ https://github.com/jrouwe/JoltPhysics
🦉️ https://mastodon.gamedev.place/@jrouwe
🔖 #LinuxGameDev #PhysicsEngine
📦️ #Libre
📕️ https://lebottinlinux.vps.a-lec.org/LO.html
🥁️ Update: 5.6
⚗️ Major release(Stable)🍎️
📌️ Changes: https://github.com/jrouwe/JoltPhysics/releases
🦣️ From: https://mastodon.gamedev.place/@GameFromScratch/116913324234276662
🛜️ https://github.com/jrouwe/JoltPhysics/releases.atom
🐹️ https://www.youtube.com/embed/NToe5xXi-Jc
🕯️https://www.youtube.com/embed/qmnT2CSGCno
🎮️ https://www.youtube.com/embed/MksMh-3RFYw
🎮️ https://www.youtube.com/embed/kqzF2MGSkjA
🎮️ https://www.youtube.com/embed/-7Bz33Bch3U
🕶️ The project icon
📚️ Jolt Physics is a libre 3D physics engine optimized for multi-core processors, video games and virtual reality applications. In particular, it offers simulation of rigid bodies of various shapes, characters, vehicles, soft bodies (soft balls, fabrics, etc.) and hair. It also supports constraints between bodies, buoyancy calculations in water, collision detection using various techniques, sensors (trigger volumes), animated ragdoll physics, and an optional double-precision mode for creating large-scale worlds.
🕵 xxx: (🧪️Not_tested)
📜️ "A libre 3D physics engine optimized for multi core, video games & VR applications" 📜️
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.
Design considerations
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:
• Games do more than simulating physics. These things happen across multiple threads. We emphasize on concurrently accessing physics data outside of the main simulation update:
⚬ Sections of the simulation can be loaded / unloaded in the background. We prepare a batch of physics bodies on a background thread without locking or affecting the simulation. We insert the batch into the simulation with a minimal impact on performance.
⚬ Collision queries can run parallel to adding / removing or updating a body. If a change to a body happened on the same thread, the change will be immediately visible. If the change happened on another thread, the query will see a consistent before or after state. An alternative would be to have a read and write version of the world. This prevents changes from being visible immediately, so we avoid this.
⚬ Collision queries can run parallel to the main physics simulation. We do a coarse check (broad phase query) before the simulation step and do fine checks (narrow phase query) in the background. This way, long running processes (like navigation mesh generation) can be spread out across multiple frames.
• Accidental wake up of bodies cause performance problems when loading / unloading content. Therefore, bodies will not automatically wake up when created. Neighboring bodies will not be woken up when bodies are removed. This can be triggered manually if desired.
• The simulation runs deterministically. You can replicate a simulation to a remote client by merely replicating the inputs to the simulation. Read the Deterministic Simulation section to understand the limits.
• We try to simulate behavior of rigid bodies in the real world but make approximations. Therefore, this library should mainly be used for games or VR simulations.
Features
✅️ Simulation of rigid bodies of various shapes using continuous collision detection:
● Sphere
● Box
● Capsule
● Tapered-capsule
● Cylinder
● Tapered-cylinder
● Convex hull
● Plane
● Compound
● Mesh (triangle)
● Terrain (height field)
✅️ Simulation of constraints between bodies:
● Fixed
● Point
● Distance (including springs)
● Hinge
● Slider (also called prismatic)
● Cone
● Rack and pinion
● Gear
● Pulley
● Smooth spline paths
● Swing-twist (for humanoid shoulders)
● 6 DOF
✅️ Motors to drive the constraints.
✅️ Collision detection:
● Casting rays.
● Testing shapes vs shapes.
● Casting a shape vs another shape.
● Broadphase only tests to quickly determine which objects may intersect.
✅️ Sensors (trigger volumes).
✅️ Animated ragdolls:
● Hard keying (kinematic only rigid bodies).
● Soft keying (setting velocities on dynamic rigid bodies).
● Driving constraint motors to an animated pose.
● Mapping a high detail (animation) skeleton onto a low detail (ragdoll) skeleton and vice versa.
✅️ Game character simulation (capsule)
● Rigid body character. Moves during the physics simulation. Cheapest option and most accurate collision response between character and dynamic bodies.
● Virtual character. Does not have a rigid body in the simulation but simulates one using collision checks. Updated outside of the physics update for more control. Less accurate interaction with dynamic bodies.
✅️ Vehicles
● Wheeled vehicles.
● Tracked vehicles.
● Motorcycles.
✅️ Soft body simulation (e.g. a soft ball or piece of cloth).
● Edge constraints.
● Dihedral bend constraints.
● Cosserat rod constraints (an edge with an orientation that can be used to orient geometry, e.g. a plant leaf).
● Tetrahedron volume constraints.
● Long range attachment constraints (also called tethers).
● Limiting the simulation to stay within a certain range of a skinned vertex.
● Internal pressure.
● Collision with simulated rigid bodies.
● Collision tests against soft bodies.
✅️ A strand based hair simulation running on GPU
● System is based on Cosserad rods.
● Can use long range attachment constraints to limit the stretch of hairs.
● Supports simulation (guide) and render (follow) hairs.
● Hair vs hair collision is handled by accumulating the average velocity in a grid and using those velocities to drive hairs.
● Supports collision with the environment, although it only supports ConvexHull and CompoundShapes at the moment.
● The roots of the hairs can be skinned to the scalp mesh.
✅️ Water buoyancy calculations.
✅️ An optional double precision mode that allows large worlds.
Un moteur physique 3D libre optimisé pour le multicœur, les jeux vidéo et applications de réalité virtuelle, par la Jolt Physics Teams, initié par Jorrit Rouwe (jrouwe).
En C++.
Jolt Physics est un moteur physique 3D libre et multiplateforme optimisé pour le multicœur, les jeux vidéo et applications de réalité virtuelle. Il offre notamment la simulation de corps rigides de différentes formes, de personnages, de véhicules, de corps souples (balle molle, tissus, ...), de cheveux. Il prend aussi en charge les contraintes entre les corps, les calculs de flottabilité dans l’eau, la détection de collisions selon différentes techniques, les capteurs (volumes de déclenchement), la physique Ragdolls animée, un mode double précision optionnel permettant de créer des mondes de grande taille.
Une bibliothèque de physique des corps rigides et de détection de collisions optimisée pour le multicœur. Adaptée aux jeux vidéo et aux applications de réalité virtuelle. Utilisée par Horizon Forbidden West et Death Stranding 2 : On the Beach.
Considérations de conception
Pourquoi créer un énième moteur de physique ? Tout d’abord, il s’agissait d’un projet d’apprentissage personnel. Ensuite, je souhaitais remédier à certains problèmes que je rencontrais avec les moteurs de physique existants :
• Les jeux ne se limitent pas à la simulation physique. Ces opérations s’effectuent sur plusieurs threads. Nous mettons l’accent sur l’accès simultané aux données physiques en dehors de la mise à jour principale de la simulation :
⚬ Des sections de la simulation peuvent être chargées ou déchargées en arrière-plan. Nous préparons un lot de corps physiques sur un thread d’arrière-plan sans verrouiller ni affecter la simulation. Nous insérons ce lot dans la simulation avec un impact minimal sur les performances.
⚬ Les requêtes de collision peuvent s’exécuter en parallèle de l’ajout, de la suppression ou de la mise à jour d’un corps. Si une modification d’un corps a eu lieu sur le même thread, elle sera immédiatement visible. Si la modification s’est produite sur un autre thread, la requête verra un état cohérent, qu’il s’agisse de l’état antérieur ou postérieur. Une alternative consisterait à disposer d’une version en lecture et d’une version en écriture du monde. Cela empêche les modifications d’être visibles immédiatement, c’est pourquoi nous évitons cette approche.
⚬ Les requêtes de collision peuvent s'exécuter en parallèle de la simulation physique principale. Nous effectuons une vérification approximative (requête en phase large) avant l'étape de simulation, puis des vérifications plus précises (requête en phase étroite) en arrière-plan. De cette manière, les processus longs (tels que la génération de mailles de navigation) peuvent être répartis sur plusieurs images.
• Le réveil accidentel de corps entraîne des problèmes de performances lors du chargement ou du déchargement de contenu. Par conséquent, les corps ne se réveillent pas automatiquement lors de leur création. Les corps voisins ne sont pas réveillés lorsque des corps sont supprimés. Ce processus peut être déclenché manuellement si vous le souhaitez.
• La simulation s’exécute de manière déterministe. Vous pouvez répliquer une simulation sur un client distant en répliquant simplement les données d’entrée de la simulation. Consultez la section « Simulation déterministe » pour en comprendre les limites.
• Nous essayons de simuler le comportement des corps rigides dans le monde réel, mais nous procédons par approximations. Par conséquent, cette bibliothèque doit principalement être utilisée pour les jeux ou les simulations en réalité virtuelle.
Fonctionnalités
✅️ Simulation de corps rigides de différentes formes à l’aide d’une détection de collision continue :
● Sphère
● Boîte
● Capsule
● Capsule conique
● Cylindre
● Cylindre conique
● Enveloppe convexe
● Plan
● Composé
● Maillage (triangle)
● Terrain (champ de hauteur)
✅️ Simulation des contraintes entre les corps :
● Fixe
● Point
● Distance (y compris les ressorts)
● Charnière
● Coulisseau (également appelé prismatique)
● Cône
● Crémaillère et pignon
● Engrenage
● Poulie
● Trajectoires splines lisses
● Oscillation-torsion (pour les épaules des humanoïdes)
● 6 degrés de liberté
✅️ Moteurs pour conduire les contraintes.
✅️ Détection de collisions :
● Projection de rayons.
● Comparaison de formes entre elles.
● Comparaison d’une forme par rapport à une autre.
● La phase préliminaire (Broadphase) effectue uniquement des tests pour déterminer rapidement quels objets sont susceptibles de se croiser.
✅️ Capteurs (volumes de déclenchement).
✅️ Ragdolls animés :
● Keying « dur » (corps rigides cinématiques uniquement).
● Keying « souple » (définition des vitesses sur des corps rigides dynamiques).
● Pilotage de moteurs de contraintes vers une pose animée.
● Mappage d’un squelette hautement détaillé (animation) sur un squelette peu détaillé (ragdoll) et vice versa.
✅️ Simulation de personnage de jeu (capsule)
● Personnage à corps rigide. Se déplace pendant la simulation physique. Option la moins coûteuse et réponse de collision la plus précise entre le personnage et les corps dynamiques.
● Personnage virtuel. Ne dispose pas de corps rigide dans la simulation mais en simule un à l’aide de vérifications de collision. Mis à jour en dehors de la mise à jour physique pour plus de contrôle. Interaction moins précise avec les corps dynamiques.
✅️ Véhicules
● Véhicules à roues.
● Véhicules à chenilles.
● Motos.
✅️ Simulation de corps souples (par exemple, une balle molle ou un morceau de tissu).
● Contraintes de bord.
● Contraintes de courbure dièdre.
● Contraintes de tige de Cosserat (un bord dont l’orientation peut être utilisée pour orienter la géométrie, par exemple une feuille de plante).
● Contraintes de volume tétraédriques.
● Contraintes d’attache à longue portée (également appelées « tethers »).
● Limitation de la simulation pour qu’elle reste dans un certain rayon autour d’un sommet skinné.
● Pression interne.
● Collision avec des corps rigides simulés.
● Tests de collision avec des corps souples.
✅️ Simulation de cheveux par mèches s’exécutant sur le GPU
● Le système repose sur les tiges de Cosserad.
● Possibilité d’utiliser des contraintes d’attachement à longue portée pour limiter l’étirement des cheveux.
● Prise en charge des cheveux en simulation (guide) et en rendu (follow).
● Les collisions entre cheveux sont gérées en cumulant la vitesse moyenne dans une grille et en utilisant ces vitesses pour animer les cheveux.
● Prend en charge les collisions avec l’environnement, bien qu’il ne prenne en charge pour l’instant que les formes ConvexHull et CompoundShapes.
● Les racines des cheveux peuvent être « skinnées » sur le maillage du cuir chevelu.
✅️ Calculs de flottabilité dans l’eau.
✅️ Un mode double précision optionnel permettant de créer des mondes de grande taille.