Dungeon Keeper Mobile – Playing Not Paying-to-win

Albeit a little late to the party, I recently discovered that Dungeon Keeper is now on Android/iOS mobile devices. Having played the original game in my youth I was very excited to see it available for my Android tablet.

At first the gameplay was excellent, rapidly digging and building new rooms, summoning minions and raiding fellow Keeper’s dungeons in quick succession. Then the green gems ran out and the game ground to a screeching halt!

The rooms and traps take time to build. This time starts at a few seconds or minutes for the earlier rooms and levels, but rapidly grows to hours and even days as the game progresses. This building (and summoning of minions) can be “rushed” by spending green gems. Something that the game teaches and encourages through the tutorials, but they aren’t rapidly replenished through gameplay. Instead they are to be bought using real-world currency at what seems to be an exchange rate that is drastically lacking in value for money. Therefore, the long build times, as you become invested in the game, are designed to deliberately frustrate the player to the point of either giving up, or giving in to buying green gems.

After taking some time to think things through I determined some key points. First and foremost, this is not a remake of the original Dungeon Keeper game. That is an important point. The gameplay you may well remember from your younger days does not apply here. Although the themes are very much the same. I believe it is possible to play this game for free, and to gain enjoyment from it, in spite of the long time delays, but it requires and teaches three important skills: patience, time management, and effective delegation.

I therefore started the game again (using a different google account as you can’t restart the game on the same account!?) and applied the following rules to my gameplay:

  1. Do NOT buy green gems.
  2. Do NOT spend green gems on ANYTHING apart from IMPS.

Imps are the best way to increase productivity in building and upgrading, but after the first two are bought they become very expensive and added to this they can only be bought with green gems.

Imp Purchase Screen

There ain’t no such thing as a free imp (TANSTAAFL). You need to buy gems to get the “free” imp and once you go down that route, you’re paying to win.

So starting the game with 550 green gems, you can rapidly increase this to 700+ through the first stages of dungeon building and upgrading, plus 10 per day from raiding other dungeons. Revenge matches (that you can win) gain green gems for each star too. Just remember to fight the urge to spend them “rushing” jobs.

Dungeon Overview

Effective delegation means you’e not playing this in one sitting; you’re in it for the long game. During a continuous playtime, you can have your imps working on shorter jobs (5mins to 20mins) whilst you raid some other dungeons. When you know you’ll be away from the game for a while, then set them to work on the longer duration upgrades and room building.

When you’ve finished a raid do NOT hit the resupply button. Return to the dungeon and summon more minions there. As you upgrade your dungeon heart you can summon more in parallel. Also, try and make use of skeletons and trolls more than the other units. They are cheaper in gold and also take less time to be summoned between raids. In those earlier stages you can raid a dungeon with 4 skeletons and 2 trolls (trolls are better at tackling the workshop and resident defending troll).

Sometimes you just need gold. Make sure you always have some in the bank from your own mine before raiding. Then skip through the possible dungeons until you find one that you can easily reach the treasury with a few skeletons. Take the gold then end the raid early. Return to your dungeon, summon a few more skeletons, and repeat. It’s a lot easier and quicker building up your gold (and stone) supply this way than waiting for your own mine to produce it.

Update: 2015-01-02 18:15

Well I made it to 800 gems so went about getting that third imp.

Buying an Imp

I was dreading to think how many green gems the fourth imp will cost, and how long that will take to build up through gameplay. A bargain at only 1200 gems or (at 500 gems for £2.99 that’s about £7.18 for the fourth imp for those who are paying-to-win).

The fourth imp price

Still a relatively simple dungeon layout at this point.

Dungeon Overview - The Third Imp

How long to raise 1200 gems through gameplay alone? Time will tell.

Android Game Development with libGDX

I had initially started development using Android and OpenGL ES using straightforward Java. But quickly ran into responsiveness issues due to naive use of Collections and the automatic garbage collector. After reading around the subject I stumbled onto libGDX (as mentioned in the previous post) and decided to start afresh. The library as a whole I found to be very straightforward to use. Great tools for setting up the initial projects. Excellent and expansive documentation for the API and cookbooks for actually making use of the library in your own application.

The result is a 2D game inspired by the arcade games played in my youth – The likes of Space Invaders, Silkworm and Missile Command to name a few.

PlanetKillers In-Game A

PlanetKillers In-Game Screenshot


The general concept is a sort of steampunk or more Wellsian-era battle of primitive weaponry versus vastly superior technology. “Bows and arrows against the lightning!”. You are in control of a train (Class A4 inspired) racing across the country whilst using the artillery cannon to shoot the aliens before they bomb you or make it to the other side of the screen.


All of the graphics and sprites were drawn using InkScape – a free vector graphics package. Although they were loaded into the game as PNGs (with alpha). This gives some future proofing for devices with much greater resolution screens. Ideally there would be a nice way to render SVG images directly in-game.


The libGDX setup tools produce everything you need to get started provided you have already installed the Eclipse IDE (with the ADT plugins and Android SDKs). The tutorials again are top-notch. The game can be executed as a desktop application, an Android application, a browser application or if you have suitable tools as an iOS application.

The resultant game is quite snappy, although there are still areas that can be better optimised (to make better use of the libGDX library) and optimise the graphics to be device resolution-specific.

The AI might also be a little too hard too soon for some lesser-skilled players. See how you get on.

Android app on Google Play

Android Game Development

I have been wanting to get back into developing simple arcade games for the last few years. With modern mobile devices packing some serious processing power it seemed like a good time to start again. Back then it was all C++ and desktop Windows PCs using OpenGL or DirectX (or even better Irrlicht). Now, I wanted to focus on Android devices so Java and OpenGL ES were the obvious choice. To get my head back in the game (so to speak) I knocked up a simple invaders clone. The aim being to familiarise myself with OpenGL, user input options, and the performance capabilities of the devices.

I was using OpenGL ES 1.1 (fixed pipeline) and producing the meshes in code.

CubeIcosahedronSphere Approximation

Cube, Icosahedron, and sphere approximation. The Sphere is approximated by subdividing the faces of an Icosahedron and pushing out the new vertices to lie on the sphere surface. From these basic meshes we can construct some simple game objects.

Alien ShipArtillery

The scene graph makes use of transform matrices to position, scale and rotate the meshes relative to the parent node.


Each game object has a global transform applied to it, and this also applies to the bounding sphere which is used for collision detection.


The user is able to move the artillery and fire on the alien ships. When a collision is detected the ship and shell are destroyed and removed from the field of play.

This is a relatively simple scenario, and the processing capability of the mobile device should be more than sufficient to handle it. However, I noticed some slow down in the frame rate when firing (and running collision detection). The slowdown wasn’t in the physics, or the collision algorithms, but actually in the Garbage Collector being called when Collections were being modified. In the past when I’d used C++ this wasn’t an issue, memory management is handled by the user. But with Java, the Garbage Collector is an automatic process. On searching for more information about this I stumbled on this presentation by Kactus Games that gave some great insights into Android Game Development.

On further research I stumbled on an excellent framework that takes the limitations of Java into account to allow developers to create games that will run not only on Android devices, but also on the desktop, in HTML5 browsers, and on iOS devices. LibGDX is definitely worth a look. The documentation, tutorials and example code are extensive and comprehensive. I’m now going back to the start to build a quick test game using this framework prior to experimenting with some novel ideas I have for a new game.