Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対...

UnityによるPCアプリの新しい選択肢。「PC版 Google Play Games」への対応について

GREE Tech Conference 2024で発表された資料です。
https://techcon.gree.jp/2024/session/TrackB-4

gree_tech

October 25, 2024
Tweet

Video

More Decks by gree_tech

Other Decks in Technology

Transcript

  1. 目次・アジェンダ • はじめに ◦ なぜPC版を作るのだろう? ◦ PC版 Google Play Gamesとは?

    • PC版 Google Play Games対応 ◦ x86-64 apkの実行環境を準備 ◦ x86-64 ABI対応について ◦ PCディスプレイ対応 ◦ 権限ダイアログの無効化 ◦ WebView対応 ◦ その他 • まとめ • 所感 3
  2. PC版対応の選択肢 PCゲームの配信プラットフォームはいくつかありますが、Unityで開発したアプリにおいて 主要なプラットフォームは下記になります • Steam ◦ 世界シェアNo.1: 世界中で最も利用されているPCゲームプラットフォームであり、日本で も圧倒的な人気を誇ります。 ◦

    豊富なタイトル: インディーゲームから大作まで、幅広いジャンルのゲームが揃っており、 日本語に対応しているタイトルも多数あります。 • DMM ◦ 国内最大級のPCゲームプラットフォーム: 数多くのオリジナルタイトルや海外ゲームの ローカライズ版を配信しています。 ◦ 日本向けのコンテンツ: 日本人向けのゲームやイベントが多く、日本のゲーム文化に根ざし たサービスを提供しています。 9
  3. PC版 Google Play Gamesとは Androidスマートフォンで遊んでいたゲームを、Windowsパソコンでプレイで きるサービスです。 主な特徴: • スマホゲームをパソコンのディスプレイの大画面、高解像度、高フレッ シュレートで迫力のあるグラフィックで楽しめます

    • スマホのタッチ操作だけでなく、マウスやキーボードを使った直感的な操 作も可能です • クラウドセーブに対応しており、スマホとパソコン間でゲームデータが同 期されるので、いつでもどこでも同じゲームを楽しめます • スマホで貯めたGoogle Playポイントをパソコンでも利用できます 13
  4. PC版 Google Play Gamesの審査について • 互換性のあるビルドの要件 ◦ ARMまたはx86-64ビルドに対応している ◦ PC版で利用できない機能(Androidのカメラなどや一部のGoogle

    API)の無効化 ◦ 埋め込みWebViewの変更 • 最適化されたビルドの要件 ◦ x86-64 ABI対応 ◦ 入力対応(キーボードやInput SDKの対応など) ◦ PCディスプレイ対応 ◦ Google Play Games サービスへのログインと PC 版ゲームの同期 ▪ ここはAndroid版との対応と同じなので割愛 22
  5. PC 版 Google Play Games デベロッ パー エミュレータのセットアップ • Windowsのみ対応

    • ダウンロード ◦ https://developer.android.com/games /playgames/emulator?hl=ja • 仮想化 ◦ Hyper-V を有効にする • その他 ◦ セキュリティツールが原因で起動しない こともある。設定を要確認 24
  6. adb(Android Debug Bridge)のセッ トアップ • Android Studioにバンドルされてい るものを推奨 • 通常のAndroid開発と同様にエミュ

    レータを検知、apkのインストー ル、logcatが可能 • 接続はlocalhost:6520で固定 25
  7. x86-64 ABI対応前の確認 • Unityのバージョン確認 ◦ Unity 2019.4.31f1、 2020.3.19f以降のバージョンで 動作できるようにする ◦

    Unity2018以前はx86ビルドはで きるが、x86-64ではビルドでき ない • IL2CPPで動作できるようにする ◦ Target Architecturesでx86-64が 選択できるようになる 27
  8. x86-64 ビルド後の確認 • apkのlibを確認 ◦ Android StudioのAnalyze APKを使う と簡単にapk内部を確認できる ◦

    Androidで実行可能なarm64版とPC版 (x86_64)版のlibの内容を比較しながら確 認。内容物が同じであれば基本的に問題 なし ◦ サードパーティのネイティブプラグイン を導入している場合(サウンドなど) x86_64版がない場合があるので、プラ グイン開発元に問い合わせる必要がある 28 ※Analyze APKの結果 ピンクがx86_64版、グリーンがarm64版
  9. グラフィックス要件 • Graphics APIの選択 ◦ OpenGLES3.1以下、またはVulkan1.1以下の選択する • 解像度 / アスペクト比

    ◦ 4K解像度(3840 × 2160)まで対応 ◦ 横持ち16:9 縦持ち9:16 ただし、回転する場合は16:9で縦持ち状態のとき左右にレター ボックスができる ◦ 理想的なユーザーエクスペリエンスの実現のために、21:9、16:10、3:2 などもサポート する必要もある ◦ ゲーム起動後に動的に画面のアスペクト比を変更することはできない 30
  10. グラフィックス要件 • Graphics APIの選択 ◦ OpenGLES3.1以下、またはVulkan1.1以下の選択する • 解像度 / アスペクト比

    ◦ 4K解像度(3840 × 2160)まで対応 ◦ 横持ち16:9 縦持ち9:16 ただし、回転する場合は16:9で縦持ち状態のとき左右にレター ボックスができる ◦ 理想的なユーザーエクスペリエンスの実現のために、21:9、16:10、3:2 などもサポート する必要もある ◦ ゲーム起動後に動的に画面のアスペクト比を変更することはできない 31 まずは1920:1080(フルHD)で画面サイズを決め打ちして、対応 の目安とすることをおすすめします
  11. エミュレーターのアスペクト比を 変えるアプローチ 39 • Screen.SetResolutionメソッド で解像度を変更することも可能 • アスペクト比が同じなら同一の ウィンドウサイズで内部の解像 度のみが変更される

    • UIは推奨であるUI Scale Mode がContent Pixel Sizeだと解像 度に応じてレイアウトが変わる ので、検討する Windowsのトレイ内のアイコンを右ク リックするとエミュレータのオプション が表示される
  12. 余白部分をなくすアプローチ 41 1. 背景用カメラ(ScreenCamera) をシーンに追加 2. Render Type:Base 3. Rendering

    / Priorityをゲーム カメラより小さくする(マイナ ス値でも可) 4. Rendering / Culling Maskを背 景専用のレイヤーにする(この 例ではScreen)※α 5. 背景に描画したいものはLayer をScreenにする※β ※α レイヤーにScreenを新規追加 ※β レイヤーをScreenにする
  13. 今回作成したサンプル背景 42 • Projection:Orthographic ◦ 画面いっぱいにエフェクトを表示 しやすい • Environment /

    Background Type:Solid Color • 桜吹雪はVFX Editorで作成 • ゲーム画面でパーティクルエフェクト の半分ほどが塗りつぶされてしまうの で、フィルレート的にはもったいない • ScreenCameraからはAudio Listener コンポーネントを削除する
  14. 横持ち画面に切り替えたケースの対応 44 • 全画面表示する ◦ ゲームカメラのViewport.rectを (0,0,1,1)のdefault状態にする ◦ 基本的にはこれで問題ない •

    ゲーム画面にポストエフェクトをかける ために、UIのカメラを別に作ってゲーム カメラのカメラスタックに配置している 場合 ◦ ゲームカメラと同様に Viewport.rectを変更する必要があ る
  15. Androidの権限ダイアログを無効にする • マイクの権限を除いて、PC版 Google Play Gamesでは権限ダイアログが 表示されない • 実行時に権限ダイアログのリクエストなどは行わないようにする •

    このあたりのリクエストは、UnityEditor上では呼び出さないよう、 #if !UNITY_EDITOR && UNITY_ANDROID で定義されていることが多いので、PC版でも同様に呼び出さないように するとよい 48
  16. デバッグについて • PC版 Google Play Games Developer EmulatorはUnity Editorと接続す ることができないため、LogやFrameDebuggerなどの各種Analysisツール

    を用いたデバッグができない • Android Studioは接続できるので、Logcat等での情報取得は可能 • 上記制約により概ねの機能チェックはAndroid実機で担保することになる が、グラフィックス周りで挙動の違いが出ることも時々ある • Google Play ConsoleのApp Bundle エクスプローラーにaab形式でアップ ロード後、署名済みユニバーサルapkをダウンロードすることで各種サー ビスの検証が可能になる 52
  17. まとめ • PC版 Google Play GamesではAndroidと同じアカウント認証/課金モ ジュールを使うことができるため、他のPC版よりも少ない工数でPC版リ リースを作成することができる • x86-64

    ビルドのためにネイティブプラグインの対応状況は要確認 • PC版 Google Play Gamesのウィンドウアスペクト比は初期状態で固定の ため、縦持ち<->横持ちとアスペクト比が変更する演出がある場合は横長 のアスペクト比を選択して、それぞれ対応する • PC版 Google Play Gamesでは権限ダイアログが表示されないので呼び出 さないようにする • WebviewまわりはApplication.OpenURLに置き換える • デバッグやビルドについて、通常のAndroidと異なる工夫が必要 55