いろいろガンガンいこうぜ。体も大事に

普段はJavaでAndroidアプリ開発しているプログラマーのブログです。

Google Play Game ServiceとBaseGameUtilsの簡易メモ

Google Play Game ServiceをBaseGameUtilsというライブラリプロジェクトを利用して使う際の簡易メモです。

プロジェクトの構成のメモ

 ゲームのプロジェクトには2つのライブラリプロジェクトが必要です。Eclipseのプロジェクト名で言うと,

  • google-play-service_lib
  • BaseGameUtils

という2つです。

 google-play-service_libプロジェクトのクラス群をBaseGameUtilsは使用しています。そのためEclipseで使う場合,BaseGameUtilsの設定でgoogle-play-service_libにライブラリプロジェクトを登録してあげる必要があります。

 単純なことをするだけでいいのであれば,自作のゲームプロジェクトのActivityはBaseGameUtilsプロジェクト内のBaseGameActivityを継承して,そのクラスで定義されたメソッド呼んだり,そのメソッドで取得できるクラス・インスタンスを利用すれば良さそうです。

BaseGameUtilsのメモ

 BaseGameUtilsというプロジェクトには2つのクラスがあります。

  • BaseGameActivity
  • GameHelper

の2です。

 GameHelperクラスは,GamesClientなどのクライアントクラスの管理をしています。また,デバックログの出力やダイアログを出力したり,google-play-service_lib内のクラスを用いてサインインやコネクションの処理もしているようです。

 BaseGameActivityはActivityのサブクラスで抽象クラスになっています。抽象メソッドは,

  • onSignInFailed
  • onSignInSucceeded

の二つです。beginUserInitiatedSignIn()というメソッドを呼び出して,成功もしくは失敗した際に呼ばれるメソッドが抽象メソッドとして定義されています。

 先ほどのGameHelperを内部で保持していて,GameHelperのメソッド群をラップしていて,いくつかpublicメソッドやprotectedメソッドとして定義されています。

 このBaseGameActivityを継承して,抽象メソッドを実装したり,クラスで定義されたメソッドを呼び出したりすれば,ある程度簡単にGoogle Play Game Serviceが利用できるのでは無いかと思います。

BaseGameActivityのサブクラスで呼び出せるメソッド

サインインボタンをクリックしたときに呼び出す

beginUserInitiatedSignIn()

サインアウトボタンをクリックしたときに呼び出す

signOut()

サインインしているかどうかを調べる

isSignedIn()

アチーブメント表示アクティビティに遷移するためのIntent作成

getGamesClient().getAchievementsIntent()

リーダーボード表示アクティビティに遷移するためのIntent作成

getGamesClient().getAllLeaderboardsIntent()

プレイヤー名の取得

getGamesClient().getCurrentPlayer().getDisplayName()

アチーブメントを解放する

getGamesClient().unlockAchievement("#アチーブメントのID#")

増分アチーブメントのポイントを増分する

getGamesClient().incrementAchievement("#アチーブメントのID#", #増分ポイント#)

リーダーボードにスコアを登録する

getGamesClient().submitScore("#リーダーボードのID#", #スコア#)