I’m happy to announce the most recent Echo Bloom code project – a flash game I wrote for Kid Bombay titled Food Flinger – is now live. Here’s how the project came to life.
A detailed gameplay spec was provided by the client at the onset of the project, allowing us a nice framework to work within. The spec described how the game would be played, how passed items and powerups would behave, and gave suggestions toward the art direction. Using this spec as a roadmap, I implemented the gameplay and base functionality inside a ‘block world’ – a representation of the game using geometric primitives (as opposed to the shiny graphics that would make up the final product). It was uber-simple, but it showed how key components of the game should interact, and gave us a model to tinker around with and see how the spec ‘felt’ when realized.
While the block world was coming into existence, Mike Daley, an excellent designer/animator in the Bay Area, set to work designing the visual elements of the game. He started with raw sketches, moved into flat graphic assets, and then into fleshed out animations. Once his characters were done, the functionality in the block world had evolved to a point where the shiny animations could be substituted for the flat blocks, allowing the game to spring to full featured animation quickly.
As the game quickly became something real, we had several weeks of tweaks and refinements. By far, the most challenging component of the game was the passing motion of the individual characters. Dynamically adding assets to the animations (e.g. adding a football to a hand as it makes a passing motion) was pretty straightforward – the challenging part came was that the animations had to be dynamically sped up and slowed down. The animations were library elements imported as MovieClips into the game’s architecture – and there’s unfortunately no playAtSpeed property for MovieClips. We circumvented this issue by using the frame tweening in TweenLite. It took a few days of tinkering with the timing, but we eventually got everything to line up.
LESSONS
This was my first soup to nuts game implementation, and I learned a lot along the way:
1 – Programming within a tightly constrained design pattern *really* helps. Things are predictable and extensible, allowing other people to simultaneously work on specific elements of functionality without collisions. For this game, I used a tightly defined Model-View-Controller implementation.
2 – Issues surrounding memory management that once sounded academic became a lot more practical when developing a game that had so many complicated assets. There are a lot of resources describing how programs can be optimized to better deal with this – Grant Skinner’s got an excellent summation and Colin Moock’s AS3 Bible has some more information.
3 – Getting things to work is one thing, getting them to feel right is another. A week before release we were 95% of the way on code, but were far further back in polish and playability. Ketan Anjaria, the principal at Kid Bombay, added much of the polish that took the game from functional to fun – sound, effect animations, and level balancing made the game dynamic, and fun to play.
Take a look, and let me know what you think. I’ve started looking into iPhone games, and general development on mobile platforms. The medium is the message, and a mobile context offers a radically different environment for making and playing games. Who knows? Maybe I’ll work on an iPhone application in 2010 – stay tuned.
