Cirobb is a small, readable 2D rigid body physics engine in C++, built around one state-of-the-art solver.
💡 For more complex simulations with multiple constraints and shapes, we recommend using Box2D, which is considered the best open-source 2D physics engine available.
- WebAssembly Demo (built and deployed from
main) - YouTube Demo Video (v1.1.4)
Desktop:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/bin/demoWeb (requires the Emscripten SDK):
./build_web.sh
python3 -m http.server -d build-web/web| ⬜ Distance Constraint | Optional feature for distance-based constraints |
| ⬜ Convex Polygons | Collision Detection against convex polygons |
| ✅ Contact Points |
- Iterative Dynamics with Temporal Coherence
- Modeling and Solving Constraints
- Soft Constraints
- Numerical Methods
- Continuous Collision Detection
- Understanding Constraints
- The Separating Axis test Between Convex Polyhedra
- Robust Contact Creation for physics Simulation
- Forum Bullet
- Exploring MLCP Solvers And Featherstone
- Iterative Rigid Body Solvers 2012
- Iterative Rigid Body Solvers 2013
- Impulse-based Dynamic Simulation of Rigid Body Systems
- Book of Physics-Based Animation 2005
- Numerical Methods for Linear Complementarity Problems in Physics-based Animation
- Analytical Methods for Dynamic Simulation of Non-penetrating Rigid Bodies
- Fast Contact Force Computation for Nonpenetrating Rigid Bodies
- Linear-Time Dynamics using Lagrange Multipliers
- Physically Based Modeling, Pixar Animation Studios
- Numerical Integration
- Understanding Rotations
- Position Based Dynamics
- Post-Stabilization for Rigid Body Simulation with Contact and Constraints
- Separating Axis Test (SAT) and Support Points in 2D
- Game Physics Pearls by Gino van den Bergen and Dirk Gregorius
- Real-Time Collision Detection by Christer Ericson
Cirobb is my personal project to practice physics for video games.

