Addressable を使用してコンテンツ管理を簡略化する

Addressable Asset System によって、編集時や実行時のコンテンツ管理を簡素化し、ゲームの初期リリースと更新リリースをよりスムーズで簡単する方法について説明します。この記事は、ライブコンテンツチームのBill Ramsourが Unite Copenhagen 2019 で行った発表に基づくものです。Addressables をすでにプロジェクトで使用していて、その体験についてのフィードバックを提供したい場合は、 こちらのアンケートにご回答ください。

Addressables の概要

Addressable Asset System(Addressables)は、複雑なライブコンテンツを提供する大規模な制作チーム向けのサポートを向上する Unity エディターおよびランタイムのアセット管理システムです。このシステムでは、非同期ロードを使用して、あらゆる依存関係のコレクションが存在する、任意の場所からロードを行うことができます。Addressables では、アセットバンドルをより効率的にパッキングし、イテレーション時間を減らすことで、ダイナミックなゲームをシンプルに作成できます。

Addressables を使用すれば、イテレーション時間、依存関係管理、メモリ管理、コンテンツパッキングなど、開発者が抱えるさまざまな課題に対応することができます。

Addressables - ワークフロー

Addressables のワークフロー

アセット(プレハブ)が "アドレス可能" としてマークされると、任意の場所から呼び出すことができるアドレスが生成されます。アセットがどこに存在していても(ローカルでもリモートでも)、システムはその場所と依存関係を特定し、そのアセットを返すことができます。アセットとは、ゲームやアプリを作成するために使用するコンテンツのことです。アセットの一般的な例としては、テクスチャー、マテリアル、オーディオクリップ、アニメーションなどがあります。 

Addressables は、アセットバンドルを抽象化してコンテンツ管理をより効率化すると共に、アセットとそのすべての基礎データをコンテナー化します。 

Addressables のワークフローでは、リクエストはまずカタログシステムを通過します。システムは、アドレスを場所へとデコードします。これはビルド時に生成されたデータで構成されるもので、これにより、そのアセットが何であるかや、その依存関係、ローカルかリモートかなどがわかります。 

カタログの次に、リクエストはプロバイダーシステムを通過します。1 つ以上のプロバイダーが、これらの場所情報を使用してコンテンツを検索し、その後、コンテンツをデバイスに返します。 

Addressables では、ランタイムが非同期となります。これにより、アセットがどこにあるかにかかわらず、それらを必要な時に取得できるという柔軟性が確保されます。アセットの場所は、開発が現在どのステージにあるかによって変わる可能性がありますが、ゲームコードの変更は必要ありません。

Addressables - グループ

Addressables グループ

何かをアドレス可能としてマークすると、それは Addressables グループの一部になります。このグループは、アドレス可能なアセットとそのデータをまとめるコンテナーです。グループは、「Groups」ウィンドウ(Addressables のホームベース)で視覚化できます。グループでは、アセットをローカルとしてデバイスに配置するか、それともサーバー上にアップするかを決定できます。

Addressables グループに含まれるデータは、スキーマ(データコントラクト)を使って保持されます。スキーマの中には、アセットやコンテンツをバンドル化する方法に特化したものもあります。さらに便利な設定として、Build PathLoad Path もあります。これらを使用すると、ドロップダウンメニューをから変数を選択することで、コンテンツをローカルまたはリモートに設定できます。 

Addressables プロファイルシステムでは、Addressables グループのプロファイルを作成した後、特定のプロファイルについて、変数の評価基準を定義します。これにより、グループのデータを設定した後、データをリモートで変更した場合でも、そのグループのコードを書き換える必要がなくなります。

運用

Addressables を最大限に活用するには、ゲームの提供方法という観点からデータを視覚化するのが効果的です。構造にコミットする必要はありません。なぜなら、開発中にはプロファイル変数を簡単に変更できるからです。ただし、バンドルを整理するための全体的なアプローチを定める必要があります。 

たとえば、ゲームをリモートコンテンツと共に提供する場合で、開発中はそのコンテンツをローカルに置いておきたい場合は、リモートパスによってストリーミングアセットをポイントするプロファイルを作成するという方法があります。このようにすれば、グループのコードに手を加えることなく、すべてのリモートコンテンツがローカルになるように、グローバルに変更することができます。

Addressables - エディターホスティング

エディターホスティング

場合によっては、コンテンツをサーバー上でホストする必要が生じることもあります。その場合は、リモートパスを設定し、実際の URL をポイントする代わりに、ホスティングサービスによって定義された変数を使用することができます。 

ホスティングを有効にすると、ホスティングサービスによってエディター内の HTTP ホストが設定されます。開発者は、デバイスやプレイヤーをこのホストに接続して、さまざまテストを行うことができます。

あらゆるものをリモートとして設定できる機能は、エディターホスティングの強力な機能の 1 つです。これは、開発者やアーティストにとって特に便利です。なぜなら、コンテンツのイテレーションを継続しながら、プレイヤーを作成し、それをデバイスにデプロイできるからです。プレイヤーを再デプロイしたり、コンテンツを 1 つのデバイスから別のデバイスへと移動することについて心配する必要はありません。 Addressables でのホスティングサービスの作成方法と設定方法について詳しくは、Unity のドキュメントをご覧ください。

動的コンテンツのサポートに関する主要な技術的課題の多くが Addressables によって解決されますが、まだ「最後の」問題が残っています ― 公開済みのゲームやアプリケーションのためのアセットのホスティングと配布です。企業向けのグローバルコンテンツホスティングソリューションが、Addressables システムに完全に統合された形で今年中に公開予定となっています。このサービスについてさらに詳しくお知りになりたい方は、こちらからご登録ください。 

Addressables でのアセットのロード方法

ライブコンテンツチームでは、作業を迅速化するためのワークフロー作りに取り組んでいますが、これには、アセットのロードを迅速化する取り組みも含まれています。 

Addressables でのアセットのロード方法

アドレスを使用する:まずは、アドレス可能アセットを文字列によってロードする方法があります。アセットの場所識別子を使用することで、ランタイム取得を簡単にすることができます。 

ラベルを使用する:アドレス可能アセットの追加の識別子を指定して、類似する項目のランタイムロードを行う方法です。 

AssetReference を使用する:AssetReference は、直接参照のように動作するものですが、遅延初期化を使用するという点が特徴です。AssetReference オブジェクトは、オンデマンドでロードできるアドレス可能アセットとして、GUID を格納します。このワークフローは、エディターで作業しているアーティストにとって便利かもしれません。

参照するアセットにサブオブジェクト(SpriteAtlas 内のスプライトなど)がある場合は、そのサブオブジェクトをさらに参照することもできます。 

Addressables とスプライトのロードプロセスを実際に見てみたい場合は、発表セッションのスプライトデモ部分をチェックしてください。 

Addressables - ビルドのカスタマイズ

ビルドのカスタマイズ

Addressables パッケージには、再生モードデータを作成してアプリ開発の迅速化を支援するための、3 つのビルドスクリプトが含まれています。Use Asset Database、Simulate Groups、そして Use Existing Build の 3 つです。

Use Asset Database スクリプトでは、再生モードを出入りしながら、コンテンツのイテレーションを行うことができます。そのため、ゲームをすばやく実行しながら、ゲームの流れを見ていくことができます。アセットデータベースを通じてアセットを直接ロードできるので、分析やアセットバンドルの作成を行うことなく、スピーディにイテレーションが行えます。

Simulate Groups では、アセットバンドルを作成することなく、コンテンツのレイアウトや依存関係を分析することができます。ゲームプレイ中にバンドルのロードやアンロードがいつ発生するかを確認するには、「Addressables Event Viewer」ウィンドウでアセットの使用状況を確認してください(「Window」>「Asset Management」>「Addressables」>「Event Viewer」)。このモードは、ロード戦略をシミュレートし、コンテンツグループの調整を行いながら、製品版リリース用の適切なバランスを探るのに役立ちます。 

Use Existing Build スクリプトは、デプロイ済みのアプリケーションビルドのようなものですが、データを個別のステップとしてビルドする必要があります。このモードでは、再生モードに入る際にデータの処理が一切行われないので、アセットを変更する予定がない場合は、このモードが最も速い方法となります。

Addressables についての詳細情報はどこで入手できますか?

Addressables をプロジェクトで使用したい場合は、Addressable Asset System のドキュメントで使用方法をご確認ください。最新のブログ記事GitHub のサンプルもぜひチェックしてください。また、 Addressables での体験についてフィードバックを提供したい場合は、こちらのアンケートにご回答ください。フォーラムのディスカッションに参加することもできます。 

弊社のウェブサイトは最善のユーザー体験をお届けするためにクッキーを使用しています。詳細については、クッキーポリシーのページをご覧ください。

OK