appsinacup/godot-rapier-physics
Godot Rapier Physics – 2D and 3D physics engine for the Godot game engine. with better stability, performance, liquids, determinism, state serialization and no ghost collisions.
Works on: Desktop, Mobile and Web
Documentation | Changelog | Discord | Contributing | Architecture
2D and 3D physics engine for the Godot game engine. with better stability, performance, liquids, determinism, state serialization and no ghost collisions.
Godot Rapier Physics is a 2D and 3D physics drop-in replacement for the Godot game engine through rapier physics engine salva fluids simulation library.
Features
| Stability | No Vibrations |
|---|---|
![]() |
![]() |
| Fluids 2D | Fluids 3D |
|---|---|
![]() |
![]() |
| Body Skin | Inverse Kinematics |
|---|---|
![]() |
![]() |
| No Ghost Collisions | Improved Stacking |
|---|---|
![]() |
![]() |
Serialization|Deserialization
Save Physics State|Load Physics State
Locally Deterministic|*Optionally Cross Platform Deterministic
Exact simulation every time (on same platform)|Exact simulation on multiple platforms
Installation
-
Automatic (Recommended): Download the plugin from the official Godot Asset Store using the
AssetLibtab in Godot:- Rapier Physics 2D - Fast Version with Parallel SIMD Solver
- Rapier Physics 2D - Slower Version with Cross Platform Deterministic
- Rapier Physics 3D - Fast Version with Parallel SIMD Solver
- Rapier Physics 3D - Slower Version with Cross Platform Deterministic
Note: For general use cases, use the Faster Version.
-
Manual: Download the latest github release and move only the
addonsfolder into your projectaddonsfolder.
After installing, go to Advanced Settings -> Physics -> 2D or 3D. Change Physics Engine to Rapier2D or Rapier3D.
Implementation Progress
The 2D part is pretty stable, though there are some issues, the 3D part is still missing some things. See the Implementation Progress to get an idea of what status it is in and what features it has.
Limitations
- Double builds are disabled for now (until salva supports double builds)
- No support for asymmetric collisions (eg. object 1 hitting object 2 but object 2 not hitting object 1). This is the exact check rapier does:
(A.layer & B.mask) != 0 || (B.layer & A.mask) != 0
Module build
In order to build it as a module, go to:








