Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

インスタント アクセスに対するサポートを追加する

初めての Instant App を作成するで説明した Google Play Instant 上で稼働するアプリのセットアップ手順は、ゲームにも適用されます。このガイドでは、ゲームに固有のセットアップ手順について重点的に説明します。

Google Play Instant 対応のゲームを開発する際は、UnityGoogle Play Instant Unity プラグインの有無を問わない)や、Cocos2DAndroid Studio、独自のカスタム エンジンを使用することができます。

このガイドは、提供するゲーム体験の内容について、すでに決定されている方を対象としています。高品質のゲームを開発するためのアイデアやおすすめの方法については、Google Play Instant 版ゲームのユーザー エクスペリエンスに関するベスト プラクティスをご覧ください。

また、Google Play Instant 上で稼働可能なゲームを公開する前に、技術要件のチェックリストを確認する必要があります。

次のインテント フィルタを含むアクティビティが、Google Play Instant 版ゲームのエントリ ポイントになります。

<activity android:name=".GameActivity">
       <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
       </intent-filter>
    </activity>
    

このアクティビティは、ユーザーが Play ストアまたは Play ゲーム アプリ内で [今すぐ試す] ボタンをタップすると起動します。このアクティビティは、ディープリンク API を使用して直接起動することも可能です。

また、デベロッパー所有の URL を使用してプレーヤーがゲームにアクセスできるようにする場合は、アプリリンクを追加します。ただし、このようなアプリリンクを追加する場合、アプリリンク URL のいずれかと正確に一致するデフォルト URL も追加する必要があります。

アプリリンクとデフォルト URL の組み合わせの例を以下のコード スニペットに示します。

<activity
       android:name=".GameActivity" ... >

       <!-- App links (HTTP and HTTPS) -->
       <intent-filter android:autoVerify="true">
           <action android:name="android.intent.action.VIEW" />

           <category android:name="android.intent.category.BROWSABLE" />
           <category android:name="android.intent.category.DEFAULT" />

           <data android:scheme="http" />
           <data android:scheme="https" />
           <data android:host="example.com" />
           <data android:pathPrefix="/instant" />
       </intent-filter>

       <!-- Default URL -->
       <meta-data
           android:name="default-url"
           android:value="https://example.com/instant" />
    </activity>
    

バージョン コード

Instant App 版ゲームのバージョン コードは、インストール版ゲームのバージョン コードよりも小さくする必要があります。一般的なプレーヤーの移行順序として、Google Play Instant でゲームを体験した後、デバイスにダウンロードしてインストールすることが想定されています。Android フレームワークは、この移行をアプリのアップデートと見なします。

このバージョニング スキーマに準拠するには、次のいずれかの方法を採用してください。

  • Google Play Instant 版のバージョン コードを 1 から再開します。
  • インストール版 APK のバージョン コードを大きな数値の単位(たとえば 1000 単位)で増加するように設定して、Instant App 版のバージョン番号を増加するための余地を用意しておきます。

アプリのバージョン設定については、アプリのバージョニングを設定するをご覧ください。

ターゲット サンドボックスのバージョン

Google Play Instant 版のゲームは他のアプリと同様に、デバイス上の制限付きサンドボックス内で稼働します。Instant App の AndroidManifest.xml ファイルは、このサンドボックスをターゲットとするようにアップデートする必要があります。このアップデートを行うには、android:targetSandboxVersion 属性を <manifest> 要素に追加します。次のコード スニペットをご覧ください。

<manifest
       xmlns:android="http://schemas.android.com/apk/res/android"
      ...
       android:targetSandboxVersion="2" ...>
    

Gradle 3.0 以降を使用して Android 版のゲームをビルドしている場合は、com.android.feature プラグインや com.android.instantapps プラグインを機能モジュールに適用できます。このプラグインは、必要な属性をモジュールのマニフェスト ファイルに自動的に追加します。

詳細については、targetSandboxVersion 属性に関するドキュメントをご覧ください。

APK サイズの縮小

他のタイプのアプリとは異なり、Google Play Instant 版のゲームにはダウンロード サイズの制限(10 MB)があります。このサイズのゲームを作成するうえで、ゲームのロジックのリファクタリングが必要になることがあります。このセクションでは、ゲームのサイズを最適化するうえで役に立つツールや手法について説明します。

ツール

ゲームのサイズにかかわる要因を判断するには、以下のツールを使用します。

  • APK Analyzer: コンパイル済み APK のコンテンツに関して包括的なビューを表示できます。このビューでは、全体のサイズに対する各要素のバイト数を確認できます。このツールを使用すると、ゲームが使用しているリソース、アセット、ロジック、ネイティブ ライブラリのサイズを簡単にチェックすることができます。
  • Bloaty McBloatface: バイナリ ファイルのサイズ プロファイルを表示します。
  • GAPID: ゲームを再コンパイルすることなく、テクスチャ サイズを縮小した場合のファイルサイズに対する効果を確認できます。

手法

ゲームのサイズ縮小に使用できる手法を以下に示します。

  • ゲームのテクスチャの解像度を下げます。
  • GPU 上で非圧縮テクスチャを使用している場合は特に、WebP 形式を使用することをおすすめします。WebP 形式を使用すると、JPEG 画像と同じ品質の画像を 15~30% 小さいサイズで作成できます。WebP 画像の場合、解凍時間が長くなりますが、ゲームのテクスチャをダウンロードする時間に比べればごくわずかです。

    Google は、WebP 形式とオープンソース ゲームエンジンとの統合も進めています。

  • インストール版ゲームで使用可能な音の一部だけを使用します。

  • 以下の各種コンパイル フラグを使用することで、バイナリ ファイルのサイズを小さくすることができます。

    • -fvisibility=hidden - 最も重要なフラグです。cmake において、次のように指定できます。
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
          
    • -Oz - このフラグもサイズを縮小するうえで重要です。gcc を使用してコンパイルする場合は、代わりに -Os を使用してください。
    • -flto - 場合によってはファイルサイズを減らすことができます。
    • リンカーフラグ - --gc-sections を、-ffunction-sections-fdata-sections などのコンパイラ フラグと組み合わせて使用します。
  • コードやリソースを圧縮するには、ProGuard を使用します。

  • サイズの小さい DEX ファイルを生成するには、Gradle 4.4 以降を使用します。

Play Core Split Install API

APK サイズを縮小するためのおすすめの方法を適用しても、Google Play Instant 版ゲームを最適化して単一の 10 MB の APK に収めることが難しい場合もあります。この問題に対処するために、ゲームを複数の APK に分割することができます。プレーヤーはまず、メインのベース APK をダウンロードします。その後、ゲームのプレイ中に残りの分割 APK がバックグラウンドで使用できるようになります。

たとえば、ベース APK には、核となるゲームエンジンと、ロード画面の表示に必要なアセットだけを含めます。ベース APK が起動すると、ロード画面が表示され、ゲームとレベルのデータを格納した追加の分割 APK がすぐにリクエストされます。分割 APK が利用可能になると、そのアセットがゲームエンジンにロードされ、ゲームを開始するのに必要なコンテンツがプレーヤーに提供されます。

インストール プロンプト

プレーヤーが Google Play Instant 版ゲームのプレイを継続するようになったら、ある時点で、フルバージョンをデバイスにインストールするよう促すプロンプトを表示する必要があります。プロンプトを表示するには、Android 用 Google APIshowInstallPrompt() メソッドを使用します。

プレーヤーにインストールを促す方法やタイミングについては、Google Play Instant 版ゲームのユーザー エクスペリエンスに関するベスト プラクティスをご覧ください。

参考リンク

Google Play Instant の詳細については、以下の参考リンクをご覧ください。

コードラボ: 初めての Instant App を作成する
Google Play Instant に対するサポートを既存のアプリに追加します。
コードラボ: マルチ機能 Instant App を作成する
マルチ機能アプリをモジュール化します。