When I first heard about the new Google Play game services, I got too excited. It wasn’t such a new thing. iOS has had it for a long time, and even on android, it’s been Amazon’s GameCircle has been there for a while. But I was waiting a long time for this feature to be available on Google Play. So, when I saw the announcement in my Developer Console, I got busy right away. My game Hungry Slimes had everything I needed it to have to start. It had achievements and an online leaderboard hosted on my website (and on GameCircle for Amazon). I had the creatives for leaderboards and achievements prepared already. So the first thing I did was to touch them a little and start preparing the environment.
The experience was great. Although I had some trouble in the beginning to make it work, I consider it as an easy feature to integrate. I don’t go further into this, as there are already a lot of articles circulating on the web about how great the games library is! Instead, I highlight the things that I didn’t like while I explored it so far.
Your Choices are Eternal!
As many other Google Play Developer features, game services also make you nervous when you are publishing something. I have had issues before with app pricing decision (free/paid), and in-app billing. In in-app billing, you fall into trouble if you:
- Create an in-app product
- Delete it.
- Try to create another product with the same name!
I understand if you cannot create another product with the same id, but the name is not justified for me. Amazon simply doesn’t let you delete the products. But Google Play allows you to do that, but then trashes the name for you and there is no un-delete option. So an advice for developers: Always change the product name to something meaningless before deleting!
When we come to game services, there are these kind of things again:
- You cannot link more than 20 apps, and this INCLUDES apps that you delete. While this is generous enough, it brings the question of “why?” Personally, I had to trash two of them.
- You cannot change the certificate fingerprint. I suppose there is a technical reason.
- You cannot change whether or not achievements are hidden, once you publish them. In Amazon’s GameCircle you can do that.
- You cannot change the ordering (if larger is better or smaller). I don’t know what technicality is behind this, because an indexed database can usually be sorted in either direction. But we are talking about Google’s heavily distributed data, so maybe it is not as easy as it appears.
- You cannot change the minimum and maximum allowed scores, once you publish. I had a major update for Hungry Slimes a while ago, in which the score scale completely changed. I’m glad I did it before Google Play’s game services!
In one word, Google Play has many of these options that cannot be changed later, and they keep this habit in their new services.
Signing Certificate Fingerprint
If you are not familiar with this, this is a long string that identifies the signature of your app. It is a secure way to check if the app is signed with your signature. Google Play uses it to verify the legitimacy of game-related requests. Something weird I found out with a price was that when you link your app to a games project, Google simply generates some random fingerprint and pre-fills the corresponding field. When I was creating my project, I was too excited to enter my own and made this silly mistake of thinking Google already has the fingerprint and is filling it for me. So I just added the apps and it took me a day to identify and fix the problem. So here I give another advice for developers.
If you ever make the mistake I made and enter a wrong fingerprint, don’t worry if you cannot revert the changes in the Developer Console. Good news is, you can add as many instances of the same app package name as you want (still less than 20)! In this case:
- Go to API Console.
- Navigate to your games project.
- Go to API Access
- Delete all Client IDs
- Now, back your Developer Console, add the packages again.
- Remember, it should ask again to authorize, if it doesn’t simply change the package names of the faulty items to some other app of yours. You can do that.
To be honest, I don’t really understand why such an important field should be pre-filled with something random.
What Can Be Better
Here I will just mention a few things that can make the experience better both for the developers, and for gamers.
Google Play has already enough features compared to other app stores as far as game services are concerned. However, as a gamer you can think of some other stuff that can make it even nicer and make Google Play’s features really stand out. As a developer, I miss those stuff for my upcoming game:
- Stacked achievements: What I mean is something like this: imagine you have an achievement that is unlocked when you kill one boss, and one when you kill five bosses. In order to get the five-boss achievement, first you get the first one. In this case, you just want to display only the five-boss achievement, because it already implies a single boss has been killed. Think of levelling achievements in World of Warcraft as another example. Keeping all these achievements in view makes the list too long.
- Achievement Rewards: Hungry Slimes has a reward for some of the achievements. When I migrated to Google Play game services, I couldn’t migrate this feature (i.e. showing the reward in a distinct way). This is just small detail. But I think many would like it, too.
I haven’t played around with the online multiplayer support. I will probably post about it when I do.
This is specific to developers. I’ve had the online leaderboards before in Amazon AppStore, and you can choose the identifier for each of them. Instead, Google assigns a random id to each achievement and leaderboard. This was particularly troublesome because I have one code that works on both app stores. I had to have two sets of ids set for leaderboards, and it just made my code dirty. Luckily I hadn’t set up the achievements yet in Amazon’s GameCircle, so I just copied the identifiers from Google Play.
It seems that the achievements and leaderboards are currently only available from within the game itself. It would be nice to be able to view, compare, or share their game activities from a computer through Google+.
“Google Play game services” is a wonderful and well-designed solution. It is easy to integrate by the developers and easy-to use by users. With a few changes and additions, it will easily be the best-available games package for the android platform.