A list of open source physics engines
- Bullet, 3d, c++. (The same website for PyBullet)
- AwayPhysics, an ActionScript 3 port of Bullet
- Bullet-ANE, an Adobe Native Extension for Bullet
- ammo.js, a port of the Bullet physics engine to JavaScript using Emscripten
- Physijs, a physics plugin (based on ammo.js) for three.js
- AmmoNext, a javascript port of the Bullet 3, based on ammo.js
- Bullet.js, a JavaScript port of Bullet physics engine.
- JBullet, a Java port of Bullet.
- ODE, 3d, c/c++ (c style APIs)
- JoltPhysics, 3d, c++, A multi core friendly rigid body physics and collision detection library suitable for games and VR applications
- Bounce, 3d, c++
- nphysics, 2d and 3d, rust
- Rapier, another 2d and 3d physics engine in rust
- Bevy XPBD, a 2D and 3D physics engine based on Extended Position Based Dynamics (XPBD) for the Bevy game engine, in rust.
- Torque2D, 2d, c++
- Torque6, 2d, c++, loosely based on Torque2D
- Velocity Raptor, 2d, c
- Box2D, 2d, c++. (The lite version)
- LiquidFun, a 2D rigid-body and fluid simulation C++ library based upon Box2D
LiquidFun.js, a port of LiquidFun to JavaScript using using Emscripten
box2d.js. a JavaScript port of Box2D using Emscripten
Planck.js, another JavaScript port of Box2D, manually rewritten, not with Emscripten.
Box2DFlash. an ActionScript 3 port of Box2D 2.02 and 2.10
- box2d-js is a JavaScript port of Box2D Physics Engine (converted from Box2DFlashA 1.4.3.1 in an automatic manner)
- box2dweb is a JavaScript port of Box2D Physics Engine (converted from Box2DFlash 2.1a in an automatic manner)
wck (World Construction Kit ). a ActionScript 3 (using Alchemy) port of Box2D 2.10+
fbox2d, another ActionScript 3 port of Box2D 2.10+ revision 141.
pybox2d, a Python port of Box2D
JBox2D, a Java port of Box2D
Farseer, c#, based on Box2D
Box2D.go, a Go port of Box2D
go-box2d-lite, a Go port of Box2D-lite
verlet, 2d, Go
dyn4j, 2d, Java
Jitter Physics - 3d, C#
BEPUphysics v2 - 3d, C#, v1
Jitter Physics - 3d, C#
Cubez - 3d, C++
Nape, 2d, Haxe
cannon.js, 3d, JavaScript
- Physijs (cannon branch), a physics plugin for three.js
GoblinPhysics, 3d, JavaScript
verlet-js, 2d, JavaScript, a simple verlet physics engine
PhysicsJS, 2d, JavaScript
Matter.js, 2d, JavaScript
p2.js, 2d, JavaScript
Coffee Physics, 2d, CoffeeScript (compiles into JavaScript.).
JPE, 2d, JavaScript
APE (Actionscript Physics Engine), 2d, ActionScript 3
Chipmunk2D, 2d, c
Walaber's JelloPhysics, soft-body physics dynamics (not found its webpage)
Gravitle, 2D soft body engine, Rust
JigLib, 3d, c++
- JigLibflash, an ActionScript 3 port if JlgLib
- JigLibJS2, a Javascript port of JlgLib, based on JiglibFlash
Moby, 3d, c++, GPLv2
Newton-Dynamics, 3d, c++
OimoPhysics, 3d, ActionScript 3
- Oimo.js, a JavaScript port of OimoPhysics
elm-physics, a highly experimental toy physics engine in Elm language.
Traer Physics, a simple particle system physics engine for processing (language) and Java.
qu3e, 3d, c++
Tokamak, 3d, c++
DynaMo, 3d, c++, GPL
ReactPhysics3D, 3d, c++
- React, a Java port of ReactPhysics3D
Chrono::Engine, 3d, c++
PositionBasedDynamics, 3d, c++, a library for the physically-based simulation of rigid bodies, deformable solids and fluids.
SPlisHSPlasH, 3d, c++, physically-based simulation of fluids
MuJoCo Physics stands for Multi-Joint dynamics with Contact. It is a general purpose physics engine that aims to facilitate research and development in robotics, biomechanics, graphics and animation, machine learning, and other areas which demand fast and accurate simulation of articulated structures interacting with their environment. (to be open sourced)
Rigs of Rods is a free/libre soft-body physics simulator mainly targeted at simulating vehicle physics. 3d, c++
Physics3D, A 3D physics engine. c++
Here are some ones which may be not complete engines, but very good for study and education purposes:
Along with these open sourced ones, there are some famous non-free (nor not universally free) ones:
-
Nvidia's PhysX,
which will perform much better if PPU (physics processing unit) is available for a graphics card.
You can get the soure code (but not under an open source license) of PhysX by
registering a Nivida developer account.
(thank Morten Skaaning for the info)
Update: PhysX has been open sourced now. See v4 and v5.
-
More proprietary ones:
Havok,
Euphoria,
DMM
Collision detection plays an important role in physics engine development.
Here are some open source collision libraries:
In the end, some articles which are very helpful to physics engine development.
This list may be not complete. Welcome anybody to help me improve this list.
[edit@2015/07/09] added Farseer, JBullet, ReactPhysics3D and React. Thanks to Nick Minkler and Danthekilla.
[edit@2015/07/10] added Chrono::Engine. Highlight GPL license ones. Added two non-free ones. Thanks to Morten Skaaning.
[edit@2016/09/12] added JPE. Bullet.js, Physijs. Box2DFlash, box2d-js, Chipmunk-js, LiquidFun, AmmoNext.
[edit@2017/01/21] added Velocity Raptor, Bounce.
[edit@2017/03/19] added Planck.js.
[edit@2018/01/04] added PyBullet, PositionBasedDynamics, SPlisHSPlasH, DMM. (Thanks electricslpnsld@HN for information)
[edit@2018/11/23] added elm-physics and Traer Physics.
[edit@2019/01/01] added dyn4j, Jitter Physics, BEPUphysics, cyclone physics, Cubez
[edit@2020/07/03] added Dyna-Kinematics and several Go ports of Chipmunk2D.
[edit@2020/08/28] added Rapier.
[edit@2021/12/01] added MuJoCo Physics.
[edit@2022/12/27] added Rigs of Rods
[edit@2023/10/10] added JoltPhysics, Torque2D, Torque6
Like this article? Please support my games and apps. :-)