We were about halfway through the Adventure Guild Kickstarter when Ludum Dare 34 hit us like a brick, and Jackie and I decided to take a short break from our primary project to stress ourselves out in a three day game jam. We created Escape Squad, working casually through the weekend (6-10 hours a day each, maybe). I did the programming, and collaborated with Jackie (who did all the art and audio assets) on the game design.
The theme for LD34 was a tie between “Two Button Controls” and “Growing.” We had spent some time discussing all the potential themes, and spent all of Friday night brainstorming the two selected themes over drinks. Stumped and burned out, we decided to sleep on it, and roll with what we came up with in the morning.
We came up with nothing in the morning, so by 10AM we decided to opt out of the theme category and started developing an idea we had for another potential theme, “Stick Together.” The idea blended the gameplay feel of The Binding of Isaac with the four-member-party-entity mechanic from Legend of Grimrock. Each member of the party faced a cardinal direction, and shooting in that cardinal direction prompted that entity to fire their attack in the direction they are facing. We liked the idea because it was simple, relied on a single core mechanic, and was highly expandable both in depth and breadth.
I developed the game using Unity’s 2D engine in C#. Jackie made the illustrations in Adobe Illustrator, and the sounds in an online browser-based generator (I forget which one, ask her!). We used Git for version control. It was a fairly simple and binary production split; we would bounce ideas back and forth, but for the most part we worked independently, bounced assets around in emails, and playtested the game on a TV connected to a separate computer that pulled the repo down and ran the game in the Unity editor.
Jackie and I have always worked well together, so sticking with the tools we know and the process we know worked out really well. We also went about development very casually. Reflecting the motto we preach, we accepted all the ideas thrown in the pot, and we had a great time because of it. We shot low, identifying our minimum viable product and working in rapid prototyping fashion, aiming to develop feature after feature and follow the fun. In general, our positivity and relaxed nature made the process very smooth and fun and we learned a lot, regardless of whether or not we do well in the competition.
It was a short competition, and we were both busy throughout the weekend and tired t0wards the end of the semester, so we didn’t get everything done that we wanted to. I didn’t get all of Jackie’s sound effects implemented, nor did I get keys and locked doors implemented. Jackie had also created some frame-by-frame animations that didn’t end up in the game. So, I guess you could say I mostly fell short in implementing everything that Jackie created because she worked a little bit faster than me. Obviously our refusal to incorporate the theme will count against us in voting, so arguably our brainstorming was one of the weakest points in the development process.
Personally, I kept in mind the extendability of the game while developing, and it may have slowed me down, but that’s a hard thing to measure other than by guessing introspectively. I was also concerned with formatting and commenting out of habit while coding, which may arguably have also slowed me down but I would guess the delay due to coding formalities was probably negligible.
Also, I haven’t spent a substantial amount of time developing for controller input in Unity, and I found out about halfway through development that many controllers (specifically and most frustratingly, the Xbox 360 and Xbox One controllers) have vastly different input schemas, and you can only feasibly and cleanly implement one using Unity’s Input interface. After chatting with a friend of mine working on Hack, Slash & Backstab, I discovered that many developers use a plugin like InControl to unify their input schemas, and I just wasn’t willing to spend money on it for the jam, so I settled for only supporting the 360 controller.
I have never done a game jam before, so I anticipated having trouble gauging how much content I could pack in three days. I started by diving right in and aiming for the core mechanic of directionally positioned party members, shooting and rotating. While doing so, I used GitHub issues to keep track of future mechanics that would need to get implemented in order to end up with a minimum viable product that reflects the fun aspects of the game. I also mentally strategized that I would follow the fun with each build, and that I would work to take full advantage of Unity’s component-driven development and Unity editor field exposure.
Component-driven development basically means I abstracted my code breadth-wise using Unity’s Component scripts as opposed to abstracting depth-wise using C#’s class extendability. So a Cannon Turtle enemy is built by GameObject with an attached HealthPool script, allowing it to take damage, an Enemy script that runs AI routines, and an AttackController script that enables it to perform attacks.
I could create the same system with equal but different success by creating a CannonTurtle script that extends Enemy which extends Destructible, and each inherits properties from the other. The benefits of this system are that all design tweaks are visual thanks to the Unity editor, and the code for each functional system is isolated and interchangeable. I can use AttackController again for the players, or remove it to create an Enemy that can’t attack, like the exploding mice.
The downside to this system is that in order to make all the components work independent of one another and yet still interact with one another means you need to do a little extra work. You either need to implement very event-driven code, as with the HealthPool script above that fired the Death event when health reaches zero, or do lots of what I call “Component fishing” in your code to prevent null pointer exceptions, which can end up looking a little messy.
Regardless of whether or not Escape Squad does well in LD34, we had a lot of fun, learned a lot, and discovered a fun mechanic.
We discovered really early on that our core mechanic was indeed a lot of fun. The first thing we noticed was that the mechanic of rotating your characters to new positions was incredibly satisfying, and we tweaked it so that it felt perfect. Firing projectiles is also always really fun, so we focused on giving each projectile its own unique feel. Shooting Moz’s exploding fireballs is fun, and the super high force applied by Cynthia’s shield is really satisfying.
We also loved the characters we created. Our pun game was strong that day, and we let the laughs and smiles drive the mechanics. Moz the Firefox shoots exploding fireballs, Bearemy the Barbearian swipes enemies in melee range, Cynthia the Armordillo knocks foes back with her shield, and Bandit the Ranger Raccoon shoots deadly arrows. Jackie doodled a bunch of evil animals for fun and we let the quirks of the doodles drive the mechanics.
The game is obviously incomplete. Locked doors and keys didn’t make it into the game, so you can just skip the combat and run through the entire game. Someone on the LD34 page beat the game in less than 5 seconds, which could be fun but isn’t the experience we designed. I also didn’t write wandering AI behavior, so all the enemies run straight at you, and it causes clear patterns in their attacks and movement that aren’t super fun to fight against.
Also, some of the attack mechanics within the party of four animals friends are far more fun than others. Specifically, Moz’s explosive fireballs and Cynthia’s shield seem to be really satisfying while Bearemy’s melee swipe and Bandit’s arrow deal lots of damage but don’t really have fun effects. It might have been worthwhile to incorporate some more flair into those abilities, such as a press-and-hold mechanic for the bow-and-arrow or camera shake on the bear swipe.
I had a ton of fun making this game, and learned a lot about rapid development. Check it out, leave your thoughts, maybe even peak at the source code. I’ll keep this one in the back of my mind for a future RPG, but for now it will rest for a while. Many thanks to Jackie for working with me, our friends for letting us work in their living room and helping us come up with puns, and everyone for playing Escape Squad.
Also, I would appreciate it if you would check out our major project, Adventure Guild, on Kickstarter, and consider supporting it in its final two weeks of crowdfunding efforts.
Thanks for your time!
Copied from my blog on WordPress.