We’re big fans of Adam Atomic here at Gaming Daily. He’s the guy that brought us gravity hook and more recently fathom. Now the wonderful Canabalt has been released and since I first played it I have been utterly obsessed. Canabalt is a one button game where you make a rooftop escape from some unknown invaders and try not to die. I’ve heard it described as what Mirrors Edge should have been, and while I think that holds a bit too much of a negative connotation on Mirrors Edge I know what they’re saying. It’s fast, slick, stylised, and pushes all the right buttons for that ‘one more go’ urge. Adam (foolishly if you ask me) agreed to answer some questions about Canabalt and indie gaming in general – here’s what he said. Oh and you should probably play it before you read this – not just because the interview will make more sense but because it’s a bag full of awesome.
Who is Adam Atomic? Where did he start out and what brought him into game development?
I am 27 and live in Austin, TX. I am married to a lovely photographer named Bekah and we have two pug dogs that keep us company. I work out of our spare bedroom on a 13″ Macbook. My “day job” is making iPhone games for Semi Secret Software, a company I formed with my computer genius friend Eric. I played Super Mario Bros. when I was younger (over 21 years ago!) and pretty much that set the gears in motion. I was the kid with the graph paper designing Mario and Sonic levels during class…
Tell us about how the idea for Canabalt came about.
Canabalt was built for the Kyles’ Experimental Gameplay Project. The theme for August was “bare minimum,” and I had just replaced my broken NES with a nice new toploader and done a 5 or 6 world run on SMB for the first time in at least a year. I realized that SMB for the most part was a one button game, a lot like Sonic the Hedgehog. You pretty much hold right and B, and hit A at the right time to hop obstacles. I also used to work on a lot of mobile games when I was a freelance artist, and so the idea of building a compelling one button game was a challenge I was sort of familiar with, and interested in completing. It is pretty much the “bare minimum” you can do for interaction, so I hacked together a prototype in a couple hours, and it felt fun enough to continue.
What was the development of Canabalt like? Were there any points where completion seemed impossible?
Canabalt was built in three phases I think – the initial prototype (PHASE 1) was built using graphics from an old game of mine, and was all about getting the basic framework down for the feel of jumping and the tech for recycling “sequences” of buildings, so that I didn’t get any crazy memory problems if somebody ran like 10km. I added windows too, because smashing through windows is awesome. Somewhere during PHASE 1 it was decided that staging some sort of invasion or war in the background would also be awesome, but not necessarily doable.
PHASE 2 was started and completed at PromJam, the mini game jam with my idol Arne Niklas Jansson at Flashbang Studios near the end of August. The first big step of PHASE 2 was doing a quick mockup of how the game should look (including the invasion), and then working out how to balance the amount of artwork and code required to get the game to resemble the sketch. PHASE 2 included a lot of the basic algorithms that drive the final build, like figuring out the spacing and height of the buildings, how often windows and hallways should appear, etc. Oh and the John Woo doves.
PHASE 3 happened during the last weekend in August while Bekah was at a friend’s wedding. PHASE 3 involved inventing and implementing the remaining gameplay stuff, including Steve Swink (of Flashbang)’s idea about having obstacles you can hit that slow you down a bit, as well as adding the missiles, crumbling structures, and cranes. After doing a lot of visual polish, I was left with 10 or 12 hours of sound design work, which included recording a LOT of original effects using my little laptop mic. While I was cramming on effects and finishing the interface design, Danny B of dbsoundworks.com was writing the music, and Ben Ruiz (also of Flashbang) was playtesting the crap out of the thing, which was helpful and encouraging. It all came together at maybe 5am or 6am on August 31st, which was cutting it a little close for the EGP submission, but the extra polish time paid off I think.
I should add that building Canabalt in 5 days would not have been possible without relying on Flixel, which is basically just a bunch of code abstracted from my 6 or 7 previous Flash games that helps take care of a lot of the collisions and animation and scrolling and sound and all that good stuff. Trying to make a small game without having all that stuff sitting around already is difficult!
Canabalt very much slots itself into that ‘indie game mentality’ of getting a mechanic down and running (literally in this case) with it – does making a game like this come naturally or do you feel pressured to fit more into a standard game template?
Both are true for me. Especially for short projects, I think it makes a lot of sense to start with something simple, purify it, then figure out how you can expand on it within your time limits and budget without betraying it or messing it up. Not that story and graphics aren’t important; e.g. the bombs in Canabalt were added only after the invasion theme was implemented. That back and forth process is important, but just for my own sanity I have to make sure it’s fun even when its ugly and simple.
Procedurally generated content plays a big part in Canabalt and is something many people think of as “the future of gaming”. How important do you think having generated content is?
Canabalt generates new content on the fly based on fundamental aspects of the player’s current performance. E.g. the gaps between buildings are generated based on your current speed and the height of the building you’re currently on. So it’s not based on your “progress”, or your distance or whatever, it’s based on how you’re doing right this second, to make sure that the next building is going to be fun and tricky but not impossible. Canabalt’s level generation algorithm is fine-tuned or tweaked 1-2 times per second the whole time you’re playing. I think this approach is somewhere between Spelunky’s more “static” procedural level generation and Godhand’s dynamic difficulty system. I don’t know yet how you would extend this principle to a more complicated game!
This is I think why procedural generation is so important though; not because it saves on content creation time (although that is nice), not because it saves on memory or download size (also nice), not because it has such good replay value (definitely awesome), not because of the kind of inherent hilarity of emergent circumstances (a very good thing), and not even because it can generate unique, personal stories (totally rad). Procedural generation is important because of the potential it has for fluid adjustment and reaction, and I think this is something that we’re just barely beginning to explore.
Which indie games do you look at and think “I wish I made that”?
Captain Forever, Spelunky, and Torus Trooper.
What do you think the future holds for AdamAtomic and indie development as a whole?
We should wrap up the basic Canabalt iPhone port in a few days, and we’re maybe 80% done with a retro-themed arcade racer for the same platform. Assuming one of those games doesn’t completely tank, I’ll probably be doing iPhone games for another 6-9 months at least.
Indie development will continue to be inclusive and diverse and friendly and inspiring and innovative and the most important art movement on the planet.
Lastly, what is your high score on Canabalt and is there anywhere we can get the soundtrack from?
6635m, and currently the soundtrack is only available by donating a dollar or more from Canabalt’s game over screen. After your donation you’ll be taken to a secret page where you can download a 5 minute version of the theme, as well as a couple of HD wallpapers.
Thanks to Adam for answering our questions. You can play canabalt and check out the rest of his work on the Adam Atomic website