Getting started with Paladin development

From our wiki:

Paladin is an initiative by the Mozilla community to create the best gaming technology available for the open web. Paladin sits at the intersection of 3D gaming, JavaScript framework and library development, and the browser. Where the web is missing critical gaming support, we aim to fill those gaps by adding new browser APIs, enhancing existing ones, and building technologies on top of the web.

Paladin is not just one thing, it’s a variety of projects working together to further our shared goal. For that reason, we don’t have a single project lead, we have a group of project owners that work together. All of our regular communication happens on our IRC channel, #paladin on irc.mozilla.org. We also have a mailing list, paladin-dev on Google Groups, for discussions that require feedback from a larger group of developers.

Paladin started up only a few months ago, but we already have a functional engine, called Gladius, and a game built with it, Rescue Fox. If you choose to work on Paladin, there are a wide variety of areas you can work on. Once you have found an area of Paladin that you want to work on, have a look at the code and bug tracker for that module, and speak to the project leads in #paladin. So, without further ado…

Gladius – The 3D game engine

Gladius is the main product of the Paladin team. We’re building an open source 3D game engine, that runs without plugins, and works on desktop and mobile devices. If you choose to work on the core API, you’ll be integrating other JavaScript libraries, implementing modules if they don’t exist, and improving the existing ones.

CubicVR.js – The graphics subsystem

CubicVR is a JavaScript port of the C++ CubicVR engine. It uses the HTML5 canvas tag and WebGL to render all of Gladius’ graphics. If you choose to work on this, you’ll be creating an automated test framework to augment the current manual tests, and implementing any other features that Paladin requires.

Ammo.js – The physics subsystem

Ammo.js is a Javascript port of the C++ Bullet engine using emscripten. emscripten is a LLVM-based C++ to Javascript compiler. If you choose to work on this, you’ll be improving the efficiency of the compilation process, adding automated tests, and implementing any other features that Paladin requires.

The audio subsystem

A custom audio subsystem was written for Gladius, as there were no existing ones that fit our needs. It currently supports basic playback functionality with whatever audio formats the browser supports. If you choose to work on this, you’ll be adding features to the audio subsystem, such as positional audio, audio effects, and file format handling.

  • Project Lead: David Humphrey (humph)
  • Code: Same as Gladius
  • Bug tracker: Same as Gladius

The input subsystem

We also wrote our own input subsystem for Gladius. It currently has basic support for keyboard, mouse, and touch input. If you choose to work on this, you’ll be improving the input subsystem with gesture recognition, support for the Joystick API, key mapping, and any other features Gladius requires.

  • Project Lead: David Humphrey (humph)
  • Code: Same as Gladius
  • Bug tracker: Same as Gladius

Other subsystems

We’ve just begun to scratch the surface with what we want Gladius to do. On the bug tracker right now, we have plans for a multiplayer server and resource loading components. We don’t know what else we’ll add, but you can drive it yourself if you want!

Rescue Fox – The first game

Rescue Fox is the first in a series of games that will help us drive development of Gladius in a practical direction. The goal of the same is to navigate through an asteroid field to rescue your comrade. If you choose to work on this, you’ll be using Gladius to make the game better, and filing bugs against Gladius when you can’t.

Firefox – The browser

Gladius is meant to be a 3D game engine for the open web. We want to support as many browsers as we possibly can. But for development purposes, we’re concentrating on supporting Firefox and Fennec (Firefox Mobile for Android). The other third of Paladin is implementing WebAPIs in the browser to making gaming better on the web.

Joystick API

The Joystick API allows Firefox to take input from gamepads, joysticks, and other gaming peripherals and use it on any web page without the need for browser plugins. You might need to install a driver to use your gamepad though! If you choose to work on this, you’ll be hacking Firefox to make the API work better and creating JavaScript libraries to make it easier to work with.

Mouse Lock API

The Mouse Lock API allows Firefox to lock the mouse within the browser window, which is critical for any game that uses the mouse to manipulate the camera. Without any sort of mouse locking, it’s near impossible to control the camera effectively. If you choose to work on this, you’ll be hacking Firefox to improve the API and creating JavaScript libraries to make it easier to work with.

You – The developer

If this list looks overwhelming to you, don’t worry. 8 months ago, I was in the exact same position as you. Come chat with us on IRC, we’ll be happy to answer any questions you have about Paladin. Pick something that you’re interested in working on, make sure you keep on trying, and you’ll do fine.

This entry was posted in Open Source and tagged , , , . Bookmark the permalink.

2 Responses to Getting started with Paladin development

  1. Steven Tseng says:

    Hey Jon,
    The link you have on the Gladius project is broken.
    I believe it is alankligman/gladius

    S.

  2. jbuck says:

    Yup, ack renamed the github repo this weekend. I’ve updated the links now

Comments are closed.