OUYA CREATE Post Mortem - Duplicity

Making games that I can play on my TV with a controller in hand is something I am totally pumped about. That is why we backed both the OUYA and the iOS GameDock. One of the most exciting parts for me is the option for local multiplayer. I love games that can be a social experience. Super Smash Brothers, Dr Mario, & Golden Eye are some of my favorite games for that very reason.

The OUYA CREATE jam was announced at an incredibly bad time for Taco Graveyard. We were in crunch time for Penumbear and trying our hardest to get it ready for submission (on iOS). Immediately after our submission deadline I (Sal) had a trip planned during the last weekend of the jam. We had our OUYA Dev Kit and had unboxed it, but I hadn't had a chance to compile a sample project or even setup my dev environment for OUYA. The stars were not aligned in our favor.

If it wasn't bad enough to really want to jam and not have the time, I had an idea pop into my head that night. I wrote it down and filed it away into the "someday" folder along with all our other game ideas.

Monday came around and there were a few details that needed to get fixed up for the Penumbear launch, but by early afternoon my schedule cleared up. And so it began…

Technology

The tech stack that I decided on using is pretty bare bones. My original plan was to use Unity, but the version I have didn't work with the automatic deployment scripts and I like to have a really tight code->build->deploy->test cycle. I decided to give cocos2d-x a try instead since I have a lot of experience with cocos2d, but first I wanted to get a simple test app up and running. I got a basic Android SDK app running with a rectangle drawn onto the screen using OpenGL.

Once I had that first rectangle on screen, I dropped the idea of using cocos2d-x and just started coding directly with the Android SDK OpenGL API. I ended up building all of Duplicity without using any higher level game framework.

Random Notes:

  • I have a OUYA Dev Kit to test on
  • Testing on device was much faster than on the emulator
  • Having the actual controllers and hardware to test with was a blessing

Colors

Once I had a playable prototype it was obvious that there was a flaw in my mocked up design. The solid blocks of color looked nice, but made it tough to quickly assess where your pieces were lined up. I played around with a few options and settled on reducing the value of the color every other row.

When choosing color options, I made sure to run them through Color Oracle to ensure the colors would work for color blind folks.  To quickly explore different options that might work, I used kuler. I was able to quickly browse through schemes that worked well together and then filter it down to color pairs that worked well for Duplicity.

Piece Preview

Another change from the mock up to the prototype was to remove the next piece preview. The game felt good without it. The lack of planning actually led to excitement and a bit of chaos. In this case randomness felt like a good thing.

Timing

The first iteration of the game had both sides falling at the exact same time. It was tricky to decide how to resolve cases where pieces from both players fell into each other. I created a number of test boards that covered all the possible scenarios and made sure that everything was well behaved.

Once everything was working properly it was time for play testing. Then things went to crap. There were a number of scenarios that were confusing during gameplay even though the test cases resolved in a sensible way when viewed in isolation. The problem was a difference in perspective. When playing, you tended to only see things from your point of view and your brain didn't have time to reason out the solution from both viewpoints. The system created player frustration despite being consistent and logical.

The solution was to adjust the timing. I adjusted the timing to have the sides take turns instead of having both sides move simultaneously. It is now a rapid succession of turns. That paired with a few sound effects and some visual flare helped everything make sense while playing.

Submission / What's Next

With the colors cleaned up and the timing issue resolved, all that was left was a lot of play testing and minor tweaks. I put a small menu in place and submitted the prototype.

There were a lot of things that I didn't have time to do that need to be completed before the game is release ready:

  • Cleaner menus
  • More visual and audio polish
  • Alternate color schemes
  • Alternate gameplay modes
  • Test alternate mechanics (slams, power ups, locked blocks, etc)
  • A way to pause
  • Playtest, playtest, playtest

Overall I am pretty happy with my submission and what I managed to put together in the time I had. The response to it has been positive which is always nice. Most importantly, I have been having a blast playing it. If nothing more comes out of it than that, then it has been well worth the time.

Please check out the official entry page: http://killscreendaily.com/create/video.php?submissionID=83

OUYA - Unboxing

Our OUYA Dev Kit arrived yesterday afternoon in the middle of pushing out a Penumbear iPhone build to our beta testers. What horrible timing! I decided to take a few minutes to unbox the thing or I wouldn't stop hearing the beating from beneath the floor boards.

It was shipped in a slick black shoe box, or at least in a box of around that size. There was a nice message embossed in the lid "OUYADEVS: Thanks for believing…".  When you opened the box the first thing you saw was a thank you note. Their gratitude to devs for backing the project was apparent throughout the unboxing and it was a nice touch.

Potatoes

Now on to the meat and potatoes… They shipped a neat special edition translucent case stamped with OUYADEV. The actual console was so little! I already knew how small it would be, but I love holding it in the palm of my hand. When I pulled it out of the box I raised it over my head Link-style, but that picture was mysteriously deleted. The back of the device has all the requisite plugs (Power, USB, Ethernet, HDMI).

Controllers

The controller gave me my first WTF moment. I had absolutely no idea how I was supposed to power this thing. Then I noticed the battery compartments, one on each side of the controller. They very thoughtfully included batteries which was great since I didn't have time to dig through my collection of rechargeables to find the ones that were actually charged. At this point I had an idea about how to open the controllers but visions of snapping the entire thing in half swarmed in my head. I broke down and used the power of the internet to watch the official OUYA unboxing and watched them open up the battery compartments.

After watching the video I was able to open them up, but it was more painful than I would have liked. The compartments had a clear tab for easy battery removal. It would be nice if that was colored in the final controller. I expected as much pain closing it as opening it, but was pleasantly surprised how it seemed to magically lock back into place. There was no snap or click, I just placed the cover on and that was that.

The controller has a nice feel to it. The batteries give it a good amount of weight so it feels right in your hands. It is hard to say too much about it before using it to play a game, but my initial feedback criticism would be:

  • The joysticks, particularly the right one, would be well served by more texture on the surface.
  • The top two trigger buttons feel shifty and I am concerned about breaking them.
  • The touchpad will only have very niche uses as it is hard to reach.
  • Opening the battery compartments is terrifying.

Overall the controller felt good and I think they have time to address the remaining issues prior to the final build.

System

Let's get this puppy up and running. It was easy to plug everything in, get the console up and running, and pair the controllers. Nothing unusual or non-standard here.

After connecting the controller I was greeted with a nice thank you video starring Julie.

From there there wasn't much else to see. The store and all the interesting areas to talk about are still in the works. The one pain point I had was keyboard input. My wireless network is hidden and password protected, so to connect to the network I had to bang my head against the on screen keys to type in my SSID.

Kidding. I did have to use the touch pad to move an onscreen cursor to the letters I wanted which was liking banging my head against the screen. What a horrible way to do keyboard input. It would have been a million times better to let me use the dpad to navigate the keyboard. Fortunately as soon as I connected to the network and installed the first update, that problem was resolved and they had a new keypad in place that took dpad input.

Conclusions

Overall the dev kit met my expectations. There are a few rough spots that I hope will get worked out before the consumer version is released. Beyond that, there isn't much to say until I have had some time to look through the software side of things. Once Penumbear is out on iOS and OSX, I'll spend sometime coding up a few little demo projects on the OUYA and then start the grand porting experiment. This will take a bit more work than a port for an Android ready game, but I am looking forward to it.