Titan Attacks mobile – launched in the Humble Bundle!

March 25th, 2015

We are proud to announce that our Android port of Titan Attacks has debuted in the Humble PC & Android Bundle 12!

As of writing the bundle is at 62,580 sales and $328,000. We’re hoping it’ll reach at least $500K by the end of the bundle in 6 days’ time.

The port was actually finished in August 2014, but because we agreed to debut in a Humble PC/Android bundle, we haven’t put the game on Google Play yet. We just missed our chance to get in the PC/Android bundle 11 in Sept 2014, which resulted in a 7 month wait until this one came around.

Developer Diary

The last developer diary I did for the port was in December 2013. Back then I had just finished porting the 5th and final world, Titan, including all the enemies.


However, there was still a *lot* to do to make it shippable. Here’s the full list of stuff I did since then:

- Parachute added after some critical hits.


- Boss looping sounds added.
- Animation offset command for moon and titan boss eyes.
- Made Animation scale command work (for player bullets as they appear).
- Tank now fires 9 different powers of bullets.
- Made supergun work. It’s cool.
- Made player and enemy bullets use correct radius if they are exploding e.g. for rockets and mines.
- Loaded in player tank graphic, glow, turret and shadow from xml file.
- Player flashes white during immune period at start of level
- Screen strobes red when player is hit
- 4x Add Ons coded and added to shop. Two bullets, an exploding rocket and a laser.


- Added explosion effect to enemy bombs and mines.
- Made it easier to pick up parachutes including when your tank has add ons.
- Tank invulnerability shield added
- Smartbomb coded and added to shop


- Saucer added
- Optimised iOS loading and memory use by only loading in images, anims, objects, levels for the current world.
- Make shop menu fit on screen in landscape mode
- Made teleporting enemies fade properly
- Added support for Offset Delta and Scale Delta animation commands.
- Powerups added (dropped by saucers)
- Made the HUD taller in portrait mode for longer devices and positioned the game screen accordingly.
- Made the game screen scale on landscape mode differently for phone/tablet.
- Added Smart Bomb button and positioned.
- Added in graphics for One Thumb slider mode and positioned/scaled appropriately for all devices.
- Added in graphics for Two Thumb slider mode and positioned appropriately for all devices.
- Added in proper shield bar graphics.
- Made sure that area behind HUD and controls are solid black so that aliens, smartbombs and bullets don’t draw there.
- Added HUD line in portrait mode and HUD gradient in landscape mode.
- Added new in-game Menu button.
- Added in cash, score and X (for multipler) label graphics and positioned in portrait and landscape mode.

(one thumb mode and new HUD)

- Added flashing red shield graphics for when shield is 0
- Added in basic background sides for landscape mode
- Fixed bug from original game where if multiple alien lasers hit tank at same time you would be instantly destroyed.
- Fixed bug from original game where Galaxian slaves (on Mars) were sometimes missing due to starting off screen.
- Finished About screen UI
- Finished Title screen UI in portrait and landscape (but not animated title image)
- Finished Loading screen UI including loading bar
- Finished in-game menu UI
- Finished options screen UI including sliders for sound/music and control method toggles.
- Made game save and restore sound/music volumes.
- Shop screen done in portrait and landscape. Everything works now including animated tank+blueprint in landscape mode.

(shop screen)

- Added Choose Control screen to appear on first play.
- Added authentic particle emitters for: enemy/boss ricochet, enemy/boss explosion including slave and chained emitters, turret smoke ‘n’ sparks
- Got it running on Android phone!
- Added shop music
- Saucer explosion + floating score.
- Made all relevant particles glow using additive blending.
- Challenge mode added.
- Added authentic particle emitters for player bullets and addons.
- Added player death explosion.
- Added authentic enemy critical hit particle emitter.
- Added authentic enemy bullet particle emitters including rocket trail.
- Added authentic alien laser emitter and centipede pod emitter.
- Added teleport emitter and created sound for it as original game had none.
- Added authentic emitters for parachute death and collection.
- Added authentic emitters for powerup pickup.

(particle effects)

- Missed powerups now have a different sound and a different emitter.
- Texture atlases are done!
- Added lerp to one thumb mode and sped up lerp in two thumb mode.
- Made it so you can slide anywhere on the screen in one thumb mode to move but bomb buttons still require a tap (and they have a smaller hitbox)
- Boosted radius of saucers so they are easier to hit.
- Added draw batching for glowing sprites to speed up rendering on phones.
- Layered all glowing sprites and emitter particles correctly.
- Optimised particle creation so the game should run faster on older phones.
- Make game support trimmed texture atlases to save memory on phones with small heap.
- Using original font for the floating scores and $ values.
- Fixed player bullets so that they disappear when off screen and not just before.
- Fixed enemy size so that firing when off screen calculation is more accurate.
- Added meteors.
- Prevented Quit from being used during the player death anim.
- Added enemy bullet shadow.
- Made sure background sides are drawn on top of all particles.
- Stopped smart bombs from showing at extreme edge of very wide screens.
- Added animated backgrounds to every level.
- Made a hard limit of 1000 particles and made sure it doesn’t crash.
- Animated title screen done!
- Added HSB color transition to smoke particles.
- Boosted Two Thumb Mode move button hitbox Y. So if your finger slips off it still works.
- Added flashing High Score to title screen.
- Music now changes every level.
- Made smartbomb sound louder.
- Converted all sounds and music to .ogg format.
- Android back button now works like Escape key on all screens and does a nice close of title screen.
- Boosted fire button hitbox to the side whenever possible (not in portrait on phones.)
- Moved controls up from bottom of screen a bit in portrait mode on >4:3 Android devices to avoid clashing with on-screen buttons that some androids have. Also same for landscape mode but only for two thumb controls on tablets as there’s no room to do this for one thumb controls or on phones.
- Added more steps to loadinging bar for sounds.
- Added sound triggers to stop multiple versions of common sounds playing in same frame.
- Tablet controls will now only be used on devices 8″ and larger. e.g. iPad size.
- Moved Slider control for Two Thumb mode in a bit from the side so that left can always be reached easily.
- Made player bullets disappear a bit sooner off screen so that firing feels faster to player.
- Made Moon boss a bit easier by allowing it to go higher up the screen.
- Made red text fade from yellow to red as per original game.
- Added an icon.

(Titan boss)

Hopefully you can get some sense of the work involved in finishing a game from that list. Don’t forget that I’d already done a ton of work before that final push. Also there was a lot of testing and tweaking the mobile controls during those final stages.

I’m very pleased with the result, and so is Puppy Games. It’s an authentic port in every detail and I also made sure that it runs on slower Android devices without much memory. As a result we haven’t had any major launch issues and have received some nice positive feedback too. YAY!

How to estimate how many sales a Steam game has made

March 12th, 2015

(click to enlarge)

I was having a discussion with Ryan Clark about using the number of reviews a game has on Steam to estimate its sales. He tells me the idea came from Mike Boxleiter.

Anyway, I recently got shown this article which lists the most popular Steam games of 2014 (Thanks Lars Doucet) and some other useful data like number of owners. So I thought I’d look up the review count of the top 50 games of 2014 and do an analysis to find out what the average amount of owners (sales) are per review using the data in that article.

Units sold and Revenue estimates

This means you can look up any game on Steam and multiply the review count by a magic number (or range) – see below – and estimate how many sales it has made. Then if you multiply by the price, you can work out the maximum gross revenue the game has made, although of course sales and bundles will greatly reduce this.


I’m not saying this is totally accurate or anything, but it’s interesting and fun if you are into this kind of stuff. Enjoy!

Some observations and the magic numbers

1) There are 22 F2P games in the top 50 (44%)

2) The date format is the stupid American format.

3) Average owners/review for all games is 148. However, it’s 201 for F2P games and 106 for paid games. An important difference.

4) For paid games (I’m not that interested in F2P games. sorry!), Football Manager and Dizzel were outliers with over 400 owners per review, so I removed them and got an average of 81. If I take out two more above 150, the average is more like 72.

5) The lowest average for paid games was 32. If I “eyeball” the graph of values (see image at top of post), I’d said the average looks more like 60-70 as that’s the longest flat area before it hikes up.

6) So to conclude I’d say you can use 30-100 as an approx guide. There won’t be any below 30, and there’s only a few over 100. Another way to look at it (based solely on this data) is to pick 70 as a kind of mid value and use 70/2 as the lower end and 70×1.5 as the upper end (=35 to 105). Someone who is better at stats will probably rip this apart, but you get the idea.

7) Average Players/Owners is 73% for all games (57% for F2P and 85% for paid … interesting) Lowest for paid was 40% and highest was 99%. If I take out two lowest paid outliers of 40% and 45% (next lowest is 69%) this gives an 89% average. I’m not sure if any of these games have been in bundles. If so I imagine that would drop this ratio right down.

Some things I have not taken into account:

1) Date released: Some games have been around longer to get more reviews. However, we know none of these games are more than 14.5 months old and they are all at least 2.5 months old. If I didn’t have to fix the dumb date format by hand in Excel (there’s probably a smart way), then maybe I could do more analysis.

2) I haven’t noted if they are indie games or AAA games.

3) I haven’t noted the genre the games.

4) Hours played (maybe people who play more vote more? Actually I checked this with a trendline and it’s true! So if you know a game is a short game, bank on a HIGH owners/reviews value, and if it’s a long game, go for a LOW owners/reviews value.)

5) I used Owners per review, *not* Players. However, the data clearly shows that the larger % of players to owners, the lower the sales per review, which makes sense because it means that more of the owners played it and decided to leave a review.

6) These games were super-popular. It’s possible that if you check less popular games their review counts change/become more unpredictable.

I hope you found this interesting, please let me know if you think I’ve screwed up anywhere.

Also if anyone wants to do the next 100, go ahead, I need to do some work now.

8 years of sales – Holiday Bonus revenue chart

February 5th, 2015

Holiday Bonus (for PC) first went on sale in December 2006 on several casual portals that sell download games, and it did OK but not as well as I had hoped

I brought out a Mac version in December 2008, but it wasn’t a big earner, although it continues to add to the bottom line.

A Second Launch!

However, later on I managed to revive its sales by doing the following:

1) After I shipped Spring Bonus in April 2011 I discovered several portals that didn’t take Holiday Bonus when it launched were happy to take it for Christmas 2012! Times change and the gatekeepers at portals change.

2) I made a localised version in multiple European languages and sent it to several distributors and it did quite well, especially taking into account the fact that it only took me 26 hours to do the work.

3) In 2012 I made an updated version called Holiday Bonus GOLD which had 55 more levels (double the original) and a few other tweaks. Some portals just took this as an update to the original (which probably boosted future sales due to having more levels), but other portals took it as a new game and re-promoted it, which was great. The GOLD version only took me a week (49 hours) and has proved to be very profitable.

I made it because some indie friends of mine were talking about DLC and casual download games don’t have DLC (the portals prefer to sell only whole games). So I thought that I could do something similar by adding more content, calling it GOLD, and getting it out there – and it worked!

4) Every year I remind the portals to promote it and put it on sale. Quite often they do but there’s more holiday-themed competition these days. In December 2014 one portal made a bundle of Christmas games and included Holiday Bonus GOLD, which was a nice surprise.

5) In December 2011 I launched a mobile version for iOS/Android that was coded by Damien Sturdy. It’s made about the same as the Mac version, which is OK, but it wasn’t a big earner. I also put out an XBox Live Indie Games version (and Windows Phone 7 version), coded by James Mintram. It was cool but made very little as XBLIG just wasn’t the right platform for it (the game was great, but players wanted zombie games and vibrating controller games).

6) I even did a small retail deal for a German version of Holiday Bonus GOLD in 2013.

Sales Chart

All of the above had a positive effect as you can see by the graph below. It was like having a second launch but twice as big as the first one! Note that the first year is only really one month (December), so this is 8 years and 1 month of sales.

(click image to enlarge it)

Some Numbers

Gross Revenue = $253,000 (this is approximate as I back calculate it based on my royalties received)
Net Revenue = $90,500
Hard costs = $4,100 (I couldn’t get away with a game this cheap these days. Some of this is rev share for ports.)
Profit = $86,400
Time to make/distribute = 464 hours (This is my time. I keep accurate logs)
Hourly Wage = $186
Launch month revenue as % of total = 3.4%
First 4 years = $29,458 net
Next 4 years = $60,976 net
Future = ? (but it’s all gravy now)

What did I learn?

This game was a passion project. I’d just shipped The Wonderful Wizard of Oz match 3, and I thought there was just enough time to re-use + enhance the engine and put out a Christmas game. So I worked very hard (so did the main artist) to get it done in a short period of time. I had fun making it, and now looking back, I’m very pleased with the result.

I’ve had similar good results with other quick games (my own IP) that I had fun making. Sometimes I think if you’ve got a good idea, you’ve just got to get on and make it quickly. Strike while your motivation is hot :-)

Important Takeaway: Your first year of sales may not be a true representation of lifetime sales. Games have a very long tail and many new opportunities present themselves over the years. Play the long game to win.

If you enjoyed this article, please share it. Thanks!