mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
110 lines
3.5 KiB
Markdown
110 lines
3.5 KiB
Markdown

|
|
|
|
# Build Status
|
|
[](https://github.com/erincatto/box2d/actions)
|
|
|
|
# Box2D
|
|
|
|
Box2D is a 2D physics engine for games.
|
|
|
|
## Contributing
|
|
|
|
Please do not submit pull requests with new features or core library changes. Instead, please file an issue first for discussion. For bugs, I prefer detailed bug reports over pull requests.
|
|
|
|
## Features
|
|
|
|
### Collision
|
|
- 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
|
|
|
|
### Physics
|
|
- 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
|
|
|
|
### System
|
|
- Small block and stack allocators
|
|
- Centralized tuning parameters
|
|
- Highly portable C++ with no use of STL containers
|
|
|
|
### Testbed
|
|
- OpenGL with GLFW
|
|
- Graphical user interface with imgui
|
|
- Extensible test framework
|
|
- Support for loading world dumps
|
|
|
|
## Building
|
|
- Install [CMake](https://cmake.org/)
|
|
- 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
|
|
|
|
## Building Box2D - Using vcpkg
|
|
You can download and install Box2D using the [vcpkg](https://github.com/Microsoft/vcpkg) dependency manager:
|
|
|
|
- git clone https://github.com/Microsoft/vcpkg.git
|
|
- cd vcpkg
|
|
- ./bootstrap-vcpkg.sh
|
|
- ./vcpkg integrate install
|
|
- ./vcpkg install box2d
|
|
|
|
The Box2D port in vcpkg is kept up to date by Microsoft team members and community contributors. If the version is out of date, please [create an issue or pull request](https://github.com/Microsoft/vcpkg) on the vcpkg repository.
|
|
|
|
Note: vcpkg support is not provided by the Box2D project
|
|
|
|
## 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 testbed scheme
|
|
- Edit the scheme to set a custom working directory, make this be in box2d/testbed
|
|
- You can now build and run the testbed
|
|
|
|
## Installing using CMake
|
|
You can build and install the library and docs using this command sequence (requires Doxygen):
|
|
```
|
|
mkdir build
|
|
cd build
|
|
cmake -DBOX2D_BUILD_DOCS=ON ..
|
|
cmake --build .
|
|
cmake --build . --target INSTALL
|
|
```
|
|
On Windows this tries to install in `Program Files` and thus requires admin privileges. Alternatively you can target another directory using something like this:
|
|
```
|
|
mkdir build
|
|
cd build
|
|
cmake -DBOX2D_BUILD_DOCS=ON -DCMAKE_INSTALL_PREFIX="C:/packages" ..
|
|
cmake --build .
|
|
cmake --build . --target INSTALL
|
|
```
|
|
|
|
## Documentation
|
|
- [Manual](https://box2d.org/documentation/)
|
|
- [reddit](https://www.reddit.com/r/box2d/)
|
|
- [Discord](https://discord.gg/NKYgCBP)
|
|
|
|
## 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)
|