Google Play game services のサンプルを動かしてみる

  • 57
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Googleの新しいサービス「Google Play game services」を試してみます。

まずはこちらから。
Google Play Game Services — Google Developers

他の似たようなサービスとほとんど同じ機能が揃ってそうです。
しかも、Android、iOS、Webに対応しているんですね。これは便利そう。
さっそく試してみます。
「Getting Started」を見てみましょう。

Getting Started for Android / Google Play Game Services — Google Developers

英語ですね。困りました。全部は読めないので、わかる単語を頼りに後は勘で進めることにしましょう。

Before you begin

これはアンドロイドのアプリが開発できる環境を用意しとけ、ってことですかね。飛ばしましょう。

Step 1: Download the sample app

サンプルコードのダウンロード

サンプルをダウンロードしろ、って書いてありますね。
Downloads #Sample games / Google Play Game Services — Google Developers
Sample gamesという表にはいくつかサンプルの種類がありますが、どこも同じリンク先ですね。GitHubです。

playgameservices/android-samples · GitHub
適当なディレクトリにダウンロードしときます。

コマンド
git clone git://github.com/playgameservices/android-samples.git

Google Play Services SDK のダウンロード

Getting Startedのページに戻ります。
続いて、Google Play ServicesのSDKをダウンロードしろとあります。
Setup Google Play Services SDK | Android Developers

Google Play game Services SDKのインストールは、SDKマネージャーから行うみたいですね。
SDKマネージャーを起動して、 Extras > Google Play services にチェックを入れてインストールします。

01_sdk_install.png

以下の場所にライブラリがあるらしいので、Eclipseに(コピーして)インポートしときましょう。
<android-sdk-folder>/extras/google/google_play_services/libproject/google-play-services_lib

インポートしたら自分の環境ではエラーが出ました。↓こんなエラーメッセージです。
[2013-05-18 23:57:01 - google-play-services_lib] Unable to resolve target 'android-8'
API Level 8のSDKが必要なようです。インストールされていなければ、これもSDKマネージャーでインストールしときましょう。
API Level 8のSDKをインストールして、Eclipseを再起動したところ、ADTも最新版(22.0.0)が必要だと怒られました。これもインストールしときます。
ここまでやったら、またGetting Startedのページに戻ります。

サンプルコードのインポート

次はサンプルをEclipseにインポートしろと書かれているようですね。
先ほどダウンロードしたサンプルからTypeANumberBaseGameUtilsをインポートします。こっちもコピーをインポートしとくのが良いかと思います。

この2つのプロジェクトはインポートした段階ではエラーになっていると思います。
ライブラリを正しく参照するように設定してエラーを消しましょう。
まず、BaseGameUtilsですが、パッケージエクスプローラからプロジェクトを右クリックして、Properties > Androidから下段のLibrary欄でgoogle-play-services_libを追加します。あと、is Libraryのチェックが外れている場合はチェックもしておきましょう。
続いて、TypeANumberの方も同様にLibraryの設定画面を開きます。こちらはis Libraryのチェックは入れずに、google-play-services_libBaseGameUtilsを追加します。

パッケージ名の変更

エラーが消えたら次に進みます。
TypeANumberのパッケージ名を変更しろと書かれています。何ででしょうね。先の説明をチラッと見ると、実際にデベロッパーコンソールでアプリを登録しそうなことが書かれているので、パッケージ名が重複しないようにしなければいけないんでしょう。たぶん、ですけど。

TypeANumberAndroidManifest.xmlを開きます。
パッケージ名をcom.google.example.games.tancから、別の名前に変えます。
com.googlecom.examplecom.androidから始まるようなパッケージ名はダメだそうです。自分が使えるパッケージ名を使いましょう。

Rクラスへの参照を解決する

AndroidManifest.xmlのパッケージ名を変更すると、リソースを使っているクラスからの参照が切れてしまってエラーになるので、各ソースの参照先を変更したパッケージ名に直しましょう。
WindowsならCtrl+Shift+O、MacならCmd+Shift+Oのショートカットが便利ですね。

Step 2: Set up the game in the Developer Console

Developer Console

デベロッパーコンソールを開け、ということのようです。
Developer Console
デベロッパー登録していない人は試せないということなのでしょうか。

ゲームの登録

デベロッパーコンソールを開いたらゲームコントローラのようなアイコンをクリックします。以下のリンク先の絵がわかりやすいです。
Step 2. Add your game to the Developer Console / Google Play Game Services — Google Developers

Google Play ゲームをセットアップのボタンを押します。
02_dev_con_start.png
セットアップのための画面が表示されますね。タブはゲームで Google API をまだ使用していませんを選びましょう。その他の項目は↑の2枚目の絵のとおり入力するのが楽ちんで良いかと思います。
03_dev_con_setup.png
入力が終わったら次へボタンを押します。

ゲームの詳細を入力する画面が表示されます。
04_dev_con_detail.png
特に指定はないようなので、適当に入力してしまいましょう。
登録用の高解像度アイコンは以下のリンク先に用意されています。
Downloads #Graphics / Google Play Game Services — Google Developers
至れり尽くせりですね。表のGames project images for Developer Consoleという項目の3枚の画像を使いましょう。
入力が終わったら保存ボタンを押します。

OAuth 2.0 クライアントIDの生成

左側のメニューから2.リンク済みアプリをクリックします。リンク済みアプリと書かれたページが表示されます。
05_dev_con_link.png
この先は以下のページ通りに進めていきます。
Step 3. Generate an OAuth 2.0 client ID / Google Play Game Services — Google Developers
Android アプリのリンクボタンを押すと、いくつかの入力項目が表示されます。
アプリの名前はすでに入力されていますね。
パッケージ名は、パッケージ名の変更で変えたパッケージ名を設定しましょう。
マルチプレイヤー設定著作権侵害対策はオフで良いみたいです。
06_dev_con_link.png
画面の上の方の保存して次へをクリックします。

画面が切り替わります。今すぐアプリを承認ボタンを押します。
07_dev_con_approval.png
Branding Informationという画面が表示されたら、各項目を入力してContinueボタンを押しましょう。
08_dev_con_branding.png
Home Page URLはとりあえず自分のホームページURLが良いんではないでしょうか。

次はClient ID Settingsという画面が表示されます。
09_dev_con_client_id_setting.png
Signing certificate fingerprint (SHA1):のところには、(たぶん)リリースに使うのと同じKeystoreのフィンガープリントを登録します。Keystoreはデバッグ用のものでも良いようです。
デバッグ用Keystoreのフィンガープリントを調べる場合は以下のコマンドを実行します。

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -list -v

パスワードの入力を求められるのでパスワードを入力しましょう。デバッグ用Keystoreのパスワードはandroidらしいです。
出力された結果のうちSHA1:の後ろの文字列をコピーして、Signing certificate fingerprint (SHA1):の欄に貼り付けましょう。貼り付けたらCreate clientをクリックします。

クライアントIDが表示されます。このIDはリンク済みアプリからいつでも確認できるようです。
10_dev_con_client_id.png
Webベースのアプリの場合、クライアントシークレットというIDも必要になるみたいですね。
あとはアプリ名の右側に表示されているのがアプリケーションIDというようです。

必要な情報を記録

次の2つを覚えておきます。
* アプリケーションID
* 登録するのに使ったKeystore

実績

デベロッパーコンソールの実績タブを選択します。
実績を追加ボタンを押して、サンプルのように実績の項目を追加します。

名前 説明 特別な指定
Prime Get a score that's a prime number. なし
Humble Request a score of 0. なし
Don't get cocky, kid Request a score of 9999 in either mode. なし
OMG U R TEH UBER LEET! Receive a score of 1337. 初期状態を非表示にする
Bored Play the game 10 times. 増分実績にチェックを入れて、手順数に10を指定する
Really Really Bored Play the game 100 times. 増分実績にチェックを入れて、手順数に100を指定する

11_dev_con_archivement.png

リーダーボード

ランキングのことですよね、リーダーボードって。
デベロッパーコンソールのリーダーボードタブを選択します。
リーダーボードを追加ボタンを押して、サンプルのようにリーダーボードを追加します。

名前 スコアの形式 小数点以下の桁数 順番付け
Easy High Scores 整数 0 スコアは高いほど良い
Hard High Scores 整数 0 スコアは高いほど良い

12_dev_con_leader_board.png

テストアカウントの追加

デベロッパーコンソールのテストタブを選択すると、テストアカウントを追加することができるようです。
Google+が有効になっているgmailアドレスを登録するだけっぽいですが、自分は最初からテストアカウントとして登録されているようなので、今回は追加はしません。

Step 3: Modify your code

いよいよコードの修正を行います。

各IDの変更

res/values/ids.xmlを開いて、上で登録した各IDで書き換えます。
実績の方はデベロッパーコンソールの順番と、ids.xmlの順番が違うので気をつけましょう。名前で判断できます。

今回のサンプルには既に記述済みですが、自分でGoogle Play Services SDKを使うときは以下の記述を忘れずに。

AndroidManifest.xml
<meta-data android:name="com.google.android.gms.games.APP_ID"
        android:value="@string/app_id" />

Step 4: Test your game

動作を確認してみましょう。
登録したKeystoreがデバッグ用のものであれば、Eclipseから直接実行すれば確認できます。
デバッグ用のKeystore以外を使っている場合は、そのKeystoreで署名して、端末にapkをインストールしましょう。
自分の環境では一度ビルドが失敗したのですが、BaseGameUtilsTypeANumberのプロジェクトをクリーンしたら、その後のビルドは成功しました。何だったんでしょう。

起動すると、スコアを送信したり、実績を見たり、リーダーボードを見たりできました。
Google+でサインインする必要がありましたけれども。
13_screen_shot.png
サンプルを少し修正して動作させただけではありますが、英語がちゃんと読めない自分でもすんなりできたのは嬉しいですね。これは是非とも自分のアプリに組み込んでみたいです。

実際にコードから実績の解除や、リーダーボードへのスコアを送信するのは次のステップできっと紹介されていると思いますが、今回はここまで。