Android向けPlayゲームサービスのスタートガイドの備忘録

# Android向けPlayゲームサービスのスタートガイド
Google Play ゲームサービスを使った Android ゲームの開発について、[Android 向け Play ゲームサービスのスタートガイド](https://developers.google.com/games/services/android/quickstart)を実際に行い、必要な内容を備忘録としてまとめました。

**参考 :**
Play ゲーム サービス
https://developers.google.com/games/services

Android向けPlayゲームサービスのスタートガイド
https://developers.google.com/games/services/android/quickstart

## 概要
Play ゲーム SDK では、タブレットやモバイル デバイスでのゲームに実績、リーダーボード、保存済みゲーム、リアルタイム マルチプレーヤー型ゲーム（Android 上）など人気のゲーム機能を簡単に統合できるクロス プラットフォームとして、Google Play ゲームサービスを提供されています。

> **Google Play ゲームサービス機能詳細**

> - **実績**: 目標を設定し、プレーヤーがゲームをより長時間プレイして新しい機能を試すように促します。プレーヤーには、Play ゲーム プロフィールのレベルアップに利用できる経験値を特典として提供します（Play ゲーム プロフィールで他のプレーヤーに自分のレベルを伝えることができます）。
- **リーダーボード**: 日別、週別、全期間のリーダーボードを作成して、プレーヤー同士の競争を盛り上げます。ゲームレベルやその他のゲームの機能別に、複数のリーダーボードを作成します。
- **マルチプレーヤー型ゲーム**: リアルタイムまたはターン制のゲームに、他のプレーヤーと対戦する機能を追加します。プレーヤーは、端末の種類や対応プラットフォームの枠を超えて、友だちを招待してゲームのインストールをすすめることができます。
- **ゲームギフト**: プレーヤーが友だちに仮想のゲーム内オブジェクトを贈ることのできる機能を追加して、ダウンロード数とエンゲージメントを高めます。また、プレーヤーがギフトをリクエストできるようにして、ゲーム内でギフトを使って取引ができるようにします。

> **注意**
Play ゲームサービスのマルチプレーヤー型ゲーム用 API のサポートを終了します。
リアルタイム マルチプレーヤー型ゲームとターン制マルチプレーヤー型ゲームのサポートは、2020 年 3 月 31 日をもって終了します。新しいゲームでこれらの機能を有効にすることはできません。

## 目的
Android のサンプル ゲームアプリを理解し、独自の Android ゲームの作成をすぐに始められるように準備します。

## 準備
* Android 開発環境をセットアップ
  * Android アプリを初めて開発する場合は、[初めてのアプリを作成する](https://developer.android.com/training/basics/firstapp)の記事を確認
* Android 4.0（Ice Cream Sandwich）以上が稼働する Android デバイスをテスト用に準備

## 手順
### 手順 1: [サンプルアプリをダウンロードする](https://developers.google.com/games/services/android/quickstart#step_1_download_the_sample_app)
Type-a-Number という Android サンプルアプリを使用します。

**1**: Android サンプルアプリを[ダウンロード ページ](https://github.com/playgameservices/android-basic-samples)からダウンロードします。
Macでターミナルを開いて、以下のコマンドを実行します。

```
git clone git@github.com:playgameservices/android-basic-samples.git
```

**2**: android-basic-samples プロジェクトをインポートします。
このプロジェクトには TypeANumber とその他の Android サンプルゲームが含まれています。

Android Studio で手順のとおり進めます。
[Import project (Gradle, EclipseADT, etc.)] をクリックします。
android-basic-samples をダウンロードしたディレクトリを参照します。

**3**: TypeANumber で使用されている build.gradleファイルの*applicationId*を独自のパッケージ名に変更します。

パッケージ名 `com.google.example.games.replace.me` を別の独自の名前に変更します。
AndroidManifest.xmlファイルを編集する必要はありません。
新しいパッケージ名の先頭に `com.google`、`com.example`、`com.android` を使用することはできません。

```build.gradle
defaultConfig {
    /*
        TODO: Replace this value with your application's package name
    */
    applicationId "com.google.example.games.replace.me"
```

### 手順 2: [Google Play Console でゲームをセットアップする](https://developers.google.com/games/services/android/quickstart#step_2_set_up_the_game_in_the)
Google Play Console では、各ゲーム用に Google Play ゲームサービスを管理し、ゲームの承認および認証のためのメタデータを設定します。

**Google Play Console でサンプルゲームをセットアップするには...**

**1**: ウェブブラウザで [Google Play Console](https://play.google.com/apps/publish) に移動してログインします。これまで Google Play Console に登録していない場合は、登録を求めるメッセージが表示されます。

**2**: 以下の手順のとおり、[Google Play Console にゲームを追加](https://developers.google.com/games/services/console/enabling#step_2_add_your_game_to_the_dev_console)します。

左側の[ゲームサービス]タブを選択します。
<img width="301" alt="スクリーンショット 2020-04-15 12.38.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/09f41462-7aa7-92ac-a308-49672c8d4726.png">
[ GOOGLE PLAY ゲーム サービスをセットアップ ]ボタンをクリックします。
<img width="355" alt="スクリーンショット 2020-04-15 13.43.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/304df182-0ce2-6875-dae9-c54d125be277.png">
 Google Play ゲーム サービスをアプリ用にセットアップする画面が表示されます。
[ゲームで Google API をまだ使用していません] のタブを選択します。
ゲームの名前を入力してカテゴリを割り当て、[ 次へ ]ボタンをクリックします。
<img width="610" alt="スクリーンショット 2020-04-15 13.48.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/2698eb4b-81c6-ba06-649f-1ed2fd2c15b1.png">
ゲームの詳細フォームで、ゲームの説明、カテゴリ、グラフィックアセットを追加します。

- テストには表示名のみが必要です。ゲームを公開する前に、他のフィールドに入力する必要があります。
- ゲームの表示名と説明は、同じGoogle Playゲームサービスを共有するゲームのすべてのバージョンに適用できるように十分に汎用的である必要があります。

<img width="704" alt="スクリーンショット 2020-04-15 17.25.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/2773c6a6-110e-f5e1-2a8a-798852ecf0c9.png">

- グラフィックアセットの作成に関するガイドラインについては、Google Play for Developersガイドと [Google Playの注目画像のガイドライン](https://android-developers.googleblog.com/2011/10/android-market-featured-image.html)を確認する必要があります。
- このデベロッパー ガイドの目的は、独自のゲームについての詳細をフォームに入力できるようになることです。そのために利用できるプレースホルダ アイコンやスクリーンショットが、[ダウンロード ページ](https://developers.google.com/games/services/downloads/sdks#placeholder)で提供されています。

**3**: Type-a-Number Challenge の実績を設定します。

Google Play Console で [実績] タブを選択します。
次のようなサンプルの実績を追加します。

| 名前 | 説明 | 特記事項 |
|:--|:--|:--|
|Prime|素数のスコアを獲得します。|なし|
|Humble|スコア 0 点を獲得します。|なし|
|Don't get cocky, kid|いずれかのモードでスコア 9999 点を獲得します。|なし|
|OMG U R TEH UBER LEET!|スコア 1337 点を獲得した場合に達成となります。|隠しクエストとして設定します。|
|Bored|ゲームを 10 回プレイします。|10 ステップでロック解除される増分実績として設定します。|
|Really Really Bored|ゲームを 100 回プレイします。|100 ステップでロック解除される増分実績として設定します。|
作成した各実績の ID（長い英数字の文字列）を記録します。
作成するゲームに合った実績を設定します。詳細については、[実績の背後にあるコンセプトについての記事](https://developers.google.com/games/services/common/concepts/achievements)と [Android での実績の実装方法](https://developers.google.com/games/services/android/achievements)についての記事を確認します。

**4**: Type-a-Number Challenge 用のリーダーボードを設定します。

Google Play Console で [リーダーボード] タブを選択します。
「Easy High Scores」と「Hard High Scores」という名の 2 つのサンプル リーダーボードを追加します。どちらのリーダーボードも、[スコアの形式] として [小数点以下の桁数] が 0 の整数を使用し、[順番付け] を [スコアは高いほど良い] とします。
作成した各リーダーボードの ID（長い英数字の文字列）をメモします。
作成するゲームに合ったリーダーボードを設定します。詳細については、[リーダーボードの背後にあるコンセプトについての記事](https://developers.google.com/games/services/common/concepts/leaderboards)と Android での[リーダーボードの実装方法についての記事](https://developers.google.com/games/services/android/achievements)を確認します。

**5**: 以下の手順のとおり、Android アプリ用に [OAuth 2.0 クライアント ID](https://developers.google.com/games/services/console/enabling#step_3_generate_an_oauth_20_client_id) を生成します。

Google Playゲームサービスの呼び出しを認証および承認するには、ゲームにOAuth 2.0クライアントIDが必要です。クライアントIDとゲームの関連付けを設定するには、Google Play Consoleを使用してクライアントIDを生成し、ゲームにリンクします。

**リンクされたアプリケーションを作成するには...**
ゲームサービスをGoogle API Consoleプロジェクトにリンクするには、左側の[リンク済みアプリ]タブを選択ます。
<img width="298" alt="スクリーンショット 2020-04-15 19.27.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/da8c4962-f1ab-aaac-4fc8-bdbf08250079.png">

Android アプリ用に OAuth 2.0 クライアント ID を生成するので[ANDROID]を選択します。
<img width="729" alt="スクリーンショット 2020-04-15 19.31.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/9729a51b-be72-aae5-db98-e486bf8815af.png">

Android アプリをリンクする際、サンプル パッケージの名前を変更したときに使用した新しいパッケージ名を正確に指定します。
<img width="939" alt="スクリーンショット 2020-04-15 19.40.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/8801da40-2892-aa4b-3e40-136a390a1a74.png">

<img width="411" alt="スクリーンショット 2020-04-15 19.40.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/5a2d7917-e70d-71a6-4f8d-795e6406f703.png">

<img width="660" alt="スクリーンショット 2020-04-16 0.01.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229633/9d9c88c8-3a40-a917-3770-37ae9d2be4e3.png">

キーストアや署名済みの証明書がない場合は、Android Studio で署名済み APK の生成ウィザードを使用して、新しく生成できます。署名済み APK の生成ウィザードの使用方法については、[Android Studio でのアプリの署名](https://developer.android.com/studio/publish/app-signing#studio)についてを確認します。

### 手順 3: [コードを変更する](https://developers.google.com/games/services/android/quickstart#step_3_modify_your_code)

ゲームを実行するには、Android プロジェクトにリソースとしてアプリケーション ID を設定する必要があります。また、AndroidManifest.xml にゲームのメタデータを追加する必要もあります。

res/values/ids.xml を開いて、プレースホルダの ID を置き換えます。

### 手順 4: [ゲームをテストする](https://developers.google.com/games/services/android/quickstart#step_4_test_your_game)

実機のテストデバイスでゲームを実行する

## まとめ
このトレーニングで、Android のサンプル ゲームアプリをインストールし、独自の Android ゲームの作成をすぐに始める方法を理解しました。