Exobyte Smartphone Games
  • Home
  • Articles
  • Contact
  • About
  • app-ads

A case of the good stuff

1/29/2014

3 Comments

 
Picture
Exobyte have been featured as a case study of success with mobile advertising on the Google Admob web site.

Admob sent out a request to companies last year asking them to submit their success stories with Admob.  I told my story about how successful Cherry Chaser had been and was selected to be a featured study.  This involved a phone call to the Admob team at Google's campus in Mountain View, California last year where we chatted about how I'd used AdMob to monetise my games.

The result is the case study featured on the AdMob web site:
http://www.google.com/ads/admob/success.html

The PDF file of the case study can also be viewed directly with the link below.

admob-exobyte.pdf
File Size: 844 kb
File Type: pdf
Download File

3 Comments

New graphics suck

2/21/2013

2 Comments

 
Picture
Picture
I've had a lot of feedback about the recent graphical changes to Cherry Chaser.  One of the first one star reviews that I received after the update was titled "New Graphics Suck!".  Another said that "they look like they were drawn on the back of a beer mat and scanned by a ZX81".  This and the accompanying one star rating felt a bit harsh.

I understand that there are a number of players who prefer the old style graphics and I can see some charm in the more amateurish "retro style" graphics. A few have asked to have the old graphics available in the game as a selectable alternative.  I will try to explain my position why I won't be providing this option.

Although the old graphics had charm, they were also inhibiting the number of downloads of the game.  Since improving the quality of the graphics the number of downloads has improved significantly.  They particularly make a difference on tablet devices where the old graphics did not look good at all.

Unfortunately including the old graphics as a skin is not easy or desirable for a couple of reasons.

The first reason is that Cherry Chaser was not programmed in a fashion that made skinning very easy.  I wrote it when I was learning programming on Android and its subsequent success came quite unexpectedly.  I did not design it as well as I would now and changing the layout is difficult.  Including a second skin in the game would take a lot of work for not a lot of benefit.

The second reason is that I try to keep the download and memory footprint of Cherry Chaser as small as possible.  Graphics take up a lot of space and including an alternate set of graphics would increase the memory footprint of the game more than I would find comfortable.

If you are one of those people that prefer the old version of the game let me know and I will send you a link where you can download the old version.

2 Comments

Smash and graph

10/6/2012

47 Comments

 
In January I released Cherry Chaser slot machine on to the Android market.  The game was very simple back then with many of its features still missing.  I released it to "test the water" with the idea that it's best to just get something released and then fix issues and add features as necessary.

Fast forward eight months and I now have my second game doing very well and between both games I'm currently earning more through mobile advertising than I do in my day job.  Cherry Chaser now has 800k user installs and Super Snake is up to 200k after 2 months on the market.

In this post I am going to recap my Android game development journey and summarise my experiences and the lessons that I have learned.
Picture
A graph is as good as a thousand words and here you can see a pretty good overview of my journey in terms of revenue from my games over the past eight months.  There are a few things that need to be explained further.  The profile of revenue immediately after each release is completely different for example.  I have some ideas as to why that is the case and I'll get to that later.

From the graph above it looks like Cherry Chaser was immediately successful but that wasn't really the case.  For a while it looked as though the game would stay in relative obscurity.  To make it noticeable I had to make a good first impression and that meant doing some work on the app store icon.
Picture
When first released, Cherry Chaser had a very anonymous icon on the store.  The "pair of cherries" icon could represent any number of things and gave no idea as to what the game was about.  When somebody browsed the Google Play store pretty much all they saw was that icon, they may not even register the app's name whilst scrolling past.  With the anonymous cherries icon my app stayed in obscurity with hardly any downloads even though it was well placed in the "new games" list in the Cards and casino games category.

I realised quite quickly that I needed a better icon, and I needed one quickly whilst in the golden 30 days during which games are displayed on the "top new games" listings.  I chose an icon that showed the potential player exactly what the game was about at the briefest of glances.  Anybody who has seen the type of fruit machine that my games emulate will immediately recognise the new app store icon.  I changed the icon and downloads began to soar.

Just how successful it was in terms of number of downloads was quite a surprise.  It very quickly went into the hundreds of thousands of active installations.  I put this success down to two factors:  

1. Games are generally more visible in the cards and casino games section than the other categories on Google Play.  There is less competition and it's fairly easy to get into the top ten new games.  

2. Cherry Chaser filled a niche within the slot machine genre that had not yet been filled in the mobile games market.  Cherry Chaser simulates a European pub style fruit machine.  Every other slot machine on the market seemed to simulate five reel "Las Vegas" style slots which offer very limited entertainment value other than gambling for more money.

After the initial surge of interest generated by the interesting new icon on the app store, the next phase of Cherry Chaser's life cycle was a gentle but inexorable slide back down into obscurity.  This slide was helped along by a number of bad customer ratings and the simple fact that there was nothing particularly in the game to hold people's attention.  The very first version of Cherry Chaser released did not even save the player's credits between game sessions.

Addressing these issues became the priority for new versions of the game.  Over the next few weeks I added the ability to save player preferences and credits between sessions, I added in achievements to give the player longer term goals and I also added in a request for players to rate the game after winning an achievement.
Picture
The request to rate the game was particularly effective and raised the average rating from 3.8 (at it's lowest) to about 4.5 where it has remained since.  I think the timing of the request, just after the player had been given an award, was also helpful in getting good ratings.  Before adding this feature it seemed a lot of people only rated the game if they had had a bad experience with it.

As effective as these updates were, they came too late to capitalise on the time when Cherry Chaser was trending highly in the Play store.  Without the achievements to encourage long term playability, a large number of the hundreds of thousands of people that downloaded the game in those few days then uninstalled it again quite soon afterwards.

Another feature I added at this point was the ability to purchase a premium version of the game that removed the banner advert from the game and replaced it with an animated coin tray.  I did this largely in response to users that messaged me to tell me that they would pay for a version without adverts.  As it has turned out, this feature has not particularly successful.  The number of users that buy the game compared to those that download it for free is about one in a thousand and income from the paid apps is about 2-3% of what I get through advertising.

With these lessons learned I began work on Super Snake.  This time I would have all the features in place to encourage player retention and replayability from step one.  I also had some ideas that would make the new game more addictive than Cherry Chaser.
Picture
At the beginning of August I released Super Snake on the Play Store.  Uptake was slow compared to the meteoric rise in uploads that I experienced with Cherry Chaser, but steady and still very healthy.  I believe the slower uptake was due to the Play Store icon being so similar to the one for Cherry Chaser that many people who had already tried the first game disregarded the new game as more of the same.

Despite the slower uptake from users, the revenue figures show that the users that did try out Super Snake played it a lot more than players of Cherry Chaser.  That is due to Super Snake have a slightly more addictive hook for the gameplay and also due to the game having achievements that the player can strive for built in from the start.  Interestingly, releasing Super Snake also gave Cherry Chaser a new lease of life and downloads and revenues picked up on that game as well.

 In terms of revenue it looks like the strategy I've adopted has worked very well. For about a week around the beginning of October the combined advertising  revenue from both games peaked at an average of $400 per day.  That was about $300 from Super Snake and $100 from Cherry Chaser.  Revenue is falling again now but will be quite substantial for some time.  It would certainly be enough for me to write games full time if I didn't have other commitments.
Picture
The next step of my journey with these two games is to give them some updated professional grade graphics.  I used some of the revenue from Cherry Chaser to hire a freelance graphics designer using odesk.  He's created some fantastic graphics for me and I'm currently in the process of incorporating them into the games.  Once both games are update with these graphics I will be content to leave them and move on to other projects.

As a final note, if you're reading this and thinking that you would like to try your hand at Android games programming, save yourself a tonne of time and try out the LibGDX game library.  I tried two other game libraries before finding LibGDX and both resulted in false starts where I ran into the limitations of those libraries.  LibGDX is free to use and is created by Mario Zechner of Badlogic games.  Mario is also the author of "Beginning Android Games" published by Apress.  I can thoroughly recommend that book as a great introduction to the creation of a game and game engine.
47 Comments

A refreshing change

8/15/2012

5 Comments

 
How does your advert refresh rate affect revenue from your app?

First of all a quick run through of the mobile ad industry jargon:
Requests - How many times an app requests an advert from an ad provider.
Impressions - The number of ads actually shown to users.
Fill rate - The percentage of impressions compared to requests.
Click Through Rate (CTR) - Percentage of impressions that result in a click.
Estimated cost per thousand impressions (eCPM) - How much an advertiser will be charged for 1000 advert impressions or how much a publisher will be paid for 1000 impressions.

For the past six months I have been earning money by showing adverts in my game "Cherry Chaser".  I began with the refresh rate (recommended by Google) of sixty seconds so my game would contact the advert provider and request a new ad every minute.  After a while I decided to make the adverts somewhat less intrusive by changing the refresh rate down to 120s, or once every two minutes.  This is the maximum interval you can put into the Admob interface.  This had the obvious effect of reducing the number of overall ad impressions by about half and roughly doubling the CTR and ecpm.  The outcome being that revenue stayed roughly the same but the number of adverts I was showing was halved.

I kept the higher refresh rate as I decided that a good general principle would be that showing less adverts is less intrusive to the user.  I don't know how true that is, after all is it better to show one bad advert for two minutes or a good and a bad one for one minute each?  It probably doesn't make any difference either way and the net effect is the same.  One thing I can say though is that less advert requests does mean less network traffic for the user and some mobile users have quite tight monthly data budgets.

Jump forward to the past two weeks and I released my new game "Super Snake Slot Machine".  When publishing it I forgot to set the refresh rate in the Admob interface and it got left at a setting of "no refresh".  What that meant was that an advert was requested when the game started but then no new ads were shown after that.  The effect was that the CTR for Super Snake was about 5% compared to the 1% CTR I was regularly getting on Cherry Chaser at a 120 second refresh.

I had nothing to compare against so I set the refresh rate on Super Snake to 120 seconds for a couple of days and CTR plummeted back down below 1% whilst the number of impressions more than quadrupled.  The overall revenue dropped slightly at a time when I would have expected it to be rising in line with the number of active installs.  After setting the refresh rate back to "no refresh" the revenue rose again, although only in line with the growth of the user base.

I've now also set Cherry Chaser (which has 130,000 active installs compared to Super Snake's 4000) to also disable the refreshing of adverts.  This has had no noticeable affect on overall revenue which has remained about the same.  Number of ad impressions has dropped by a quarter and the CTR has risen by the same factor of four.

An unknown aspect for me here is how your CTR affects the quality of the adverts that are sent to your app.  I've heard hints that a higher CTR will mean you are sent ads that give higher profits.  It's very hard to tell if that is a real effect because you only have the one figure which could be affected either by the quality of the ad or the length of time it is displayed.  I've read that CTR is a very important factor in Adwords ads with higher click words drawing a higher revenue.  I don't see that the same principle will automatically apply in the mobile app advertising space though.

In conclusion it seems to be better to have higher CTR and a lower number of impressions by completely disabling advert refreshing.  If nothing else it reduces the bandwidth usage of the app slightly.  It may just be something about my own app that means this works and I can't rule out that a coincidental fluctuation in advertising rates has misled me to believe that the revenue is slightly better.  I feel somewhat like I'm swimming against the tide of convention by disabling advert refreshes but so far nothing in the figures shows it to be a bad decision. 
5 Comments

A nudge in the right direction

7/6/2011

0 Comments

 
As part of the job of porting Cherry Chaser to Android I want to make a number of improvements to the game.  One feature that I felt needed improvement was how the nudge feature worked.

In the Windows Mobile version of the game you would win nudges and then nudge the reels manually using the buttons beneath each reel.  There was no facility to nudge upwards and visibility is limited to only the fruit directly above the winline.  That meant that it was very difficult to get a decent win with nudges.

In Cherry Chaser for Android I've just implemented an auto-nudge feature that will entirely replace manual nudges.  Once the amount of nudges awarded has been established the machine looks for the best possible win attainable with those nudges and then performs the nudges automatically.
0 Comments

Illumination and enumeration

6/2/2011

0 Comments

 
I've now "wired up" all of the lights that can flash on and off on the main play area of Cherry Chaser.  This was one of the most laborious tasks that needed to be done and involved carefully measuring the location and size of each part of the screen that could be independently lit up.  In all the main screen is composed of 62 lights all of which can now flash on and off.

I'm finding some interesting challenges porting my Windows Mobile games, that were all developed in C++, to using java on Android.  It's very handy that the syntax is largely the same but there are quite a few things about java that bug me.  If I came from java to C++ I'm sure I'd be even more distressed, or even horrified.  I have to admit that I am not too fussy about type safe data types and I find the convenience of being allowed to be somewhat reckless with my data in C++ makes up for any extra debugging required.

As Cherry Chaser is a port of the C++ version I'm shoehorning a C++ style on to my java programming.  One particular area where I'm doing things in a non java way is in the use of enum types.  Cherry Chaser enumerates lots of things from the game state to what the names of all the lights are.  At the moment I'm using enums very much as I would in C++ and using the ordinal values far more than I probably should.  For example my array of lights is indexed by an enum type.  Reprogramming to use an enummap would be more appropriate but that would mean rewriting quite a lot of code.

0 Comments

Moving towards independence

5/26/2011

1 Comment

 
Recently I've been doing a lot of work on the graphics for Cherry Chaser, making them more suitable for the high resolution displays on most Android phones.  I've just about completed my texture atlas ready for use in the game.
Picture
The main issue I have is that to make the animation of the reels simple I need the entire reel in a contiguous region in the atlas.  This means the atlas needs to be at least 1024 pixels deep.  That's not a problem on better phones but on low end phones having a texture over 512 pixels degrades performance considerably.

The other side effect is that I have quite a lot of spare texture space so I've laid out the rest of my graphics with a view to ease of mapping rather than squeezing them tightly together.  I have "lights off" and "lights on" versions of the main screen and I switch lit up regions between each as necessary.

The game will also feature three currencies, pounds, dollars and euros, so I have spare parts of the texture atlas assigned to hold graphics for the alternative currencies.

In terms of programming I have implemented two important features which will help the game to run well across the varied range of Android devices that are out there.  The first is screen resolution independence.  No matter what sized screen the device has the game will stretch or shrink itself to fit.  The other feature is frame rate independence.  The reels now spin at a fixed number of pixels per second.  That can be important on low end devices where the frame rate is more prone to stuttering.
1 Comment
     
    Regular updates on twitter

    Development
    Journal

    Archives

    October 2024
    January 2022
    October 2021
    August 2020
    February 2020
    March 2019
    October 2017
    September 2017
    May 2017
    February 2015
    February 2014
    January 2014
    November 2013
    August 2013
    July 2013
    June 2013
    February 2013
    October 2012
    August 2012
    June 2012
    March 2012
    February 2012
    January 2012
    July 2011
    June 2011
    May 2011
    July 2010

    Categories

    All
    Advertising
    Cherry Chaser
    Libgdx
    Plasma Duel
    Super Snake

    RSS Feed

Privacy Policy
Terms and Conditions


​All content copyright Exobyte Ltd 2012-2024