Chipmunk (software)

Chipmunk2D is a 2-dimensional real-time rigid body physics engine written by Scott Lembcke that is designed to be portable, lightweight, fast, and easy to use. Prior to version 7, two main versions of the library existed. Chipmunk2D Free was written purely in C99, and freely available under the terms of the MIT License. Chipmunk2D Pro was a proprietary upgrade designed for development on mobile devices. It included several high-level subroutines in Objective-C, and floating-point optimizations for the ARM processor. However, after version 7 the project was fully open-sourced.

Aside from Objective-C, there are official bindings for Ruby, and third party interfaces exist for Python, Haskell, OCaml, and others. Chipmunk is endorsed by a number of game libraries, including Aerosol, Gosu, and Cocos2d.

Features
Chipmunk supports multiple collision primitives attached to one rigid body, and bodies may be joined by constraints. It has a flexible collision detection system with layers, exclusion groups and collision callbacks. Callbacks are defined based on user definable "collision types" and may reject collisions and even override the calculation of friction and elasticity coefficients.

Version 7 of the library introduced "Autogeometry", an image tracing feature that transforms a raster graphic into a polygonal shape usable by the library. This feature is currently only available in the Objective-C version of the library.

Chipmunk has been widely used on the iPhone, Mac/Windows/Linux, and other platforms, including Nintendo Wii and Sony PSP.