Chipmunk (software)

Last updated
Chipmunk physics engine
Original author(s) Scott Lembcke
Developer(s) Howling Moon Software
Stable release
7.0.3 / June 7, 2019;4 years ago (2019-06-07)
Repository
Written in C, Objective-C
Operating system Cross-platform
Type Physics engine middleware
License MIT License, formerly open core
Website chipmunk-physics.net

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. [1] 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. [2] However, after version 7 the project was fully open-sourced. [3]

Contents

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

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. [10]

See also

Related Research Articles

<span class="mw-page-title-main">GNUstep</span> Open source widget toolkit and application development tools

GNUstep is a free software implementation of the Cocoa Objective-C frameworks, widget toolkit, and application development tools for Unix-like operating systems and Microsoft Windows. It is part of the GNU Project.

This is a "genealogy" of programming languages. Languages are categorized under the ancestor language with the strongest influence. Those ancestor languages are listed in alphabetic order. Any such categorization has a large arbitrary element, since programming languages often incorporate major ideas from multiple sources.

The Simplified Wrapper and Interface Generator (SWIG) is an open-source software tool used to connect computer programs or libraries written in C or C++ with scripting languages such as Lua, Perl, PHP, Python, R, Ruby, Tcl, and other language implementations like C#, Java, JavaScript, Go, D, OCaml, Octave, Scilab and Scheme. Output can also be in the form of XML.

<span class="mw-page-title-main">Havok (software)</span> Video game middleware

Havok is a middleware software suite developed by the Irish company Havok. Havok provides a physics engine component and related functions to video games.

Modular programming is a software design technique that emphasizes separating the functionality of a program into independent, interchangeable modules, such that each contains everything necessary to execute only one aspect of the desired functionality.

The GNU Scientific Library is a software library for numerical computations in applied mathematics and science. The GSL is written in C; wrappers are available for other programming languages. The GSL is part of the GNU Project and is distributed under the GNU General Public License.

<span class="mw-page-title-main">Blender Game Engine</span> Discontinued game engine

The Blender Game Engine was a free and open-source 3D production suite used for making real-time interactive content. It was previously embedded within Blender, but support for it was dropped in 2019, with the release of Blender 2.8. The game engine was written from scratch in C++ as a mostly independent component, and includes support for features such as Python scripting and OpenAL 3D sound.

A foreign function interface (FFI) is a mechanism by which a program written in one programming language can call routines or make use of services written or compiled in another one. An FFI is often used in contexts where calls are made into binary dynamic-link library.

<span class="mw-page-title-main">Bullet (software)</span>

Bullet is a physics engine which simulates collision detection as well as soft and rigid body dynamics. It has been used in video games and for visual effects in movies. Erwin Coumans, its main author, won a Scientific and Technical Academy Award for his work on Bullet. He worked for Sony Computer Entertainment US R&D from 2003 until 2010, for AMD until 2014, for Google until 2022 and he now works for Nvidia.

LispWorks is computer software, a proprietary implementation and integrated development environment (IDE) for the programming language Common Lisp. LispWorks was developed by the UK software company Harlequin Ltd., and first published in 1989. Harlequin ultimately spun off its Lisp division as Xanalys Ltd., which took over management and rights to LispWorks. In January 2005, the Xanalys Lisp team formed LispWorks Ltd. to market, develop, and support the software.

The Spread Toolkit is a computer software package that provides a high performance group communication system that is resilient to faults across local and wide area networks. Spread functions as a unified message bus for distributed applications, and provides highly tuned application-level multicast, group communication, and point to point support. Spread services range from reliable messaging to fully ordered messages with delivery guarantees.

Thrift is an interface definition language and binary communication protocol used for defining and creating services for numerous programming languages. It was developed at Facebook for "scalable cross-language services development" and as of 2020 is an open source project in the Apache Software Foundation.

FluidSynth, formerly named iiwusynth, is a free open source software synthesizer which converts MIDI note data into an audio signal using SoundFont technology without need for a SoundFont-compatible soundcard. FluidSynth can act as a virtual MIDI device, able to receive MIDI data from any program and transform it into audio on-the-fly. It can also read in SMF (.mid) files directly. On the output side, it can send audio data directly to an audio device for playback, or to a Raw or Wave file. It can also convert a SMF file directly to an audio file in faster-than-real-time. The combination of these features gives FluidSynth the following major use cases:

libffi is a foreign function interface library. It provides a C programming language interface for calling natively compiled functions given information about the target function at run time instead of compile time. It also implements the opposite functionality: libffi can produce a pointer to a function that can accept and decode any combination of arguments defined at run time.

<span class="mw-page-title-main">Box2D</span>

Box2D is a free open source 2-dimensional physics simulator engine written in C++ by Erin Catto and published under the MIT license. It has been used in Crayon Physics Deluxe, Limbo, Rolando, Incredibots, Angry Birds, Tiny Wings, Shovel Knight, Transformice, Happy Wheels, and many online Flash games, as well as iPhone, iPad and Android games using the Cocos2d or Moscrif game engine and Corona framework.

libvirt Management tool

libvirt is an open-source API, daemon and management tool for managing platform virtualization. It can be used to manage KVM, Xen, VMware ESXi, QEMU and other virtualization technologies. These APIs are widely used in the orchestration layer of hypervisors in the development of a cloud-based solution.

Cocos2d is an open-source game development framework for creating 2D games and other graphical software for iOS, Android, Windows, macOS, Linux, HarmonyOS, OpenHarmony and web platforms. It is written in C++ and provides bindings for various programming languages, including C++, C#, Lua, and JavaScript. The framework offers a wide range of features, including physics, particle systems, skeletal animations, tile maps, and others.

Augeas is a free software configuration-management library, written in the C programming language. It is licensed under the terms of the GNU Lesser General Public License.

<span class="mw-page-title-main">RocksDB</span>

RocksDB is a high performance embedded database for key-value data. It is a fork of Google's LevelDB optimized to exploit multi-core processors (CPUs), and make efficient use of fast storage, such as solid-state drives (SSD), for input/output (I/O) bound workloads. It is based on a log-structured merge-tree data structure. It is written in C++ and provides official language bindings for C++, C, and Java. Many third-party language bindings exist. RocksDB is free and open-source software, released originally under a BSD 3-clause license. However, in July 2017 the project was migrated to a dual license of both Apache 2.0 and GPLv2 license. This change helped its adoption in Apache Software Foundation's projects after blacklist of the previous BSD+Patents license clause.

<span class="mw-page-title-main">PureScript</span> Strongly-typed language that compiles to JavaScript

PureScript is a strongly-typed, purely-functional programming language that transpiles to JavaScript, C++11, Erlang, and Go. It can be used to develop web applications, server side apps, and also desktop applications with use of Electron or via C++11 and Go compilers with suitable libraries. Its syntax is mostly comparable to that of Haskell. In addition, it introduces row polymorphism and extensible records. Also, contrary to Haskell, the PureScript language is defined as having a strict evaluation strategy, although there are non-conforming back ends which implement a lazy evaluation strategy.

References

  1. Chipmunk2d update reduced CPU hits for sleeping items
  2. "Chipmunk2D Physics Pro". Howling Moon Software. Retrieved 2014-05-26.
  3. Korth, Andy. "Chipmunk 7 released- Pro tools open sourced". Howling Moon Software. Retrieved 2015-07-21.
  4. Pymunk
  5. Hipmunk: A Haskell binding for Chipmunk
  6. "ocaml-chipmunk". Archived from the original on 2009-01-16. Retrieved 2009-05-04.
  7. Bindings and Ports
  8. Johnson, Dirk. "Gosu Chipmunk Integration". GitHub . Retrieved 2014-05-26.
  9. "Cocos2d". Archived from the original on 2011-07-25. Retrieved 2010-10-02.
  10. "Chipmunk Physics ported to the PSP"