How to Make a Successful iPhone Game

After writing a whole series of technical articles on how to solve specific programming problems I've decided to write about something more commercial. It's all very well being a wizard with Objective C and producing a beautifully archichetured game that runs at a blistering frame rate, but if your game is boring, no one will buy it and your effort will have been wasted.

The difference between success and failure can be as huge as the difference between a one star rating with no sales and a five star rating with 10 million copies sold. Angry Birds catapulted Rovio to global fame with 500 million copies downloaded. Getting the right ingredients to success is vital if you want to be successful in the business of game design. In this article, I'm going to look at the games that got it right and the game which made fundamental mistakes. Sometimes the mistake can be extremely subtle. Super Mario Galaxy on the Wii is a good game. The presentation is excellent, the level design is absorbing and collecting all the stars hidden around the level is a real challenge. The designers of this game made a very small mistake which had a catastrophic impact.

Mario Galaxy - don't tell you how many stars there are to collect!

The levels for Super Mario Galaxy are actually fairly easy to complete. You can hop your way to the exit in several minutes and in many cases, it's not necessary to explore the whole level. Collecting all the stars however, is a challenge. You need to explore every part of the level killing and avoiding monsters and revealing hidden sections. Unfortunately, the game developers didn't include a counter to say how many stars there were to collect. There was no medal to say "well done" for collecting all the stars. This meant that there was no real reason to collect all the stars - quicker to just plow on to the next level. There wasn't really any reason to re-play a level either - completing the level badly was sufficient. Contrast this with Dark Nebula on the iPhone where you are rated on speed, not losing any lives and collecting items. I've continued replaying each level until I achieve a gold star rating. Super Mario Galaxy isn't a bad game, but it's not addictive. Addictiveness is a quality that is vital for any game. If someone is playing your game every day, it will be running through their mind every day - if this is the case, they'll be far more likely to talk about it to their friends and get you recommendations as well as buy in app content and sequels.

Kingdom Rush - really addictive

Kingdom Rush is a perfect example of how to create an addictive game. The game involves building defenses to stop a horde of enemies entering your base. Depending on how many enemies slip past, you get a rating from 1 to 3 stars. The main level display screen is a map showing all the available levels. At one glance, you can see which levels you've completed with the maximum rating and which you still need to complete. This provides a real drive to get the game fully finished. Imagine that there wasn't a star rating. Would you bother playing the 30 times until you didn't let a single enemy through, if you didn't win anything by doing so? In actual fact, encouraging people to perfect their skill at the game also boosts their enjoyment. It's really satisfying to complete something difficult after having struggled.

In this article, I'm going to cover in detail, how to make a game which is addictive and fun. In short, a game which will make you money.

Why do we play?

Why do people spend a large portion of their time knocking over pigs with birds or drawing pictures to represent words. Time is scarce and valuable, yet people spend a huge amount of it playing games. The reason, is that good games tap into fundamental elements of human nature which are difficult to realize in the real world. Take rock band for as an example, rock band is an instrument simulator which essentially simplifies the playing of an instrument. In real life, it takes years of practice and dedication to be able to play an instrument well. I only really started to enjoy playing the piano after 3 years. Those three years were huge time investment with little reward. With Rock Band however, you can play an instrument straight away! You can get all the enjoyment and satisfaction of playing an instrument without the effort. Reward with minimal effort. All good games have an element of real life. The difference it that they alter the learning curve to make the game more accessible than real life. In the following sections I'm going to cover four main elements which I believe should be the tenants of game design: completion, collection, improvement and competition.


I remember one summer finding my brother sitting his room playing Devil May Cry. He would start the level, play half the way through, then quit the level and start again. Sometimes, he would complete the level but then play it again anyway. I asked him why he was playing the same level over and over again - wasn't it boring? He said that yes, it was boring, but he wanted to get all the achievements. This involved completing each of the 15 levels on each of the 5 difficulty levels and getting a rating of S (Super). That's 75 levels to complete on Super to get all the achievements. Would he have been playing if you could get all the achievements some easier way? No. He was playing just for the sense of satisfaction that the 100% complete gave him. It's not difficult to work this into your games. Give the player a percentage complete indicator for example. Give them medals and trophies for getting a particularly high score or collecting all the items. Entice them with unlockable items. Doing this gives the player a reason to dedicate their time to the game. It also provides a subtle way of balancing the difficulty of the game. You can make it easy to compete all the levels but difficulty to complete all the levels 100%. Thus, casual gamers will just finish the game but hardcore gamers will spend hours trying to unlock every item.

A word of caution. Don't overload the game. If the game seems too difficult the player will become discouraged. They'll think "ah, there's no way I can complete this game 100%" and give up. Ideally, make the game's easy mode completable in 1-2 goes, normal in 2-6 and hard in 10+. This gives a sense of progression while still leaving a challenge.


Collection is a primitive hunter gatherer instinct. In the real world, collecting things (food, money) provides real material benefits which help us survive. Because of this, our brains have to developed to feel a sense of satisfaction and pleasure when we collect something new or valuable. Role playing games are a classic example of this. The worlds you explore are littered with chests and items. You collect money to buy new weapons and you collect spells to improve your player. This can easily be translated into mobile applications. Think about adding collectable elements into your levels. Mega Jump is a great example of this. The aim of the game is to launch your character upwards by collecting coins and power ups. However, that's not the end of it. Coins aren't just used to give your player an upward boost, they're also collected. After the game finishes, you can exchange coins for improved power ups. This means that when you play you're not just trying to complete the game, you're also trying to collect as many coins as possible. This game also allows you to buy coins with real money - thus adding an extra revenue stream for the developer. For advice on how to charge for your app take a look at my article: How to make money from your app - free, freemium or paid.

Mega Jump allows you to spend the coins you collect

Collectible content is great but be careful to make sure your game is balanced. If the user has to collect too many coins to buy a power up they won't bother. Also, don't fall into the trap of content overload. I think Little Big Planet is a perfect example of this. Little Big Planet has a lot of unlockable content. Each level has around 80 stickers and costumes which can be used to customize your character. It has so many items that you don't even notice when you earn a new costume. I found this put me off. There was more content that I was ever going to use, so I ended not bothering to collect everything.

Little Big Planet is content overload


In the real world visible improvement is very satisfying. When you play a sport and notice that each time you're playing better, it feels that your time has been well spent. When you practice for hours and see no improvement, normally you'll give up or get bored. It's important that this is recognized in game development. Give the gamer a gradual learning curve so they're continually improving. I remember playing Gran Turismo and at first, everything was going well. I was gradually upgrading my car and improving my racing skills. However, I found that to race in the harder races, I needed to get an advanced license. It turned out that the advanced license was extremely hard to unlock. In fact, it was so hard, I never managed to unlock it! In the end I used a cheat to unlock everything and gave up on the career mode. The key here is not to make the learning curve in your game too steep. Make sure that players won't become blocked from continuing the game if there's a difficult part they can't complete. If you want to add challenges with extra difficulty, make them side quests so that if the player doesn't manage to compete them, it doesn't matter. Also consider adding an option to pay to unlock the level. If, in your game, the player collects coins. Allow the player to pay 1000 coins to unlock the next level.

Gran Turismo blocks your play by making you earn super hard licenses


I think competition is one of the most important things to consider when designing a game. Humans are competitive by their nature. We all want to be the best and we all want to win. In game design there are many ways to allow people to compete. They can compete directly via network play or indirectly via score boards. The important thing is to provide benchmarks so that people know how they're doing. For network games, having a level is a great way to do this. Reward people for their skill and how long they've spent playing. Call of Duty does this in a clever way. In the online mode, players earn experience based on how well they play. When they get enough experience their level increases. With an increased level, players get access to better abilities and power ups. However when a player reaches level 50, they have a choice. They can remain at level 50 and continue improving their weapon skills or they can swap everything they're earned for a prestige. The prestige doesn't actually do anything. It only gives the player a medal which is visible to other players. Why would someone give up the enhanced abilities they had earned after 50 hours of play for a medal? The answer, for the kudos. All the other players would know that player was so good, they didn't need to be level 50, the prestige was worth more to them. This is really clever because it keeps the player coming back. They are always climbing the ladder to get back to level 50. Once they get there, they swap it for another prestige and start again. Any game can increase the sense of competition. Using Game Center to create world-wide leader boards. Using Facebook to allow people to share their scores. Providing medals for particularly difficult levels. Providing achievements which are difficult to earn. All of this gives people a reason to keep improving.

Prestiges in Call of Duty

Another great thing to do is provide features which are only available to dedicated players. Angry Birds does something like this. Each level that you complete 100%, adds extra visual elements to the game start screen - extra birds flying in the background. It's subtle, but each time the player sees the start screen they will be reminded of their skill. You can also add costumes or other visual elements which are only available to dedicated players.

Angry Birds adds to the start screen when you advance in the game

Another idea is to make a game which is predominantly one player but can also be played by more than one person. A good example of this is Pokemon for the Game Boy. Pokemon was primarily a one player game. However it was possible to connect two Game Boys and have a duel against your friend. I would spend hours trying to increase the levels of my Pokemon just so I could beat my brother in duel. This added months to the life of the game.

Pokemon allows you to battle your friends

Emulating the real world:

The most important point I want to bring across in this article is that successful games emulate the real world. However, they do this in such a way as to provide an experience which isn't readily available in the real world. For the last 100,000 years of human development we lived in tribes hunting, collecting and fighting to survive. It's only in the last 2000 years that we have really lived in civilized societies. Video games have existed for about 30 years. Successful games speak to the 100,000 year old brain rather than the modern civilized brain. They allow us to do things in a virtual environment that we can't do in the real world. A good example of this is Eve Online. Eve is a space simulator. You pilot a space ship in a huge online galaxy. You can trade, fight, mine, explore or develop new products. In fact, it's a lot like the real world. Work is hard and boring, and becoming rich and powerful requires dedication. The difference is that it allows you to do things which aren't allowed in the real world: declare war on your neighbor, blow up someone's spaceship. It also makes earning money easier - it takes a year to save up to buy a new car but only an evening to buy a new spaceship! For this reason, people spend hundreds of hours playing. A shop assistant in the real world could command 200 space crafts online. When you're designing a game, play on the fundamental experiences which make a game addictive and satisfying: collection, completion, improvement and competition. By talking to the primitive brain and creating a game which plays to basic human instincts, your game has a much higher chance of being a success!

Eve simulates the real world but in space

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby>. The supported tag styles are: <foo>, [foo].
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.