Getting your app on Intel AppUp: Porting "Ancient Frog"
The following is a continuation in a series of articles on bringing your app to Intel AppUp[imgtrack]http://altfarm.mediaplex.com/ad/tr/12124-114967-26654-5?mpt=[CACHEBUSTER][/imgtrack], Intel's app store for Intel Atom(TM) based mobile devices. This is an interview conducted by Bob Duffy, Intel AppUp Developer Community Manager with developer James Brown on his experience in bringing his award winning game "Ancient Frog[imgtrack]http://altfarm.mediaplex.com/ad/tr/12124-114967-26654-6?mpt=[CACHEBUSTER][/imgtrack]" from the Intel AppUp center.
If you're interested in learning more about developing for Intel AppUp, we invite you to enroll in our AppUp developer program[imgtrack]http://altfarm.mediaplex.com/ad/tr/12124-114967-26654-5?mpt=[CACHEBUSTER][/imgtrack] today. You should also consider competing in our challenge, which awards cash prizes on a monthly basis[imgtrack]http://altfarm.mediaplex.com/ad/tr/12124-114967-26654-7?mpt=[CACHEBUSTER][/imgtrack] to the best apps in select categories.
Q. What was you inspiration for the game?
James Brown: Ancient Frog was born out of my departure from the mainstream games industry. My background was very broad - designer, programmer, artist, producer. But the games industry had become huge and stratified, and I ended up at Lionhead / Microsoft as a manager of a team of programmers with no real creative input, which was about as far from my ideal job as I could imagine.
I decided to start my own games again. I was led to the idea for Ancient Frog by the constraints I had set myself. I needed a game small enough that it could be completed to a professional standard by a solo developer. With a puzzle game, once you've nailed the puzzle mechanic, the rest is just variations on that theme. I also wanted a central character, cute without being cutesy, with a bit of personality to it. Since I'm not an animator, which set me looking into procedural animation systems, and the idea of a rock-climbing game involving a gecko sort of coalesced out of that.
Once I'd thrown together a stick-figure prototype, the idea morphed and evolved as I played around with it. The gecko became a frog because frogs have longer legs at the back than the front, which introduces some interesting decisions for the player. The climbing aspect faded out to the slightly more abstract stepping-on-droplets idea. The animation system became more explicit - you don't drive the frog, you drag one limb at a time - which both made it a more interesting puzzle, and meant that the player was the one creating the animation, rather than the game.
It was quite a prolonged journey from that initial prototype to the final game (during which time I changed country and spent a while building digital interactives for museums), but it the fundamental idea remained very clear in my mind throughout.
Q. How did you deal with hardware differences such as multi-touch vs mouse & keyboard and accelerometer in the iPhone?
Ancient Frog doesn't really use any hardware that can't be replicated with a mouse or trackpad. I do use the accelerometer to influence the direction the petals fall in the 'win' animation, but it's hardly a game-breaker to lose that. Multitouch is used on the iPad version so that you can dip more than one finger in the water at once - again, no big deal to lose out on that.
On the touch-screen versions of Ancient Frog, the game starts with an introductory tutorial which takes control away from the player. This is admittedly annoying to some players (but play-testing had shown it was necessary to teach some of the control gestures). But for some reason, on a machine with indirect control - a mouse or trackpad - it becomes completely unacceptable. I'm not sure why - possibly it's that not responding to a touch is something that's always context-sensitive, and so expected, while not responding to the mouse feels more like the machine has hung, and is not expected.
At any rate, I had to change the tutorial to be a more hands-off piece of advice. I also removed the gestural 'undo' and 'redo', partly because gestures are awkward on a mouse/trackpad device, and partly because the increased screen space means there's room for on-screen buttons. Having buttons on the screen also means the player is encouraged to play with them to see what happens, which removes some of the load from the tutorial.
Q: Did anything surprise you about the porting process - harder than you thought, easier than you thought? Did you lose or enhance features for the Netbook?
The approach Ancient Frog uses to create its look, with multiple blending passes, is very fill-rate intensive. I'd had a hard time of it on the iPad port, which I'd done just before the netbook version, because the iPad's GPU simply can't handle that much overdraw. I had to put a lot of work into baking the lighting in to the textures, removing elements from the layout, and generally slashing it down so that it would run. So I was worried, coming to the netbook version, that I'd have the same problem. As it turned out I was pleasantly surprised by speed of the integrated graphics chip, and I didn't need to cut anything.
Q: How do you compare the game play between the devices?
The game play is essentially the same on all devices. On the handhelds, the look of the levels is simplified - they just have one layer, and are cropped tightly in to make the most use of those tiny screens. On the netbook versions there's more room for the frogs to breathe, and some playful background elements to prod at. But apart from some small tweaks to the difficulty progression, the puzzles are identical.
Q: Did you require any support from Intel in the process? How was the submission process & support for Intel AppUp center compared to other stores?
The whole process was straightforward. I had one validation failure because I'd managed to build against an old version of the SDK, but after that everything just sailed through.
Q: Would you do anything differently or do you have any tips for developers looking to port to Intel AppUp?
The only thing I'd do differently would have been to do it sooner. There's so little effort involved in building for the AppUp Center, and I'm really excited to see where it goes.
The best advice you can have for porting from iPhone to AppUp is to build your iPhone app with porting in mind from the beginning - use straight C++, and avoid the Apple-specific APIs. If you've already finished your iPhone version and you're wondering whether it's worth the work refactoring it to be more platform-independent, there are benefits for the original code quite apart from having a new port. Different devices tend to expose different subtle bugs, and since the code is the same across all platforms, the fixes you make will benefit every version.
If you're going to build for both iPhone and AppUp, it makes sense to treat AppUp as your primary target during development. You want to be able to iterate quickly, and debugging to a netbook is considerably faster than the iPhone simulator or downloading to the physical hardware.
To read an extended interview with James Brown, please visit our blog[imgtrack]http://altfarm.mediaplex.com/ad/tr/12124-114967-26654-6?mpt=[CACHEBUSTER][/imgtrack]. And don't forget to enroll today[imgtrack]http://altfarm.mediaplex.com/ad/tr/12124-114967-26654-5?mpt=[CACHEBUSTER][/imgtrack] to get your apps on AppUp!