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

#LD22 - Alone

Editor's Note: This post is in reverse chronological order. Apologies for any spelling and grammatical errors. Sleep tank is low.

FINISHED - Monday 7:50 PM EST

Done! We have submitted our entry to Ludum Dare. You can look at our submission here. You can check out our game info page for Four Hats here. We will write up a post mortem soon, but need a rest first. It was a blast and I am really happy we did it.

During the last couple of hours, we tweaked gameplay a bit, changed the subtitle, and polished random things.

Monday 4:40 PM EST

Some screen shots:

Monday 3:30 PM EST

Ooops... It has been awhile since the last update. Need to grab some sleep and get back to work. After waking back up and eating some food the rush was on. We still needed to finish level building, the intro cutscene, sfx, and the end of game screen.

I put my head down and pushed through until I wrapped all the remaining bullet points up. Luckily we have been testing and testing and testing the game between changes to the code and assets, so most of the odd bugs and warts have been removed.

What's Left

We still have a few art assets to put together in order to clean up a few of the screens. We also need to play through to hunt down bugs and add any extra polish we can squeeze in during the next few hours.

I would like for us to be done an hour or two ahead of schedule so we can put together our screen shots, put the app up on testflight, possibly record video, and submit the app before the LD servers get overloaded at submission time.

 

Sunday 9:41 PM EST

Some gameplay recording on my iPhone with my iPad. Low quality, but works in a pinch.

 Sunday 8:55 PM EST

 

48 Hours! LD48 has draws to a close in minutes but there are 24 more hours left to the LD72 Jam. If the Jam had the same schedule as the comp, then we would still have a game but with less content and polish than we would like. At this point we are in the polishing stage. The game is feature complete, but still has some rough edges. It will be interesting to see how far we can get in the last leg. Unfortunately we won't have as much time as during the past 48 hours.

Sunday 2:45 PM EST

Game Status:

 

  • Menu is functional
  • Start of the level nicely introduces the player
  • Need to continue level building
  • Add polish to various actions
  • Still need sound effects
  • Feels like a game w/ good potential. Fun to play
  • Music with lyrics under construction
  • Need intro cutscene
  • Need a way to pause

Our Status:

  • Breaking down the temporary joint office to prepare for rejoining the world
  • Continuing development remotely
  • After getting a more reasonable amount of sleep last night productivity has shot back up
  • We will likely have a lite-lite version ready by the buzzer
  • Not sure how to submit the binary, will likely use testflight
  • Want to record gameplay video, but need to do it off the device
  • As sane as we were when we started

Sunday 1 PM EST

We have an icon and a title screen:

Sunday 9 AM EST

Back awake and working. There are 12 hours remaining in the LD48 comp. Since we are doing the LD72 Jam we technically have another 36 hours. We already had Monday plans and obligations before we decided to jump in and do this, so we effectively have today. Tomorrow we will likely only have time to tie up loose ends.

What we have left:

  • We need better levels (we currently randomly generate them without much care to object placement)
  • Add "enemies/traps" to levels to make them more interesting
  • Visual fluff / polish: particle effects, button press down states, transition animations, etc
  • SFX
  • Pause/Resume, title screen, all that extra stuff that makes a game a product
  • An icon!

Sunday 1:30 AM EST

Introducing the band:

Sunday 1 AM EST

Took a break from 9 to 1230 to eat, rest, and socialize. We are back at it now. The instrumental version of the music is done. Vocals to be added tomorrow. It fits the game like a glove.

Now with music and the all important Taco Graveyard splash screen, we have something nearly resembling a game. Yes splash screens are that important!

Back to work...

Saturday 7:44 PM EST

Saturday 7 PM EST

Animated death sequence. Tweaked controls. Added more variety to backgrounds.

Currently working on:

  • Adding more variety to obstacles.
  • Animating end goal objectives.
  • Sketching traps / interference related objects.
  • Listing out everything that is left before we are done.

Saturday 5:36 PM EST

Saturday 4:24 PM EST

Basic parallax backgrounds in place:

Saturday 3:40 PM EST

We are 75% of the way through Day 1. In the wee hours of the night we got a bit worried because we hadn't built a platformer before, but things are shaping up well. We have a solid workflow going and are comfortable with our plan. We reduced the scope of the game a bit to simplify game play and make the timeframe manageable.

Latest screenshot:

Saturday 11:55 AM EST

Parker Levine - Rockstar - Lead Guitarist & Vocalist

Saturday 11:22 AM EST

Game summary:

Four Hats

Rockstars have it hard. Millions of adoring fans, mountains of cash, and no alone time. How is a musician supposed to write new music when chased by the paparazzi or the hordes of adoring fans? In order to find the solitude that you crave to unlock your inner muse, you must outrun fans and make your way to the studio. Don't get caught by the paparazzi on your way there or your creative energy will be sapped dry.

Saturday 11 AM EST

After some rest, breakfast and coffee we are back in it.

Saturday 5 AM EST

Starting to introduce typos into every other word. Time to nap and regroup. Game play is shaping up. Will detail exactly what that game play is in the morning (and by morning I mean when I wake up):

Saturday 3:00 AM EST

Tweaking controls until they feel solid. Animation is well under way. From sketches to Flash assets:

"Gameplay":

Saturday 1:55 AM EST

Working through basic game mechanics and character animations. Things are moving on screen, hopping jumping and running. Unfortunately at the moment all buttons, characters, etc look like:

 Mr. Blocky is happy because he is all alone in this universe of his.

Friday 11 PM EST

The theme of Ludum Dare #22 is "Alone".

Our main characters can never seem to get any alone time. They are forever in the pursuit of lonliness. Brainstorming:

Before It All Began

We just signed up for the Ludum Dare 22 Jam. We signed up for the jam rather than the comp because we wanted to do a collaborative project. We usually work remote, but we are going to be moving furniture around to construct a makeshift office for the next 48-72 hours.

We will continue to update this post as the Jam progresses. Can't wait to find out what the theme is.

We are going to try to complete the Jam and end with something that we will publish in the App Store. Real artists ship.

Ingredients:

  • Platform: iOS
  • Language: Obj-C
  • Frameworks: cocos2d, chipmunk, more depending on theme
  • Graphics: Photoshop, Flash, Wacom
  • Music / SFX : Mouth + mic, 8-bit magic box, telecaster, whatever else we can make noise with
  • Other: tacos, agua, pellet stove