PC 版 Google Play Games では、PC への互換性や最適化に関する変更をゲームに加える必要があります。この変更を加えることでゲームを PC で実行できるようになり、プラットフォームに合わせてユーザー エクスペリエンスが最適化されます。
また、PC 版 Google Play Games には、グラフィック、デバイス入力、クロスデバイス プレイの要件があります。詳細については、スタートガイドをご覧ください。
PC への互換性と最適化に関する変更を加える場合(x86-64 のサポートを除く)、ゲームをセットアップして PC 版 Google Play Games を検出し、プラットフォーム固有の設定を無効または有効にします。これにより、Android モバイル版リリースと PC 版リリースで同じ APK または App Bundle を使用できます。
このページに記載されている要件と推奨事項の概要は次のとおりです。
- x86-64 ABI を含める(必須)
- Google Play Games を実行時に検出する(推奨)
- onPause イベントを処理する(推奨)
- UI 要素を更新する(必須)
- Android アプリの権限ダイアログを無効にする(必須)
- サポートされていない Android の機能と権限を無効にする(必須)
- WebView をブラウザ インテントに置き換える(推奨)
- サポートされていない Google Play 開発者サービスの API を無効にする(必須)
- 対象範囲別ストレージを有効にする(必須)
- Google アナリティクス 4 に移行する(推奨)
x86-64 ABI アーキテクチャを含める
リリース プロセスの必須事項
プラットフォームでのパフォーマンスと安定性を最大限に高めるには、ゲームに含まれるすべてのライブラリに x86-64 ABI 互換バージョンが必要です。
64 ビット x86 実行可能ファイルを送ることが技術的に不可能なゲームについては、例外の対象になるかどうか審査チームに問い合わせる必要があります。例外の対象になったゲームは、完全認定を受けることはできませんが、「プレイ可能な」ゲームとしてカタログに登録することはできます。
ライブラリのコンパイル
x86-64 プロセッサの互換性を最大限に高めるため、ライブラリのコンパイル時に Atom 命令セットを使用しないでください。たとえば、gcc を使用する場合は、-march=atom ではなく、-march=x86-64 を使用してください。
Unity のターゲット アーキテクチャ
Unity 2019 と 2020 の一部のバージョンでは、Android での x86-64 アーキテクチャをサポートしていません。Unity 2019.4.31f1、2020.3.19f1、またはそれ以降のバージョンを使用していることを確認してください。
互換性のあるバージョンの Unity ゲームエンジンを使用している場合、x86-64 Android ターゲットを有効にするには、次の手順を行います。
[Player Settings] > [Other Settings] > [Configuration] > [Scripting Backend] に移動し、プルダウン メニューから [IL2CPP] を選択して IL2CPP スクリプト バックエンドを有効にします。
お使いのバージョンの Unity で x86-64 Android ターゲットを有効にします。
Unity 2018 以前: [Player Settings] > [Other Settings] > [Target Architecture] に移動し、[x86] チェックボックスをオンにします。 Unity 2018 は x86 ターゲットのみをサポートしているため、x86-64 をビルドすることはできません。 このビルドを行うには、審査チームに例外を求める必要があります。 x86 例外をリクエストするには、Google の担当者にお問い合わせください。
Unity 2019 長期サポート(LTS)リリース以降: [Player Settings] > [Other Settings] > [Target Architectures] に移動し、[x86-64 (ChromeOS)] を有効にします。
PC 版 Google Play Games を検出する
PC 版 Google Play Games プラットフォームは実行時に検出できるため、ゲームでプラットフォーム固有の機能を有効または無効にできます。
システム機能 com.google.android.play.feature.HPE_EXPERIENCE を調べて、ゲームが PC 版 Google Play Games プラットフォームで実行されているかどうかを判断します。
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 ライフサイクル イベントを処理する
PC 版 Google Play Games 環境で onPause(c++)イベントを処理することが重要です。プレーヤーがエミュレータ オーバーレイを有効化するとゲームが表示され、onPause イベントのリッスンに失敗するとユーザー エクスペリエンスが低下する可能性があります。
UI を更新する
一部の UI 要素や操作は PC に適していないため、更新する必要があります。
必須:
- 指を 2 本以上使用する必要がある UI 操作(マルチタッチ ジェスチャー)を置き換えます。たとえば、ピンチ操作によるズームなどのマルチタッチ ジェスチャーは、対応するマウス入力やキーボード入力に置き換える必要があります。デバイス入力の変更について詳しくは、入力サポートをご覧ください。
推奨:
- ユーザーに表示されるテキストでは、「タップ」ではなく「クリック」と記載する必要があります。
- スクロール可能なリストにはスクロールバーが必要です。
- ユーザーがパンできる領域にはスクロールバーか、長い距離をすばやく移動するなんらかの手段が必要です。
- テキスト入力用のクリック可能なキーボードを画面に表示しないでください。
- テキスト入力はすべてテキスト フィールド境界内に収める必要があります。
- 表示要素をクリックしたときの動作を次のとおりにする必要があります。
- 要素の表示境界内であればどこに対するクリックでも受け入れる。
- 表示要素の外側でのクリックは受け入れない。
- ダイアログに閉じるボタンを表示する必要があります。ダイアログの境界外でのクリックは検出しないでください。
ほとんどの権限ダイアログを無効にする
マイクと通知の権限を除いて、PC 版 Google Play Games では権限ダイアログが表示されないため、実行時に権限ダイアログの表示やリクエストを行わないでください。以前のバージョンで権限ダイアログを表示していた場合は、ゲームを更新して、PC では表示されないようにする必要があります。
サポートされていない Android の機能と権限
リリース プロセスの必須事項
スマートフォンやタブレットの一般的なハードウェア機能の一部は、PC では使用できません。これには、カメラやプレーヤーの位置情報などのハードウェア機能が含まれます。 不足している機能を必要とするゲームをプレーヤーの PC にダウンロードしてインストールすることはできません。PC にない機能のリクエストは自動的に失敗します。
次のコマンドを入力すると、利用できる機能の一覧が表示されます。
adb shell pm list featuresゲームと PC の互換性を持たせるには、次の変更を行う必要があります。
<uses-feature>宣言にandroid:required="false"を追加して、アプリ マニフェストで機能をオプションとしてマークします。この追加は、アプリのマニフェストですでに宣言されている機能にのみ適用されます。不足している機能を実行時に使用しないでください。モバイル トラックと PC トラックの両方で同じ APK を使用している場合は、実行時に PC 環境を検出し、関連するコードパスを回避します。
サポートされていない Android 権限を実行時にリクエストしないでください。モバイル トラックと PC トラックの両方で同じ APK を使用している場合は、実行時に PC 環境を検出し、関連するコードパスを回避します。マニフェストを更新する必要はありません。
アプリ マニフェストの互換性について詳しくは、Chromebook アプリ マニフェストの互換性に関するガイドをご覧ください。
機能テストの要件
Google Play Console に最初のテストビルドを送信する前に、以下のハードウェア機能を削除します。
android.hardware.wifiandroid.hardware.bluetoothandroid.hardware.cameraandroid.hardware.location
これらの機能の一部は、互換性上の理由から pm list features の実行時にサポートされていると表示されることがありますが、完全には実装されていません。android.hardware.wifi 機能を削除する方法について詳しくは、接続ステータスと種類をモニタリングするをご覧ください。サポートされていない機能の一覧については、Chromebook のアプリ マニフェストの互換性に関するガイドをご覧ください。
品質テストの要件
よく使用される以下のハードウェア機能は PC と互換性がないため、Google Play Console に最終版を送信する前に削除する必要があります。
android.hardware.audio.proandroid.hardware.bluetoothandroid.hardware.cameraandroid.hardware.consumerirandroid.hardware.locationandroid.hardware.nfcandroid.hardware.sensor.lightandroid.hardware.sensor.accelerometerandroid.hardware.sensor.barometerandroid.hardware.sensor.compassandroid.hardware.sensor.gyroscopeandroid.hardware.sensor.proximityandroid.hardware.telephonyandroid.hardware.touchscreenandroid.hardware.usb.accessoryandroid.hardware.usb.hostandroid.hardware.wifiandroid.software.midi
サポートされていない権限
よく使用される以下の権限は、PC ではサポートされてないため、PC 版 Google Play Games では無効にする必要があります。
android.permission.ACCESS_COARSE_LOCATIONandroid.permission.ACCESS_FINE_LOCATIONandroid.permission.ACCESS_WIFI_STATEandroid.permission.BLUETOOTHandroid.permission.CAMERAandroid.permission.FOREGROUND_SERVICEandroid.permission.GET_ACCOUNTSandroid.permission.INSTALL_PACKAGESandroid.permission.READ_CONTACTSandroid.permission.READ_EXTERNAL_STORAGEandroid.permission.READ_PHONE_STATEandroid.permission.RECEIVE_BOOT_COMPLETEDandroid.permission.REQUEST_INSTALL_PACKAGESandroid.permission.SYSTEM_ALERT_WINDOWandroid.permission.USE_CREDENTIALSandroid.permission.WRITE_EXTERNAL_STORAGEandroid.permission.WRITE_SETTINGScom.google.android.gms.permission.ACTIVITY_RECOGNITION
外部のウェブサイトと WebView
ブラウザ インテントは、PC 版 Google Play Games 環境のウェブブラウザではなく、PC のネイティブ ウェブブラウザで読み込まれます。これはほとんどの場合、プレーヤーにとっての理想的なエクスペリエンスです。
移植を容易にするため、PC 版 Google Play Games は WebView をサポートしています。WebView は PC 版 Google Play Games 環境で開かれるため、一般的なデスクトップ ブラウザのユーザー エクスペリエンスは確保できません。以前に利用規約やプライバシー ポリシーなどの共有に WebView を使用していた場合は、代わりにブラウザ インテントを呼び出す必要があります。
サポートされていない Google Play 開発者サービスの API を無効にする
リリース プロセスの必須事項
PC 版 Google Play Games には独自の Google Play 開発者サービス バリアントが付属しており、これには Google Play 開発者サービスの API のサブセットのみが含まれています。除外されているか PC でサポートされていないモジュールにアプリケーションが強く依存していないことを確認する必要があります。モジュールの中には利用できるものもありますが、機能が常にサポートされるわけではないことを考慮してください。たとえば Firebase Cloud Messaging は、PC 版 Google Play Games が終了すると機能しなくなります。
サポートされているモジュール
以下のモジュールは、現在利用可能で Google Play Games でサポートされていますが、将来的には機能サポートが追加される予定です。
- Google ログイン(アカウント移行、SmartLock、SMS による確認、パスワード強度の計算は含まれません)
- Cronet
- Google Play Games サービス
- タスク
- ビジョン
- Google Pay
限定的なサポート
以下のモジュールは部分的に機能します。Google は、PC 版 Google Play Games でのサポートに最善を尽くしますが、機能が保証されるわけではありません。
- Google Cloud Messaging(非推奨。Firebase Cloud Messaging を使用してください)
- Firebase Authentication(電話番号認証は機能しません)
- Firebase Cloud Messaging
- Firebase 共通ライブラリ
- Firebase ML
- Firebase Remote Config
- Firebase 向け Google アナリティクス
サポート対象外
以下のモジュールは PC 版 Google Play Games でサポートされていませんが、失敗した場合に PC 版 Google Play Games で問題を引き起こすことはありません。
- 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
不安定
リリース プロセスの必須事項
PC 版 Google Play Games で予期しない動作が発生する可能性があるため、PC では以下のモジュールを使用しないでください。
対象範囲別ストレージを有効にする
リリース プロセスの必須事項
このセクションは、ゲームが外部ストレージとの間で読み書きする場合に適用されます。ストレージに対する読み書きの別の方法として、対象範囲別ストレージを適用する必要があります。これにより、以下の機密情報の許可を求めるプロンプトをプレーヤーに表示する必要がなくなります。
android.permission.READ_EXTERNAL_STORAGEandroid.permission.WRITE_EXTERNAL_STORAGE
対象範囲別ストレージについて詳しくは、以下をご覧ください。
アナリティクス
従来の Google アナリティクス サービスは PC 版 Google Play Games では機能しません。該当する場合は、Google アナリティクス 4 に移行する必要があります。
ゲームに影響があるのは、Google アナリティクス 360 を現在使用している場合のみです。Firebase SDK を使用してゲーム内のアナリティクス イベントをトラッキングしていて、ゲームを Google アナリティクス コンソールでプロパティとして表示できる場合、これ以上の対応は必要ありません。