Google Play ゲームはオープンベータ版です。

互換性と最適化

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

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 ゲームエンジンを使用する場合は、次の手順を行って 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 イベントのリッスンに失敗するとユーザー エクスペリエンスが低下する可能性があります。

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 は、Google Play ゲームでのサポートに最善を尽くしますが、機能が保証されるわけではありません。

サポート対象外

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

不安定

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