<commit_before>---
layout: post
date: 31-07-2014
author: <NAME>
title: Android Indie Game Development
tags: android gamedev games
disqus: true
---

So you want to create games, games for Android in fact. The reason behind your idea is irrelevant, maybe you like existing games, you have an incredible idea you need to show to the world or you just want to try yourself. You need a pinch of creativity and a bit of zeal and luck. If working for a mega corporation is not for you and you want to have influence on the end product, then maybe Indie game dev is for you. Let's explore!

What hides the name "indie"? The term comes from the word "independent", indie games are mostly written by single people or small teams without any financial support from a publisher. Such independence allows more creativity, as a designer you can commit to greater risks and there is no board of directors who need to accept every change.

Due to limited resources such games often emphasize innovative game mechanics, unusual story or different forms of presentation. Even though the founding is limited it doesn't mean that indie games are not successful. 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.

I think that Minecraft is the best example of an indie game success, there are PC, XBox, Android versions, even for Raspberry Pi. When I last read about this game it had almost 10 milion copies sold.

I want to gather some tips how to create a game and not get insane in the process especially if we are working on it in our spare / free 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 / estimated but the results are really satisfying.

## Monetization - how to sell our game?

Most designers will tell you that only an interesting idea counts, but not all ideas will fit a mobile device. You have many obstacles: small screen, not physical keyboard, issues with reading accuracy of the user input also sometimes issues with permanent connection to the Internet. Not all created games will be a success on mobile, good example are First Person Shooters. They need complicated control systems: camera, movement, shooting, jumping, browsing equipment which can be at best 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. Such 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, this however will limit the market your game can be sold at. We are facing now the first problem: how to design our game that it will sell? I want to note here that you do not have limit yourself with the ways of monetization but its good to know how they work and how they affect gameplay.

Monetization is a term that is spreading with a speed of a lightning. It describes ways of earning profit on a given product (it doesn't necessary need to be a game). On the Android platform, there are available:

1. *sell* - for example on Google Play, Amazon Appstore or GetJar. Depending on the contract with the shop you will get 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 popup windows. There are many solutions for example Google AdMob or MobClix. They will pay you either for each displayed advert or for each 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: Google 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 possibility to acquire the currency just by playing the game, but it takes more time.
5. *mixed* - its a combination of all the above solutions. 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.

There are many places you can sell your game in (there are around 30 different Android app markets):

1. *Google Play* - https://play.google.com/ - Its the default app market for the majority of devices. Many people are used to browse the contents of this market in search of something new and exciting. If you do not have any previous experience with selling apps on Android, it is advised to start with this one first.
2. *Amazon Appstore* - http://www.amazon.com/ - Well known alternative for Google Play, by default install on Amazon Kindle Fire. Unfortunately its availability is limited to USA. Each day one paid app is free of charge for one day.
3. *GetJar* - http://getjar.com/ - Its marketed 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. Angry Birds from Rovio was first on GetJar before it came to Google Play.
4. *SlideME* - http://slideme.org/ - Its marketed as a "better" alternative to Google Play, it takes a lower share for selling the app. It allows to get the app through a web browser or an app on the device.

We now know how and where to sell, but which model should be picked? If we already have finished our game and we can count on a good advertisement then maybe we should try with a free demo and paid full model. Free version doesn't have to be limited in any way, it can just use worse resources (often HD versions of the game are paid). Demo version is sometimes the only way to go for our game, banners with ads might often not fit into our game UI or we do not have enough game items to offer for IAP. Some developers often release their game with price higher then the one they want just to have option to create deals where they cut the price. Sneaky!!

Adds force us inherently to make room for them in our UI. Either we will squeeze some space or we will allow ad banners to overlap our interface. User might click an ad by mistake in such case -- more income for us? or maybe not if users will get angry and comment. If we are doing this on purpose we might end will lower download rate.

Also don't overdo with the amount of banners, game can have a fragile artistic vision which can be easily broken with colorful ads not matching our style. How would you like to look at bright colorful images on a banner in a dark noir style game?

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: CPC and CPM.

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

Google AdMob is based on the CPC although determining the amount of money for one click may be difficult, it depends on 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.

If we do not want to pollute our artistic vision with ads we have other means of monetization, for example push notifications can be used for advertisement. They seem perfect as we do not have to mess our UI to use them, unfortunately they have a really bad opinion amongst gamers. They were shown too often and in random moments. I think that the first company which introduced this type of monetization was `AirPush`. They say they have 800k active users but this kind of ads are a bit confusing. Users often don't know from where the ad is coming and treat is as a sign of malware (its marked as a second biggest problem for user right after malware). A word of warning, app called `APNDriod` was removed from Google Play after a lot of user reports, the main reason was excessive amount of notifications. True or not, you need to remember that with Android 4.2 users can now block notifications from a given app!

Whichever type of ads you pick remember to have it from day one, you don't want to surprise your users later on in your app life cycle. Adding monetization after some time might cause a loss of players. If not ads than what?

Maybe you can give your game for free and earn money through selling maps, in game items, in game currency etc. You can find many articles about this form of monetization: microtransactions, free-to-play, freemium. Of course there are some issues with selling in game items. A new term was created among gamers which is "pay-to-win". This term describes all games that have microtransactions allowing achieving easier victory, its especially frustrating if you can buy something in multiplayer competitive games. For example World of Tanks allows buying golden bullets that deal more damage to players and still this game is very successful.

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 we created a multiplayer game with multiple different weapons, you have two ways of gaining access to said weapons: buy them in in-game store, 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 it or they will just wait until the weapon naturally unlocks for them. Clear and simple. You need to balance the cost of the weapon both money wise and time wise, people don't like to feel obligated to do something.

What do I need non paying players for? Its simple, the more players there are, 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 on your game.

For microtransactions your 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 prepared beforehand.

## Maintaining interest

So how to keep your userbase stable / 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 means mulitplayer -- scoreboards or achievement boards allow users to compete with one another. You have broad design space for this: most kills, fasts level finish, lowest amount of deaths in a level, as I said possibilities are endless.

Recently "star rating" became very popular, it allows to inform the player about "how good" he finished a game level with, the more stars you get the better you finished. Sometimes the star system is combined with content unlocking.




System osiągnięć jest znacznie bardziej skomplikowanym mechanizmem niż to, co znamy pod postacią prostych gwiazdek. Doskonale znane z gier Masive Multiplayer Online (typ gry rozgrywanej przez wielu graczy jednocześnie) osiągnięcia to skomplikowana forma wyzwań dla gracza. Zaczynają się od prostych działań, takich jak zdobycie określonego poziomu w grze czy pokonanie pewnej liczby przeciwników. Kolejnym etapem są  akcje trudne i pracochłonne, jak zdobycie określonego przedmiotu, - często przy pomocy innych graczy. Naturalnym efektem wprowadzenia osiągnięć będzie rywalizacja graczy między sobą. Umożliwić to może wiele istniejących rozwiązań takich jak Swarm czy HeyZap. Łatwo się domyślić, że powracający zmotywowani gracze będą częściej oglądali wyświetlane przez nas banery lub kupowali w naszym wbudowanym sklepie, co może zwiększyć założony przychód.

Swarm
http://swarmconnect.com/
Rankingi wyników
Tabele osiągnięć
In-App-Purchase
Social Gaming
Przechowywanie danych w chmurze
Analiza danych
Wszystkie usługi są całkowicie darmowe, nie ma miesięcznych opłat ani żadnej innej formy subskrypcji. W przypadku wykorzystania wbudowanego IAP, Swarm pobiera prowizje od każdego zakupu.
Scoreloop<commit_msg>[draft] Android Indie Game Dev - markdown tidy<commit_after>---
layout: post
date: 31-07-2014
author: <NAME>
title: Android Indie Game Development
tags: android gamedev games
disqus: true
---

So you want to create games? Games for Android in fact. The reason behind your idea is irrelevant! Maybe you like existing games? You have an incredible idea you need to show to the world or you just want to try yourself. You only need a pinch of creativity and a bit of zeal and luck. If working for a gigantic corporation is not for you and you want to have influence on the end product, then **Indie game dev** is for you. Let's explore this topic!

What is hidden behind the name ***"indie"***? The term comes from the word *"independent"*, indie games are mostly written by a single person or small / micro teams without any financial support from a publisher. Such independence allows more creativity, as a designer you can commit to greater risks and there is no board of directors who need to accept every change. Due to limited resources such games often emphasize innovative game mechanics, unusual story or different forms of presentation. This doesn't mean that indie games are not successful. 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.

I think that **Minecraft** is the best example of an indie game success, there are **PC**, **XBox**, **Android** versions, even for **Raspberry Pi**. When I last read about this game it had almost 10 milion copies sold! 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 / free 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 / estimated 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 not all ideas will fit a mobile device. You have many obstacles: **small screen**, **lack of physical keyboard**, **input accuracy issues**. Sometimes you will experience issues with internet connection. Not all games will end as a success on mobile, for example **First Person Shooters**. 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. Such 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, this however will limit the market your game can be sold at. We are facing now the first problem: how to design our game that it will sell? I want to note here that you do not have limit yourself with the ways of monetization but its good to know how they work and how they affect gameplay.

Monetization is a term that is spreading with a speed of a lightning. It describes ways of earning profit on a given product (it doesn't necessary need to be a game). On the Android platform, there are available:

1. **sell** - for example on Google Play, Amazon Appstore or GetJar. Depending on the contract with the shop you will get 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 popup windows. There are many solutions for example Google AdMob or MobClix. They will pay you either for each displayed advert or for each 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: Google 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 possibility to acquire the currency just by playing the game, but it takes more time.
5. **mixed** - its a combination of all the above solutions. 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.

There are many places you can sell your game in (there are around 30 different Android app markets):

1. *Google Play* - https://play.google.com/ - Its the default app market for the majority of devices. Many people are used to browse the contents of this market in search of something new and exciting. If you do not have any previous experience with selling apps on Android, it is advised to start with this one first.
2. *Amazon Appstore* - http://www.amazon.com/ - Well known alternative for Google Play, by default install on Amazon Kindle Fire. Unfortunately its availability is limited to USA. Each day one paid app is free of charge for one day.
3. *GetJar* - http://getjar.com/ - Its marketed 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. Angry Birds from Rovio was first on GetJar before it came to Google Play.
4. *SlideME* - http://slideme.org/ - Its marketed as a "better" alternative to Google Play, it takes a lower share for selling the app. It allows to get the app through a web browser or an app on the device.

We now know how and where to sell, but which model should be picked? If we already have finished our game and we can count on a good advertisement then maybe we should try with a free demo and paid full model. Free version doesn't have to be limited in any way, it can just use worse resources (often HD versions of the game are paid). Demo version is sometimes the only way to go for our game, banners with ads might often not fit into our game UI or we do not have enough game items to offer for IAP. Some developers often release their game with price higher then the one they want just to have option to create deals where they cut the price. Sneaky!!

Adds force us inherently to make room for them in our UI. Either we will squeeze some space or we will allow ad banners to overlap our interface. User might click an ad by mistake in such case -- more income for us? or maybe not if users will get angry and comment. If we are doing this on purpose we might end will lower download rate.

Also don't overdo with the amount of banners, game can have a fragile artistic vision which can be easily broken with colorful ads not matching our style. How would you like to look at bright colorful images on a banner in a dark noir style game?

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: CPC and CPM.

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

Google AdMob is based on the CPC although determining the amount of money for one click may be difficult, it depends on 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.

If we do not want to pollute our artistic vision with ads we have other means of monetization, for example push notifications can be used for advertisement. They seem perfect as we do not have to mess our UI to use them, unfortunately they have a really bad opinion amongst gamers. They were shown too often and in random moments. I think that the first company which introduced this type of monetization was `AirPush`. They say they have 800k active users but this kind of ads are a bit confusing. Users often don't know from where the ad is coming and treat is as a sign of malware (its marked as a second biggest problem for user right after malware). A word of warning, app called `APNDriod` was removed from Google Play after a lot of user reports, the main reason was excessive amount of notifications. True or not, you need to remember that with Android 4.2 users can now block notifications from a given app!

Whichever type of ads you pick remember to have it from day one, you don't want to surprise your users later on in your app life cycle. Adding monetization after some time might cause a loss of players. If not ads than what?

Maybe you can give your game for free and earn money through selling maps, in game items, in game currency etc. You can find many articles about this form of monetization: **microtransactions**, **free-to-play**, **freemium**. Of course there are some issues with selling in game items. A new term was created among gamers which is *"pay-to-win"*. It's a negative term that describes all games that have microtransactions allowing achieving easier victory, its especially frustrating if you can buy something in multiplayer competitive games. For example World of Tanks allows buying golden bullets that deal more damage to players and still this game is very successful.

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 we created a multiplayer game with multiple different weapons, you have two ways of gaining access to said weapons: buy them in in-game store, 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 it or they will just wait until the weapon naturally unlocks for them. Clear and simple. You need to balance the cost of the weapon both money wise and time wise, people don't like to feel obligated to do something.

What do I need non paying players for? Its simple, the more players there are, 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 on your game.

For microtransactions your 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 prepared beforehand.

## Maintaining interest

So how to keep your userbase stable / 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 means mulitplayer -- scoreboards or achievement boards allow users to compete with one another. You have broad design space for this: most kills, fasts level finish, lowest amount of deaths in a level, as I said possibilities are endless.

Recently "star rating" became very popular, it allows to inform the player about "how good" he finished a game level with, the more stars you get the better you finished. Sometimes the star system is combined with content unlocking.




System osiągnięć jest znacznie bardziej skomplikowanym mechanizmem niż to, co znamy pod postacią prostych gwiazdek. Doskonale znane z gier Masive Multiplayer Online (typ gry rozgrywanej przez wielu graczy jednocześnie) osiągnięcia to skomplikowana forma wyzwań dla gracza. Zaczynają się od prostych działań, takich jak zdobycie określonego poziomu w grze czy pokonanie pewnej liczby przeciwników. Kolejnym etapem są  akcje trudne i pracochłonne, jak zdobycie określonego przedmiotu, - często przy pomocy innych graczy. Naturalnym efektem wprowadzenia osiągnięć będzie rywalizacja graczy między sobą. Umożliwić to może wiele istniejących rozwiązań takich jak Swarm czy HeyZap. Łatwo się domyślić, że powracający zmotywowani gracze będą częściej oglądali wyświetlane przez nas banery lub kupowali w naszym wbudowanym sklepie, co może zwiększyć założony przychód.

Swarm
http://swarmconnect.com/
Rankingi wyników
Tabele osiągnięć
In-App-Purchase
Social Gaming
Przechowywanie danych w chmurze
Analiza danych
Wszystkie usługi są całkowicie darmowe, nie ma miesięcznych opłat ani żadnej innej formy subskrypcji. W przypadku wykorzystania wbudowanego IAP, Swarm pobiera prowizje od każdego zakupu.
Scoreloop
{'fraction_non_alphanumeric': 0.03367996275027161, 'fraction_numerical': 0.0021729008225981686, 'mean_word_length': 4.307454695222405, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 2, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5210835', 'n_tokens_mistral': 6347, 'n_tokens_neox': 6192, 'n_words': 4363}