Using Facebook Ads to reach Android Game players
Some time ago I decided to spend $100 on advertizing my Drone Invaders game on Facebook.
Facebook ads have some really nice features, like picking only people
from certain countries who like certain things. So I selected people
from English speaking countries, who have an Android phone and like
Space Invaders or Galaga.
The campaign ran for 18 days and got 839 clicks, which is around
46 clicks per day. On the other hand, I was monitoring players that
played the game. Unlike Google Play which monitors installs, I'm monitoring
how many people play the game and get to the Game Over screen. During
the campaign I had about 40-45 new players coming in each day. Since the
campaing has ended, I have about 10 new players coming in each day.
So, the campaign effect was about 30 new players per day or 540 total.
Thats 540 players for $100, or $0.185 per player. It's nice to know this
figure before doing some ads, but spending $100 to learn this is also
not a big deal. During this campaign the game earned about $25, so it's
a net loss, but the game is not about making much money anyway. It's free
to play with completely optional in-game purchases.
To conclude: I find Facebook ads useful and would use it in the future if
I create some game that I feel can bring in some real money. Especially
if I make a non-free game, this seems like a good way to attract more
players. It's great that you can target people who like similar games
and have a device it runs on.
Feedback & Share
Marketing your Android game - start early
Three weeks ago I released Drone Invaders. After the initial hype, the
number of daily downloads has slowely but surely went down, and now sits
stable at around 40 per day. But I want to talk about this initial hype in
hope other beginner game developers might find it useful.
As I wrote before,
I posted about my game to multiple sites. I posted daily updates to LudumDare,
and important milestones to Java-gaming. I posted twice to HackerNews, and Reddit.
I posted once or twice to other sites listed in the linked blog post above.
In this case numbers speak more than words, so here are the top sources of
traffic to my blog posts about Drone Invaders:
Conclusion: do not wait to market your game. The main site I missed is
TIGSource. It's a high-traffic site with a lot of posts every day. If you just post when
your game is completed, not many people would see your post. I wish I posted
my progress daily, or at least as often as on Java-gaming. It would build more
interest as the game was built, and surely would result in more installs
after the release. If you know some more sites like those listed, where developers
can post about the game development progress, please send me a tweet about it.
Feedback & Share
October Challenge Complete!
In the last two days, I got a couple of new orders for in-game coins, coming
from Denmark, Australia and USA. Thank you.
That's $21.81 of income, of which about $5 was me testing if the payments
work, and there's Google's cut as well. In the end, I earned about $11.
Since October Challenge
was to earn $1, I succeeded. However, I still have a net-loss of about $14,
since I invested $25 in Google Play developer license.
Now that I see there is some interest in in-app currency, I'll try to
do some paying forms of marketing, to see if that brings in some new players.
When you publish an Android game, a lot of marketing companies e-mail you
with their offers. I'm going to try some of those. I'll write about the
results in a week or so, after I have some data.
Feedback & Share
Success or failure?
I released my game Drone
Invaders about a week ago. It's a free to play shooter game for
Android with optional in-app purchases. I did successful promotion on LudumDare,
Java-gaming and HN websites, which got me to about 1000 installs so far. I'll soon post more stats about
user retention, games played, etc.
I also posted in Shoot 'em up forums,
IndieGameMag and added info to IndieDB. All those did not bring in much
interest. Judging from player feedback, the main source of interest was HN
post, where some people were more excited that I created the game in just 23
days, than in the game itself.
All this got me $0.69 profit so far (if you ignore the $25 fee to open a
developer account on Google Play) as one person bought one in-game pack of coins.
LudumDare challenge is to earn $1, so I need only one more purchase. But, it
seems that will be a huge challenge to get it.
I also tried promoting the game on Twitter, but from my 200 followers I
had prior to launching, only 3 tried the game. I guess you really have to engage
daily with a lot of people to even get them to read your tweets.
After the launch I got about
180 new followers. BTW, using bit.ly to track how many clicks came from which
source (Twitter, forums, etc.) is a great idea, I'm sorry I did not apply it
I posted several posts on Reddit and I noticed someone from HN crowd also
posted. While mine posts to /r/gaming, /r/gamedev were barely voted up, that
other one in /r/Android got some +187 votes and got some attention.
I wrote an e-mail to eleven journalists who do cover mobile games and I
thought would be interested about
the game. No reviews came out of that. In fact, nobody replied except for one
guy who was decent enough to tell me that he thinks that the game is not worth
covering on his main website, but I could try the forums. I guess it's hard
to get through with retro graphics.
To be honest, I'm a little bit tired of banging my head against the wall
with the marketing. The user reviews on Google Play are
great, but the game is not very attractive when you look at screenshots or
video, it only shines when you play it yourself. I have no idea how to get
some journalist that covers Android to try the game?
Feedback & Share
Day 23: Release!
My game is ready and available for download on Google Play:
Please try it out, let me know if you find any bugs. The game is free, but if
you like it, please tell your friends to try it and rate it in the Google Play.
Hopefully, someone would like it enough to buy some in-game coins
and I'll complete the $1 challenge :)
Even if you're not going to buy anything, please tweet about the game to your
followers on Twitter. Thanks.
Feedback & Share
Day 22: Sound effects
Although I have a wast library of wav sfx files I accumulated over the years,
I've seen other game devs use Bfxr to
create their own effects, so I decided to give it a try.
This is nice, because you own the effect 100% and you don't need to prove where
did you get the audio file. Some of the sites I used to download my sfx in the
past are no longer online, and tracking people who made those is impossible. For
example, my favorite mod music is Aspirating Milk which I found on modarchive.
I tried to contact the author via e-mail in the tracker file, but got no reply.
It was probably his address at university or something.
Bfxr requires Windows or Mac, while I prefer doing my development on Linux. I
thought about running it on Wine, but didn't even bother to try because I found
It's a super easy to use and simple Flash app you can run in your browser. I
highly recommend it.
These sfx programs produce various simple sound effects. Some complex
sound effect can be created by mixing a couple
of simple effects in a program like Audacity. I used it to create sfx for Atomic
BTW, I basically completed the game, I'm now testing on various Android devices.
I'll probably do the release on Google Play store tomorrow.
Feedback & Share
Day 21: Monetization of Android game
I'm making this game as an experiment, so I don't expect to earn much
money. This game is going to be free to play, with option to buy coins in the
game if you want. I like the way it's done in games like Pudding Monsters where
players can play everything without paying at all. Drone Invaders will
be completely playable without paying a dime, so it is not a kind of "pay to
win" types. However, I still want to enable players
who can't wait to have fully powered up weapons right away.
I opened the Google Play account without problems. It was $25, which is fine.
I just read some blog post where a
solution to saturation of Google Play was suggested - it proposed to have $5000
registration fee, so only developers who are serious would apply. I'm not sure
if I would apply for $5000, it seems so me that only big studios who are already
making money on other platforms would participate.
However, opening a Google Merchant Account is mission impossible from my country.
So, what are the options. Well, you can still add payments with services like
Fortumo or Centili, but this has two problems: 1. it goes against Google Play
publish to other Android app stores (there are some 30+ as far as I can tell,
and some stats say they make up about 30% of the market, although this seems
too high to me). 2. to enable payment via SMS, your game needs to ask for two
system permissions which users probably won't like: send and receive SMS. Although
this is the only way to enable monetization in some countries, if you aim for
US market, it's a bad idea.
Third option is to start a company in USA and register account that way. This
is of course the right thing to do if you expect to earn some substantial amount of money from your
game, but having an US company brings in some costs. There are specialized
agencies that can register you a company in Delaware. Delaware is a USA state and
a tax-haven. Of course, you can always tranfer the earned money from there to
yourself, and then pay the taxes locally on that transfer. I'm not ready
for this step yet, as this is my first game and I have
no clue if I will make any money of it.
Luckily, I have a friend who lives in US, so we opened an account under his name,
and the game will be released under that account. At least merchant account is
available for US individuals. I still don't understand why Google won't allow
merchant accounts from my country, when I'm receiving money from their AdSense
directly, without any problems. I guess not all departments of Google have the
Feedback & Share
Day 20: Weekly challenge. Persistent player data. Java date woes.
Weekly challenge will be to collect some amount of stars during a week and get
some nice reward, like 8 atomic bombs, 5 shields or similar. I made a nice gold
star in Gimp. I tried different particle effects
on it and also some diffused star-light, but it did not look really good. So
I went back to the particle effect used for powerups and tweaked that until I got
something distinct for the star. Stars show up on their own pacing, so you can
have both a star and a powerup on the screen at the same time.
I also worked on loading and saving player data. It was much easier than I
expected. I expected to have to learn some Android data storage API, but for
simple key-value storage, libGDX provides the Preferences class. Just init with:
Preferences prefs = Gdx.app.getPreferences("DroneInvaders");
and then use get("key", defaultValute) and set(key, value) to read and write the
The only thing I had problems with are the dates. To keep track of daily and
weekly challenges, the game stores the date of last play. When player launches
the game, it compares that and resets some counters. Theoretically, I could
prevent players from changing the system's calendar to past date, but I don't
want to. What I am doing, is setting new set of daily and weekly challenges
when day rolls over and resetting the counters for number of stars and letters
To make that work, I had to get the day difference between the previous play and
current date. It matters whether it's the same day, exactly one day apart or more
than one day. Googling got me to various websites and StackOverflow questions.
Answers are funny. Many programmers simply calculate difference in seconds
and then divide by 60 * 60 * 24 to get the days, completely ignorant about issues
with daylight savings and leap seconds. One could argue that it does not matter
that much for a game, but still getting many bug reports twice a
year doesn't sound like fun to me. Some other guys simply count the days by
adding one-by-one from start until they reach the end. While those loops might
look correct, they still miss sometimes as they do not take the time out of the
calculation. If one object stored 01.Jan at 5am, and you calculate it vs 02.Jan at 23pm,
adding one day to first object is still less than the second, so they add two
and get 2 day difference.
One of the tricks I use in this situation is to always set the time of the earlier Date
to be something like 10am, and set the time for the later Date object to 5pm.
Since daylight changes always happen at night, this is safe. And we also have
7 hours in between, just in case someone in future decides to do daylight
saving changes in the middle of the day.
Feedback & Share
Day 19: Daily Challenge and Missions
Daily challenge is to collect 5 letter which fly like powerups do. Once you
collect them all, you get some coins to buy powerups. This is a way to get easy
free coins just by playing the game. I was inspired by Subway Surfers when
Missions are various tasks for player to complete to earn coins. Coins
are used to buy upgrades and expendable items like shields, bombs, etc.
Missions come in sets of three, and you need to complete all three tasks
to earn the reward.
For the missions I figured that it would be easiest to use the builtin multiline
text wrapping. However, the line height is too big, and I could'n find a way to
reduce it. At least, not from code. Then I edited the .fnt file generated by
BMFont and just changed
I added 5 pixels of drop shadow around all letters after the bitmap was generated
initially, so I'm now reducing height by ten (5 pixels above, and 5 below the glyph).
While searching the docs for this, I found something else I missed before:
Depending on the font you choose for the game, numbers might not look very nice
as glyph for digit "one" can we very slim, and numbers like 11 look odd. To solve this, you
can fix some of the glyphs in the font to use fixed width:
This looks really good, but I already did some design decisions that used the
slim-glyphs "feature", so I'm not going to use this.
Feedback & Share