There's no doubt that the iPhone is one of the most talked about platforms in game development today. While there is a lot of great information available for developers looking to get into iPhone development, there is also lots of misconceptions and misinformation that can be difficult to filter out for anyone not actively engaged in the process of developing for the platform.
This article, originally presented as a lecture at the recent IGDA Leadership Forum, will cover the overall process of developing an iPhone game from start to App Store and beyond. The goal is to separate facts from myths and give developers an accurate idea of what to expect.
Overall, iPhone projects follow a fairly similar process to that of most console games: start with an idea, go into development, perform some final testing, then submit to cert, launch, and then follow up with ongoing marketing. Developers who approach their titles anticipating each of these steps will be the ones that have the most success and least frustration with the process.
There are a couple points in this process that are fairly unique to iPhone development. If this is your first iPhone game, then there is a crucial business and legal step to go through before completing development. The submission process is also a little bit unique, and finally marketing is perhaps the single most important aspect of having a successful launch.
Dev Program Application
Assuming this is your first iPhone game, then the first step in the process is getting accepted to the iPhone Developer Program. You will want to sign up for the Standard $99/year program, not the Enterprise program.
The important thing to realize here is that whoever applies to the iPhone Developer Program will automatically becomes the Team Agent, once accepted. While accounts can have Admins which can do almost anything, the Team Agent is the only person who can approve contracts with Apple, and it is the only account that can generate Promo Codes for released apps. It is possible to change your Team Agent, but it is a manual process that you need to contact Apple to do, so it is much easier to start with the proper person from the beginning.
Once you complete the application, Apple will take some time reviewing your application before accepting it. This process is likely just a few days now, though in the summer of 2008 it could take weeks or even months to get approved. You can start developing your iPhone game before you are approved. You will just be limited to only being able to test against the software simulator and will not be able to deploy and test against actual hardware until your application to the developer program has been approved.
Contracts / Banking
As soon as you are approved for the dev program, the Team Agent should log in to iTunes Connect to ensure that all contracts and bank account information is set up. The default contract only allows developers to submit free apps to the App Store. If you plan to charge money to purchase your apps, you will need to have the Team Agent approve the Paid Applications contract.
At the same time, you should also make sure the bank account and tax information in iTunes Connect is completely filled out. Your paid app will not be able to be released until all of this is completed properly; it is much better to do it early so this doesn't become the reason your launch is delayed.
Also pay attention to specific tax treaty information on iTunes Connect, and be sure to complete any additional forms that may be necessary depending on your location.
Developers will need Intel-based Mac OS X machines with OS X 10.5+. I highly recommend 10.6 (Snow Leopard) as the Static Analyzer alone is worth the minimal upgrade cost. For hardware, there are a few variations in platforms to be aware of. This Apple KB article gives ways to tell which version of iPod Touch you have.
iPhone. Slowest processor and memory
iPhone 3G. Identical processor and memory to iPhone
iPhone 3GS. Faster processor and more memory. Better graphics chip.
1st Gen - Processor and memory identical to iPhone and iPhone 3G
2nd Gen - Processor faster than iPhone and iPhone 3G, memory identical to iPhone and iPhone 3G
3rd Gen / Late 2009 - Processor and memory same as iPhone 3GS, 3D Graphics chip identical to iPhone 3GS
For performance testing purposes the 1st gen iPod Touch, iPhone, and iPhone 3G are essentially identical. The 2nd gen iPod Touch has a slightly faster processor -- so be aware of this if it is the primary development device. The iPhone 3GS and 3rd gen iPod Touch are identical to each other, and significantly faster than the other devices; they also come with 128MB more memory.
While it's tempting to focus only on the newest platform with the highest specs, this is a bad idea. Consumers can still by an iPhone 3G new for $99 and the smallest capacity new iPod Touch in stores today is still the 2nd gen iPod Touch platform. If your game only targets the newest platform you will be missing out not only on the 50+ million installed devices already out there, but also could very well be missing out on a consumer who goes into the store today and buys a brand new device.
Similarly, unless your game requires an iPhone-only feature, you should make sure that it works well on iPod Touch devices. iPod Touches are a very significant part of the marketplace, comprising nearly half of the available hardware. Depending on the game, iPod Touch users could be as high as 75 percent of the playerbase.
The iPhone SDK from Apple assumes developers will be using Xcode, Apple's compiler and programming toolset. While it may be possible to avoid using Xcode, doing so is beyond the scope of this article.
Most iPhone examples from Apple and elsewhere are written in Objective-C, a set of extensions to the C language based on Smalltalk. As such, if you are willing to learn Objective-C, you'll have the easiest time finding source code examples, tutorials from Apple, etc. Since Objective-C is an extension to C, you are also free to write C code within the same source files and even functions.
The Xcode environment also fairly seamlessly handles C++, though it's not quite as straightforward to do so as it is to stick to plain C, and there are far fewer C++ examples available to learn from.
The iPhone Simulator that comes with the iPhone SDK is incredibly useful for development. It almost perfectly emulates most aspects of the iPhone OS and in the past 18 months, I've only found a couple situations where the simulator would handle things differently than actual hardware, outside of some very specific limitations.
So what limitations? Namely, in the simulator processor speed and memory are based on your computer hardware, and as such the simulator is useless for performance testing. There's also no accelerometer input in the simulator (though there are third party libraries that aim to assist in this problem).
Finally, with the simulator, multi-touch input is somewhat awkward, and it is impossible to input more than two touches at one time. For most functionality and core logic tests, the simulator will be identical to the hardware and your build, deploy, and test times will be significantly less than deploying and testing on actual hardware.
The bottom line is that for most development needs, outside of performance testing, the simulator will let you have a much quicker rev and testing time, with very little need to worry about incompatibilities when you run on actual hardware.
When it comes time to test and polish your game prior to submission, be sure to test against a variety of hardware. At a minimum you should have at least one first gen iPod Touch or iPhone or iPhone 3G to make sure that your game runs well on all hardware.
You should also make sure that you test against a clean install of the app. This is very easy to miss in development, but is critical to ensure you aren't assuming default values that don't exist in a clean install. Similarly, when working on an update, be sure to test against both a clean install as well as an upgrade install over an existing previous version build.
You also need to make sure your game can handle interruptions at any time. Given that you're deploying to a phone platform, it should be assumed that your game will be interrupted with no advance notice, and players will become very frustrated if they lose progress as a result.
The general rule is that your app should be able to save and restore to any state in the game. Resetting back to the beginning of a level may be acceptable for quick levels, but having to start over on anything longer than one or two minutes will likely frustrate some number of players.
Similarly, you must ensure your game properly detects and handles an internet connectivity state. The iPhone can connect over WiFi ,or AT&Ts 3G and EDGE networks, or have no connectivity at all, and your app must be able to detect this and respond appropriately. (Of course, iPhones in other territories have the same capabilities, primarily over 3G networks and WiFi.)
It is generally not acceptable to simply time out if the phone is not connected to the network; rather, you should proactively notify the user that they need to enable an internet connection for that feature. This is a key point for Apple, and improper detection or lack thereof will generally result in a rejection upon submission.
When everything is complete, an Admin user on your account will submit the app to the App Store via iTunes Connect. It is recommended that you walk through this process before preparing to submit, so you are aware of exactly what is asked for at submission. You will need to have your app description, keywords, screenshots and logos all ready to go along with the binary to be uploaded.
The binary that will be uploaded is a distribution binary, and it is not possible to test this binary prior to submitting it to Apple. Unfortunately, it needs to be signed differently than any other version built previously, and as a result you will not be able to install it on any devices. There have been a very few reported instances of developers who found their final build had a bug that appeared to only exist in the distribution build, but this is very rare.
Pricing an iPhone app correctly can be a significant challenge to get right. Most games are currently priced between $.99 and $2.99, with a few at $4.99 and very few at $9.99. In general there is a feeling of a "race to the bottom" in pricing among many developers, which has lead to the huge number of $.99 apps. It can be difficult to successfully generate sales at a higher price point without the advantage of having a big brand like Rock Band or PopCap to drive interest and visibility.
Recently, Apple introduced Top Grossing charts into iTunes, which has helped for games and apps that do charge a higher price point. These apps can actually gross as much as cheaper apps, but do not get the same number of downloads or purchases to compete on a one-to-one download basis with $.99 apps.
In late October, Apple began allowing free apps to have In-App Purchase content, where previously this was only available to paid apps. The advantage with this is that free applications can easily have 20 to 40 times as many downloads as paid applications. It is still a bit too early to see if this model will be lucrative, but some of the first games developed for this business model have hit the App Store. Our own game Gravity Sling was one of the first to do this and the first couple weeks of availability show that around 2 percent of free players purchased in-app content.
Recently, apps have taken around two to three weeks to be approved, but there are no guarantees of timing. In early 2009, approval times were around one week, while just after Apple's Worldwide Developers Conference in June, many apps took four to five weeks, or more, for approval. There is no known way to speed this process up, and your best guidance is a status report on the iPhone Dev Center that Apple has posted which states how long typical approvals are taking (at the time of writing this says that 95% of apps are being approved within 14 days).
When the app is approved the Team Agent and Admins will get an e-mail stating that the application has been approved for sale. Someone should immediately log in to iTunes Connect and change the application release date to the current date. This should make your application release date in line with the actual release date of the game. If you don't, the date will currently default to whichever is earlier -- the date set in iTunes Connect or the date Apple approves the app.
This means that if an app is approved on December 15th, and the release date set in iTunes Connect is December 5th, the app will appear (and be sorted) with a release date of December 5th. Conversely if the app is approved on December 15th, and the release date is set to December 20th, the app will become available on December 20th, however it will appear (and be sorted) with a release date of December 15th.
The only way to be at the top of the New Releases list is to set the release date in iTunes Connect to the same day the app is approved. Until recently, this logic held true for updates as well, but that is no longer the case. Releasing an update will cause your app to say that it was updated on the date the update is approved, but you will not appear at the top of the New Releases again.
The key to marketing on the iPhone is generally to get as much and as wide of a marketing push all at the same time as possible. This way each promotion will stack on top of each other, ideally with an end result of pushing your game into the Top 100 charts. These charts are based on a weighted average of either downloads or revenue depending on the chart, and appear to be heavily weighted towards the most recent 48 hours.
The challenge for traditional publishers is that the release date for a game typically isn't known ahead of time, as it becomes whatever day Apple approves the app. Developers can pick a specific release date after that point, but doing so will result in a complete dependence on external marketing since the game will not be listed in the New Releases.
Fortunately, most iPhone review sites are familiar with this process and very good at working around these limitations. If you plan to do media buys, most will let you lock down the time once you know your app is released. You can also send review sites advance "AdHoc" builds of your app prior to release so they can potentially have a review ready ahead of time.
In addition to advance copies, Apple provides up to 50 promo codes for each application version (submitting an update will reset the promo codes available back to 50). All review sites will accept these promo codes to review apps. Prior to launch, you must get in touch with sites to know who should receive the initial promo codes.
Twitter and YouTube are also proving to be very popular channels for iPhone app promotion. Trailers on YouTube can be viewed thousands of times, and nearly all iPhone review sites are very active on Twitter as well.
While there are a few major iPhone review sites, there are hundreds if not thousands of individuals and tiny sites also doing app reviews. While no single one of these is significant, in aggregate they have a significant impact as each person may influence 10 to 50 people. The most successful long-term marketing and promotion will realize this and will try to do things to take advantage of these micro-channels.
Contrary to the seemingly prevalent stories about the horrors of iPhone development, I have found the process to be fairly straightforward and easy to manage. However, there are a few problem areas that you should pay particular attention to:
No Contracts or Banking. Apple will not remind you that you do not have the proper contracts signed, or that your bank accounts are not properly set up. If you are not proactive about this, then you may not even realize that this is not completed until your app has been approved, yet cannot appear on the app store until these steps are completed.
Failure to follow guidelines. Apple will reject apps that do not follow their guidelines. I have never had an application submission rejected for any reason. If you read the guidelines and you follow them, it is far less likely that you will run afoul of any of Apple's policies and get rejected. There are some gray areas that are open to interpretation, but most of their policies are fairly straightforward, and it is easy to know if you are in compliance.
Keywords / App Description. A few months back Apple started monitoring keywords and app description with application submissions. Apps that mention other apps in their keywords will get rejected, as will those with misleading descriptions.
Testing & Error Handling. As previously discussed, be sure your app properly handles various error states, particularly around network connectivity.
Release Date. Remember that the release date of your app will be shown as the earlier of the day you have set in iTunes Connect or the date that Apple approves your app.
It is absolutely possible to build a profitable business developing games for the iPhone and iPod Touch. To be successful, developers must focus not only on creating great games, but they must also devote time and energy to the business and marketing side of game development too. Developers who believe they can simply make a great game and wait for the money to roll in are destined to fail. There is a huge amount of competition and noise in the marketplace, but the space does reward savvy developers, and the upside can be very significant.
The following sites and tools can be very helpful with aspects of iPhone game development.
MajicRank - Mac OSX, Free w/ $20 requested donation. Automatically downloads, tracks and charts app rankings for all app stores worldwide. Very useful to see historical ranking data for yours and other apps.
AppViz - Mac OSX $29.95. Will connect to iTunes Connect to download daily and weekly sales data as well as financial reports. Great for quickly visualizing many different aspects of product sales.
AppSales-Mobile - iPhone, Open Source. Very similar to AppViz but an Open Source iPhone app.
AppFigures - Web service. Combines a lot of MajicRank and AppViz in a subscription web service.
Analytics - PinchMedia, Flurry and Localytics are the leaders here. All are very easy to implement and have no cost to use. There's no excuse not to include analytics in your app.
MobileOrchard - Lots of great developer focused content, tips and advice.