Box2D is a 2D physics engine for games.
Please do not submit pull requests with new features. Instead, please file an issue first for discussion. For bugs, I prefer detailed bug reports over pull requests.
- Continuous collision detection
- Contact callbacks: begin, end, pre-solve, post-solve
- Convex polygons and circles
- Multiple shapes per body
- One-shot contact manifolds
- Dynamic tree broadphase
- Efficient pair management
- Fast broadphase AABB queries
- Collision groups and categories
- Continuous physics with time of impact solver
- Persistent body-joint-contact graph
- Island solution and sleep management
- Contact, friction, and restitution
- Stable stacking with a linear-time solver
- Revolute, prismatic, distance, pulley, gear, mouse joint, and other joint types
- Joint limits, motors, and friction
- Momentum decoupled position correction
- Fairly accurate reaction forces/impulses
- Small block and stack allocators
- Centralized tuning parameters
- Highly portable C++ with no use of STL containers
- OpenGL with GLFW
- Graphical user interface with imgui
- Extensible test framework
- Support for loading world dumps
- Install CMake
- Ensure CMake is in the user
PATH
- Visual Studio: run
build.bat
from the command prompt - Otherwise: run
build.sh
from a bash shell - Results are in the build sub-folder
- On Windows you can open box2d.sln
You can also visit the project wiki where you will find the FAQ's page
Box2D is developed by Erin Catto, and uses the MIT license.