balloon-ride

What I Learned From Making Balloon Ride

I released Balloon Ride on December 1, 2010. It was my second iPhone game, after Memory Flash. It wasn’t an easy journey, but one that was quite fulfilling nonetheless. Here’s what I learned while making the game.

Programming (in Objective-C) is hard

Let’s start from the top: I’m not a programmer. At the least, let’s just say I don’t plan on selling my services as an iPhone programmer anytime soon. No, I started my career in digital media as a web designer/developer. I come from a world of Photoshop, Illustrator, CSS, and HTML. My programming experience was limited to some C classes and long days programming visual stimuli for EEGexperiments in MATLAB while in graduate school. I know a bit of PHP, enough to write basic functions while I make WordPress themes, and I’m somewhat familiar with the MVC pattern through working with Ruby on Rails (I worked mostly on the view part). Suffice it to say that learning Objective-C was not an easy task. I bought three books to start learning and gave up twice over the course of a year. I learned enough to perhaps build some really simple and basic apps, but nothing close to an actual game. Enter cocos2D.

I stumbled onto cocos2D while looking for frameworks for making iPhone apps. I knew of PhoneGap and found GameSalad. I didn’t give either a serious try because I wasn’t exactly sure of PhoneGap’s capabilities, and I was wary of GameSalad’s price and in-game branding (note: stuff has changed at GameSalad, but I haven’t been keeping up with the specifics). The overall concept of cocos2D kind of clicked with me, interestingly, after playing with GameSalad’s creator. Directors and scenes and objects made more sense to me after I realized I was just creating pseudo-code in GameSalad. This isn’t to say that stuff was easy from then on, but it was sort of an a-ha moment that led me to create my first game. Many tutorials and sample code later, I created Memory Flash (more on that here).

While I did create a functional game, I felt like I didn’t understand cocos2D well enough. By chance, I came across Steffen Itterheim’s blog and saw that his latestbook was in alpha. After browsing through the sample chapters, I was sold, and read through most of his book in one day. Through it I learned a lot more about cocos2D and game programming, and that was when I formulated the idea for Balloon Ride — a game that is simple enough to try out what I learned from the book. But what I thought would be simple was not so after all.

Game design is harder

The premise of Balloon Ride seemed simple enough: you tilt your phone to avoid enemies and collect stars. Nothing hard about that, right? In a sense, no, it isn’t hard. With the help of cocos2D and the book, implementing the basics was simple for the most part. Once I got past the basics, game design-related issues that I haven’t considered before popped up one by one. How fast should the enemies come flying? How soon do I ramp up the difficulty? Is the game too hard? Is the game too easy? It was the details that kept my head spinning, trying to find the right balance between hard and fun. I learned that what makes a game great is in the experience, and designing that experience is no walk in the park. In that sense game design is absolutely no different than web design: one may be able to learn how to program or use Photoshop using tutorials and a book, but truly great designs come from intuition, experience, and mastery.

On a somewhat related note, the graphics for the game came the easiest for me, as I’ve had plenty of experience with Photoshop and Illustrator. However, supporting Retina display was rather tedious as I had to create two versions of almost everything. This was when I came to appreciate Fireworks and its unique blend of vector and bitmap tools. I haven’t really used Fireworks even though most web designers swear by it, as I’ve already develop a level of comfort in Photoshop. But after this experience I might consider using Fireworks for my web mockups.

After a solid month of non-stop development and a couple rounds of testing, I finally managed to submit the app and got it approved. I thought the hardest part was over. Boy, was I wrong.

Marketing is hardest

There are 300,000+ apps on the App Store, and many of them are free. How does one app cut through the noise and reach its intended audience? To be honest, I hadn’t really seriously considered it. Memory Flash got 600+ downloads despite me doing next to nothing to get the word out (I blogged about it and tweeted about it once). It’s peanuts compared to other games, but way more than I expected. Even at this writing, after two months after release, Memory Flash is still getting downloads. I’m still not sure how these people found Memory Flash (App Store analytics, anyone?), but it led to the belief that something on the App Store helped people find my game. Surely, then, a better game would be easier to market, right? What I hadn’t considered was the power of the almighty dollar, or in my case, 99 cents.

First, the price, however low, prevented people from downloading Balloon Ride. Memory Flash was free, and there was no consequence in downloading it and trying it out. Once money enters the equation, the rules change against my favor. Second, paid apps are subject to piracy (I’m not sure if free or freemium apps are subject, and I didn’t check). I knew piracy existed, but I was surprised at how rampant it was. In comparing leaderboard entries and my actual sales I found that a whopping ninety percent of the game’s users are using the pirated version. While that really put a damper on things, I felt my real issue is that I’m not getting the word out about the game. Not only was I late on creating awebsite and trailer, I realized I had almost no experience in marketing, well, anything. I may be good with Photoshop, I may have picked up Objective-C, but marketing is an entirely different beast. So here I am, writing a post-mortem to be included in Steffen’s Linkvent calendar as part of the marketing effort. I have some other ideas/venues to try, including a lite version of the game, but I have to say this is all a painful learning process. If anyone reading has any good suggestions (and not just about marketing) I’m all ears!

Design is fun

However difficult the process may have been, I did learn that creating a game was really fun. It is nothing like creating a website (and as a standardist and iPhone fan, I’m not really including Flash here…) in that there is a lot more one can do with a touch device. The fact that I was able to create a fully function iPhone app is a testament to cocos2D and how powerful it is. While I do plan on keeping up with the framework, I recently discovered a real competitor that has pique my interest: Corona, which uses a much simpler language in Lua. All due respect to cocos2D, but it’s still Objective-C. Despite lagging sales, I’m still interested in creating another game, whether it is with cocos2D or Corona, but I’m sure I will be building on what I’ve learned so far. In the meantime, I leave you with this:

3 Responses

  1. marcotronic

    marcotronic

    wrote on December 13, 2010 at 10:16 am

    Hi David,
    thanks a lot for sharing your thoughts. Very interesting to read. But it’s really alarming that about 90 percent of your users use the pirated version! I really didn’t know it’s that much. I’m about to write my first iPhone game, too. But when I read something like this it’s really kinda disillusioning.

    By the way: Congrats! Balloon Ride looks great!

    Thanks again.
    Marco

  2. marcotronic

    marcotronic

    wrote on December 14, 2010 at 2:20 am

    Hi David,
    thanks for the link. I know Steffen’s site quite well but I must have missed this very interesting article. A lot of truth in it.

    Marco

Comments are closed.

Twitter