Andrzej Jóźwiak
"For every complex problem there is an answer that is clear, simple and wrong!"

July 31, 2014

Android Indie Game Development

So you want to create games? Android games to be precise? Your reason doesn’t matter! Maybe you like existing games? Maybe you have an incredible idea you need to show to the world? Or maybe you just want to try yourself out? What you need is a pinch of creativity and a bit of zeal and luck. Let’s explore the topic!

The term Indie was coined as a short from the word independent. Indie games are mostly written by a single person or small teams without any financial support from a publisher. Such independence allows for more creativity, as a designer you can commit to greater risks. There is no board of directors to accept your every change!

Due to limited resources such games often emphasize innovative game mechanics, unusual story or different forms of presentation. Recent years gave us such hits like: Minecraft, World of Goo, Braid. They earned a lot thanks to services like: Steam or Google Play. I can safely say that the evolution of online game stores allowed indie game dev to rise and flourish.

Minecraft is the best example of an indie game success, there are PC, XBox, Android versions available, you can find one even for Raspberry Pi. When I last read about this game it had almost 10 million copies sold! Can you imagine? For a game started as a small project it’s a hell of a success.

In this article I want to gather some tips on how to create a game and not lose sanity in the process. It’s especially important if we are working on it in our spare time after our day job or on the weekends. From my own experience I know it takes a lot more work then we originally planned but the results are really satisfying. Trust me!

Monetization or how to sell our game?

Most designers will tell you that only an interesting idea counts, but you need to remember that not all ideas will fit a mobile device. You have many obstacles: small screen, lack of physical keyboard, input accuracy issues, flaky Internet connection and much much more!

Well known game genres from PC or console often won’t end as a success on mobile. A good example are First Person Shooters (FPS). They need complicated control systems: camera, movement, shooting, jumping, browsing equipment which can at best be wonky on a touch device. Its quite frustrating when you obscure the view you need with your own fingers when your trying to interact with the game. FPS games often have on-screen controls but still they are not as responsive as a normal controller would be. You could always assume that players will use bluetooth controllers with your game, but are you willing to limit the market your game can be sold at?

Monetization is a term that is spreading with a lightning speed. It describes ways of earning profit on a given product (it doesn’t necessary need to be a game). Depending on the game you need to decide the form of monetizing the content you’ll be delivering.


You need to be aware there are around 30 different Android app markets available. Several of those possible markets are only available in small amount of countries or world regions like North America or Asia.

  1. Google Play - - Its the default app market for the majority of android devices. If you do not have any previous experience with selling apps on Android, I advise you to start with this one first.
  2. Amazon App store For Android - - A well known alternative for Google Play, by default installed on Amazon Kindle Fire. Unfortunately its availability is limited to USA (it’s worth to check as it may change one day). Amazon offers an interesting cross promotion for apps and market. Each day one paid app is picked and released for free for a single day (don’t worry developers are compensated for this).
  3. GetJar - - Its advertised as a second largest app market in the world. It might be true due to the fact its available also on platforms other then Android. Most commonly installed on devices which do not have access to official Google Play market like low end budget phones and tablets. Angry Birds from Rovio was first release on GetJar before it took Google Play by storm.
  4. SlideME - - Its advertised as a “better” alternative to Google Play. For starters it takes a lower share for selling your app. It has some nice user oriented features like getting apps through a web browser in addition to a market app installed on the device.


  1. Sell - for example on Google Play, Amazon Appstore or GetJar. Depending on the contract with the shop you will get a percentage from the sold game. They are giving you the platform, this is why you give them some compensation.
  2. Ads - in different forms: as banners inside the app, as notification bar adds, as pop up windows. There are many solutions for example Google AdMob or MobClix. They will pay you either for displayed adverts or for each one clicked.
  3. IAP - in app purchase - its a good way to sell all available additional content you have for your game: maps, skins, models. On Android we have different solutions, each android app market often releases its own API for IAP, in case of most dominant Google Play it will beGoogle In-App-Purchase. Recently Amazon released their own API for integrated purchase.
  4. Virtual currency - its a modified IAP solution, instead of selling particular map or skin, developer is selling in-game currency, which can be used to get additional content inside the game. Most often players have a possibility to acquire the currency just by playing the game, but it takes more time.
  5. Mixed - its a combination of all the above. For example Tapjoy is a solution that is using a virtual currency, players can get it by clicking displayed ads or by installing other apps in the Tapjoy network. Another very interesting solution is AddOverlay from LeadBolt which combines unlocking content with clicking ads. Player needs to click an advert to unlock content.


We now know how and where to sell, but what model should we pick? If we already have finished our game and we can count on a good advertisement then maybe we should just try with a free demo and a paid full product. Free versions don’t have to be limited in any way - game wise, they can just use worse resources (low res quality images / sound files). Many small games have a normal and HD version on the market. Most often normal version is free and HD version can be bought for few dollars.

You can choose to profit from ads that can be displayed in your game. Remember that there might be issues with fitting them into game UI. Either you will squeeze some space or allow ad banners to overlap your interface. “Users might click an ad by mistake?” - you ask In such case – more income for us? or maybe not? angry users spread bad publicity very quickly so do it on your own risk. Most importantly don’t overdo! Games often have fragile artistic style that is easily broken with colorful ads (which you do not have any influence over!). How would you like to look at bright colorful ad images in a dark noir game? You wouldn’t, so don’t force your users to.

So, once you know where to place an ad then how can you earn on them? There are some acronyms that you will often read about: CPC and CPM.

  1. CPC - Cost Per Click - in most cases you will only get paid if someone clicks the ad / banner.
  2. CPM - Cost Per Mille (Cost per thousand views) - the letter M is a Roman number meaning a thousand.

Google AdMob is based on the CPC although determining the amount of money for one click may be rather difficult. Everything depends on the app type, target audience etc. To better know what kind of money would such solution generate, you can simply integrate it into your game and just check after few weeks or months.

If you do not want to pollute your artistic vision with ads there are other means of monetization. One of such alternatives are push notifications. They seem perfect as you do not have to mess your UI to use them. All ads are displayed as messages / links in the notification area (panel) of a smartphone. My humble word of warning: they have a really really really BAD opinion and can drag your app down :-( I think that the first company which introduced this type of monetization was AirPush. They claim to have 800k active users, it’s a really impressive number but remember that this kind of an ad is often confusing for an average user. Users don’t know what is causing a notification to pop up and treat it as a sign of malware. Security companies list oppressive notifications as the second biggest problem right after malware (sic!).

App called APNDriod was removed from Google Play after lots of user reports. Most were complaining about excessive amount of notifications. True or not, you need to remember that with Android 4.2 users can now block notifications for a chosen app!

Are you scared? Don’t be! I still haven’t covered all possibilities. If your game has enough content, that will be attractive to players it’s possible to profit just from selling it. By content I mean maps, items, virtual currency, timed access etc. You can find many articles about this form of monetization often called microtransactions, free-to-play, freemium. Quickly a new term was created among players pay-to-win. It’s a negative term that describes all games that sell items allowing achieving easier victory, its especially frustrating players in competitive multiplayer games. For example World of Tanks allows buying golden bullets that deal more damage to players. Despite this, WoT is very very successful. But will your game be?

Selling cosmetic items and convenience is the most accepted form of monetization. What is convenience you ask? In most cases its time after which a player gains access to a certain thing in the game. Let’s say you created a multiplayer game with multiple different weapons. You have two ways of gaining access to said weapons: buy them in in-game store or unlock them through playing the game (this takes time). Your not restricting your players access to these weapons you just give them choice, either they will pay a small one time fee to get said weapons or they will just wait until the item naturally unlocks for them. Clear and simple. You need to carefully balance the cost of items both money wise and time wise, gamers don’t like to feel obligated to do something.

You might think what do you need non paying players for? Its simple, the more players you have, the more popular (alive) your game will be. Healthy and lively community will reassure your players and they will be more willing to spend money, which is your end goal.

What I’m trying to say is that game needs to be designed from the ground up: UI, shop, what will be sold, gameplay in context of buying items etc. You also need to be ready for complaints about payment, credit card transaction withdrawal and so on. Its better to be well prepared beforehand. Whichever type of monetization you pick remember to have it from day one, you don’t want to surprise your users later on in your app life. Adding monetization after some time might cause a loss of players. What was once free needs to stay free IMHO.

Maintaining interest

So how to keep your userbase stable or better yet growing? Fundamentally the main way is to update the content, however nothing keeps interest like player competition or increasing game difficulty. Competitive doesn’t necessarily mean mulitplayer – scoreboards or achievement boards allow users to compete with one another and brag about it on facebook ;). Example achievements: most kills, fastest level finish, lowest amount of deaths in a level etc. everything depends on the type of game. If achievements sound too complex, then you can simplify things with star rating. It allows to inform the player about how good he finished a level. The more stars player gets the better he finished. You can combine star rating system with content unlocking. Player needs a certain amount of stars to get items, maps, characters, skins, everything is up to you.

In contrast achievement system is a much more complicated beast than a mere star rating. Anyone who ever played an MMO (Massive Multiplayer Online) game will know how absorbing, challenging or frustrating they can be. Carefully designed they start with simple things involving only a one player, ending with feats that need 40 or more people to coordinate. Achievement examples you ask? Reaching a certain character level or fighting N enemies. N is often some arbitrary number – thousand or ten thousand (yes I’m looking at you World of Warcraft!). After a player is hooked, he will less likely leave your game due to his large time investment.

You do not have to implement everything from the ground up, there are many frameworks and cloud services available that will help you with this.

  1. Swarm - - scoreboards, achievements, IAP, social gaming, cloud data, analytics - every service is free of charge, there are no monthly fees or any other forms of subscription. In case of using the built in IAP, Swarm will take commission for every transaction.
  2. Scoreloop - - scoreboards, achievements, IAP, social gaming, challenges, scores stored in cloud, push notifications, support for virtual currency, cross promotion, analytics - similarly to Swarm everything is free. Scoreloop will take commission for every IAP transaction.
  3. Scoreninja - - scoreboards - its free, it can work but it can also fail
  4. Scoreoid - - scoreboards, achievements, active players management, notification system, geolocation, platform specific content, analytics - currently this service is in beta phase and due to this its free. There are some limitations like a quota for the stored data.
  5. HeyZap - - scoreboards, achievements, social network integration, ads - HeyZap SDK and all its services are free, they are profiting from the displayed ads
  6. Geosophic - - scoreboards associated with a geolocation - service is free until 20k requests per day. In case of exceeding this limit an individual contact with Geosophic will be needed.
  7. Skiller - - multiplayer support, tournament support, achievements, scores stored in cloud, scoreboards, friends lists, IAP, virtual currency, ads - SDK and all the services are free. After a quick look its hard to find any information about commissions taken by Skiller for ads, IAP and virtual currency.

Download statistics alone won’t tell you exactly if your game is popular. Detailed information is the key. A good example would be to check what’s the average time a player spends with the game, what’s the most common level players have problems with, which screens they checks the most etc. This will allow adjusting better to the needs of your users. Happier player means more income from monetization. Basically you need to plan upfront what do you want to measure.

What to do when we run out of ideas for new games or game mechanics? As always Internet is here to the rescue. You can easily find websites gathering designers willing to exchange and discuss ideas. Believe me many things that you thought brilliant will end up criticized. If you don’t want to get eaten by strangers you can read sites full of game mechanics and game prototypes, which can be used right away like: “Three Hundred Mechanics”.

  1. - Very interesting blog about game mechanics. Authors discuss there different aspects of game design, scenarios, levels, they are even analyzing existing games. It’s very helpful to learn on the mistakes of others.
  2. - It’s an effort to document 300 different game mechanics. Initial plan was very bold, author wanted to present one game mechanic each day for 300 days. Life verified this plan and although work goes in much slower pace current list of described mechanics is detailed and vast. I like this site the most, thanks to concept images, and simple HTML + JS prototypes for some of the mechanics.
  3. - Discussion forum of Game Maker community. Just reading through few of the posts you can feel that people there are really passionate about the tool. You can discuss your own ideas and see what games are currently in the making.
  4. - A simple game idea generator, suggestions are constructed out of three sets of categories. Some of the generated ideas might seems preposterous for example: “historical, sad, dark, FPS combined with puzzle game, set in a factory”, still you might you might hit a jackpot :)
  5. - Another game idea generator, this one has option to generate multiple ideas at once and store them in a special stash. It has an additional feature that will trim the generated ideas from the most bizarre.

In my case those generated ideas were the best thing ever, although they won’t answer detailed questions about gameplay but can be a very good start. I was playing around with one of those and it created a bizarre combination of words: “happy, bloody, game for kids, on another planet”. My first though was that nothing can be done with this combination but after a minute of thinking I had a simple scenario: “Baba Yaga is a space monster, she sends Hansel and Gretel to a gingerbread planet. They now need to escape a honey-cake castle and fend off candy monsters”. As you can see, with a bit of work you can build a game out of few words.

So are there any legal consequences of inspiration? I can only tell you about situation in Poland. On the ground of polish law game mechanics cannot be registered or patented in any way. Law on copyrights and related rights from 1994 contains the following definition of a protected work: “every kind of individual creative activity, in any form, for whatever use or ways of expression”. Please excuse my poor translation of polish law but you can clearly see that only a specific implementation can be protected: UI elements, graphics etc. Game mechanics or just plainly speaking game rules cannot be protected by law in Poland.

Does it mean that you can create obvious copies of games that are currently on the market? Yes and No, let’s say that “It’s complicated”. Many game elements that we might try to copy can be a registered trademark. If your not interested in the trademark law then you might be shocked but even a color palette can be protected. So the simple answer is: copy attempts might end up in court. So basing a mechanic on an existing one in Poland is acceptable but a word of advice is suffice here: always check for any changes in the trademark law, for your own sake ;-)

Can you create and publish a game for free?

Despite the fact that most technologies (like Swarm or Flurry) are “free”, creating a game without putting any money into it is unfortunately impossible. On Android you have several game engines available like AndEngine, libGDX or Unity. If you plan on conquering other markets like iOS or Windows Phone then please be aware that solutions for those platforms might cost. For starters you should consider those:

  1. AndEngine - - Java - Free - SDK contains game engine and extended set of examples. Unfortunately there are no useful comments or documentation for those examples. It’s sometimes hard to understand why something was done in the way it was. Engine architecture is relatively simple which allows for quick prototyping. A big issue are two versions of the engine: GLES1 and GLES2, there are no documentation about differences, most examples and articles was written with GLES1 in mind. AndEngine might be a bit slow for certain types of games, but is a good pick for a 2D game.
  2. Unity - - C#, Unity Script, Boo - Paid / Free - It’s a very powerful 3D engine, that allows you to create games on any mobile platform and PC or consoles. There is an asset store where different kind of resources can be bought: graphics, sound, 3D models, and tools for editing scenes and animations. Cost of the editor is not small.
  3. Game Maker: Studio - - GML - Paid - As a creator you will get a well developed tool with a graphical UI that allows you to create games without knowing any programming language. Very quick prototyping allows to figure out if mechanics that we envision are playable. Major flaw of this solution are issues in creating complex game logic, mostly because of simplicity of GML - a programming language created just for use in Game Maker: Studio.
  4. Corona SDK - - Lua - Paid / Free - Very popular game framework that allows to create everything with Lua language. Thanks to the scripting language whole SDK is very easy to grasp. Prototyping and testing is very fast and almost painless. As Lua is not a mainstream language like Java / C# first learning it can be major issue for someone who wants to jump into game making. Although there is a free version you cannot publish games created with it. Rich API allows to handle many elements of the device like GPS or camera but you need to remember that Corona SDK is a closed source product and if something doesn’t work or is not supported its not a thing that you can easily address.
  5. Gideros - - Lua - Free / Paid - Another solution that is based on the Lua lang. With this SDK you will get an IDE that helps working with game framework, testing, API viewing etc. If you want to use the free version there is only one rule, you need to show Gideros company logo before you load the game. If your game reaches 100k USD revenue you are obligated to buy the Pro license.
  6. Moai - - Lua - Free - It’s an open source project, using it is completely free, but to get full comfort while using the SDK you need to buy a dedicated IDE, which is around 40 USD. Moai has a very rich API but in many places having an outdated documentation or lacking it completely. Many things that are normally hidden by other frameworks here need to be handled by the programmer.
  7. libGDX - - Java - Free - One of the fastest if not the fastest game frameworks that allows to write in Java. Mostly dedicated to 2D games, its list of finished projects is very impressive and growing each day. There are a lot of supported platforms even HTML5. Due to how the framework is designed its possible to write Android games without a device or emulator. Game can be run as a Java desktop application.

Another aspect is graphics and sound. For each paid tool there are tons of better or worse free alternatives, for example good old Photoshop can be replaced with Gimp. If you need to do some sound manipulation you can relay of free Audacity. It’s possible to cover those aspects of game making without additional costs. Unfortunately it’s the other way around in terms of testing and releasing into the market. For me at least it’s hard to imagine to develop a game without at least one device. Android device emulator although often capable to run your game in some cases might fail (if your game relies on OpenGL) or just be so slow that it’s not possible to test reasonably.

Then there is releasing your finished game on the market. In case of Google Play you need to pay a one time fee that’s around 25 USD when you are creating a developer account. Most of the new Indie devs are waiting with this until they finish their first game. Google is explaining that this fee was created to increase the quality of submitted apps. I believe it was there to lower the amount of cracked apps getting back to the market (which is a whole different subject altogether). GetJar which is a direct competitor to Google Play doesn’t have such fees.

The most important thing of all you will need is time. Before you will finish and publish your first game you need a stable source of income which means other jobs that will probably take most of your time. Creating a game in your spare time needs a lot of dedication and patience if you want to finish your project.

So what’s next? You need to learn and explore a lot. Read about other games, what technologies they used and how they were designed. Game design is a broad topic, there are alot of phenomenal literature out there that is covering this topic. A good starting book would be: “Rules of Play - Game Design Fundamentals” by Katie Salen and Erric Zimmerman.

And of course Good Luck!