アセットのクラウド配信を実装する

サイズ要件に合わせてアプリを縮小する場合は、まず APK の標準的なサイズ最適化手法をお試しください。サイズをさらに縮小する必要がある場合、アセットのクラウド配信機能が必要になることがあります。このドキュメントでは、クラウド配信用のアセットを準備する方法と、さまざまなゲームエンジンでのサポート オプションについて説明します。このページのガイダンスはゲームに焦点を当てていますが、この原則は大規模なアセットを含むアプリにも適用されます。

準備

アセットのクラウド配信用にアプリを分割する場合、ユーザーがいつ利用可能にする必要があるかに基づいてアプリファイルをセクションに分割する方法を検討してください。必要とするタイミングは、常に必要、起動時に必要、後で必要の 3 つのカテゴリに分類できます。

常に必要

小さなブロックに分割するのが難しいアセットや、ベース APK 内にバンドルすることが必要なアセットがあります。例として、ゲームのコード、そのライブラリやエンジンの依存関係が挙げられます。Google Play Core はコードの App Bundle をサポートしていますが、多くのエンジンは後でダウンロードされるコードに対応していません。

起動時に必要

ゲームの起動後、ユーザーがすぐにプレイできる必要があります。Google Play Instant の場合、LTE 接続または 4G 接続によりユーザーがゲームのプレイを開始できるまでの時間を 15 秒未満にすることが求められます(Google Play Instant のチェックリストをご覧ください)。そのため、起動後の二次ダウンロードは、初回のユーザー エクスペリエンスをサポートするのに必要最小限の範囲に限定してください。たとえば、起動直後の fast-follow ダウンロードの対象は、初回のゲームレベルや場所のアセット、または最初の数分間ゲームをプレイするのに必要なコードなどが考えられます。

後で必要

必要に応じて後からバックグラウンドでダウンロードできるものは、このカテゴリに分類されます。このカテゴリには、長時間プレイするゲームのほとんどのアセットが該当します。これらのアセットのダウンロードを後から行うようにすることで、アプリのサイズをできるだけ小さくすることができます。

エンジンでのサポート

クラウドによるアセット配信は、Instant Play ゲームにおける 15 MB の制限を超えた利用を可能にする主要な方法です。アセットのダウンロードにどのように対応しているかは、ゲームエンジンによって異なります。下記の最も一般的なケースと、アセットのホストに関するオプションをご覧ください。

起動時に必要となるアセットを少なくすることで、ユーザーがゲームのプレイを開始できるまでの時間が短縮され、初回起動時に離脱してしまうプレーヤーの数を減らし、プレーヤー維持率の向上につなげることができます。

Play の機能配信(App Bundle を使用)

App Bundle としてアプリを公開する場合(推奨)、機能モジュールを使用してベース APK 以外の追加リソースを取得できます。Instant App の場合、マニフェストで各機能モジュールについて dist:instant="true" を設定する必要があります。dist:on-demand プロパティは使用しないでください。これは主に、インストール済み APK 内のオンデマンド モジュールに使用します。また、各機能モジュールは、コードが含まれているかどうかにかかわらず、Instant APK の上限である 15 MB 未満にする必要があります。各モジュールがこの上限内に収まらないと、アルファ版トラックやリリース トラックに公開できません。正しく設定すると、PlayCore ライブラリを使用してランタイムに機能モジュールを取得できます。

Cocos Creator

バージョン v2.0.4 以降の Cocos は、アセットのクラウド配信をサポートしています。アセットが時間内にダウンロードされない場合は、Cocos がアセットをオンデマンドでダウンロードし、プレースホルダをレンダリングします。Cocos はアセット ファイルを生成しますが、Cocos 自身はそのホストサービスを提供していないので、なんらかのオンライン サービスを使用してホストする必要があります。

Unity

クラウド配信は、Unity バージョン 5.6、2017.4、または 2018.2 の Unity Google Play Instant プラグインでサポートされています。Unity の新しいバージョンほど、エンジン ストリッピングによるメリットが増えることから、空き容量をより多く確保するために移行することをおすすめします。Unity のクラウド アセットは、Unity が作成した AssetBundle ファイルにホストされます。Unity は、本質的にアセット バンドルのダウンロードをサポートしています。アセットをクラウド サーバーにアップロードすることで、アセットのクラウド配信が可能になります。

その他のエンジン

カスタム エンジンを使用する場合も、ネイティブ ライブラリのコレクションを使用する場合も、アセットのクラウド ダウンロードが最初からサポートされていることがあります。クラウドからダウンロードする必要があるアセットが多い場合は、ゲーム用にアセットをオンデマンドでダウンロードする方法をコーディングまたは統合する必要があります。Firebase Hosting または Firebase Cloud Storage API を最初に試すことをおすすめします。一部のエンジンでは、簡単な HTTPS ファイルの取得を提供しており、それでニーズを満たせる場合もあります。

アセットのホスト

Google Play の App Bundle を使用して Play からアセットをダウンロードする場合以外は、アセットを別の場所でホストする必要があります。アセットをホストするサービスは、妥当なグローバル配信と可用性が確保できれば、どのサービスも利用できます。Google Play ゲームのアプリユーザーは世界中でプレイしているため、クラウドでホストされるアセットは、ユーザーがどこにいても迅速に配信される必要があります。