I received my Pebble smart watch yesterday after waiting over a year since first backing the product on Kickstarter.
First thoughts are that the build quality feels almost like a prototype product, the mushy buttons and glued together case definitely feel first generation. The functionality on the other hand is incredibly cool, reading emails, text messages and other notifications on your wrist is a revelation. It's amazing how inconvenient getting my phone out of my pocket now feels.
If Apple really are making an iWatch I can see people going nuts over it, the experience is like a new paradigm and Apple have the resources to get the product right. I'm firmly outside the walled garden so I won't get an Apple product myself, but I'm looking forward to the next generation of smart watches that it will inspire.
You may notice in the video a new "pointed" brick type that I've added in the past week. I've also added sloping bricks and these deflect the ball off at a tangent to make things a bit more interesting.
Other updates this week include some improvements to the particle effects, a bit of tweaking to the background star field (work in progress) and the ability to load in levels from a file.
Next up comes a simple level editor to allow me to produce all the levels I need for the game and the screen that allows a particular level to be selected for play.
The development of Plasma Duel is progressing well and I feel that I am on target for a full release to the Google Play store in September. The core game is finished and is fun to play both against an AI opponent or against another person in two player mode.
I've made some important changes to the original game that improve the gameplay dramatically. The biggest change was to allow the paddle to move fully in two dimensions around the screen. On a touch screen device this gives the player so much more feel and immersion in the experience. Another important change is the addition of two rows of bricks in the centre of the playing arena. This improves the visual variety of the level and creates a goal other than duelling with the opponent for the beginning of the game.
The game currently has four powerups working, these are the ones ported over from the original game - grow, shrink, lasers and multiball. I will be adding an additional four powerups to expand the variety of the game. I also plan to add angled bricks that will deflect the ball in a different direction. This is another feature that will give the game more visual variety and also add interest to the gameplay.
Now that the game itself is almost complete I estimate that I am roughly half way to finishing the game. Now I have to do all of the things that complete it and make it ready for release. These will take almost as long as coding the game itself.
My first task is to create a level editor and level loader so that I can start designing levels. Levels are currently randomly generated but the finished game will have eighty one hand crafted levels. This will allow the player to be gently eased into the experience and give structured progression to the game. There are eight AI opponents and each will have nine levels to choose from. The remaining nine levels will be unlockable bonus levels. The paid version will also have another nine level slots available for levels designed by the player using the level editor that will be included in the premium version.
I also need to complete the menu system for setting up games and accessing options. The menus will all be nicely animated and will allow the player to select levels that are unlocked either in single player campaign mode or for some two player fun. There will also be a "result" screen that will show the result of each game.
Something I am looking forward to is the development of achievements and experimenting with the new Google Play Games services to store player achievements and progress. Achievements and progress on my current games is all stored locally on the device, this is less than ideal and means that progression is lost when the player purchases a new phone. With Google Play Games integration I can solve this problem.
After that there are some smaller tasks such as ensuring that the advert integration is work well on the free version and adding some cheat modes and Easter eggs into the game. I expect it will also be necessary to add some tutorial hints on the first few levels that a player experiences just to help ease them into the concepts of the game.
If I feel I have some time I also want to try implementing multi-player over a wifi connection. This isn't a high priority and I can foresee problems as the game is quite fast paced and vulnerable to response latency. It could result in a significant advantage for the player that is hosting the game. Because of these concerns I am quite happy if multi-player over wifi waits until a later update of the game.
Finally, by the start of September I hope to be at a point where I can start the work related to the publication of the game. This will require creating all the artwork assets for the Google Play store, writing the game description with a view to maximising exposure in the app store search engine and creating effective icons. Past experience has shown that the app store icon and the game icon need to be different as they serve entirely different purposes. The app store icon needs to immediately tell the person browsing the store a story about the game whilst the icon shown on the device should simply look as nice as possible,
Following the model that has worked well with my slot machine games I will be releasing both a free and a paid version of Plasma Duel. The free version will be monetised with adverts that will appear discretely under the menu screens. The paid version will be free from adverts and will also have the extra feature of being able to create custom level designs with a built-in level editor.
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.
If there is one thing I have learnt in the past year it is the importance of being visible in Google's Play store. Improving your search ranking is the most important factor in generating downloads of your app. I practise a number of simple techniques to optimise the position of my apps in a crowded market place. I've talked about some of these techniques in the past but I thought it would be a good idea to collect together the best advice that I have into one post.
Make a great game
This is the most fundamental thing that will affect your position in app store search results . Unless you have a compelling game that is fun to play the rest of the techniques in this post won't work. If you have a great game but still aren't getting many downloads, then read on.
There is also something to be said here about the category of the game you are creating. If you make a game that is already in a crowded category then you are going to have a much harder time becoming visible. My games so far have fitted in to the "Cards and Casino" games category and it appears to be much easier to stand out there than in the "Arcade and Action" category for example.
Another factor that helped my own success was a gap in the market for a European style slot machine game. Prior to releasing Cherry Chaser there were a hundred "Vegas" style slots games but none that simulated European pub style games.
Target specific search keywords
If at all possible, include your most desired search keywords in to the title of your game. The Google Play store's search algorithm appears to put the highest weighting on the app title. This is why Super Snake is called "Super Snake Slot Machine" on the Play store. This also helps prospective users to quickly identify what sort of game it is.
In your apps description try to repeat the search terms that you want to target multiple times. In the description of Super Snake I use the term "slot machine" five times. I avoid using the terms superfluously as I suspect that Google have some sort of intelligence in their algorithm that ignores terms that are repeated too many times in quick succession.
Think about all the variants of your search term that people might use and then add those in to your description as well. I have a sentence that reads "If you like slot machines, one armed bandits or pokies, you'll love this game." which is included entirely for this purpose.
Super Snake Slot Machine is currently the third result for the search term "Slot Machine" in the UK Play Store.
Make your app store icon stand out
For the first week after I released Cherry Chaser the app store icon was anonymous. Nothing about the icon gave any hint as to the nature of the game and it looked very similar to every other icon next to it. At that point I changed to my current "fruit machine cabinet" icon and downloads of the game began to increase dramatically.
The new icon informs the person browsing the store about the nature of the game and the departure from the conventional rounded rectangle shape makes the icon stand out on the page.
I still use the original rounded rectangle icon for the launcher on the phone because the purpose is different. Icons on phones should look consistent and aesthetically pleasing and standing out in that context would be a negative for the game.
Target other languages
The Google Play store has a feature that allows you to auto-translate your listing into a large number of other languages. The only reason you should not use this feature is if you already know the language in question and can do a better job yourself. Even if you can speak the language you're targeting the auto-translate feature will probably give you a good basis from which to work.
My games have done extremely well in European countries such as Germany and Spain and that is due to auto-translated descriptions. I have had one customer point out that the games auto-translated description in German is bad bordering on the ridiculous, but I'm still getting far more downloads than if I had nothing in there.
Encourage long term engagement
A major factor in your position in the Play Store is the ratio of downloads to active installations. You could have a million downloads but if every user is uninstalling your app after ten minutes, Google will see that as being a bad sign about the quality of your game.
My solution to this problem was the addition of achievements as a game device. There is a reason that achievements have become ubiquitous in gaming and that is because they work. They trigger the part of the human psyche that says "challenge accepted!". Adding these into my games increased my user engagement enormously which had a positive effect on my active installation ratio and improved my search ranking.
The final piece of advice is to get your game reviewed and rated by as many of your players as possible. The higher your star rating the higher you will be on the search results. Put a link to the app store's review function somewhere in your app to make it as easy as possible for your user to rate your app.
Be careful about where and when you make the suggestion to review the app. I have used apps in the past that ask me to review them before I've even used them - bad idea. A common technique is to wait for a number of plays and then suggest that the player might want to now give the game a review.
My preference is to ask the player to rate my game when they have just won an achievement. It's fairly obvious that they will probably be feeling quite good about themselves and the game at this point so it seems like the best time to ask. So far this has been working out very well for me and all my apps have 4.5 star ratings in the store.
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.
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.
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.
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.
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.
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.
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.
I'm happy to say that the latest production from Exobyte games has now been successfully launched on the Google Play store. This posting will be a fairly lengthy description of the process of going from finished code to a released game.
Super Snake is based upon the same core engine as the highly successful Cherry Chaser slot machine game. After making Cherry Chaser I had the urge to create a feature ladder style machine and this is the result. I think it plays better than Cherry Chaser, collecting numbers on the win line makes it a more addictive experience.
The process began when I had a version of the code that was just about done and worked well in a testing environment. If you want to know more about the development process before that I can suggest the book "Beginning Android Games" by Mario Zechner. I'd also suggest getting hold of the LibGDX games library for Android also created by Mario as that shortcuts a lot of the steps described in the book. It's worth reading the book all the way through though just so you understand the engine you're working with.
The first thing that I did was begin working on the graphic components that are required by the Play Store. The main graphics required are a 512x512px play store icon (see image above) and a 1024x500px feature graphic. It also asks for a 180x120px promo graphic for which I use a cut down version of the feature graphic. The promo graphic seems to only be used if the game gets promoted on the front page, I'm not expecting this to happen as a slot machine isn't really unique enough to be featured, but I put one up just in case.
When promoting Cherry Chaser I gave thought to the best style of icon to represent the game in the store. People browsing the store will make a decision to click almost entirely based upon that image so I wanted mine to be as descriptive as possible. The most important thing I felt was that the icon looked like what the game was supposed to represent, that is a slot machine. I also wanted it to look distinctly like the european "pub style" slot machine that my games were inspired by. To create the icon I took a generic photo of a real fruit machine and overlaid a screen grab of my game onto it, cutting and skewing the image until it looked right.
Once the graphics were ready for the Play store I loaded the game's project file into Eclipse and used the export tool provided by the Android SDK to create an APK file for installation on phones. Part of the export process is to sign the games with a key, that's the thing that allows games to be "trusted" by phones and the bit that isn't needed if you tell your phone to install applications from unknown sources. The keys have an expiry date, I set mine to 75 years as I'm an optimist.
Next we go to the Play store developer console and hit the button marked "upload apk". Here's where we provide Google with with all the graphics they require for their listing. We also set the title and descriptive text. The generally accepted rule here is to have your primary search terms in the title text, thus the title of my game is "Super Snake Slot Machine" as opposed to just "Super Snake". The next rule is to scatter other target search terms casually through your descriptive text. I try to do this within the description keeping things readable but I see other apps just openly listing search keywords in the description.
At this point I apply a tip I learnt about getting your app as wide a distribution market as possible. At the top of the listing details there is an option to add text for other languages. If you go into this option you can select every other language listed there and then check a box to populated the text automatically with auto-translated text. This is going to be better than nothing when presenting your game to people that do not speak english and so there seems to be no reason not to do it. You may have to work with the word limits on some sections but trying different words usually works.
After that you simply check the consent buttons and then hit the publish button. Your game will appear on the Google Play market place about an hour or two later.
At this point I hit a problem, my in-game links to the Google Play store were all broken. An investigation of the problem revealed that the package name had a typo, it was called "net.exobyte.supernake" in the manifest file. Unfortunately the package name is the one thing that is fixed permanently and can't be deleted so I had to fix the manifest and then go through the whole publishing process again whilst also unpublishing the broken version.
Once the game was up and published I did a final step which was to create a gameplay video. I could have done this before I published but I sort of see it as the icing on the cake. I used FRAPS to capture video direct from the game running on my development PC (LibGDX allows you to develop in desktop java using JOGL) and the Corel Video Studio to put all the clips together into a montage. I'm quite pleased with the result and hopefully it will drive a few more downloads.
So now I am done and 24 hours have gone by since I released the game. Right now I have no idea if it will be successful or be lost in the depths of the Play store. When I released Cherry Chaser there were less than 20 games in the "New Free" tab in the Cards and Casino category, today when I looked there were over 150 games listed there. I don't know if that's because of a change in the way Google poll the listings but it seems to suggest that the competition in this niche of the market has heated up substantially.
Now it is all down to whether I get good user ratings. Currently I have two five star ratings and one one star rating. That's similar to how Cherry Chaser began so I'm not going to read too much into it. I think I've made a fun and worthwhile game, I hope enough other people do too.
Find Super Snake on the Google Play store
It's been a great couple of months for Exobyte games. The release of the premium version of Cherry Chaser went really well with healthy sales and people are loving having the animated coin tray instead of adverts.
Cherry Chaser has remained at a healthy position in the Google Play store charts, both in the paid and free sections of the casino games section.
Inspired by this success we're developing a new slot machine game with a different (and in our opinion more fun) feature board. The new game is called Super Snake and has a number trail which can be climbed by collecting numbers on the win-line. The game is in an alpha testing stage and hopefully we'll be able to release it some time in July.
We're also going to improve Cherry Chaser by releasing a new version with high definition graphics produced by a professional artist. We're outsourcing the artwork on odesk and have already had a great application from a highly talented artist. If you're an artist and you are interested in working with us on our games please have a look at our job advert here on odesk:
Inspired by the comments of some other Android developers, I added a “rate this app” button to my slot machine game in the last version. The invitation to rate the app appears whenever the player earns an achievement medal and this seems to work well in terms of encouraging good ratings and comments.
I released the new version just under a week ago and so far 60,000 users have upgraded out of a total active install base of 175,000 users. The number of ratings of my game has doubled from about 400 to just over 800 and the average rating has risen from 3.9 to 4.2. That’s a fairly significant rise in my mind.
Unfortunately all these extra positive ratings don’t seem to be helping my app store ranking. Just before the new version was released my game was at 62 in the free cards and casino games category, now it has slipped down to 68. The only reason I can think of for this is that the new version seems to have prompted quite a lot of users to uninstall the app. The total active installs has dropped from 182,000 to 175,000 since releasing the new version which is a steeper decline than previously.This suggests to me that the percentage of active installs has a higher weighting than the number and quality of the app’s ratings when it comes to app store ranking.
Regular updates on twitter