Google Play Game Services – erste Erfahrungen
Von Tomas Kasanicky am 30.10.2013
Was ist das überhaupt?
Auf der Google I/O 2013 wurden unter anderem auch die neuen “Google Play Game Services” präsentiert. Die erste Frage, die sich stellt ist, was bringen mir diese? Google bietet mit GPGS eine mehr oder weniger plattformunabhängige (Android, iOS und Web) Möglichkeit das Spielererlebis zu verbessern. Die GPGS beinhaltet 6 Dienste:
- Bestenlisten (Leaderboards)
- Erfolge (Achievements)
- Speichern in der Cloud (Cloud Save)
- Anmelden mit Google+ (Sign in with Google+)
- Diebstahlschutz für Apps (anti-piracy) -> nur für Android!
- Echtzeitmultiplayer (real-time multiplayer) -> nur für Android!
Der große Vorteil ist, dass Google ziemlich vieles von Haus aus anbietet. So geschieht die ganze Verwaltung, von z.B. Bestenlisten und Erfolgen, in der Google Play Developer Console von Google. Am Ende spukt diese ziemlich viele ID’s aus, die wir später für die Applikation brauchen. In dieser kann man dann zum Beispiel mit dem einfachen Befehl
mGamesClient.unlockAchievement("my_achievement_id");
ein Erfolg freischalten (genau es ist ein Einzeiler!). Will man eine Übersicht aller Erfolge haben (diese gibt es schon mit fertigem Design!), geht dies auch sehr einfach mit der Zeile
startActivityForResult(mGamesClient.getAchievementsIntent(), REQUEST_ACHIEVEMENTS);
Na gut, ein bisschen Vorarbeit braucht das Ganze, aber die meiste Arbeit nehmen einem die bereitgestellten Libraries ab.
Das erste Einrichten
Das erste Einrichten der Testapplikationen (die unter https://developers.google.com/games/services/downloads/#samples heruntergeladen werden können) gleicht einem Copy & Paste Marathon. Es müssen viele Dinge zwischen der Web Oberfläche (Google Play Developer Console) und dem eigentlichen Projekt in Eclipse kopiert werden, unter anderem die Zertifikat Erkennung (die mir sehr viele Probleme bereitet hat!), ID’s für Bestenlisten und Erfolge.
Bevor man dies tut, muss man noch zwei Libraries (google-play-services-lib, BaseGameUtils) in Eclipse einbinden und dem eigentlichen Projekt hinzufügen. Das ist aber schön in der bereitgestellten Anleitung (https://developers.google.com/games/services/android/quickstart) erklärt. Hier gab es keine unlösbaren Schwierigkeiten, bis auf die üblichen Importprobleme, die schnell gelöst werden können.
Hat man diese zwei Schritte gemacht, kann eigentlich nichts mehr schiefgehen, und die Applikation kann auf dem Handy installiert werden. Glaubt man! Die Schwierigkeit, die hier entstehen kann, es war zumindest bei mir so, ist das Signieren der Applikation, da nur signierte Applikationen mit dem Google Servern kommunizieren können. Jeder, der Applikationen in den Play Store stellen will, braucht einen sogenannten Keystore, mit dem Applikationen signiert werden. Dies geht normal über einen kleinen Dialog, bei dem Passwörter etc. eingetragen werden müssen. Natürlich wäre dieser Weg viel zu umständlich für das Testen der Applikation, deswegen generiert Eclipse einen eigenen debug.keystore, mit dem die Applikation automatisch signiert wird. Bindet man jetzt beide Keystores in die Developer Console ein, was normalerweise auch vorgeschlagen wird, kann es, wie bei mir, zu dem Problem führen, dass der eine oder der andere Keystore nicht erkannt wird. Das lag bei mir an der Tatsache, dass die “Play Game” Applikation, die für die Verwaltung am Handy zuständig ist, manche Daten im Cache speichert und deswegen der eine oder der andere Keystore nicht angenommen wird. Man muss also ab und zu den Chache löschen. Würde dies im offiziellen Troubleshooting stehen, hätte es mir einige Stunden Fehlersuche erspart!
Konklusio
Im Großen um Ganzen bin ich aber positiv überrascht, wie “einfach” alles geht, wenn es mal läuft. Die Dokumentation ist fast perfekt und die Beispiele geben einen guten Einblick in die ganze Thematik. Die vielen fertigen Elemente lassen sich sehr einfach einbauen und so können weitere Komponenten, wie Erfolge und Bestenlisten, in eigenen Spielen oder in den eigenen Applikationen eingebaut werden und das Plattformübergreifen.
The comments are closed.