Google Play ゲームでは、PC との互換性と PC への最適化をゲームに追加する必要があります。そうした変更に加えて、PC との互換性を確保するためにゲームのグラフィック設定を更新する必要もあります。
ユーザーがプラットフォームをインストールして開発マシンをセットアップするための PC の最小要件をご確認ください。
x86 ABI アーキテクチャを含める
プラットフォームでのパフォーマンスと安定性を最大限に高めるには、ゲームに含まれるすべてのライブラリに x86 ABI 互換バージョンが必要です。Google Play ゲームでは、32 ビット版と 64 ビット版の両方がサポートされていますが、いずれか 1 つを選択するだけで要件を満たすことができます。
ライブラリのコンパイル
x86 プロセッサの互換性を最大限に高めるため、ライブラリのコンパイル時に Atom 命令セットを使用しないでください。たとえば gcc
を使用する場合は、-march=atom
ではなく、-march=x86
または -march=x86-64
を使用してください。
Unity のターゲット アーキテクチャ
ゲームで Unity ゲームエンジンを使用する場合、32 ビット x86 Android ターゲットを有効にする必要があります。Unity での手順は次のとおりです。
[Player Settings] > [Other Settings] > [Configuration] > [Scripting Backend] に移動し、プルダウン メニューから [IL2CPP] を選択して IL2CPP スクリプト バックエンドを有効にします。
お使いのバージョンの Unity で 32 ビット 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 のみを有効にすることをおすすめします。
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
イベントのリッスンに失敗するとユーザー エクスペリエンスが低下する可能性があります。
PC との互換性のために 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
機能を削除する方法について詳しくは、接続のステータスと種類をモニタリングするをご覧ください。サポートされていない機能の一覧については、アプリ マニフェストの互換性に関するガイドをご覧ください。
よく使用される以下のハードウェア機能は 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 ではサポートされていません。
android.permission.FOREGROUND_SERVICE
android.permission.INSTALL_PACKAGES
android.permission.READ_PHONE_STATE
android.permission.USE_CREDENTIALS
android.permission.CAMERA
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION
android.permission.WRITE_SETTINGS
android.permission.REQUEST_INSTALL_PACKAGES
android.permission.SYSTEM_ALERT_WINDOW
android.permission.READ_CONTACTS
com.google.android.gms.permission.ACTIVITY_RECOGNITION
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
android.permission.GET_ACCOUNTS
android.permission.RECORD_AUDIO
外部のウェブサイトと 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 ゲームで予期しない動作が発生する可能性があるため、以下のモジュールは使用しないでください。
対象範囲別ストレージを有効にする
このセクションは、ゲームが外部ストレージとの間で読み書きする場合に適用されます。ストレージに対する読み書きの別の方法として、対象範囲別ストレージを適用する必要があります。これにより、以下の機密情報の許可を求めるプロンプトをプレーヤーに表示する必要がなくなります。
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
対象範囲別ストレージについて詳しくは、以下をご覧ください。
ゲームの PC 版でモバイル広告を無効にする
PC 向けにゲームを最適化するには、PC 版でモバイル広告を無効にする必要があります。モバイル広告はデスクトップ パソコンやノートパソコンと互換性がないためです。モバイル広告 SDK によって提供されるすべての広告ユニットがこの対象です。モバイル版のゲームでは、広告に変更を加える必要はありません。機能フラグを使用してゲームの PC 版にのみ変更を制限することをおすすめします。Chrome OS では引き続きモバイル広告を表示可能です。
モバイル広告を削除する手順は次のとおりです。
- バナー広告、インタースティシャル広告、リワード広告などのモバイル広告ユニットをすべて無効にします。
- リワード広告に依存するゲームの機能を無効にします。たとえば、ユーザーが動画広告を視聴してゲーム内通貨を獲得できる機能がある場合は、ボタンを無効にするか、完全に削除することができます。
アナリティクス
従来の「Google アナリティクス」サービスは Google Play ゲームでは機能しません。該当する場合は、Google アナリティクス 4 に移行してください。
これは、Google アナリティクス 360 を現在ご利用の場合にのみ影響します。Firebase SDK を使用してゲーム内のアナリティクス イベントをトラッキングしていて、ゲームを Google アナリティクス コンソールでプロパティとして表示できる場合、これ以上の対応は必要ありません。