Chopper 2 for iPhone Postmortem
Aug 19, 2010—
This takes us to around six months, or roughly a third of the way through the project. Things were moving pretty slowly at this point, and in fact I had some pretty major motivational issues for a good couple of months. I was making steady progress, adding features to the game and refining everything all the time, but I was also getting a lot of surfing done! I put the lack of motivation during this time down to a few things. Firstly, as I’ve said earlier, I expected the entire project to take six months. At this point I was already around six months in, and could see there were still many months to go.
Initially, I saw Chopper 2 as roughly twice as complicated as Chopper 1, so thought it would take twice as long. But this was a mistake. I’d neglected to think about all the complexities introduced by the relationships between all of the new features. An analogy would be a number of people shaking hands. Two people means one handshake, but double it to four people and you get six handshakes. Much of the coding complexity is in the handshakes.
It also just took a lot longer as I ventured into new territory, and tackled unforeseen difficulties. The end result was that ‘twice’ the game ended up being at least ten times the work.
Another factor in the motivational issues at this point was the type of work I was doing at the time. It seems to be a pattern I’ve experienced in most projects, where the first 20% or so of the work is really enjoyable. You’re working with a clean slate, you’re seeing rapid progress with little effort, and to an extent are just prototyping. You’re rapidly adding features and making tweaks that have a huge effect, and so you’re getting rewards on a daily or hourly basis. The last 20% or so I find equally enjoyable. It’s putting the icing the cake, and seeing it all come together.
But that 60% or so in the middle is a killer. It requires dedication to get through, and is hard work, no matter how much you enjoy your job. It’s full of repetitive tasks, tough decisions, re-creating the same art/code over and over, or getting stuck on seemingly insurmountable problems. Perhaps the worst part was the long list of tasks where each one takes a week or more before I could see any tangible benefit in the game.
So that part was difficult. One thing I did around this time that I think really helped me get through it, was to release a private alpha version. I split my ‘to do’ list in half, putting everything that would be needed for an enjoyable playable alpha in one list and everything that wasn’t essential in the other. Then I asked on twitter for volunteers and got to work. About 2 months later I had something I felt I could show people, and sent it out for feedback.
This was a great thing to do for two reasons. Firstly, it gave me a medium-term goal to work towards, when the long-term goal of completing the whole game still looked miles off. And secondly, it gave me some feedback at an early stage when I could still make larger changes relatively easily.
Sending out development builds is a bit of a tricky thing. I’m always conscious of just how much work I am asking of the (enthusiastic but unpaid) testers, and also how much more valuable it is to have feedback from someone fresh to the game. So I try to keep the number of versions I send out to a minimum. In Chopper 2’s case this was two builds during this alpha period around halfway through the project, and two beta builds right at the end of the project, when I only thought I had a few minor bugs and features left to go.
Apple’s 100 Ad Hoc devices limit was a major pain, and caused me to not be able to get out all the versions to all the testers I wanted. Hopefully Apple will do something about this in the future, but in the meantime I learned to try to keep the number of testers in each version low, and make sure I only sent it out to people who I believed would give me feedback. This was really tricky to gauge at times, but overall I was amazed at the feedback a lot of the testers provided, and that feedback helped a great deal with the quality of the finished game.
Saving and loading
After the alpha build it was really a matter of just finishing the remainder of the game. The major task was creating the remaining 75% or so of the levels. This included adding all of the enemies that hadn’t yet been created, many tweaks to difficulty and graphical elements, completing all of the user interface and game saving, and a whole bunch of other stuff probably not worth going into.
However, during this phase there were a number of hurdles and breakthroughs that are worth mentioning. State saving comes high on the list. If you’re not a programmer you probably have no idea just how hard it is for a developer to save your current progress when you exit a game, and load it all back up again when you resume. For starters, the developer has to have the game designed well enough that this is even possible. Unlike in Chopper 1 for the Mac, Chopper 2 was designed with this in mind, with all parts of the game being able to be loaded either freshly from a level’s defaults or from a game save file.
Where it becomes really difficult though, is the elimination of all of the associated bugs. For instance, every projectile must save its position, direction, velocity, target object and a bunch of other parameters. And when any one of these things is neglected for some reason or loaded or saved incorrectly, bizarre behaviors show up on reload.
Projectiles would disappear or spin off in the wrong direction or suddenly all target the player. With the complexity of the Chopper 2 game state, I simply couldn’t have found all of the issues if I had been actually exiting and starting the app again on a real device. So what I had was a button in the editor, that saved and loaded the state exactly as if I had exited and re-launched the app. This meant that in a fraction of a second I could save and reload the state, and so I played through every level clicking this button every second or so until all the save-related bugs I could find were squashed.
The remote control feature
The remote control video that went viral
The remote control feature was also an interesting development. After playing with my shiny new iPad for a couple of weeks it struck me that some iPad games could work quite well controlled exclusively by an iPhone. I immediately realized it would be technically possible, and that I could do it in Chopper 2. So I got to work, and within a day of getting the idea I had a working prototype. The logical next step was to plug the iPad into a TV. So a day later I had that working too, filmed the setup, uploaded the videos to YouTube, started getting press and rapidly had over 100,000 video views.
That turned out to be a great ‘gimmick’ and as such drove a huge amount of interest a couple of months before launch. But it wasn’t only a gimmick. When playing with the prototype, I was pretty blown away by just how well it worked. The remote control method became my preferred way to play, so I could see that other people would really like it too.
Technically, the iPhone controlling iPad feature was easy to implement. I’d already had some basic networking experience, and GameKit made the process pretty painless. I’d also had experience with multiple displays on the Mac, and had resolution independence to the extent where it looked good on both iPhone and iPad. So the TV out thing wasn’t too difficult technically either. And in fact it really only required a few lines of code. However, designing and creating the setup interface, and tidying up the loose ends, allowing people to plug in and unplug the TV at any time, and dealing with bluetooth reconnections and such, did end up adding a few weeks to development. Overall though I feel it was well worthwhile, and would do it again in a heartbeat.
Lastly, the launch itself also deserves a mention. Chopper 2 came out with quite a bang, getting a solid week of insanely high sales numbers, reaching the #10 top iPhone app in the US, and the #3 top iPad app. In a market dominated by large publishers and 99c licensed titles, this was a pretty remarkable launch for an indie game at $2.99. I put this success down to a number of factors.
Firstly, I had set a release date in the future when I submitted Chopper 2, and adjusted this but still gave myself a few days when it was approved. When an app is approved developers can send out promo codes to the press and they can then download and play it, even though the app itself is not yet available in the store. So after it was approved I decided on a release date and sent out nearly all of my promo codes to all the contacts I had. The result of this was a number of reviews and articles on or just after the release date.
It probably shouldn’t be overlooked, so I’ll also say that in general these early reviews were very positive. It definitely wouldn’t have had such early success if it had been in any way poorly received.
Secondly, I already had a pretty large and active customer base playing both Chopper and Chopper Lite. A few months before Chopper 2 was done, I had released an update that put a button in both these apps on the main menu simply titled ‘Chopper 2′. When people clicked this, it showed a built in advertising page, with a button to get more information. As soon as Chopper 2 was available world-wide, this button changed (in the lite version only) to say ‘Available Now!’ next to it and linked directly to Chopper 2 in the App Store. This button had an insane number of clicks in the first 2 weeks. Though of course it wasn’t just the button. The fact that well over a million people had already tried the first version must have helped!
The Chopper 2 trailer
Also, and I’m not sure exactly how much of an effect this has had, I spent about a week carefully crafting the Chopper 2 trailer. I’ve already written a lengthy ‘making of’ post, so won’t go into it here. So far it’s had 35,000 views, which isn’t huge, though not insignificant either. I do wish I could place this on the App Store page somehow. But people were generally impressed with the production values of the trailer, and I’m sure it sells the game well. iPhone game trailers are generally pretty bad, so I suspect just getting anyone to click the play button is a pretty giant hurdle.
There were other factors to the successful launch, too. Fellow developers and many other fantastic people helped to promote it in various ways, including some free advertisement placements and lots of tweets and the like. Apple featured it in the App Store 2 days after launch in many countries, and are continuing to do so, which has an absolutely huge effect.
I think the launch sale was a great way to go. The base price is $4.99, but it was launched at $2.99. Some developers have launched an app at a high price point then drastically dropped the price a week or two later, which tends to piss people off. I did the opposite. I think people responded pretty well to this, and it seems the right thing to do. Though I’ll never know if it would have been more successful launching at $7.99 and dropping to $4.99 later.
Also, as mentioned earlier, the 200,000+ views of the remote control/TV out videos must have helped. And the iPhone controlling iPad feature alone must be driving a lot of interest, with Chopper 2 being one of the first games to offer the option.
Overall, I am immensely proud of what I have achieved. Chopper 2 is of the high quality I was aiming for, and has been very well received.
If there was a single negative thing to say about the experience it would be that it just took too long. I’ve mentioned the factors that caused this, and I definitely don’t regret the time spent, but I will be much more cautious about the potential length of future projects I take on by myself. 16 months was too long, and I hope I never work – alone – on a project of that length again.
On the positive side, I am very, very happy with how the game came together as a whole. The music, the landscapes, the simple story and the text/fly-throughs that present it, along with the gameplay itself, all come together to create a cohesive whole that I feel is my greatest artwork. It has been a labor of love, a huge learning experience, and a great success.
About the Author
David Frampton is the man behind Majic Jungle Software and the creator of the iOS smash hits Chopper and Chopper 2. David is also an accomplished artist and photographer.