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 にチェックを入れてインストールします。
以下の場所にライブラリがあるらしいので、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にインポートしろと書かれているようですね。
先ほどダウンロードしたサンプルからTypeANumber
とBaseGameUtils
をインポートします。こっちもコピーをインポートしとくのが良いかと思います。
この2つのプロジェクトはインポートした段階ではエラーになっていると思います。
ライブラリを正しく参照するように設定してエラーを消しましょう。
まず、BaseGameUtils
ですが、パッケージエクスプローラからプロジェクトを右クリックして、__Properties > Android__から下段の__Library__欄でgoogle-play-services_lib
を追加します。あと、__is Library__のチェックが外れている場合はチェックもしておきましょう。
続いて、TypeANumber
の方も同様にLibraryの設定画面を開きます。こちらは__is Library__のチェックは入れずに、google-play-services_lib
とBaseGameUtils
を追加します。
パッケージ名の変更
エラーが消えたら次に進みます。
TypeANumber
のパッケージ名を変更しろと書かれています。何ででしょうね。先の説明をチラッと見ると、実際にデベロッパーコンソールでアプリを登録しそうなことが書かれているので、パッケージ名が重複しないようにしなければいけないんでしょう。たぶん、ですけど。
TypeANumber
のAndroidManifest.xml
を開きます。
パッケージ名をcom.google.example.games.tanc
から、別の名前に変えます。
com.google
、com.example
、com.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 ゲームをセットアップ
のボタンを押します。
セットアップのための画面が表示されますね。タブはゲームで Google API をまだ使用していません
を選びましょう。その他の項目は↑の2枚目の絵のとおり入力するのが楽ちんで良いかと思います。
入力が終わったら次へ
ボタンを押します。
__ゲームの詳細__を入力する画面が表示されます。
特に指定はないようなので、適当に入力してしまいましょう。
登録用の高解像度アイコンは以下のリンク先に用意されています。
Downloads #Graphics / Google Play Game Services — Google Developers
至れり尽くせりですね。表のGames project images for Developer Console
という項目の3枚の画像を使いましょう。
入力が終わったら保存
ボタンを押します。
OAuth 2.0 クライアントIDの生成
左側のメニューから2.リンク済みアプリ
をクリックします。リンク済みアプリと書かれたページが表示されます。
この先は以下のページ通りに進めていきます。
Step 3. Generate an OAuth 2.0 client ID / Google Play Game Services — Google Developers
Android アプリのリンク
ボタンを押すと、いくつかの入力項目が表示されます。
アプリの名前
はすでに入力されていますね。
パッケージ名
は、パッケージ名の変更
で変えたパッケージ名を設定しましょう。
マルチプレイヤー設定
、著作権侵害対策
はオフで良いみたいです。
画面の上の方の保存して次へ
をクリックします。
画面が切り替わります。今すぐアプリを承認
ボタンを押します。
__Branding Information__という画面が表示されたら、各項目を入力してContinue
ボタンを押しましょう。
Home Page URLはとりあえず自分のホームページURLが良いんではないでしょうか。
次は__Client ID Settings__という画面が表示されます。
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はリンク済みアプリ
からいつでも確認できるようです。
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__を指定する |
リーダーボード
ランキングのことですよね、リーダーボードって。
デベロッパーコンソールの__リーダーボード__タブを選択します。
リーダーボードを追加
ボタンを押して、サンプルのようにリーダーボードを追加します。
名前 | スコアの形式 | 小数点以下の桁数 | 順番付け |
---|---|---|---|
Easy High Scores | 整数 | 0 | スコアは高いほど良い |
Hard High Scores | 整数 | 0 | スコアは高いほど良い |
テストアカウントの追加
デベロッパーコンソールの__テスト__タブを選択すると、テストアカウントを追加することができるようです。
Google+が有効になっているgmailアドレスを登録するだけっぽいですが、自分は最初からテストアカウントとして登録されているようなので、今回は追加はしません。
Step 3: Modify your code
いよいよコードの修正を行います。
各IDの変更
res/values/ids.xml
を開いて、上で登録した各IDで書き換えます。
実績
の方はデベロッパーコンソールの順番と、ids.xmlの順番が違うので気をつけましょう。名前で判断できます。
今回のサンプルには既に記述済みですが、自分でGoogle Play Services SDKを使うときは以下の記述を忘れずに。
<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をインストールしましょう。
自分の環境では一度ビルドが失敗したのですが、BaseGameUtils
とTypeANumber
のプロジェクトをクリーンしたら、その後のビルドは成功しました。何だったんでしょう。
起動すると、スコアを送信したり、実績を見たり、リーダーボードを見たりできました。
Google+でサインインする必要がありましたけれども。
サンプルを少し修正して動作させただけではありますが、英語がちゃんと読めない自分でもすんなりできたのは嬉しいですね。これは是非とも自分のアプリに組み込んでみたいです。
実際にコードから__実績の解除__や、リーダーボードへの__スコアを送信する__のは次のステップできっと紹介されていると思いますが、今回はここまで。