MOGA controllers and Android TV

I just released SpaceCat HD for Android TV. What it should have been a very simple and straight forward process turned out to give me quite a headache.

If you have a game that is gamepad-ready. Chances are that you are supporting MOGA controllers, simply because they are one of the best. If that’s the case you may also have this problem.

The not-so-obvious problem

If you want to publish for Android TV, you essentially have to do a few things in your manifest (see the full article on developer.android.com):

  • Declare a TV Activity using an intent filter of the category CATEGORY_LEANBACK_LAUNCHER.
  • Add a banner to the application (android:banner=”@drawable/banner”).
  • Declare it as a game (android:isGame=”true”).
  • Specify that it knows how to handle controllers.
  • Specify that touchscreen is not required.

All these are very straight forward, but some of them require you to compile with targetSDK=21 (a.k.a. Lollipop) because is when they were introduced.

Another interesting change on Lollipop is the requirement of all service intents to be explicit. Any non-explicit one will throw an exception on runtime. This requirement is triggered when you compile with targetSDK=21.

And, obviously, the MOGA library does use a service with a non-explicit intent.

The invalid approaches

The first approach is to compile with a lower targetSDK, but then you can’t be on Android TV since the required manifest options aren’t available.

The second approach is to remove MOGA support, but then, the people that has those controllers will stop to have it supported.

The third option is to have multiple apks, one for Android TV with targetSDK=21 and another one for everyone else with a lower targetSDK. This sounds reasonable, but there is no clear way to separate Android TV from the rest and -as I was told by a Google Dev advocate- this was done in purpose.

But hold on, there is one more option, and it is the most obvious one, once you think about it.

The obvious solution

You just need to modify the code of the MOGA library to make it be an explicit intent. Except that the library is not open source.

It was pointed out to me by Robert Broglia, developer of Snes9x-EX+, that you could just use a decompiled version of the library, and then modify the init method. As you can see on his github project.

I’m really not a fan of having full libraries inside the source code, so I tried to just extend the controller to replace the init method for one using the explicit intent, that would have been a few lines of code, but the class is final.

At the end I created a new Controller that uses the explicit intent (and basically everything else is the same) and placed it under the package com.bda.controller.

It could have been easier

All this could have been much easier if

  • MOGA had updated the library
  • The Controller class wasn’t final

If you have a game that is MOGA-enabled and you want to port it to Android TV, I hope to have saved you some headaches.

SpaceCat HD and OUYA

A few weeks ago I released SpaceCat HD for OUYA.

SpaceCat is the only game I have that makes sense to be played with a gamepad, and because of that it supports most of the gamepads already, including Gametel, MOGA, NVidia Shield and some others. It was also ported to GameStick, but that is another story.

A different SpaceCat

There is SpaceCat (3D), which is a Free2Play game with really low conversion. The first 24 levels are free and the remaining 24 levels can be purchased with In-App Currency.

Then there is SpaceCat HD, which is a premium game. All the levels are unlocked and it has no ads.

OUYA has a Free to Try mode, so I needed to find some middle ground.

SpaceCat HD for OUYA has the first 9 levels for free, then the game can be unlocked with a single payment.

ouya_icon

Some other changes were required for OUYA, mainly updating some assets and strings to display the special names of the buttons. Also reimplement In-App purchases to use the OUYA library. All in all, It was actually quite straight forward.

A better App Store

One of the best things of OUYA is that it is a much better App Store than Google Play.

New releases get visibility, so does the top 30 games and so does the hand-picked features.

There are about 20 new games released each week, so you can expect to be in the home screen for about a week. Be aware that the screen has space for 4.5 tiles and to see the rest users have to scroll. Your first day is probably going to be the best.

Show me the numbers

This is the chart of the downloads of SpaceCat during the first weeks on OUYA.

spacecat_ouya_downloads

We have a solid start on the first 2 days when there were ~75 downloads. This is when SpaceCat HD was on the top of “New Releases”. As you can see, the longer the users have to scroll to find you, the less downloads you get.

Then SpaceCat was featured. That put it on the front. It was the first thing you saw when you start your OUYA, literally the best spot, and it really made a difference: Over 125 downloads per day.

spacecat_featured_ouya

After a few days, the feature games rotate, and you can see how the downloads per day get down to just 50.

But here comes the last factor. Given the amount of people that downloaded (and played) the game, it also made it into the top 8 of the trending games, which helped it getting a decent amount of downloads. I’m proud to say that it even topped Final Fantasy III.

ouya_top8But after the featuring, and given that SpaceCat is a game you usually play for a week and you either finish it or get bored, it slowly disappeared from the top 30 and not it only gets a few installs per day.

How does it compare to Google Play?

The amount of downloads is in a complete different league. When SpaceCat was featured on Google Play (on 2012) it was getting over 50,000 downloads per day, 400 times more than on OUYA, Even today, SpaceCat (3D) get about 100 downloads per day.

But, partly because the monetization is different and partly because of the public is different, the percentage of users that purchased the game is way higher on OUYA than on Google Play.

The conversion of SpaceCat HD on OUYA is over 5%. Which is very impressive.

Also, there is the human aspect. The people from OUYA were a pleasure to work with: Diligent, responsive and professional. Google Play has improved that, but they still have a long road to go.

TL;DR;

There is a chicken-and-egg problem with OUYA: There are not many players, so it is not worth developing for it alone. Since there are not many games for OUYA (750 is still an impressive amount), it is not very attractive for players.

OUYA has the Free the games initiative to break the vicious circle. I like it, and I really hope they succeed.

If you have a game that already supports gamepads, you should totally port it to OUYA, it is not much work and it is a very rewarding platform. If you have a good game, the chances of being featured are very high, and that is always nice.

I wish there were more OUYAS out there so I could develop a game exclusively for them, but right now it is just not viable. Time will tell.

SpaceCat returns in HD

Today I announce a new version of the most popular title of The Pill Tree. We bring you SpaceCat HD.

space_cat_hd_xxhpi

Back in 2011, when we were developing SpaceCat, phones did not had enough memory and we had to reduce the size of the textures to make the game playable. Some tears were spilled when downsizing the textures, but it was necessary.

Today, that is no longer a limitation. Modern devices can use the original textures without any problem, so we have put them back. Check the scenarios and how they look a lot better.

SpaceCat

device-2013-10-24-164530

SpaceCat HD

device-2013-10-24-164511

SpaceCat HD is a premium app, and it comes with a value pack:

  • Ad-free
  • Vents world is unlocked
  • 500 pills instead of 200 at the beginning of the game

But we didn’t just put better textures, we did some other upgrades to SpaceCat

  • Improved gamepad support (including Green Throttle)
  • Integration with Play Games
  • A revamped shop for spaceships and cats
  • Tips on the loading screen

Get SpaceCat HD from Google Play

Speaking at GDC China

The talk “The Indie Game Developer Survival Guide” is part of the Mobile and Smartphone Games Summit of GDC China.

The talk is inspired by other guides like “The Hitchhikers’ Guide to the Galaxy” and “Zombie Survival Guide” and it is a compendium of the post-mortem of the games of The Pill Tree and a post-mortem of The Pill Tree as well.

The talk goes over the current mobile gaming landscape, the different business models, how they worked for us, lessons learned and tips so you can increase your chances of survival as an Indie Game Developer.

GDC is a great conference for game developers, be it USA, Europe or China, and I am really humbled that they invited me to speak there.

However, China is very far away, but for the ones in the Netherlands, I will be presenting a slightly different talk at DroidConNL this year: “The Mobile Indie Developer Survival Guide” which includes some more details about how apps do.

The slides will be available on Slideshare soon after the conference.

Featured Levels on Android Market

I stated many times (like in this slides) that between being featured or not on Android Market (now Google Play) means to Fly or Die.

Previously, there were 2 levels of featured; each week new titles ware added and the oldest ones ware shifted out. First you were into the top list -appearing on the header- and into the featured list, that was sorted at random. After the first week you were pushed out of the top, and after one month you were pushed out also from the featured list. It looked like this when Chalk Ball was featured past year:

This changed with the update of Android Market that presents the apps as “tiles”. Now there is a main screen, then another one for most of the categories and, in the case of games, there is another one for the genre. After that you still can browse the normal lists. It looks like this now that SpaceCat is featured:

While I believe that Android Market has too many screens and lists to the point that is confusing to the users and many of these screens are too many clicks and swipes away that they are barely reached, that is not the topic of this post.

Today I want to talk about the stages in being featured inherent to this hierarchical structure. It goes from more to less. I have classified them according to Dragon Ball Saiyan states, to emphasize the power gap.

Featured in Home Screen: Super Saiyan 3

When new featured titles appear, they are usually put on the big banner of the web and also the main screen of the app. This is the first screen users see when they open the market and -I suspect- it has a huge impact.

Needless to say, when you are featured on the home page, you are also featured in the category and subcategories and you appear in the Staff Picks list.

Unfortunately I can’t give you figures about this because SpaceCat was featured directly under Games, but feel free to extrapolate the results from the other cases.

Featured in Category: Super Saiyan 2

This is the screen when users go to find something specific. Fortunately for us Games has an entry from the homepage and it is one of the most visited screens of all the market. SpaceCat was placed there for around 2 weeks, sometimes as a big banner, sometimes as a small one.

Being there we averaged 50k downloads per day. Mind you, SpaceCat is a Free to Play game, a paid app will have a lot less downloads -as we experienced with Chalk Ball-. Still, 50K downloads a day is totally massive. To put it in context SpaceCat had 50K downloads in total from the previous 6 months, including more than 10 blogs reviews, so yes: WOW.

Of course, during this time you are also listed on the subcategory and in the Staff Picks, which just adds to the number of downloads.

Once you had your time here, it is time for some fresh meat, so you will logically be pushed to be only in your subcategory and the staff picks list.

Featured in Subcategory: Super Saiyan Full Power

During this period we averaged 15k downloads a day. That is half what we got per day when Rabbit and Eggs (an Easter themed free game) was featured on the Main Page during Easter 2011.

The number of Android devices out there has grown a lot over the past year. With the figures of past Easter and now I can say that the number of potential users definitely has grown in the same proportion.

Then, after the standard month period, your app will be removed from the Staff Picks list, but will remain on the subcategory for a while longer. Thankfully there are more spots now on Android Market and you are not pushed completely out at that moment.

Featured in Subcategory: Super Saiyan

This was a bit surprising bit for me. When the app was pushed out of the Staff Picks, but still on the subcategory, we observed a drop to “just” 5k daily installs. I was expecting the importance of Staff Picks and subcategory to be the opposite.

Although that is just 10% of what we got on the first stage, it means a lot of downloads and as an indie developer I appreciate this slow decrease in popularity and downloads instead of the sharp drop we experienced a year ago with Chalk Ball.

Although 5k downloads a day sounds small when you come from being on the top, it is still a very good amount of downloads you are very unlikely to get from any other place.

Note: Platty Soft is the current company responsible for the games of The Pill Tree.

Guru Session: Tools for Android Game Development

On March 24th, I will be giving a guru session at Mediamatic Bank (Amsterdam) about tools to build games for Android. This session is organized partly by Appsterdam and partly by the Dutch Android User Group, that’s why we have half of the seats on the Appsterdam meetup page and the other half in the DutchAUG page

There are a few spots left, and I believe it is going to be an interesting one, so go and get one!

I will publish the slides on this blog once the session is done.

Abstract

When thinking about building a game for Android, one can write it from scratch. Or you can look for tools, libraries and engines that already exist so you don’t have to reinvent the wheel.

We did that at The Pill Tree for both Chalk Ball and Space Cat, both games have different requirements and the solutions we found were also different. In this session I will summarize the strong and weak points of AndEngine and jPCT-AE and the uses you can make of them.
I will also give a brief explanation of other libraries that are interesting, such as ScoreLoop / OpenFeint for scores and awards and give a short introduction to virtual currency and incentivated ads.
After the talk, I will provide the people with the samples of both engines and we will play around with them.

Why piracy in Android is not that important

Many people complain about piracy on software. A lot of mobile developers complain about piracy on Android. I was never too worried myself, this is why.

It is true, piracy exists. As a matter of fact, when we launched Chalk Ball at The Pill Tree, it got cracked in a couple of weeks. We were checking for blog reviews at a time and we found it, so it was even easy to find.

Cracking an Android app is not very complicated, but it is not trivial either. If someone takes the effort to do it, it means you are already in the way to succeed. Having your apps cracked is something to be proud of. So if it happens to you, don’t get angry, be proud of your work.

The cracked version was almost complete, just facebook integration was broken. There you have a tip: Since the signature can not be recreated, If you want your app to be really hard to crack, use facebook single sign in to login into your app.

Now think about the effort the user has to make to install an app from somewhere that is not Android Market.

First you have to seek and check an option labeled “Unknown Sources”. Many users will not do that, simply because is scary, and it is true, you are installing apps from untrusted sources anyway, if they cracked a game they can put a trojan inside it as well, right?

Secondly, downloading it and installing from your Android device is usually not trivial, you may need to download it in your computer, copy it to the sdcard, and then open a file browser to install it. Not complicated, but long and boring.

It is all about the cost of opportunity. If someone is about to install an application from an unknown distributor on the internet -having a free version that is enough for a few hours of play- and the process is going to take you more time than using the official channel, to save scarcely 2$, then is not a lost sale. This person was not going to buy it anyway.

Given that the problem with mobile games is mainly the visibility, each install -even if it is from a piracy source- is going to help you. That person is going to show the app to other people, and since there was an extra effort required, he is more likely to show it than those who just downloaded the free version. In the end, it is some sort of advertising.

These are my reasons to state that it is not a lost sale, and also that it is some sort of advertising. However, you may not be convinced by my arguments, then I’ll tell you about the ultimate tool to battle piracy on Android. Ready?

It is called the GetJar Gold program. They give paid applications for free, and you know what? They pay you per download. Sounds crazy, I know, but it works. They are a well known source and they have the latest updates since they work with the developers.

Once your app is part of GetJar Gold, piracy is meaningless. You just need to install their App Store and from there on, you just download the gold apps for free, almost as easily as from Android Market.

Using GetJar has a higher opportunity cost for a user than using the market, but less than downloading an apk from the Internet. So still, many people will get your app from Android Market. You are offering the people that is up to make an extra effort to get the app for free a legal alternative to piracy.

Everyone wins, piracy loses.