AVOIDAL Post Mortem
I had a lot of fun this Ludum Dare! After missing the past few it was good to participate again for sure. I’ve never done one of these post mortem entries but I enjoy reading the other ones people post so I thought I’d take a crack at it.
You can read my detailed post mortem below:
I had an idea within two minutes of the theme announcement. This doesn’t always happen so I’m pretty excited. I normally spend Friday night sleeping on the theme announcement after drawing a few mockups but this time was a bit different. I had an idea that I figured would be simple enough that I fired up photoshop and drew the following mockup:
I read over my notes and the concept felt solid for fun potential as well as being in line with the scope of a 48 hour competition. For my game studio work I typically develop within the 1 to 3 week time period but I’m familiar with the 48 hour marathon since I’ve competed in about 6 or more of these 2 day game competitions. I’ve also worked on learning my lessons (failures) well!
I refine the idea into a color mockup by doodling it again in photoshop:
You can see that I’ve got the basic enemy and player elements of the final game already in place. Spike and seeker type enemies. A large and silly player character that eventually becomes a stylized robot character. The gold stars as targets for the enemies to collide into.
Having fleshed the idea out more I’m ready to open up the Flash CS4 IDE and start implementing a graphical mockup:
Now the graphical assets above are all usable as initial art once I’m finished creating the mockup in Flash. It is a really cool thing about prototyping in an IDE like Flash that I can quickly put game logic into ActionScript 3.0 files behind each of those assets.
I work for about 3 more hours trying to get a first playable prototype. Getting the first playable prototype build is so crucial to iterating on the next part of the game that the earlier you can get feedback and play the game–the earlier you will be able to see how much more you need to implement. This couldn’t be more important than in a 48 hour game competition scenario.
I manage to post the following prototype build at 2am–four hours into the competition:
You can even play the first prototype here if you want to see what I started out with.
I was very happy with what I was able to come up with at this point. I was able to know that the game idea was solid and more importantly–already very fun! I knew that I’d sleep well Friday night and was looking forward to beginning to iterate on Saturday with a good start in the competition.
Time spent at this point was four hours.
I awoke Saturday morning after about 5 hours of sleep. I checked out the Ludum Dare blog and found that a few people had played my game already and had left some encouraging feedback. This was a big morale and motivational boost as it meant more than just myself found the game fun. I also found I had been awarded two funny LD awards: One for “Flash prototyping like Flash!” by Zlash and a second “Silver Star for Prototyping goodness” by Tyler. Thanks guys–you really made my morning!
Now today I was also excited because I was going to be driving over to Portsmouth NH for an in person meetup with some other Ludum Dare participants I had never met before. I’ve been working on getting out more into the game community around the New England area and this was an excellent opportunity to meet some other people who enjoy making games.
We met up in an awesome cafe called “Me and Ollies” and found an entire downstairs community center with AC and wifi and plenty of nice seating!
That is me on the left and billkyne on the right.
Here is a short YouTube video filmed by Jonny D of the beginning of our meetup.
The meetup went really well. It was so refreshing to be able to see what others were working on and to just talk about game development and Ludum Dare related things. I also enjoyed the strange looks I got from others in the room when we would talk about our games to each other or when I would take photographs of my food:
I ended up getting less than four hours of work in on my game but the small lack of productivity was more than made up for by getting to meet Jonny D and billknye. I was able to post version two of my game from the cafe.
I had so much fun and was inspired to drive back home after 6pm to get cracking again on my game!
Once I got home I was finally able to decide on the name AVOIDAL for my game. It took me longer than normal to pick a name this time. I like picking out unique names as well as names that often have domain name availability.
Avoidal isn’t a real word but it is in use lightly on the internet and has Urban Dictionary entries strangely enough. I decide that the low Google search noise will allow my game to eventually place well in search results for Avoidal.
I discover that avoidal.com was available and I register it and quickly setup some HTML and CSS in place on my sever to hold the eventual competition game entry. Why go through this extra effort? I enjoy crafting the entire experience for the player and I like the elegance of the idea of having my competition entry hosted on a dedicated, short, and memorable domain.
Having prepared the final destination for my game I get back to work on the actual game itself. Here is a screenshot from version three:
I spend some of Saturday night implementing SWFStats gameplay analytics. I love using an analytics package like SWFStats so I can start getting valuable aggregated play testing data to help improve the game as early as possible. It allows me to track custom metrics like average scores over the various difficulty levels and highest chain multipliers reached. Stats like that help me see graphs of what the difficulty curve is and make intelligent decisions about the mechanics and settings. I can also analyze play length data and number of views versus plays to see if my game is holding player interest or not.
I then focus on getting the bulk of the menus and game flow logic in place. I know from past competitions that once Sunday rolls around my brain will be a chaotic and spastic place. I like to handle all the mundane things like online highscores implementation, preloader and initializer, game over screens, game state tracking, main menus, pause menus, sound mute widgets and all the other miscellaneous ephemera that goes into making a polished game. I enjoy putting a high level of polish into my games so it helps to still be fresh when I implement these things.
All told I put about four hours into my game getting all the non-gameplay stuff in place. I know that tomorrow will be reserved for final tuning, final graphics, sound effects, and music composition. I am preparing myself mentally for what I know will be a long day. I head off to bed and plan on getting another 5 hours of sleep.
That brings my Saturday development hours in at this point at about 8 and 12 total for the competition so far.
Final day and I am PUMPED! There is so much left to do to bring AVOIDAL to life and it’s time to get going.
I start off by redesigning the mine asset:
Those white spikes will become projectiles that eventually fly off if the player let’s the mine explode before destroying it. Those spikes also do the most damage of any of the enemies in the game. I want the player to be motivated to destroy the mines with the other enemies so I do two things. First the the chain multiplier goes up each time you destroy a mine. A mine has a lifespan and will eventually explode if left alone for too long. When it explodes it releases the projectiles as well as resets the chain multiplier. The second motivation for the player is that when the mines explode the spikes move pretty fast and in eight directions so they can be quite deadly. I’m hoping that this will be another aspect of excitement and tension in the game.
In order to get my coordinate offsets and angles correct I draw the following mockup:
This will let me spawn the mine tips at the correct coordinates when the mine detonates so that it will be a seamless visual effect of the tips of the mine sprite flying off. It ends up working quite well and my Sunday is off to a productive start.
I then go through and revamp all the graphics replacing all the placeholder art. I pick new colors for some things while others remain more or less the same. I put in animations for most of the assets.
I then spent some time to tackle the main character design:
On the left is the placeholder art for the character from the prototype. Next to that is the character I had doodled in my original mockup. I still wanted to capture the light-hearted and goofy feel of that doodle instead of the cool mathematics of the pentagon.
I initially drew the third image overtop of the original sprite in the Flash IDE. This was so I would have the dimensions be equivalent so that gameplay wouldn’t change. I couldn’t get a freehand style I liked that I felt blended in well with the polygonal style I was already working with.
I scrapped the third freehand concept and started using basic primitives to sculpt out what would eventually become the little flying robot. I even sort of think of him in my mind as being named Avoidal.
Once I saw him animated I knew that I was happy with how I captured my original intentions with the doodle of the little flapping guy with the target on his chest.
I now had all my final art in place:
When I wasn’t working on the final art for my game I was playing it as much as I could and posted two more playable builds to get player feedback and start working out balance and difficulty issues.
Now at this point I’ve been working since about 7:30am Sunday morning and I’m starting to really feel it. I find myself zoning off into space and starting to lose track of my train of thought.
I realize that I need to grab a quick dinner since I only have less than three hours remaining in the competition and there is still final menu polish, sound effects and music to create! I run out and grab some pizza and come back and inhale it. I didn’t even have time to take a photo because at this point the game is clearly the priority for me.
It may sound weird but participating in Ludum Dare competitions over the years has really helped me to remain cool under pressure when developing. When I feel the brain-tightening stress start I remember to relax and breathe in and out. I then refocus and keep working. I find using an online todo list web app really helps me stay on track.
With just a few hours remaining in the competition I fire up the web version of SFXR and start cranking out sound effects like a machine. During this part I keep a list of sound assets I need and the game playing in the background. I tab back and forth between SFXR and my game in the browser and imagine what kinds of sounds I am going for.
Then it is a frenzied mashing of buttons and hoping I get lucky on the randomize feature. I really love this part in that it feels like I’m fishing and I don’t know what I will catch. I score some really lucky hits on randomize as well as some old standbys from the more normal themed buttons. I import them into Flash and tie them in with code. I even take the time to add some nice stereo panning to applicable sound effects based on sprite screen location.
I also have been taking care of various other tiny polish items from my todo list. I wanted to get a slight left and right lean to the robot sprite when the player is moving quickly back and forth. I also wanted to make sure to add an instructions screen in the event that someone gets stumped and actually decides to read the instructions (hardly ever happens I know…)
I now have less than 45 minutes remaining and I fire up Reason and use my Alesis midi keyboard to layout a quick menu chiptune loop. I compress it into MP3 and put it in place in the game.
Holy crap only 15 minutes remains to do final screenshot and upload. I’m sort of a purist in I like to have my game fully submitted by the deadline. I managed to get everything filled out in the form and turned in with 5 minutes to spare.
Now comes the relief knowing that I’M FINISHED.
Total time spent on Sunday was over 14 hours–phew what a crunch!
Total game time spent developing was 26 hours. I’m getting faster…
I’m really quite pleased with how my game came out and my weekend in general. I feel lucky to have come up with such a simple and fun idea very early in the competition. I had a playable prototype so early it really let me focus on polishing the heck out of this little game and putting in all the normal bells and whistles I’d put into a releasable Flash game from my studio. This has been my most successful Ludum Dare yet–now I just have to see how other players like it!
I have to really pump myself up sometimes to participate in something as demanding as the marathon that is Ludum Dare. I almost want to collapse or feel like I might vomit sometimes from the amount of strain and wear that hits me after working 25-35 hours straight over the two days.
Why do I do it then?
Despite the wear and tear it is just an amazing concept to participate in a global event with so many other passionate game developers. I have a strong sense of competitive spirit and I like the opportunity to demonstrate my skills and love for game development. I like feeling the inertia of 100s of other game developers trying their best and simultaneously creating awesome games!
Ludum Dare really teaches me how to distill a game down into what is critically important and make hard decisions about features and scope that I have found I can apply outside of the stringent competition to my normal game studio work.
I started my independent studio and returned to game development largely because of participating in Ludum Dare a few years ago. It will always hold a dear place in my heart because of putting me back in touch with mychildhood dream of game creation. I’m just glad it clued me into what a great game development movement was going on that I was unaware of.
I can’t wait to play all the other games here!