PC 版 Google Play Games デベロッパー エミュレータを使って開発する

PC 版 Google Play Games デベロッパー エミュレータは、PC 版 Google Play Games のデベロッパー向けエミュレータです。プレーヤーのエクスペリエンスとは異なり、独自のパッケージをインストールしてデバッグできます。また、アスペクト比、マウス エミュレーション、グラフィック バックエンドなど、各種プレーヤー設定をシミュレートでき、さまざまな設定がされた PC でゲームが想定どおりに動作するかを確認できます。

エミュレータの起動

インストールすると、Google Play Games デベロッパー エミュレータのスタート メニュー要素とデスクトップ ショートカットが表示されて、エミュレータを起動できるようになります。ウィンドウを閉じても、エミュレータはシステムトレイに残ったままになります。

ログイン

エミュレータを最初に実行する際は、Google アカウントへのログインを求められます。開発時に使用予定のものと同じログイン認証情報を使用します。

ログアウトするには、システムトレイ アイコンを右クリックし、[開発者向けオプション]、[強制的にログアウト] の順に選択します。この操作を行うとエミュレータがすぐ再起動し、再度ログインが求められます。

起動すると、一般的な Android のホーム画面が表示されます。マウスのエミュレーション モードと同様に、マウスの左クリックは指でのタップに直接変換されます。開発用にサイドローディングされたゲームがアプリリストに表示されます。アプリリストにアクセスするには、パソコン上でクリックして上方向にドラッグします(スマートフォンまたはタブレットで上へスワイプする動作をエミュレートしています)。

マウスの変換のほかに、PC 版 Google Play Games デベロッパー エミュレータには、キーボードでもナビゲーションできるようにキーボード ショートカットが用意されています。

  • Ctrl+H キー: [ホーム] ボタンを押す
  • Ctrl+B キー: [戻る] ボタンを押す
  • F11 キーまたは Alt+Enter キー: 全画面モードとウィンドウ モードを切り替える
  • Shift+Tab キー: Input SDK の現在のキーマッピングを含む PC 版 Google Play Games オーバーレイを開く

ゲームのインストール

PC 版 Google Play Games デベロッパー エミュレータは、Android Debug Bridge(ADB)を使用してパッケージをインストールします。

ADB の互換性

adb の最新バージョンは、PC 版 Google Play Games デベロッパー エミュレータと互換性があります。また、エミュレータをインストールすると、互換性のあるバージョンが C:\Program Files\Google\Play Games Developer Emulator\current\emulator にインストールされます。

以下の手順に沿って操作すると、$PATH に ADB が追加されます。adb が正しく設定されていることを確認するには、adb devices コマンドを使用します。

adb devices
List of devices attached
localhost:6520  device

ゲームをインストールする

  • Google Play Games for PC Emulator を起動します
  • コマンド プロンプトに adb devices と入力します。以下のように表示されます。

    adb devices
    List of devices attached
    localhost:6520 device
    
  • トラブルシューティング:

    • エラーが発生した場合は、ADB の互換性に記載された手順に沿っていることを確認してください。
    • デバイスが表示されない場合は、ポート 6520 で再接続してみてください。
    adb connect localhost:6520
    
  • adb install path\to\your\game.apk と入力してゲームをインストールします。Android App Bundle(AAB)を生成済みの場合は、bundletool の手順を確認して、代わりに bundletool install-apks を使用します。

  • 次のいずれかの方法でゲームを実行します。

    • adb shell monkey -p your.package.name 1 と入力してゲームを実行します。your.package.name の部分はご自分のゲームのパッケージ名に置き換えてください。
    • PC 版 Google Play Games デベロッパー エミュレータで、アイコンをクリックしてゲームを実行します。Android スマートフォンと同様に、インストール済みのゲームのリストを表示するには、ホーム画面を「上にスワイプ」する必要があります。

ゲームのデバッグ

Android Debug Bridge(ADB)を使用して、他のゲームと同様の方法でデバッグします。エミュレータは localhost:6520 経由で接続されたデバイスとして表示されます。

adb logcat は、Android Studio など、Logcat 出力の整形またはフィルタが可能なツールと同様に機能します。

ログへのアクセスは、adb からだけでなく %LOCALAPPDATA%\Google\Play Games Developer Emulator\Logs ディレクトリからも可能です。ログで特に役に立つのが AndroidSerial.log です。エミュレータが起動した瞬間から adb logcat がエコーするものがすべて記録されます。

デベロッパー向けの設定

PC 版 Google Play Games デベロッパー エミュレータは、エンドユーザー エクスペリエンスではなく、デベロッパーの効率性を重視しています。つまり、PC 版 Google Play Games エクスペリエンスの代わりに標準の Android ランチャーを使用するなど、シームレスに Android システムにアクセスできるほか、通常はプレーヤーのために自動的に有効化または無効化される機能をコントロールすることも可能です。

マウス入力のテスト

PC 版 Google Play Games デベロッパー エミュレータでは、開発時のデフォルトとして、マウスの直接入力ではなく、タッチ エミュレーションが設定されています。マウスの直接入力を有効にするには、システムトレイ アイコンを右クリックして、[開発者向けオプション]、[PC モード(KiwiMouse)] の順に選択します。

PC 版 Google Play Games には、マウスのクリックをシングルタップに変換するエミュレート モードと、ゲームがマウス操作をネイティブに処理してポインタをキャプチャするパススルー「PC モード」の 2 つのマウスモードがあります。PC 版 Google Play Games でのマウス入力の詳細については、マウス入力をセットアップするをご覧ください。

プレーヤー クライアントでは、マニフェストに次の行を追加するとエミュレーションが無効になります。

<manifest ...>
  <uses-feature
      android:name="android.hardware.type.pc"
      android:required="false" />
  ...
</manifest>

このフィーチャー トグルは開発環境では機能しません。

アスペクト比のテスト

デベロッパー エミュレータは 16:9 のアスペクト比で起動します。これは、プライマリ ディスプレイからアスペクト比を取得するプレーヤー クライアントとは異なります。システムトレイ アイコンを右クリックし、[開発者向けオプション] を選択してから、[ディスプレイ比] セクションのオプションを選択すると、さまざまなアスペクト比の画面でゲームがどのように表示されるかをテストできます。

アスペクト比を設定するおすすめの方法は、android:minAspectRatioandroid:maxAspectRatio を使用することです。

たとえば、縦向きのゲームの場合、アスペクト比は 9/16 または 0.5625 となるため、最大のアスペクト比を 1 に設定して、ゲームの画面比率が正方形より幅が広くならないようにします。

<activity android:maxAspectRatio="1">
 ...
</activity>

同様に、横向きのゲームの場合のアスペクト比は 16/9 または約 1.778 となるため、最小のアスペクト比を 1 に設定して、正方形より幅が狭くならないようにします。

<activity android:minAspectRatio="1">
 ...
</activity>

テスト項目

マニフェストで縦向きモードのみをサポートしているゲームの場合は、プルダウンの [9:16(縦向き)] を選択して、プレーヤーの PC でどのように表示されるかを確認します。それ以外の場合は、マニフェストでサポートしている横向きモードの最大幅と最小幅のアスペクト比を選択して、ゲームが正常に動作することを確認します。完全認定を受けるには、16:9(デフォルト)(ゲームが縦向きのみの場合は 9:16(縦向き))のアスペクト比が必要です。

レンダリング バックエンドのテスト

PC 版 Google Play Games は、互換性レイヤとして ANGLE 使用し、OpenGL ES 呼び出しが DirectX または Vulkan バックエンドを使用してホスト PC で正しく処理されるようにしています。エミュレータも Vulkan は直接サポートしていますが、DirectX はサポートしていません。またこのレイヤは、モバイル専用の圧縮テクスチャ形式を PC と互換性のある形式に変換します。システムトレイ アイコンを右クリックして [グラフィック スタックのオーバーライド] を選択し、システムのデフォルトに設定するか、互換性テスト用に Vulkan を強制的にオンまたはオフにします。

テスト項目

サポートされているテクスチャ形式や、各種モバイル機能をパソコンでエミュレートするために必要なステップは、軽微なバリエーションがあります。ゲームのプロファイリングと最適化を行うときには、各バックエンドを確認することをおすすめします。

PC ゲームのプロファイリング

エミュレータは一般ユーザーのクライアントと同じテクノロジーを使用しているため、パフォーマンス プロファイリングに適した環境となっています。

Perfetto は、Android でのパフォーマンスを分析するためのツールです。Perfetto トレースを収集して表示するには、次の操作を行います。

  1. PowerShell プロンプトで、adb を使用してトレースを開始します

    adb shell perfetto --time 10s gfx wm sched --out /data/misc/perfetto-traces/example.trace
    
    1. --time フラグは、収集するトレースの期間を指定します。この例では、トレース期間は 10 秒です。
    2. --time フラグの後の引数は、トレースするイベントを示しています。この例では、gfx はグラフィック、wm はウィンドウ管理、sched はプロセスのスケジューリング情報を示しています。これらはゲームのプロファイリングの共通フラグです。すべてのリファレンスを確認できます。
    3. --out フラグで、出力ファイルを指定します。このファイルは、次のステップでエミュレータからホストマシンに出力されます。
  2. ホストからトレースを pull します

    adb pull /data/misc/perfetto-traces/example.trace $HOME/Downloads/example.trace
    
  3. Perfetto UI でトレースを開きます

    1. ui.perfetto.dev を開きます。
    2. 左上の [Navigation] から、[Open trace file] を選択します。
    3. 前の手順で Downloads/ ディレクトリにダウンロードした example.trace ファイルを開きます。
  4. Perfetto UI でトレースを検査します。ヒント:

    1. 各プロセスには独自の行があり、行を展開すると、そのプロセス内のスレッドをすべて表示できます。ゲームをプロファイリングしている場合、おそらくそのプロセスは最初の行にあります。
    2. Ctrl キーを押したままスクロール ホイールを使うと、ズームインとズームアウトができます。
    3. sched イベントを使用すると、スレッドごとに、そのスレッドの状態が実行中、実行可能、スリープ中、ブロック中のいずれかを示す行が表示されます。
    4. gfx などのイベントを有効にすると、さまざまなスレッドによって行われたさまざまなグラフィック呼び出しを表示できます。個々の「スライス」を選択して所要時間を確認したり、行に沿ってドラッグして下部に「スライス」セクションを表示し、選択した時間枠内ですべてのスライスにかかった時間を表示したりできます。

グラフィックのプロファイリング

RenderDoc を使用すると、グラフィックのプロファイリングの一部を実行できます。

  1. 環境変数 ANDROID_EMU_RENDERDOC を空でない文字列("1" など)に設定します。
  2. 環境変数 TMP%USERPROFILE%\AppData\LocalLow に設定します。これにより、Renderdoc はエミュレータ サンドボックス内のアクセス可能な場所にログファイルを配置します。

  3. Vulkan バックエンドを使用している場合。[グラフィック設定] > [Vulkan Instance Implicit Layers] を選択し、[VKLAYER_RENDERDOC_Capture] がオンになっていることを確認します。

  4. PC 版 Google Play Games デベロッパー エミュレータを起動します。サポートが有効であれば、RenderDoc オーバーレイが上部に描画されます。

  5. PC 版 Google Play Games デベロッパー エミュレータの起動の前か後に、RenderDoc を起動します。

  6. [File] > [Attach to Running Instance] をクリックして、[crosvm] を選択します。

環境変数を指定する

Renderdoc が機能するには、Windows で環境変数を追加または変更する必要があります。環境変数は、UI、PowerShell、または cmd.exe を使用して変更できます。

UI を使用する
  • Win+R キーを押して実行ダイアログを開きます。
  • sysdm.cpl」と入力して [システムのプロパティ] ウィンドウを開きます。
  • [詳細設定] タブをまだ表示していない場合は、選択します。
  • [環境変数] ボタンをクリックします。

ここで、[新規] ボタンをクリックして新しい環境変数を作成するか、変数を選択してから [編集] ボタンをクリックして編集します。

PowerShell を使用する

PowerShell ウィンドウで次のように入力します。

$Env:VARIABLE_NAME=VALUE

VARIABLE_NAMEVALUE は、設定する値に置き換えます。たとえば、ANDROID_EMU_RENDERDOC"1" に設定するには、次のように入力します。

$Env:ANDROID_EMU_RENDERDOC="1"
cmd.exe を使用する

cmd.exe ウィンドウで、次のように入力します。

set VARIABLE_NAME=VALUE

VARIABLE_NAMEVALUE は、設定する値に置き換えます。たとえば、ANDROID_EMU_RENDERDOC"1" に設定するには、次のように入力します。

set ANDROID_EMU_RENDERDOC="1"

Android 11(API レベル 30)以降向けのヒント

PC 版 Google Play Games は、最新の Android リリースに伴って更新されています。最新バージョンの Android を使用する際のヒントは以下のとおりです。

ツールを最新の状態に保つ

Android Studio は、デベロッパー エミュレータと互換性のある ADB バージョンをインストールしますが、ゲームエンジンによっては古いバージョンの ADB が含まれていることがあります。そのような場合、互換性のある adb バージョンは、デベロッパー エミュレータをインストール後、C:\Program Files\Google\Play Games Developer Emulator\current\emulator で確認できます。

一方のバージョンの adb を起動すると、もう一方のバージョンは終了します。つまり、ゲームエンジンが独自の adb インスタンスを自動的に起動する場合、デプロイするたびにデベロッパー エミュレータに付属するバージョンの adb を再起動し、再接続しなければなりません。

Android App Bundle を使用している場合は、GitHub リポジトリから最新バージョンの Bundletool をインストールする必要があります。

対象範囲別ストレージ

Android 11(API レベル 30)以降には対象範囲別ストレージ機能が備わっており、外部ストレージ上のアプリとユーザーデータの保護が強化されています。ゲームを対象範囲別ストレージの要件に適合させるだけでなく、APK 拡張ファイル(OBB)やアセットデータを PC 版 Google Play Games デベロッパー エミュレータに読み込むために追加の手順を実行する必要があります。ゲームからこれらのファイルにアクセスする際に問題が発生した場合は、以下の手順に沿って対応します。

  1. アプリが読み取り可能なディレクトリを作成します。
  2. 拡張ファイルをエミュレータにプッシュします。
adb shell mkdir /sdcard/Android/obb/com.example.game
adb push main.com.example.game.obb /sdcard/Android/obb/com.example.game

パッケージの公開設定

新しいパッケージの公開設定ルールにより、Android 11(API レベル 30)以降をターゲットとするアプリは、デバイスにインストールされている他のアプリに関する情報をクエリできないようになっています。そのため、Google Play ストアからインストールせず、adb 経由でゲームをサイドローディングした場合、そのゲームから Play 開発者サービスへのアクセスはブロックされます。サイドローディングされたゲームで IAP をテストするには、次のように、パッケージ「com.android.vending」に対するクエリを AndroidManifest.xml ファイルに追加する必要があります。

<manifest>
    <queries>
        <package android:name="com.android.vending" />
    </queries>
</manifest>

一般ユーザーのクライアントへのゲームのインストール

ゲームが Play Games サービス カタログに登録されるまでは、一般ユーザーのクライアントにインストールすることはできません。ゲームを 1 度リリースすると、今後のアップデートをリリース前に検証する内部テストトラックを作成できます。

プレーヤー クライアントは、PC 版 Google Play Games デベロッパー エミュレータのデベロッパー向けの機能には対応していません。プレーヤー クライアントは、リリース前にゲームの QA を行って、最初のリリース後のエンドツーエンドのプレーヤー エクスペリエンスをテストする場合に最適です。