Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

A multiplayer HTML5/Node.js game where romans kill zombies

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 artwork
Octocat-spinner-32 public
Octocat-spinner-32 routes
Octocat-spinner-32 views
Octocat-spinner-32 .gitignore
Octocat-spinner-32 LICENSE.md
Octocat-spinner-32 README.md
Octocat-spinner-32 app.js
Octocat-spinner-32 characters.tps
Octocat-spinner-32 colosseum.psd
Octocat-spinner-32 gladiator.psd
Octocat-spinner-32 package.json
Octocat-spinner-32 zombie.psd
README.md

Retro Roman Zombie Apocalypse

RRZA is a multiplayer HTML5 Canvas zombie slayer backed by Node.js. The code is 100% JavaScript (my first major JS project), and it is powered by a stack of JavaScript libraries:

  • EaselJS for graphics
  • Express for Server MVC goodness
  • Socket.IO for real-time communications
  • Express.io for slick real-time routing and server setup
  • Lo-Dash for various array manipulations (drop-in for underscore.js; think Linq for JS, for the .NET people in the crowd)
  • Knockout for client-side MVVM DOM updates
  • node-uuid for Guids

The thing that makes this game different from many others is its fully-distributed data model. The server only knows that the games exist and acts as a communication hub for player-to-player data. In addition, no player acts as a host to coordinate information. Instead, all of the players own a certain chunk of the game, and they send/receive updates with the other players to maintain a unified image of the total game state. This means that the server is light on memory, allowing me to run the entire thing on an Amazon EC2 Micro instance.

Also, all the art was from scratch and was limited to the old school web colors palette.

Check it out at http://azurelogic.com/

Disclaimer: No jQuery was used or abused in the making of this game

This code is licensed under GPLv3.

Something went wrong with that request. Please try again.