Make 2d games the node.js way.

crtrdg.js is intended for making simple games – stuff like old-school nintendo or sega. Arcade games. Platformers, top-down rpgs and multi-directional shooters, weird puzzle story games that don't make sense. Stuff like that.

crtrdg is a set of simple JavaScript modules created as an exploration of what it means to build javascript modules that each do one thing well.

Try it out. Submit issues and pull requests. Be loud if a certain module's implementation sucks. Especially if you have a solution to propose or a pull request.

Existing crtrdg modules:

crtrdg takes a very modular approach to javascript games, and does so with the help of tools like browserify and beefy.

Check out our existing crtrdg modules by checking out the crtrdg tag on

Generate a crtrdg game with yeoman:

Use generator-crtrdg to start your crtrdg game! Learn more about yeoman at

Check out this super simple demo:

Click the game to give it focus, use WASD to move around.

The above shows an example of usage of crtrdg-gameloop, crtrdg-entity, and crtrdg-keyboard.

View the source on

Try out a more complex demo with bullets and an enemy!:

Example crtrdg.js game: DEMO, source on github.

Stay up to date on crtrdg and similar projects

Sign up for our email newsletter:

(This is the super big tree newsletter. Our topics typically include games, publishing, and open source software.)

Purpose of crtrdg:

Almost every javascript game / animation library I've found bundles things like requestAnimationFrame polyfill, gameloop, entities, abstract drawing methods, keyboard/mouse input, vector math, and more into one entangled library. If I don't like how the library handles just one of those components, I'm stuck with dead library weight, and sometimes it's difficult to replace a library's methods.

So what if each element of 2d games were broken up into it's own modules / repositories?

Inspired by voxel.js, crtrdg is a collection of javascript modules used for developing 2d games.

As I learned more about node.js, the core events module, and browserify, I realized the ideal api for making simple 2d games could be based on node's events module. So you'll see a lot of crtrdg modules exposing an api that includes .on('some event', function(){}), which seems to make a lot of sense for games.

The development team:

Seth Vincent - Just me so far. Join the team! Start a game with the crtrdg modules or fork any of them and make them better. I'm a writer, designer, and programmer learning game development by working on crtrdg.