xmoto.js 是XMoto的HTML5移植(2D Canvas + Box2D)

xmoto.js 是XMoto的HTML5移植,使用CoffeeScript,2D Canvas 和 Box2DWeb

JavaScript 游戏开发

访问GitHub主页

共62Star

详细介绍

XMoto.js

DEMO

This project is a HTML5 Port of XMoto using CoffeeScript, PixiJS and Box2DWeb.

Image

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. XMoto.io: social XMoto game with a backend for scores, replays, etc.

XMoto.io 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 http://xmoto.io (not up-to-date but good intro).

Demo

Master branch is frequently deployed here: http://js.xmoto.io

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:

Usage

  • 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
  width:   800
  height:  600
}

Developpment

Installation

  • brew install nodejs yarn to install NodeJS and YARN (on MacOS)
  • yarn install to install development dependencies

Working environnement

  • ./node_modules/coffeescript/bin/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:3001).

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

TODO

  • Improve XML levels compatibility => layeroffsets (parallax)
  • Convert to camelCase (use Humps? Find a way to fix Box2D .GetPosition() absurdity)
  • Create alternative box2D physics using DIV elements on screen.

and other stuffs

推荐源码