This week a new version of https://hvz.rit.edu/ went live. I’ve been running RIT’s Humans vs Zombies website since the Fall of 2014, and this is the second major upgrade to the website that I’ve made.
A humans vs zombies website isn’t just there to market the game; it actually plays a part in the game itself. Players have to register when they are tagged (or tag someone) by typing both their unique id along with whomever tagged them into the “infect” page on the website. This allows us to keep track of who is still alive and who is a zombie. The website also handles dispersing mission information to each team, antiviruses, and tracks the location of each infection.
The newest incarnation of the website is written in NodeJS using Sails for the server, which provides a simple REST API, and Ember for the client. The entire website is open source under the MIT license (check it out at GitHub).
The new version of the website is actually a bit more generic than the last one: Any references to RIT’s specific game have been put in configuration files so that they can easily be swapped out for other names. I’m still working on making game rules configurable (and there’s no “starve timer” yet which I know some games use). I’m always open to suggestions (and pull requests) on how to make it better!
The other major new part of the website is that absolutely everything is done over a REST API. The built in client uses this API to communicate for everything except authentication. The old version of the website exposed almost everything as a REST endpoint, but none of the admin panel was accessible from REST. Now, everything can be done over REST.
My main plans going forward with this incarnation of the website are to A. make it generic enough to support any game run anywhere and B. clean up the UI. On that second point, I’m really not a designer. I did my best for the website but I’m the last person you’d ask for making a really good looking website. That isn’t a huge deal, though, since the current website looks decent enough and is usable.