Show HN: XMoto.js


This project is a HTML5 Port of XMoto using CoffeeScript, 2D Canvas and Box2DWeb.


This is the first part of a 2-parts project:

  1. XMoto.js (this project!): JavaScript port of the game that need to be compatible with a lot of pre-existing levels (XML files) from the original game.
  2. social XMoto game with a backend for scores, replays, etc. will be built on top of XMoto.js, using Ruby on Rails, and both the projects will co-evolve and interact in some parts.

More about the project development on


Master branch is frequently deployed here:

Click on the “debug mode” button and have fun with the simulation parameters. You can copy-paste the generated URL to keep the custom physics.

Examples: Tractor,
Ugly Mode,
Big Head,


  • Upload “data”, “lib” and “bin” folders on a static web server (put ‘data’ folder on the root directory)
  • Include all the JavaScript files of /lib/ and /bin/xmoto.js on your web page.
  • Call $.xmoto('l1.lvl') or $.xmoto('l1.lvl', options) where “l1.lvl” is the name of the level and the options are:
  canvas:  '#xmoto'   # canvas selector
  loading: '#loading' # loading selector
  chrono:  '#chrono'  # chrono selector



  • brew install nodejs: install NodeJS (on MacOS)
  • sudo npm install -g coffee-script: install CoffeeScript
  • npm install express: install Express

Working environnement

  • coffee -j bin/xmoto.js -wc src/*.coffee src/*/*.coffee to compile to JavaScript in real-time.
  • node server.js to launch HTTP Server (http://localhost:3000).

Don’t forget to restart the coffee command if you create new COFFEE files.


Improve XML levels compatibility!

and other stuffs

Original URL:

Original article

Comments are closed.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d bloggers like this: