Google Play ゲームでは、PC への互換性や最適化に関する変更をゲームに加える必要があります。この変更を加えることでゲームを PC で実行できるようになり、プラットフォームに合わせてユーザー エクスペリエンスが最適化されます。
また、Google Play ゲームには、グラフィック、デバイス入力、クロスデバイス プレイの要件があります。詳細については、スタートガイドをご覧ください。
PC への互換性と最適化に関する変更を加える場合(x86 のサポートを除く)、ゲームをセットアップして Google Play ゲームを検出し、プラットフォーム固有の設定を無効または有効にします。これにより、Android モバイル版リリースと PC 版リリースで同じ APK または App Bundle を使用できます。
このページに記載されている要件と推奨事項の概要は次のとおりです。
- x86 ABI アーキテクチャを含める(必須)
- Google Play ゲームを実行時に検出する(推奨)
- onPause イベントを処理する(推奨)
- UI 要素を更新する(必須)
- Android アプリの権限ダイアログを無効にする(必須)
- サポートされていない Android の機能と権限を無効にする(必須)
- WebView をブラウザ インテントに置き換える(推奨)
- サポートされていない Google Play 開発者サービスの API を無効にする(必須)
- 対象範囲別ストレージを有効にする(必須)
- PC でモバイル広告を無効にする(推奨)
- Google アナリティクス 4 に移行する(推奨)
x86 ABI アーキテクチャを含める
リリース プロセスの必須事項
プラットフォームでのパフォーマンスと安定性を最大限に高めるには、ゲームに含まれるすべてのライブラリに x86 ABI 互換バージョンが必要です。Google Play ゲームでは、32 ビット版と 64 ビット版の両方がサポートされていますが、いずれか 1 つを選択するだけで要件を満たすことができます。
ライブラリのコンパイル
x86 プロセッサの互換性を最大限に高めるため、ライブラリのコンパイル時に Atom 命令セットを使用しないでください。たとえば、gcc
を使用する場合は、-march=atom
ではなく、-march=x86
または -march=x86-64
を使用してください。
Unity のターゲット アーキテクチャ
Unity 2019 と 2020 の一部のバージョンでは、Android での x86 アーキテクチャをサポートしていません。Unity 2019.4.31f1、2020.3.19f1、またはそれ以降のバージョンを使用していることを確認してください。
互換性のあるバージョンの Unity ゲームエンジンを使用している場合、x86 / x86-64 Android ターゲットを有効にするには、次の手順を行います。
[Player Settings] > [Other Settings] > [Configuration] > [Scripting Backend] に移動し、プルダウン メニューから [IL2CPP] を選択して IL2CPP スクリプト バックエンドを有効にします。
お使いのバージョンの Unity で x86 Android ターゲットを有効にします。
Unity 2018 以前: [Player Settings] > [Other Settings] > [Target Architecture] に移動し、[x86] チェックボックスをオンにします。
Unity 2019 長期サポート(LTS)リリース以降: [Player Settings] > [Other Settings] > [Target Architectures] に移動し、[x86(Chrome OS)] と [x86-64 (Chrome OS)] を両方とも有効にします。
ゲームエンジンを最大限にサポートするには、x86 と x86-64 を両方とも有効にするか、32 ビットメモリ空間に制限されないように x86-64 のみを有効にすることをおすすめします。
Unity 2018 は x86 ターゲットのみをサポートしているため、x86-64 のサポートはスキップしてかまいません。ただし、64 ビットの要件のため、そのビルドを Android でリリースすることはできません。その場合は、Google Play ゲーム用に別のビルドを維持する必要があります。
Google Play ゲームを検出する
Google Play ゲーム プラットフォームは実行時に検出できるため、ゲームでプラットフォーム固有の機能を有効または無効にできます。
システム機能 com.google.android.play.feature.HPE_EXPERIENCE
を調べて、ゲームが Google Play ゲーム プラットフォームで実行されているかどうかを判断します。
Kotlin
var isPC = packageManager.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
Java
PackageManager pm = getPackageManager(); boolean isPC = pm.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
C#
var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity"); var packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager"); var isPC = packageManager.Call<bool>("hasSystemFeature", "com.google.android.play.feature.HPE_EXPERIENCE");
Android ライフサイクル イベントを処理する
Google Play ゲーム環境で onPause
(c++)イベントを処理することが重要です。プレーヤーがエミュレータ オーバーレイを有効化するとゲームが表示され、onPause
イベントのリッスンに失敗するとユーザー エクスペリエンスが低下する可能性があります。
UI を更新する
一部の UI 要素や操作は PC に適していないため、更新する必要があります。
必須:
- 指を 2 本以上使用する必要がある UI 操作(マルチタッチ ジェスチャー)を置き換えます。たとえば、ピンチ操作によるズームなどのマルチタッチ ジェスチャーは、対応するマウス入力やキーボード入力に置き換える必要があります。デバイス入力の変更について詳しくは、入力サポートをご覧ください。
推奨:
- ユーザーに表示されるテキストでは、「タップ」ではなく「クリック」と記載する必要があります。
- スクロール可能なリストにはスクロールバーが必要です。
- ユーザーがパンできる領域にはスクロールバーか、長い距離をすばやく移動するなんらかの手段が必要です。
- テキスト入力用のクリック可能なキーボードを画面に表示しないでください。
- テキスト入力はすべてテキスト フィールド境界内に収める必要があります。
- 表示要素をクリックしたときの動作を次のとおりにする必要があります。
- 要素の表示境界内であればどこに対するクリックでも受け入れる。
- 表示要素の外側でのクリックは受け入れない。
- ダイアログに閉じるボタンを表示する必要があります。ダイアログの境界外でのクリックは検出しないでください。
権限ダイアログを無効にする
Google Play ゲームでは権限ダイアログが表示されないため、権限をリクエストする前にダイアログを表示しようとしないでください。以前のバージョンで表示していた場合は、ゲームを更新して、PC では表示されないようにする必要があります。
サポートされていない Android の機能と権限
リリース プロセスの必須事項
PC では、スマートフォンやタブレットで利用できる Android の機能の一部が利用できません(カメラなどのハードウェア機能やユーザーの位置情報など)。そのため、サポートされていない Android の機能や権限をゲームで使用することはできません。PC では、ゲームがサポートされていない権限に対するアクセスをリクエストすると、リクエストは自動的に失敗します。
ゲームと PC の互換性を持たせるには、次の変更を行う必要があります。
アプリのマニフェストで、Google Play ゲームがサポートしていないすべての機能に対して、
<uses-feature>
宣言にandroid:required="false"
を追加します。この追加は、アプリのマニフェストですでに宣言されている機能にのみ適用されます。PC でサポートされていないハードウェアとソフトウェアの機能に依存するゲームの機能を無効にします。モバイルゲームと同じ APK を使用している場合、PC 向けに条件付きで無効にすることができます。
サポートされていない Android 権限とこれらの権限に依存する機能のリクエストをゲームで無効にします。モバイルゲームと同じ APK を使用している場合、PC 向けに条件付きでこれらの変更を行うことができますが、マニフェストで宣言されている権限に変更を加えないでください。
アプリ マニフェストの互換性について詳しくは、Chromebook アプリ マニフェストの互換性に関するガイドをご覧ください。
機能テストの要件
Google Play Console に最初のテストビルドを送信する前に、以下のハードウェア機能を削除します。
android.hardware.wifi
android.hardware.bluetooth
android.hardware.camera
android.hardware.location
android.hardware.microphone
android.hardware.wifi
機能を削除する方法について詳しくは、接続のステータスと種類をモニタリングするをご覧ください。サポートされていない機能の一覧については、Chromebook のアプリ マニフェストの互換性に関するガイドをご覧ください。
品質テストの要件
よく使用される以下のハードウェア機能は PC と互換性がないため、Google Play Console に最終版を送信する前に削除する必要があります。
android.hardware.audio.pro
android.hardware.bluetooth
android.hardware.camera
android.hardware.consumerir
android.hardware.location
android.hardware.microphone
android.hardware.nfc
android.hardware.sensor.light
android.hardware.sensor.accelerometer
android.hardware.sensor.barometer
android.hardware.sensor.compass
android.hardware.sensor.gyroscope
android.hardware.sensor.proximity
android.hardware.telephony
android.hardware.touchscreen
android.hardware.usb.accessory
android.hardware.usb.host
android.hardware.wifi
android.software.midi
サポートされていない権限
よく使用される以下の権限は、PC ではサポートされてないため、Google Play ゲームでは無効にする必要があります。
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_WIFI_STATE
android.permission.BLUETOOTH
android.permission.CAMERA
android.permission.FOREGROUND_SERVICE
android.permission.GET_ACCOUNTS
android.permission.INSTALL_PACKAGES
android.permission.READ_CONTACTS
android.permission.READ_EXTERNAL_STORAGE
android.permission.READ_PHONE_STATE
android.permission.RECEIVE_BOOT_COMPLETED
android.permission.RECORD_AUDIO
android.permission.REQUEST_INSTALL_PACKAGES
android.permission.SYSTEM_ALERT_WINDOW
android.permission.USE_CREDENTIALS
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.WRITE_SETTINGS
com.google.android.gms.permission.ACTIVITY_RECOGNITION
外部のウェブサイトと WebView
ブラウザ インテントは、Google Play ゲーム環境のウェブブラウザではなく、PC のネイティブ ウェブブラウザで読み込まれます。これはほとんどの場合、プレーヤーにとっての理想的なエクスペリエンスです。
移植を容易にするため、Google Play ゲームは WebView をサポートしています。WebView は Google Play ゲーム環境で開かれるため、一般的なデスクトップ ブラウザは用意されていません。以前に利用規約やプライバシー ポリシーなどの共有に WebView
を使用していた場合は、代わりにブラウザ インテントを呼び出す必要があります。
サポートされていない Google Play 開発者サービスの API を無効にする
リリース プロセスの必須事項
Google Play ゲームには独自の Google Play 開発者サービス バリアントが付属しており、これには Google Play 開発者サービスの API のサブセットのみが含まれています。除外されているか PC でサポートされていないモジュールにアプリケーションが強く依存していないことを確認する必要があります。モジュールの中には利用できるものもありますが、機能が常にサポートされるわけではないことを考慮してください。たとえば Firebase Cloud Messaging は、Google Play ゲームが終了すると機能しなくなります。
サポートされているモジュール
現在利用可能で、Google Play ゲームでサポートされているモジュールは以下のとおりです(追加機能のサポートが予定されています)。
- Google ログイン(アカウント移行、SmartLock、SMS による確認、パスワード強度の計算は含まれません)
- Cronet
- Google Play ゲームサービス
- タスク
- ビジョン
- Google Pay
限定的なサポート
以下のモジュールは部分的に機能します。Google は、Google Play ゲームでのサポートに最善を尽くしますが、機能が保証されるわけではありません。
- Google AdMob(モバイル広告、広告 ID)
- Google Cloud Messaging(非推奨。Firebase Cloud Messaging を使用してください)
- Firebase Authentication(電話番号認証は機能しません)
- Firebase Cloud Messaging
- Firebase 共通ライブラリ
- Firebase ML
- Firebase Remote Config
- Firebase 向け Google アナリティクス
サポート対象外
以下のモジュールは Google Play ゲームでサポートされていませんが、失敗した場合に Google Play ゲームで問題を引き起こすことはありません。
- Google アナリティクス(非推奨。Firebase 向け Google アナリティクスを使用してください)
- Google Cast
- Awareness API
- ドライブ(非推奨。まもなく削除されます)
- FIDO
- Firebase Realtime Database
- Firestore
- Firebase A/B Testing
- Google Fit
- Address API
- Instant Apps API
- Location API
- Google マップ SDK
- 周辺ユーザーとの共有
- パノラマ
- プレイス
- Google+
- SafetyNet(非推奨。今後の Play Integrity API にオプトインする場合はお問い合わせフォームにご記入ください)
- Google タグ マネージャー
- Wear OS
不安定
リリース プロセスの必須事項
Google Play ゲームで予期しない動作が発生する可能性があるため、PC では以下のモジュールを使用しないでください。
対象範囲別ストレージを有効にする
リリース プロセスの必須事項
このセクションは、ゲームが外部ストレージとの間で読み書きする場合に適用されます。ストレージに対する読み書きの別の方法として、対象範囲別ストレージを適用する必要があります。これにより、以下の機密情報の許可を求めるプロンプトをプレーヤーに表示する必要がなくなります。
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
対象範囲別ストレージについて詳しくは、以下をご覧ください。
ゲームの PC 版でモバイル広告を無効にする
リリース プロセスの必須事項
PC 向けにゲームを最適化するには、PC 版でモバイル広告を無効にする必要があります。モバイル広告は PC と互換性がないためです。モバイル広告 SDK によって提供されるすべての広告ユニットがこの対象です。モバイル版のゲームでは、広告に変更を加える必要はありません。機能フラグを使用してゲームの PC 版にのみ変更を制限することをおすすめします。Chrome OS では引き続きモバイル広告を表示可能です。
モバイル広告を削除する手順は次のとおりです。
バナー広告、インタースティシャル広告、リワード広告などのモバイル広告ユニットをすべて無効にします。
リワード広告に依存するゲームの機能を無効にします。たとえば、ユーザーが動画広告を視聴してゲーム内通貨を獲得できる機能がある場合は、ボタンを無効にするか、完全に削除することができます。
アナリティクス
従来の Google アナリティクス サービスは Google Play ゲームでは機能しません。該当する場合は、Google アナリティクス 4 に移行する必要があります。
ゲームに影響があるのは、Google アナリティクス 360 を現在使用している場合のみです。Firebase SDK を使用してゲーム内のアナリティクス イベントをトラッキングしていて、ゲームを Google アナリティクス コンソールでプロパティとして表示できる場合、これ以上の対応は必要ありません。