The Blockheads is an exploration/mining/crafting massive world sandbox game released for iOS in January 2013 and only just launched for Android. To date it has had over 7 million downloads on iOS, and has a passionate and growing fan-base, rarely dipping below 100,000 daily active users since its launch 9 months ago. The Blockheads was entirely made by one guy - me, over the course of about a year, and since version 1.0 I've released 4 major updates. It's an ever-evolving game, and the potential additions are limitless.
Perhaps in part due to this constant evolution, I haven't felt I could write a postmortem until now. It still feels a long way from "complete", but I think now with the release of the 1.4 update it finally no longer feels "incomplete". So it's time to share some of the story of its development, and where I feel I went right and wrong with The Blockheads.
What Went Right
1. The Right Game
The Blockheads evolved very much organically from a number of fairly vague ideas. The procedurally generated 2D tile based world was locked in near the very beginning, and the controllable characters came in quite soon after. During the early stages of development I was playing and greatly enjoying Minecraft and it had an obvious influence. But I found that I also wanted to play something else sort of like Minecraft, but also quite different. Something made more for mobile, designed for the touch screen that I could pick up and play for a short time, but also enjoy for longer periods.
I'm also a huge fan of games like Civilization, The Sims, Starcraft, and other world builders like Sim CIty and Pharaoh. I decided to draw direction and influence from all of them, and base this game on my favorite games to play. So one aspect of the development of The Blockheads that went very right is how from day one it was not only the game I wanted to make, but the game I wanted to play.
The only other major games I have made are the side scrolling helicopter games Chopper and Chopper 2. The thing with Chopper is that I don't actually enjoy playing side scrollers or action games! Sounds a bit crazy, but it was basically on a whim that I made the first Chopper, and from there it just kept making sense to add more to it and keep on creating new versions. So though I did enjoy much of the development process making Chopper and Chopper 2, there were times especially during the 16 month development of Chopper 2 where I faced major motivation issues.
This simply didn't happen with The Blockheads, and still hasn't happened even when working on updates now. I just love the game, and that has made working on it a huge amount easier and more enjoyable. I must have play tested for hundreds of hours by this point, but still every time I add a new ore, item or NPC, I just can't wait to sit down and play the game through to find and play with every new addition.
Of all the things that went right, making a game I wanted to play really is the major one, and I only wish I'd done it earlier.
Early prototype screenshot experimenting with world generation and fluid dynamics driven weather.
2. Release Timing
When I started work on The Blockheads I planned to spend just a few months getting something only barely working, so I could get it out ASAP and start getting feedback. As it turned out, 6 months in I didn't have something I'd be proud to release, and even as I approached a year I could have gone on for some time longer.
But at about the year mark I decided I just had to get it out. I pulled a few key features out of the initial release list, and there was also a fair bit more content that was slowly removed from the list in those final months. It's always hard knowing where to draw the line and call it 1.0. If I'd released earlier I might have picked up more fundamental issues earlier, before they were too late to change, and if I'd released later I might have had more content and polish at launch, made a bigger bang and held players' interest for longer.
But overall the timing felt right. It was a nice compromise offering plenty of things to do, but still allowing me plenty of room to change future direction. Besides all those logical reasons, after working pretty much in isolation on this one thing for a year it really starts to get hard to contain. And I think it worked out great.
Very early development screenshot
I'm not the best programmer in the world, and networking code isn't the easiest. But somehow I managed to pull it off, and it was worth it. A couple of things did go wrong however.
I wanted a way for people to easily open up their world for other players to join. Initially Game Center looked like it was a great option for this, given it supported up to 4 players, and had auto match and invite functionality. But it turned out to have a large number of restrictions and problems that wouldn't allow for a nice user experience. An example of one such problem was that if one player was disconnected they couldn't simply reconnect without the host restarting the game and inviting all the players again individually.
So I made the decision to go with only 2 player multiplayer and no automatch at launch. This was OK, I saw that about 8% of all games were multiplayer, and some people had a lot of fun playing together. But it wasn't enough. So in 1.3 I added server based multiplayer. Since then around 30% of all games are multiplayer. Players have set up their own servers with many people playing and working together to build huge structures and even towns and cities. One thing I really love to see is when families are playing together. And there is now BlockServer.net - a third party service that offers world hosting for a small fee. It's pretty awesome watching this become something bigger than what I initially created.
There is a huge amount of potential in multiplayer for anything from PvP battles to co-operative building, to trade and even employment, and I'm really keen to keep exploring the possibilities there. It was a lot of work to implement multiplayer, and continues to lengthen development time when working on new content, but it just adds so much more to the game.
A render of a small section of a typical world
Free-to-play is a rather controversial thing in general, some people hate it, and there are definitely a few negatives. But overall I think it was a win for me.
The way that F2P works in The Blockheads is similar to most other F2P games, in that players can purchase packs of crystals which serve as a game currency. These crystals can then be used for many things, from purchasing advanced items to warping in new blockheads to skipping sleep or crafting and even for teleportation. You don't have to buy crystals however, you can actually find and mine them in the world, and some of the more advanced pick axes allow you to get a fairly significant amount just from mining alone. So there isn't any actual need to spend any money in order to access everything in the game.
I also offer a once off $2.99 'Double-time' purchase that permanently halves the time it takes to craft everything, and I've got a couple of very popular free offers for crystals also. Interestingly players were actually asking me to add a service where they could watch videos and get free crystals. So I added incentivized video ads using Vungle, and have found it contributes a nice amount of extra revenue (10-20%), and the players who use it love it.
Overall I've seen almost zero negative backlash about The Blockheads being F2P. There have been a handful of negative comments from the haters as expected, but these really are pretty insignificant when viewed next to the chorus of positive feedback. I do think I achieved a friendly kind of "non-evil" F2P, which was important to me.
Unfortunately, this also means that In App Purchase revenue isn't particularly high. From what I've seen, The Blockheads makes roughly 10% the IAP revenue per user compared to games which monetize well. This isn't fantastic, but I don't mind too much. I'd still rather have lots of happy players, and there are still ads to fall back on, which at times account for up to 70% of the overall revenue. Also the game has such a large number of players that it's more than paying its way overall. I'll be able to keep adding to The Blockheads for some time, and it will even fund the next game too, when I eventually start work on that.
But the real benefit to F2P for me has been the sheer number of players. I'm not hugely motivated by money, so though it may (or may not) have made more as a paid game, it certainly wouldn't have had nearly the number of players, and that's a big win from my point of view. I sometimes like to try to visualize the number of people who have downloaded the game, or the number of people who played it yesterday. It's an awesome feeling, knowing you've created something that has touched the lives of so many.
The Blockheads reached the #1 spot on iPad, #2 on iPhone, with over 600,000 total downloads on its biggest day.
5. The Forums
I wasn't too sure initially if I would make official forums or not. I knew they could be a huge support headache, or a wasteland of un-answered questions, or even just an empty testament to a failed game! But I spent a week or so getting them set up before the release, and I'm glad I did.
These days at any one time there are usually a hundred or so people browsing theblockheads.net forums. They're a huge resource for players, often just googling for answers to questions about the game, or solutions to problems. But they've also created a fantastic and ever evolving community. People share their stories and pictures and help each other out.
It's also a fantastic resource for me. I get a good feel for what players want in the game or where they are getting stuck, and know very quickly if I've introduced any new bugs. I've also found some really great beta testers through the forums.
The forums experience could be better, I might try to integrate the forums directly into the game, or provide a forums app to try to make them a bit more accessible. Also they do require some maintenance, they were hacked recently which was a bit of a stressful time, and I've got someone working part time as a moderator keeping an eye on things which is an expense, but it's all more than worth it.
Constructed out of many individual screenshots, this impressive image was posted to the forums by forum member Raptorox
What Went Wrong
1. The Art
Minecraft did influence the art in The Blockheads. I didn't directly copy it, and in fact I resisted the urge to ever look at Minecraft's art directly for inspiration, always coming up with my own idea of how things should look. However what I did take from Minecraft was the rather specific solution of real-life inspired low resolution pixel art on cubes.
There were a number of very valid reasons for choosing this style. My own art style has always tended towards realism - I painted realistic landscape paintings in my brief career as an artist before I learned to program - and I've never been any good with cartoons or illustration. So realism was always a given. But the low resolution pixel art was a practical consideration. I had a good idea just how much time it could take to hand paint all of the required textures at high resolution, so pixel art made that process much much faster and allowed for much more content than I could have otherwise created. The same goes for the cubes, it's just such a simple and fast solution with good looking results.
The problem is that in the end it did look too much like Minecraft. There was some resistance from Minecraft fans as a result, and I was actually never particularly happy with how it ended up looking in general. I suspect that the art may even turn some potential players away.
It did make the art creation process much faster, I have no doubt of that. But in hindsight I should have taken the time to give HD art a go at the start, probably a bunch more experimental drawings before I even started coding would have done the trick.
In the latest update I'm working towards fixing it, with an HD texture pack available for purchase (and indeed it does take a long time to hand paint that number of HD textures!). Depending on how this is received it may one day become the default, as it probably should have been. The game really does look so much better this way.
HD Textures in 1.4
2. Custom Engine Problems
The first programming language I learnt was Objective C, and it's always been my favorite. I also tend to get frustrated when I don't know exactly what is going on, so I like to stay fairly low level. So The Blockheads is a mixture of Objective C, C and C++ with my own code for pretty much everything, built on top of UIKit and OpenGL.
This does work relatively well for me, but it causes one major problem, and that is porting to other platforms. A Mac port would be quite easy, and I'll probably do that at some point. But Android has been very difficult, and in fact I couldn't do it myself and Noodlecake have come to the rescue using their toolchain and expertise. It still took about 9 months to do though, and I'd love to have a PC port, but who knows how long that would take or if enough people would play for it be worth the effort.
I also find more and more that I'm spending a decent chunk of development time re-inventing the wheel. At the end I do have a very nice custom wheel designed to do exactly what it needs to and very little else, but I think that for the next game I'll be giving Unity a go. The promise of more rapid development and effortless cross platform is getting too appealing to ignore.
3 World Corruption
In the first few releases I had quite a number of bugs that could cause players to lose some or all of their world save data. This is pretty horrific for players, as you can imagine. With many hours going into building, collecting and exploring, losing that progress could easily be enough to turn even the biggest fan away for good.
Unfortunately I still haven't stamped them all out. Where maybe 1 in 100 players might have experienced major world corruption in 1.0, it's probably more like 1 in 10000 now. But it still happens and it's still just as terrible when it does.
In a nutshell the problem is that I had to make the game auto-save constantly to ensure the player didn't lose too much play state in the event of a crash or if the OS killed the app. This actually works great, but it's the cause of most of my corruption problems. I can't simply save everything on the main thread, as this would cause nasty pauses in gameplay, so I have to do it on other threads. And trying to get all the changed state from everywhere to match up perfectly at a single point in time on the main thread, then copy it over to other threads to be compressed and written to disk asynchronously has been a bit of a nightmare.
It's hard for me to know exactly what I should have done to prevent this problem. I think one thing might have been to use a proper database instead of flat files. This by no means would have prevented all causes of corruption, but it seems like it would have been a better starting point. I probably should have designed the saving system a lot better to start with too, with a more generic safer API to ensure all save state is valid and good before moving it to its final destination.
Overall it sort of seems like it's just a difficult problem and the reality is that I didn't have the expertise to deal with it in a great way. At this point I'm not sure I'll ever get rid of all the causes of world corruption. But I do plan to at least add some automated backup system in a future update so that people can recover their worlds if something does go wrong.
One example of world corruption, where the light maps for torches are not saved in sync with the world, so can be subtracted or added twice.
4 Craft Times
Though I have chalked up F2P as a success, there is one aspect to it that I think went wrong, and that's the craft times. The craft times are actually very short for a F2P game. Where many games make you wait hours or even days for things to happen, in The Blockheads you only have to wait a few seconds, or at most a few minutes.
But I've seen complaints that the craft times are too long, and this does make sense. I don't really like games that make you stop playing unless you pay, and that's something I successfully avoided in The Blockheads. But the result is that you kind of have to keep playing unless you pay. It traps players into waiting and staring at a progress bar. In the first release this was all you could do, but in an update I at least made it so that time continues on in the background when you exit the app.
But I still think I got it wrong. When I came up with this plan I thought it was a good compromise where I might still make some revenue without making players stop playing. But instead it sort of ended up being the worst of both worlds where I make considerably less revenue and it's still a bit annoying to players.
There is also a good reason to have longer crafting times. If you have two or more blockheads it can be hard to keep them occupied, and a long crafting queue can actually be a relief from that pressure.
So there is this conflict of game design that I never really resolved. On the one hand I want to shorten crafting times for players who have one blockhead, on the other I want to increase them for