Part of our work to make Exploit: Zero Day easier for us to maintain and update was making a job editor for ourselves. Previously, we'd been creating jobs (the storyline missions for the player) using the Django admin interface, which is very nice but makes it difficult to have a broad view of the data being edited. We had to create each message in the job separately, then hook them up by creating Choices to link them. It was very awkward.
Late last year we decided to finally improve that experience for ourselves. We created an app in the Ember front-end framework that lets us edit everything about a job in one screen. We can visualize the flow of a job much more easily now, we can create jobs more quickly, and we have a tool that someday we may be able to expose to players.
Some takeaways from our experience:
- Tools are always worth making. We'd thought that a job editor wasn't necessary since we had the Django admin, but having a proper tool increased both the ease of job creation and our enthusiasm about doing so. If we'd made the editor earlier, our past work would have gone more smoothly.
- Ember is a bit tricky to get in place beside Django. Both Ember and Django are opinionated about folder structure and have a robust but somewhat rigid command-line environment involved in their development. We've ended up running Django in a Vagrant virtual machine and building the Ember part on our Windows hosts, which feels pretty awkward.
- Automation is great. As part of getting Ember and Django working together, we consolidated several of our build processes into a single Grunt task, letting us develop more easily in the future. That's an example of how useful it is to have a breadth of knowledge; if we stuck to just the tech we were comfortable with, we would be doing much more by hand.
It's awesome to have the job editor created, and we look forward to showing off what we make with it! If you want to know more about our social justice hacktivism puzzle game, head over to https://exploitzeroday.com!