/box2d

Fork of Box2D as a playground for adding modern C++ and build system improvements to an existing C++ library. This fork is not intended to be merged back into Box2D. Please use the existing Box2D unless you have a good reason to use this one!

Primary LanguageC++MIT LicenseMIT

Box2D Logo

Build Status

Build Status

Box2D

Box2D is a 2D physics engine for games.

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 and Installing

cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release --target install

Documentation

License

Box2D is developed by Erin Catto, and uses the MIT license.