https://github.com/erincatto/box2d Box2D is a 2D physics engine for games
Box2D is a 2D physics engine for games.
Continuous collision detection
Contact events and sensors
Convex polygons, capsules, circles, rounded polygons, segments, and chains
Multiple shapes per body
Collision filtering
Ray casts, shape casts, and overlap queries
Robust Soft Step rigid body solver
Continuous physics for fast translations and rotations
Island based sleep
Revolute, prismatic, distance, mouse joint, weld, and wheel joints
Joint limits, motors, springs, and friction
Joint and contact forces
Body movement events and sleep notification
Data-oriented design
Written in portable C17
Extensive multithreading and SIMD
OpenGL with GLFW and enkiTS
Graphical user interface with imgui
Many samples to demonstrate features and performance
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
Install CMake
Add Cmake to the path in .zprofile (the default Terminal shell is zsh)
export PATH="/Applications/CMake.app/Contents/bin:$PATH"
mkdir build
cd build
cmake -G Xcode ..
open box2d.xcodeproj
Select the samples scheme
Edit the scheme to set a custom working directory, make this be in box2d/samples
You can now build and run the samples
The Box2D library and samples build and run on Windows, Linux, and Mac.
Box2D should be built on recent versions of clang and gcc. You will need the latest Visual Studio version for C11 atomics to compile (17.8.3+).
AVX2 CPU support is assumed on x64. You can turn this off in the CMake options and use SSE2 instead. There are some compatibility issues with very old CPUs.
Community
Please do not submit pull requests. Instead, please file an issue for bugs or feature requests. For support, please visit the Discord server.
Please file an issue or start a chat on discord.
Box2D is developed by Erin Catto and uses the MIT license .
Sponsorship
Support development of Box2D through Github Sponsors
Ports, wrappers, and bindings