Giter VIP home page Giter VIP logo

planck.js's Introduction

Planck.js

Planck.js is JavaScript (TypeScript) rewrite of Box2D physics engine for cross-platform HTML5 game development.

Motivations

  • Taking advantage of Box2D's efforts and achievements
  • Developing readable and maintainable JavaScript code
  • Optimizing the library for web and mobile platforms
  • Providing a JavaScript-friendly API

Documentation

Community

API and Architecture

Planck.js includes Box2D algorithms without modification and its architecture is very similar to Box2D. However some internal changes and refactoring are made during rewrite to address differences between C++ and JavaScript.

Planck.js public API closely follows Box2D API, with the following differences:

  • b2 prefix is dropped from class names, for example b2World is now available as planck.World.
  • Method names are converted from UpperCamelCase to lowerCamelCase.
  • Definition classes/objects (BodyDef, FixtureDef, etc.) are replaced by inline JavaScript objects ({}).
  • Shapes are considered immutable and are not cloned when used to create fixtures.
  • Contact filtering can be customized by overriding shouldCollide method of Fixture.
  • Listener classes are replaced with simple functions.
  • World#on(eventName, listenerFn) and World#off(eventName, listenerFn) are added to add and remove event listeners. Currently supported events are: 'begin-contact', 'end-contact', 'pre-solve', 'post-solve', 'remove-joint', 'remove-fixture', 'remove-body'

Updates

v1.0-alpha

  • Source code is migrated to TypeScript, to improves library usability, documentation and maintenance.

  • Package name for v1.0+ is changed to planck. Package name for releases before v1.0 is planck-js.

  • planck.internal namespace is deprecated and everything is directly available under main namesapce (except planck.internal.stats).

  • Source files are moved to /src directory (from /lib) and directory layout is updated to match Box2D.

  • Rollup is used to build the project.

Install

v0.3 (stable release)

To install [email protected] (stable release) see v0.3 branch.

v1.0 (alpha)

Staring from v1.0 package name is changed to planck. Releases and updates before v1.0 will remain available under planck-js.

CDN

Planck.js is available on jsDelivr.

NPM

Install npm package.

npm install planck

Import it in your code.

import * as planck from 'planck';
Testbed

Use CDN in a web page.

<html><body>
  <script src="//cdn.jsdelivr.net/npm/planck@latest/dist/planck-with-testbed.min.js"></script>
  <script>
    planck.testbed(function(testbed) {
      // Your testbed code
    });
  </script>
</body></html>

Use NPM package in Node.

const planck = require('planck/dist/planck-with-testbed');

planck.testbed(function() {
  // ...
});

Projects

Games

Dynamic Visualization

Science and AI

Game Development

Credits

Box2D is a popular C++ 2D rigid-body physics engine created by Erin Catto. Box2D is used in several popular games, such as Angry Birds, Limbo and Crayon Physics, as well as game development tools and libraries such as Apple's SpriteKit.

Planck.js is developed and maintained by Ali Shakiba.

TypeScript definitions for planck.js are developed by Oliver Zell.

License

Planck.js is available under the MIT license.

planck.js's People

Contributors

shakiba avatar zoadt avatar s-iaroshenko avatar necroneco avatar stephanemagnenat avatar feavy avatar prozi avatar matthewvroman avatar thomasyonug avatar haujason avatar bystrano avatar wemyss avatar robloach avatar blidnight avatar smurf667 avatar 1pakch avatar ilya-ku avatar florentmasson avatar dtgreene avatar quantum64 avatar lukasdrgon avatar caseywebdev avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.