The original Exploit is a game written in ActionScript 3 (Flash) that lives entirely within its Flash container on a web page, whether that be on our site or a Flash portal.
With Exploit: Zero Day, we want to build something browser-based, but more than just puzzles. The puzzles themselves are still in a box on a web page, but that's not the entirety of the game — nor is there any Flash involved.
It's time for Exploit to spread beyond its box and become more complex and social, and that means changing the technology.
Puzzles
We actually started EZD's puzzle implementation in ActionScript 3, but quickly decided it wasn't in line with a couple of our goals:
- To have good mobile support from day one without needing native apps
- To do something new, something we hadn't already been doing for years
Plus, one of us really didn't want to work in Flash.
HTML5 game development has come a very long way in the last few years, partly due to major browser improvements, but also due to the work of teams like Photon Storm, who created Phaser. Phaser is a JavaScript framework to produce Canvas and WebGL games — which the puzzles in EZD are.
(We use TypeScript with Phaser, which compiles to JavaScript but gives us an extra bit of safety through type-checking.)
The Narrative
We want to tell stories that encourage players to make interesting choices and to do it in a way that lets us shape future story based on their decisions.
To do that, we need a framework that allows us to construct large stories out of small ones and to store the results of players' actions in a way that we can clearly see what the community at large has chosen. We built that through a set of small Django applications that comprise most of what lives on exploitzeroday.com — jobs, badges, clusters, puzzle messages, etc.
The Community
The community aspects of the games live primarily on the integrated forums. When we started development, we knew that we'd prefer not to build forums ourselves, but we also knew we didn't want to use any of the older, often php-driven solutions we knew of. We wanted something more modern, more conversational, and more friendly.
Luckily for us, Discourse had recently become stable enough for fairly easy production use. It's a different technology stack than the Django parts of the game, so it's deployed and managed differently, but our early integration of the two has Discourse using the main site's login system and using the forum's avatars on the site.
Along with the forums, however, is each user's account page, which lives within Django. Part of our ongoing development will be to continue weaving the forums and the rest of the game more tightly together. The conversational part of the game isn't necessary if a player wants to play completely solo, but we want it to truly feel like it's part of the game.
Stacks and Stacks
For Exploit: Zero Day to grow into what we believe it can be, we have to move beyond the technology of the original Exploit. Between Discourse for the forums, Django as the backend of the site, and Phaser for the puzzles themselves, we have the infrastructure for a game that's more than puzzle completion and is extensible enough for future growth with new features and more players.
Interested in more technical posts about our tech, including our build and deployment practices? Let us know in the comments.
If you aren't already playing Exploit: Zero Day, sign up for the newsletter and get access when the next newsletter sent.