https://github.com/erincatto/Box2D
Box2D is a 2D physics engine for games
https://github.com/erincatto/Box2D
Last synced: about 1 month ago
JSON representation
Box2D is a 2D physics engine for games
- Host: GitHub
- URL: https://github.com/erincatto/Box2D
- Owner: erincatto
- License: mit
- Created: 2015-03-14T16:52:46.000Z (about 10 years ago)
- Default Branch: main
- Last Pushed: 2024-09-30T04:29:44.000Z (8 months ago)
- Last Synced: 2024-10-02T22:16:31.844Z (8 months ago)
- Language: C
- Homepage: https://box2d.org
- Size: 15.2 MB
- Stars: 8,150
- Watchers: 264
- Forks: 1,529
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- AwesomeCppGameDev - Box2D
- awesome-practical-cpp - erincatto/Box2D - Box2D is a 2D physics engine for games.   (Physics)
- awesome-practical-cpp - erincatto/Box2D - Box2D is a 2D physics engine for games.   (Physics)
README

# Build Status
[](https://github.com/erincatto/box2d/actions)# Box2D
Box2D is a 2D physics engine for games.[](https://www.youtube.com/watch?v=dAoM-xjOWtA)
## Features
### Collision
- Continuous collision detection
- Contact events
- Convex polygons, capsules, circles, rounded polygons, segments, and chains
- Multiple shapes per body
- Collision filtering
- Ray casts, shape casts, and overlap queries
- Sensor system### Physics
- 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### System
- Data-oriented design
- Written in portable C17
- Extensive multithreading and SIMD
- Optimized for large piles of bodies### Samples
- OpenGL with GLFW and enkiTS
- Graphical user interface with imgui
- Many samples to demonstrate features and performance## Building for Visual Studio
- Install [CMake](https://cmake.org/)
- Ensure CMake is in the user `PATH`
- Run `create_sln.bat`
- Open and build `build/box2d.sln`## Building for Linux
- Run `build.sh` from a bash shell
- Results are in the build sub-folder## Building for Xcode
- Install [CMake](https://cmake.org)
- 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
- Build and run the samples## Building and installing
- mkdir build
- cd build
- cmake ..
- cmake --build . --config Release
- cmake --install . (might need sudo)## Compatibility
The Box2D library and samples build and run on Windows, Linux, and Mac.You will need a compiler that supports C17 to build the Box2D library.
You will need a compiler that supports C++20 to build the samples.
Box2D uses SSE2 and Neon SIMD math to improve performance. This can be disabled by defining `BOX2D_DISABLE_SIMD`.
## Documentation
- [Manual](https://box2d.org/documentation/)
- [Migration Guide](https://github.com/erincatto/box2d/blob/main/docs/migration.md)## Community
- [Discord](https://discord.gg/NKYgCBP)## Contributing
Please do not submit pull requests. Instead, please file an issue for bugs or feature requests. For support, please visit the Discord server.# Giving Feedback
Please file an issue or start a chat on discord. You can also use [GitHub Discussions](https://github.com/erincatto/box2d/discussions).## License
Box2D is developed by Erin Catto and uses the [MIT license](https://en.wikipedia.org/wiki/MIT_License).## Sponsorship
Support development of Box2D through [Github Sponsors](https://github.com/sponsors/erincatto).Please consider starring this repository and subscribing to my [YouTube channel](https://www.youtube.com/@erin_catto).
## External ports, wrappers, and bindings (unsupported)
- Beef bindings - https://github.com/EnokViking/Box2DBeef
- C++ bindings - https://github.com/HolyBlackCat/box2cpp
- WASM - https://github.com/Birch-san/box2d3-wasm