The Quake Live service required me to wear many hats. The front-end was written in PHP, and pre-module JavaScript. Thankfully, both codebases were exceptionally clean for their time. The backend was written in Python with Twisted, and handled many of the operations that required persistence, like signing in players, billing, server browser, and stats processing. Player data was mostly stored on a Postgres server, while the larger more static stats data were stored on a Cassandra cluster. There was an XMPP server for chat and friends list, which was customized for Quake Live. On top of all of that, there was then all of the maintenance of the OS on the physical boxes, and even beyond that, the game itself, written in C.
As the team shrank, all of the web and backend development would eventually come down to me, which often meant figuring out a very diverse set of tech, and being able to diagnose a very wide surface area when problems on the site would crop up. Despite this, we were able to add new game modes, explore different business models to try and push people to subscribe. Some of my highlights of this phase of Quake Live include:
- Developed the very popular Start a Match system, which would generate forms based on a JSON configuration file containing definitions and constraints for over 100 settings.
- Modifying the game and backend to support end-game voting for three randomly chosen maps.
- Adding support for widescreen HUDs and UIs to the existing UI system.
- Adding the Race game mode, challenging players to run around the maps as quickly as possible, with global leaderboards.
- Planned and developed the standalone launcher, which would download and update files of the game as needed.
This iteration of the game is no longer available, but just before the release of the Steam version, I took screenshots of all the pages on the existing site for archival purposes. The screenshots below are these screenshots, minus some of the admin-only pages.