TimeGoat Postmortem

Priyesh DixitOct 15, 2011

uDevGames 2011 Entry

  • 1st place Best Story
  • 12th place Overall

How it Began

When we heard about the contest, we decided to all think of an idea and discuss which one would be better. Kunal had an idea for a game that was great but it was too complex for a three month contest. In the end, TimeGoat was chosen because it seemed the most fresh and fun. TimeGoat started out as a silly joke over lunch where I (Priyesh) worked. The story for the game was fleshed out in one of our iChat conferences. It was Dr. G. Michael Youngblood (or Dr. Y for short) who thought of the mixture of heartbreak and science. The idea of a guy inventing a time machine just to prevent his humiliation sounded hilarious! We built it up from there, adding twists and more time travel insanity.

What Went Right

During our first meeting, Dr. Y said he wanted to use Unity3D for this contest. I was a little hesitant at first, it looked too much like a level editor which was a bit daunting. However, after creating a prototype we decided it was the right way to go for this game. It was a great tool for creating something fun in a short period of time. The biggest issue was that it was 3D heavy, and only Dr. Y had any experience with 3D modeling. But we’ll get to that later.

We had a lot of fun making the audio for this game, especially the sound effects. We think they really added a lot to the experience. Music is something we knew we needed but put on the back burner to focus on other things. Kunal took the liberty of making the music while no one was looking… sneaky! Once the music was added it really started to come together. Audio is extremely important for making a game feel complete, and I’m glad we were able to get that right.

Thinking of crazy enemy characters was a blast! I knew we needed to include Space Bucks (an inside joke where I worked) but Kunal came up with more crazy ideas. The Sniperworms were his favorite because you have to dodge their beams but once they get onto the screen they are easy to hit. Hence, the girly scream they make when you see them.(Kunal’s vocals at work)

Besides Unity, another excellent tool we discovered was Dropbox. It made exchanging files so much easier with multiple team members working on different things. We also used Mercurial (via Bit Bucket) for source control, but this was not as useful since I was the only one using it. And Dropbox was much more convenient for dropping in art assets.

This was the first time I had to design level progression in a game, usually I use procedurally generated levels to make things easier. Tweaking the timing of the enemies and deciding how many and how often they appear was a challenge. But with playtesting I was able to settle on something that was fun. At first I tried to make it work procedurally, but it just wasn’t giving me enough control. So I decided to just hardcode the enemies for each level in a static array. Sometimes its OK to hardcode things, if you want to really control the experience.

What Went Wrong

Wow, where to even begin? We hit a lot of roadblocks with this project but we were determined to finish. Dr. Y was in charge of the 3D modeling but unfortunately, he was swamped with work and travel. He was forced to drop out in the middle of the project. We made the switch to 2D art to save time since Dr. Y was the only one with 3D modeling experience. While this was much faster to produce than 3D art, it wasn’t what we had envisioned for the game. The art was also rushed since there was so much to do, with a little extra time it could have been much more polished.

Due to some personal issues, I was unable to work on the game much for the first half of the contest. We were forced to rigidly define the scope of what we could accomplish in the shorter timeframe. One thing we were not willing to compromise on was the story. Cutscenes were a big must because the story was the best thing that TimeGoat had going for it. Due to the limited time we decided to put them off to the end. Kunal had to focus on character art and UI design first. When we got to the last two days of the contest we still needed cutscene images. In order to save time we decided to make smaller images to go with scrolling text. Since we did this at the last minute, the text and images were not synced very well and the art was very rough.

The original plan for player health was to show the goat’s three stomachs in the UI. The goat would need to eat enough edible items to gain hearts and extra lives. The art was already created for it and ready to be put into the game. However, I didn’t feel the need to include this in the game because it added unnecessary complexity and we were running short on time.

We had also planned on implementing a timeline in the pause menu. The timeline would show your progression in the game so far and help make sense of the story. This was another cool feature we had to cut due to time constraints. Below I’ve included the rough timeline I created for the team to explain the story. The one in the game would have looked much better.

Another big roadblock was my trip to India for the last two weeks of the project. This was known ahead of time and we should have taken it into account. But despite the huge time difference between us, the project went on and I would wake up and find new art from Kunal in the Dropbox like presents from Santa! I would then integrate the art and add new features, leaving more art requests for Kunal to do when he woke up. This went on almost for the entire two weeks, and we managed to make a lot of progress despite being across the world.

Once I got back, we had two days before the deadline. I decided on Saturday morning to use Mercurial to rename the folder of the project for some reason. Of course, I didn’t backup before doing this and lost everything. Well, not everything exactly. I had a backup I had submitted to Mercurial that was over a week old. I spent that entire day, jet lagged and exhausted, recreating all the lost work. Thankfully, we were able to finish despite this but I can’t help but wonder how much better the game might have been with an extra day of forward progress.

What we learned

Know your limits! We each should have known exactly what we could do and what we couldn’t. Taking on 3D was a bad idea from the start, especially with only one 3D artist with a more than fulltime job. Its important to take a step back and recognize when you’re biting off more than you can chew. This is really hard to do though when you are excited about a project. You want to do everything and more! But a narrow scope is important for a short-term contest like this one.

Also three things: BACKUP, BACKUP and BACKUP. Doesn’t matter if it’s on an FTP server, source control or Dropbox. But there should be frequent backups of your work at all times. Normally, I would have had Time Machine (the Apple kind) to bail me out but I wasn’t at home and didn’t think to commit more often.

Overall, this was a great learning experience and we will continue to flesh out TimeGoat into a game worthy of being on the Mac App Store. We don’t have a blog dedicated to it yet, but you can follow @Time_Goat on twitter for updates.

Developer Digital Tragedy
Game TimeGoat
Platform Unity3D
Tools used Photoshop, The GIMP, Audacity, Garage Band, Dropbox, Mercurial
Hardware Priyesh’s MacBook Pro, Kunal’s iMac, iPads for design and concept art
Website http://priyesh.org/timegoat

uDevGames 2011

Convergence — Best Gameplay
Kung Fu Killforce — Best Overall Game, Best Audio, Best Presentation
Flying Sweeden — Best Graphics, Most Original
Time Goat — Best Story