Driven by opportunity and visions of success in the Windows Store, you set to work, turning your gaming idea into code.
Maybe you wanted to move something across the screen. Maybe check if it hit a target. Oh, and there’s wind, and friction, and maybe things should bounce when they collide…
The specter of forgotten math begins to loom.
Thankfully, there are physics engines. Simply put, they take care of some of the math and work involved in games and simulations. Of course they don’t eliminate math and complexity, but they can make many scenarios easier:
Why write such things yourself when others have taken the time to create great libraries?
That said, you may not need a physics engine at all. For the simplest games, it’s pretty easy to roll your own logic for basic bounding-box collision checking and basic motion. However, games become complex quickly, so even if you don’t imagine you’ll need one, the up-front investment in learning & using physics engines can pay off sooner than you’d think.
Home - http://code.google.com/p/box2dweb/ Download - http://code.google.com/p/box2dweb/downloads/list
The box2dweb site has an interactive demo and directs you to Box2DFlash for documentation (since it’s a direct port). According to the box2dweb download site, it was last updated in June, 2011.
Home - http://box2d-js.sourceforge.net/ Download - http://sourceforge.net/projects/box2d-js/
Like box2dweb, Box2DJS is also port of Box2DFlash/Box2DFlashAS3. It’s somewhat older (at least at time of writing) and does require more files to be added to your project than box2dweb.
The Box2DJS home page has instructions, sample code, and demos. Here are a few of them:
According to the Box2DJS download page, the last update was in April, 2010.
Home - http://box2d.thinkpixellab.com/ Download - https://github.com/thinkpixellab/box2d
This version of Box2d by Pixel Lab is a clone of Box2DJS, updated to have better compression and to resolve bugs in the original version.
The Pixel Lab Box2d-JS site has some live demos, mirroring the ones featured on the Box2DJS site. Interestingly, this engine was used in the Agent 8 Ball game:
According to the download page on Github, the compiled version was last updated in April, 2012.
Home - https://github.com/kripken/ammo.js Download - https://github.com/kripken/ammo.js
Ammo.js is a 3D physics engine, and an automated port of the Bullet Physics Library (written in C++). Like box2dweb, it is built into a single file (“ammo.js”), making it simple to import.
The lastest version of Ammo.js (built as “/builds/ammo.js”) was updated in September, 2012. Again, with this post being primarily an index, see the last section for links to more detailed analysis of Ammo.js.
Home - http://brokstuk.com/jiglibjs2/ Download - https://github.com/bartdeboer/JigLibJS2
JigLibJS2 is an automated port of the JigLibFlash physics engine. It’s a 3D physics engine, and on the JibLibJS2 home (and in the download source) there’s an interesting canvas demo (using three.js for 3D rendering) with multiple objects, including a car you can drive:
The download page on Github shows the latest updates in September, 2012.
Home - http://schteppe.github.com/cannon.js/ Download - https://github.com/schteppe/cannon.js
According to the cannon.js download page, the latest updates were made in September, 2012.
Here are some other helpful articles to get you started:
As I mentioned, this post lists only a subset of what’s out there. If you know of other helpful engines, please post in the comments!