BADLAND – a cocos2d-iphone game

BADLAND launched April 4th, 2013 on App Store for iPad, iPhone & iPod touch. Since then it has sold more than 100 000 copies. Try it out (iTunes link) or check out the launch trailer below so you get a better picture of what kind of game I am going to talk about. BADLAND was our two-man indie company’s, called Frogmind, first iOS game and it uses the latest development version of cocos2d-iphone 2.1 along with lots of other open source libraries.

Why cocos2d?

First of all we wanted to develop the game with the minimal possible team as possible. In our indie studio we have only me, Johannes Vuorinen, as the programmer, and Juhana Myllys as the artist. Audio is something neither of us do well enough, so we subcontracted a very talented audio guy, Joonas Turner, to do the audio side. So with this small team it was clear to us that we want to focus on developing the game itself and not implementing engines and tools of our own.

So, we decided to look for an engine with good support for tools. BADLAND is a 2D game so a 3D engine with 3D physics (e.g., Unity3D) felt a little bit overkill. Also, I prefer engines with full source code access so that I really know what’s going on under the hood, and maybe change something if there’s something I do not like. And of course, most importantly, we wanted the engine to be still in development with an active community. With all these requirements, cocos2d was an excellent choice.


The other awesome engines, libraries and tools

It’s not just cocos2d that makes BADLAND tick. Box2D as the physics engine is equally important. In fact, Box2D is so amazing that we were able to implement everything we wanted to the game without changing a single line of code in its source code. For example, the ability to set continuos collision detection enabled for individual bodies was a really important feature to us because we have some thin obstacles and fast moving objects in the game.

For the audio we chose FMOD with FMOD Designer. I can highly recommend FMOD as well. We were able to develop very dynamic soundscape without touching the game’s source code that much as the FMOD Designer does lots of stuff for you. Use of FMOD is not completely free but it’s very inexpensive for indie developers.

As offline tools we used the fantastic tools by Andreas Loew: TexturePacker and PhysicsEditor. I can highly recommend both of them and they work easily with cocos2d and Box2D. With the TexturePacker we were able to highly optimize the game performance and memory consumption, and with PhysicsEditor we were easily able to define physics shapes.

In addition to these, we used GlyphDesigner to rapidly create the game’s font atlas, and ParticleDesigner to create particle effects. Both of them work out of the box with cocos2d. ParticleDesigner was not as perfect as the other tools mentioned and I have lots of improvement ideas to it but it did its job.

Finally we used CocosBuilder to create 80% the menus. It was easy and efficient. The only thing that I really missed using this tool was the lack of ability to use ready-made spritesheets to reduce draw calls when rendering the CocosBuilder nodes.

BADLAND of course also use lots of additional open source libraries that do not play as big role as the ones mentioned. However, this should give the general idea that we used a LOT of ready-made engines, libraries and tools to develop BADLAND. I would say the 95% of the time we were able to concentrate on just developing the actual game itself.



All in all, I can highly recommend using cocos2d for any 2D game. It was easy to learn, use and modify. Without the engine and the awesome community, BADLAND would not have seen daylight this early. And with the cocos2d-x, we have the possibility to bring the game to other platforms too in the future. Thank you for the awesome engine and all the support!

We are continuing developing BADLAND further with updates so if you want to stay in the loop, you can follow us:
Facebook –
Twitter –
Blog –
iTunes link –

If you have any questions, please ask for example in the comments or by twitter @johannesvuorine

This entry was posted in cocos2d. Bookmark the permalink.

33 Responses to "BADLAND – a cocos2d-iphone game"

Leave a reply

× 9 = nine