Which Box2D JavaScript library should I use?

a paid nerd picture a paid nerd · Oct 2, 2011 · Viewed 32.8k times · Source

There are a few different ports of Box2D for JavaScript. Which one is the best?

  • Box2DJS - "converted from Box2DFlashAS3_1.4.3.1 in an automatic manner"

  • Box2Dflash 2.0 ported to JavaScript - "one big nasty hack that just happens to work"

  • box2dweb - "a port of Box2DFlash 2.1a to JavaScript. I developed an ActionScript 3 -to- JavaScript converter to generate the code"

  • HBehrens/box2d.js - "a JavaScript Version of Box2D 2.1a" (Added Nov 21, 2011)

  • kripken/box2d.js - "a direct port of the Box2D 2D physics engine to JavaScript, using Emscripten" (Added Sep 24, 2013)

Any ideas which version http://chrome.angrybirds.com/ uses, if any?

Answer

a paid nerd picture a paid nerd · Nov 1, 2011

Note to readers!

This question was originally asked and answered in 2011, but I'll do my best to keep it up to date!

Here's what I've found:

  • kripken/box2d.js is a port of Box2D using Emscripten and works well and is fast. I have used this personally with great success.
  • planck.js is the newest port and is written from the ground-up in JavaScript
  • Box2DJS is a port of Box2DFlash 1.4.3.1. box2dweb is a port of version 2.1a.
  • Box2DJS works "as a CommonJS module without any modifications at all" [1]
  • Box2DJS "not up-to-date and you have to import a big amount of JavaScript files in every project" [2]
  • box2dweb is contained in a single file [2]
  • box2dweb is "a much newer port and has a lot fewer issues" than Box2DJS [3]. However, switching might introduce new issues [4].
  • Box2DJS depends on Prototype but box2dweb does not [5]
  • Seth Ladd has promoted box2dweb with examples on his blog [6]
  • Nobody seems to be using the third alternative.
  • There are also physics simulators not based on Box2D. Check out Matter.js and p2.js

There's also a similar discussion on gamedev.stackexchange.com.

I'd say that the winner is kripken/box2d.js.