Google Play ゲームの PC への互換性と最適化

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Google Play ゲームでは、PC への互換性や最適化に関する変更をゲームに加える必要があります。この変更を加えることでゲームを PC で実行できるようになり、プラットフォームに合わせてユーザー エクスペリエンスが最適化されます。

また、Google Play ゲームには、グラフィック、デバイス入力、クロスデバイス プレイの要件があります。詳細については、スタートガイドをご覧ください。

PC への互換性と最適化に関する変更を加える場合(x86 のサポートを除く)、ゲームをセットアップして Google Play ゲームを検出し、プラットフォーム固有の設定を無効または有効にします。これにより、Android モバイル版リリースと PC 版リリースで同じ APK または App Bundle を使用できます。

このページに記載されている要件と推奨事項の概要は次のとおりです。

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 ターゲットを有効にするには、次の手順を行います。

  1. [Player Settings] > [Other Settings] > [Configuration] > [Scripting Backend] に移動し、プルダウン メニューから [IL2CPP] を選択して IL2CPP スクリプト バックエンドを有効にします。

  2. お使いのバージョンの 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 ゲーム環境で onPausec++)イベントを処理することが重要です。プレーヤーがエミュレータ オーバーレイを有効化するとゲームが表示され、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 は、Google Play ゲームでのサポートに最善を尽くしますが、機能が保証されるわけではありません。

サポート対象外

以下のモジュールは Google Play ゲームでサポートされていませんが、失敗した場合に Google Play ゲームで問題を引き起こすことはありません。

不安定

リリース プロセスの必須事項

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 アナリティクス コンソールでプロパティとして表示できる場合、これ以上の対応は必要ありません。