Kingdom Rush succeeded with just 4 principles of game dev

The Kingdom Rush series has been a mega success on mobile and desktop platforms, keeping a tight grip on the tower defense market since 2011! Ironhide didn’t find success by accident, they followed some common sense principles of game development that the rest of indies can learn from.

Ironhide’s first two games were completely unsuccessful. If you played either of their games, you’ll see that the developers followed a watered down version of the four principles we’re going to talk about today. To reach success with their 3rd game, Kingdom Rush, they doubled down on how faithfully they follow these rules of thumb, and expanded the game’s scope which let their work shine through more.

  1. Game always balanced and each level is a new challenge
  2. Extreme attention to detail and very polished
  3. Great visuals, sounds, and voice acting
  4. Iterate, iterate, iterate

Ironhide spent 6 months full-time working on Kingdom Rush as a small indie studio in distant Uruguay. Before deciding on what game to work on, they studied the markets at the time. It didn’t take much research to figure out tower defense was a HOT genre, but they had to investigate their other options too. At that point, they only had enough savings to work on one more game, or else they’d have to call it quits. Tower defense was saturated at the time with very recently published popular games, but they went for it anyway – it was high risk high reward. High risk because it’s hard to break through a saturated market – whether that’s the iOS App Store, posting to Hacker News, or getting to the top of the TD genre. It’s high reward, because the saturated markets are the biggest… #1 spot on iOS App Store will net you $150k a day MINIMUM, #1 spot on HN gives you 25k page views. Kingdom Rush has been the king of TD, and their revenue is disgusting.

Kingdom Rush on iOS has pretty much never left the top #100 for US games, and stayed in top #100 US overall for many months after release. They weren’t making 150k a day… but it has definitely been quite a bit!
Sponsorship netted them: 30k exclusive license + 30k funding for iOS + 50/50 revenue share + free hardware + 20k from Kongregate.

#1 Always challenge the player

Kingdom Rush level progress metrics. Source:
Kingdom Rush level progress metrics.

This is the tenet that keeps Kingdom Rush fun. They crafted each level to be a new challenge to the player. Almost every level, the player is introduced a new tower, enemy, mechanic, or some upgrade to their existing tools (towers + spells) that creates a new nuts strategy. In Poker, the nut hand is the strongest possible hand in any given situation; having ‘the nuts’ means having the nut hand. In Kingdom Rush, because new pieces of the game are always being introduced, the nuts change too.

Basically, a big part of the Kingdom Rush game loop is that the player has to reconsider his strategy every level. Maybe he’ll start with what worked last game, but there’s a good chance that that will fail or barely pass. Kingdom Rush brought many new strategy elements to Tower Defense packaged in one game – and they balanced their effectiveness (strengths & weaknesses), and how often they are introduced to the player.

The lesson of this tenet is the classic “keep your players challenged”. However, game developers must consider what tools are available to them to adjust the difficulty. I’m sure many of you remember having played, or even created a game, where the difficulties were just enemy difficulties scaled up or down! Easy was enemy health at 50%, and hardest was enemy health at 200%. I always hated difficulty mechanics like that. Kingdom Rush kept the player challenged by always introducing new elements to consider when forming their strategy; they layered strategy elements!

#2 Obsess over the little things

This tenet requires a fair bit of patience, but the player is really going to see it in the small interactions the player has with your game. Some environment in the game is interactive, units and towers say unique one-liners, all the transitions and pop-ups are perfect… You see where I’m going. Having an extreme attention to details should be noticed by the player as an absence of criticisms, and an “ooh!” or “cool!” in some cases, like with clicking on the environment. The “ooh!” moments are special moments between the player and the game; it’s like they’re having a little bonding time together. Let your players have many moments like that while playing your game and you will have a true fan, because they found unexpected bits of fun from your game, and they will remember that for a long time.

#3 Eye and ear candy

Your game has to look good and sound good… well usually. If the game is fun you don’t need anything else… but you probably won’t win any awards like that unless you’re still trying to write a Telnet MUD. If your game has everything else going for it, having great visuals and sound is what’s going to send it over the edge.

Let’s talk about voice overs. Something specifically pointed out in interviews and reviews are how great Kingdom Rush’s one line voice overs are. It’s something so simple, yet so well done, that they alone give a lot of character to the game. It’s just one more thing that makes players feel more attached to the game. To bring the point home, think about how famous some games, even decades past when they were released.
“Work work, something need doing?”
“My life for aiur!”
“Choppa” “Wololololoh”
or even League of Legends, where all of their champions have a variety of quotes. “Skar skar… Skarner!”

These voice overs took very little work compared to the rest of the 6 months the team worked on the game, yet it’s a polish item that is specifically mentioned in articles about the game. Polish matters! When polishing your game, consider what work will have the most impact to the quality and success of your game.

#4 Keep iterating!

Ironhide had 3 test runs during their 6 months of development. Their first test run came a few months into development, the alpha to 20 testers soon after that, and then for months… nothing! They had an echo chamber for a while. After getting sponsored, they had their publisher, ArmorGames, release it to a small portion of their playerbase as an open beta. For a week, Ironhide collected tons of metrics from each play session. At the end of their open beta, they had data points from over ten thousand players, which they used to tweak everything in the game. They spent an entire month tweaking and polishing!


Additional resources:

Flash Gaming Summit 2012 talk – Kingdom Rush behind the scenes


Polygon Interview

Ray Wenderlich Interview

Brooks Weaver Interview

Monetization Analysis

Deconstruction of Kingdom Rush’s mobile monetization

Kingdom Rush Reviews

Touch Arcade review of Kingdom Rush Origins

IGN review of Kingdom Rush


You can get Kingdom Rush Frontiers for free from IGN. It may only be available until the end of June.

Read More

/r/GameDev 6/18 Roundup – 2015


Coolest: How to make promo magnets for your game

Most technical: A gentle introduction to shaders in Unity3D – Part 2: Surface shaders
See the discussion on Reddit

Awesome AI writeup: AI Reconstruction – Hotline Miami
See the discussion on Reddit


Professional game metrics analyst AMA

Questions about legal side of gaming industry AMA


Why “Louie Cooks” failed Kickstarter

Cosmic Badger + promo codes

“What’s so bad about violence in games?” from the makers of Hatred, Postal & Sniper Elite

Game Developer Events

University of Washington is hosting a Gaming Career Fair tentatively set on November 13th.

A Game By Its Cover 2015 – “No rules”. Starts 6/19

Sht Jam 2015 – Maximize fun while minimizing aesthetics

Game Design & Art

What was lost in the transition from table-top games to video games?

Techniques to make an isometric game immersive?

A discussion about free resources & courses to learn 3D modeling

Video talking about Portal 2’s Storytelling

How to make promo magnets for your game – This one is cool!

How Zelda gets lock and key puzzles right
See the discussion on Reddit


A gentle introduction to shaders in Unity3D – Part 2: Surface shaders
See the discussion on Reddit

AI Reconstruction – Hotline Miami – Cool!
See the discussion on Reddit

How to implement “ticks” in a Node.js server? – OP is writing an MMO and wants to send commands to NPCs at regular intervals.

Tools you could not live without – People are sharing game development tools that they couldn’t live without.

Resource decay simulation? – OP is prototyping a management strategy game. E.g. food rots over time, but a percentage removed each time may not be a good enough simulation.


9 innovation secrets of successful teams in video games – The click bait is strong with this one!But it has some decent content; it’s worth a skim.

Should you make a company before releasing your first mobile game?

First game was successful, but we hate marketing. Do we want a publisher? – Basically wondering if a publisher is it worth it for them when they’re already doing well.

How do I make money with mobile apps? – A fundamental question for developers! This thread is a good starting place for budding developers. There’s also some discussion around the most effective ways to make money on mobile today. [TODO: TL;DR this thread.]

Read More

What’s new in SpriteKit from Apple’s WWDC 2015

Watched “What’s New in SpriteKit” so you don’t have to.

Things to look into more:

  • Viewport.
  • New SKActions.
  • SKReferenceNode.
  • Named SKActions.
  • SpriteKit being moved directly onto Metal.
  • Swift changes.
  • GameplayKit
  • Pathfinding
  • New texture atlas tools

Additional Framework Features


Which portion of your scene is visible in a spritekit view in any time. Before you would have to realign all geometry to move viewport. Now you can just move the viewport.
SKCameraNode has been introduced. Specify which portion of your view is visible. Static elements can be moved with the camera.
It is a node, so you can run actions on it, apply contraints, align it with game entities, make it always keep a certain distance from entities, you have access to rotation and scale.

SKAudioNode – Positional audio.

Set sound asset via filename or URL,
and they will use the audio node’s position along with the listener point you set
you can directly access the underlying AVAudioNode

References and Instancing

  • Serialized data files. Any changes to source will automatically be reflected in the game.
  • SKReferenceNode
  • Named SKActions
  • Added selector called actionNamed
  • Pass in name of action you want, Apple will automatically find the action in your serialized files in bundle.
  • Guaranteed that same action will never be loaded from disk twice in your game.
  • An additional selector to override the duration of the action.

New SKActions

  • Play
  • Pause
  • changePlaybackRateTo: duration:
  • changeVolumeTo: duration:
  • animateWithNormalTextures:
  • This can be used alongside the normal animation, works with lighting, which didn’t work before.

System Integration


  • SpriteKit is being moved directly onto Metal.
  • Metal backed by default on any device that supports it, OpenGL as backup.
  • Lower CPU usage, better draw call perf, better battery life.
  • No actions required by dev, all apps updated automatically. No recompile, no submit necessary.
  • Custom shaders are automatically updated too.


  • Nullability qualifiers
  • Objective-C generics on any array types (parameters or return types)
  • Enhanced type safety in Swift or Objective-C


Read More

Tips and Reflection on Showing Your iOS Game at a Game Developer Meetup

Tonight, I showed a week old iOS game in front of a live audience of maybe 15-25 people in Seattle. It was nerve-wracking to say the least! I got to the Game Development Night Meetup almost an hour after the doors opened because I was doing last minute adjustments to the demo, and there was unusually bad Seattle traffic. I didn’t know what the demo format would be ahead of time, so I planned on having 2-5 minutes of time.

In Frog King, the core gameplay is “eat bugs with your tongue”, and that’s what we’ve had as our first focus for development. From that core idea, we’ve expanded our game concept to have a skill tree, wheel of fortune, Mario-style worlds and levels, and more interesting game mechanics like burping out poison.

The plan for the demo was:

Open the game (show splash and title screen).
Introduce the context and fundamental ideas of the game -> you’re a king turned into a frog by an evil wizard. Eat these bugs to save your kingdom. Yeah, it’s a work in progress.
Get into the demo level.
Show the four different enemies we have which are: normal, bug that hurts you when you eat it, bug that takes two hits to kill, bug that poisons you.
Show the idea of getting poisoned and burping the poison out.
Show a win popup/animation/celebration.

Three things that would have made the demo better would have been to:

1.) We had all four enemies buzzing around the screen at once. It’s a lot of new characters for the audience to take in at once. It would have been better to be able to introduce the enemies one at a time. The audience would be given time to understand each one and how it is different than the rest. When all four are presented at once, people seem to just give up. They’ll say “that looks cool!” but maybe not be able to understand how they are all different.

2.) I pointed out each of the enemies and what their characteristic is like “this one takes two hits” or “this one just hurts you when you eat it”. The problem is that I said “this” and used the laptop’s cursor to point out which one I mean. I should have said “the bug with a green poison cloud around it gives you poison. The purple bug that looks like a moth takes half a heart from you. The fly fairy wearing pink clothes is normal and the safest to eat. The green dragon goat fly takes two tongue hits to kill.”

3.) I didn’t explain the burping mechanics very well. I poisoned myself then explained what was happening. It would have been better to say “when you eat the green bug with a poison cloud around it, you become poisoned for a few seconds. Poison will take away health every couple seconds, but you can tap the frog fast to burp it out before it can do its full damage.”

I played the game on the iOS simulator, but being able to connect the iPhone directly to the projector would have been better. I didn’t have the dongle for it. It would have been easier to actually play the game, since I tried playing it looking up at a big screen with the track pad.


// TODO: Edit and add pictures.

Read More

The Big List of Indie Mobile Game Sales and Postmortems

Sales figures and postmortems from indie game developers helps ground me in the reality of the iOS market. Clash of Clans might have made $1.5 billion, but how much can the average joe expect to make from his game? My hypothesis is that releasing a game to the market yourself will give you some idea of what to expect for your next game. If you haven’t released anything though, then seeing how others have done is the next best thing. You should use your own experience and others’ to create your hypothesis for your next game’s potential returns.


TechCrunch 2010 survey of 124 developers. Each listed game has total sales, days in market, and app price. All are paid. They say to “expect a 2-20X sales spike following being featured.”

Pocket God by Bolt Creative launched in 2009
Earned $18,000 a day at one point.

Rapture World Conquest by Tundra Games
Revenue from downloads: $22,175.71
Revenue from IAPs: $1,389.38
Development Costs: $4,406.78

NimbleBit data from 2009 on 5 games
Hanoi Plus earned $13,500, took 3 weeks to develop
Scoops earned $140,000 in 8 months, took 1 month to develop
Textropolis earned $18,500 in 4.5 month, took 1 month to develop
Kyper earned $880 in 2 months, took 1 month to develop
Sky Burger earned $17,000, took 2 months to develop
(NimbleBit unfortunately took down the article).

Great Little War Game launched in 2011.
Earned $150,000

Flower Garden by Noel Llopis launched in 2009.
Earned $21,546 five years ago when it launched.

Dapple by Streaming Colour Studios launched in 2009.
Earned $535.19 after 3 months.

Three games by Jazzy Chad
Tetra earned $261.23
WordGrid earned $180.74
Letters earned $56.89

Other Apps:

Unread is an RSS reader produced by Jared Sinclair – first released in 2014.
Earned $42,000

Photo 365 is a photo app released 3+ years ago by Benny Hsu.
Earned $21,000 in its first 19 days – $30,000 in its first 30 (listed in site’s about page).

TrackMyDrive is a finance app by Steven Books that recently hit #20 top grossing for the finance category.
Earned $20


// TODO: Add how many total ratings were left for all versions of each game and the game’s current rating.


Update #1, 6/15/2015: Added Rapture World Conquest by Tundra Games.

Read More