Kill Screen and OUYA recently teamed up to offer a game jam for the OUYA console called the CREATE contest. We had roughly ten days to jam out a game and submit it to the judges.
Here is a video with an overview of my game.
I thought it would be nice to do a little post-mortem on getting this game up and running on the OUYA in such a short time frame.
What Went Right
1. Pre-contest Pipeline Hacking
I received my OUYA well before the contest was announced and I was excited to get a Hello World style app running. This led to my first major roadblock in OUYA development – my PC and my TV are on opposite sides of the same room. People on the forum were complaining that they couldn’t configure their OUYA for remote deployment over wifi and I was running into the same trouble. I spent literally an entire weekend learning enough about Android devices to debug and fix this problem. (My efforts are documented here.) If I hadn’t done this before the contest started I would have been forced to either waste days on it or have a frustrating deploy process that involved unplugging and carrying the physical OUYA console back and forth hundreds of times.
2. Lots of Playtesters
The game jam ran through a national holiday and the 3-day weekends meant lots of friends visiting and hanging out. Whenever new ones were over I would have them sit down and play each other. This gave me invaluable feedback data. The biggest change was that originally the game was about pushing the bombs to your opponent’s side to kill their kittens. Makes sense, except it meant that P1 would spend most of their time on the right side of the screen and P2 on the left. Their swap gems would be on the opposite sides of the screen. If I moved the swap gems to the other sides I would now have a game where P2 is on the left and P1 is on the right and they’re trying to pull bombs to what appeared to be their side. It was like that old logic puzzle where the two princes must swap horses and race to the kingdom to see who would be crowned king. The actual solution was much simpler – change the game rules. Instead of forcing bombs onto your opponents’ cats players would simply be encouraged to pull bombs toward their own cats. It’s a game about killing kittens, you’re a terrible person for playing it already, it was no surprise that which kittens your killing had no impact on players.
Getting my friends involved was also great for morale. I started doing daily progress journals on facebook and my playtesters would comment and like my videos and tell me how much fun they had. Those words really matter when you’re on your third straight day of 4 hour sleep schedules.
3. The Magic of Television
I’ve released dozens of titles in my half a decade in the games industry and by now I’m rather numb to the ‘cool factor’ of making a game. Working with OUYA was my first console and television experience, and putting something I made onto a TV and using a controller was triggering some primal game-making euphoria. It was one of those moments where you imagine yourself as a child gazing into a crystal ball at the future and thinking you’ll turn into the most awesome person ever. I think this is actually a huge selling point that OUYA should figure out how to communicate to developers. I felt as welcomed to the platform as any other extremely open platform like flash player or mobile device. But it’s a console, with a controller, on my TV! Your move, Microsoft, Sony, and Nintendo.
What Went Wrong
1. I Used Cross-Platform Tech
It was important to me that I learn how to use some cross-platform technology so that I could simultaneously target flash player and mobile devices. The OUYA seemed like a good opportunity to get started, so I settled on HaXe+NME. The upside of this approach was very valuable, I could develop and debug in flash where I am lightning quick and then deploy to android when I’m ready to test the functionality there. Unfortunately this upside was outweighed by all the pitfalls I ran into. I probably spent half my total development time fudging with getting the controller to communicate over JNI, getting the framerate over 5fps because nobody’s really tested NME on an OUYA before, bumping into esoteric limitations where a feature works on flash but not on native, etc.
Taking the long view choosing a cross-platform technology was definitely the right way to go. But given the contest’s short time limit I really should have just banged away with Java and ported it later. I easily could have doubled my available development time and gotten more features in and fixed more bugs.
2. Going Fast Compromised Code Stability
Originally Stop Those Kittens had more of a turn-based pace to it. I had written my game engine to support beautiful block physics as the pieces tumbled and cascaded and matched into each other. I could even flip the direction of gravity and have it behave beautifully the other way. But it didn’t take more than five minutes of playtesting to realize that a real-time version of the game was going to be way more fun. At this point I should have evaluated my architecture for the new use case of simultaneously opposing gravities. I would have come up with a much more elegant way to move forward. Instead I just charged in with hacks. During the last few days of the contest I had very difficult to debug issues where the game board would get into a broken state. I never solved the roots of these problems and opted instead to write code that would monitor the board, detect these broken states as they’re happening, and prevent them. I didn’t find them all, obviously, and two intrepid matchers could get their game board out of sync fairly consistently.
3. No Time For a Tutorial
Someone who spends all his time hacking away at unstable code doesn’t have time to write a tutorial. The controls are all on screen so with a little exploration the game rules can be discovered, but as someone who strongly believes that your first time experience is the most important aspect to any free game I can’t help but feel my game is fundamentally flawed right now. I baked the instructions into my youtube video and contest entry, and I just have to hope that the judges look at those things before they begin playing.
Stay tuned for more updates on Stop Those Kittens. I’m currently doing the re-write that so desperately needed to happen but then I’ll move on to all the great features I mentioned in the video.