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

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

準備

アセットをクラウド配信するために APK の分割を検討する場合は、ユーザーが利用できるようにする必要があるタイミングに基づいて、アプリファイルを分割する方法を考えます。このタイミングは、一般的に次の 3 つのカテゴリに分類され、起動時のみでなく、その後も含め常に必要とされるものです。

常に必要

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

起動時に必要

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

後で必要

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

エンジンのサポート

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

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

動的アセット モジュール(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 は独自に提供していないことから、ホストする必要があるアセット ファイルをオンライン サービスを利用して生成します。

Unity

Cloud 配信は、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 のアプリバンドルを使用して Play からアセットをダウンロードしない場合は、アセットを別の場所でホストする必要があります。 アセットは任意のサービスを利用してホストできます。その際、十分なグローバル配信と可用性が確保されることが条件となります。Google Play ゲームアプリのユーザーは世界中でプレイしているため、クラウドでホストされているアセットは、ユーザーがどの場所にいても迅速に配信する必要があります。