Addressable アセットシステムは、多くの Unity ユーザー、特に管理すべきコンテンツをたくさん持っているユーザーにとって不可欠な機能です。Cloud Content Delivery を使ったプレイヤーへのアセット配信についていくつかご質問を受けましたので、この記事においてクイックスタートガイドという形でお答えいたします。
Cloud Content Delivery(CCD)は、非常に強力な技術スタックを組み合わせて、ゲーム開発者とプレイヤーの双方にとって、シームレスなコンテンツ更新のビルドと公開を可能にします。簡単なアセット管理と、全世界に広がる巨大なコンテンツ配信ネットワーク(CDN)を組み合わせることで、ゲーム開発者が運営中のゲームへ更新を配信するためのサービスとしては初めて、本当にエンドツーエンドなサービスとしてご提供するものとなっています。
現状の作り付けがどのようなものであっても、俊敏性と使いやすさを追求できるように、Cloud Content Delivery は設計されています。また、すでに Unity エンジンを使用している場合は、より簡単に使い始めることができます。
フォーラムでは、クライアントのパートナーとのやり取りやアンケート回答の中で、Cloud Content Delivery のエンジン内統合を活用する方法について質問されています。この記事では、その中でも最も重要なものの 1 つである Addressable に焦点を当てます。
簡単に言えば、Addressable アセットシステムは、ゲームのアセットを保存してカタログ化し、自動的に検索して呼び出すことができるようにするものです。Cloud Content Delivery は、コードから完全に分離された CDN パートナーである Akamai を介して、これらのアセットを直接プレイヤーにプッシュします。これにより、ビルドサイズが大幅に削減され、アップデートを行う際にプレイヤーに新しいバージョンのゲームを丸ごとダウンロードしてインストールしてもらう必要がなくなります。
この機能の組み合わせは、ライブゲームの運営において非常に便利です。例えば、基本プレイ無料(F2P)モデルのゲームでは、ほとんどのプレイヤーはゲームをある程度進める前にプレイを止めてしまいます。ユーザーの 70% は初日のプレイを終えたらもう戻ってこないのです。また、大多数のプレイヤーに無関係なアセットをダウンロードさせることは、不必要なストレスを生じさせ、ダウンロードの待ち時間を長くしてしまい、さらにはプレイヤーをもたつかせたり、フラストレーションを溜めさせたりした結果、離脱させてしまうことにもなりかねません。
Cloud Content Delivery と Addressable アセットシステムを組み合わせて使用すると、特定のゲームモード、ミッション、イベントに必要なすべてのアセットを簡単にパッケージ化することができ、必要なときに必要なプレイヤーにのみプッシュされるようにすることができます。この原則をコンテンツパイプライン全体に拡大することで、プレイヤー体験とビジネスの両方に大きなプラスの影響を与えます。ライブゲームには常に更新が必要ですが、Cloud Content Delivery は、新しいコンテンツの展開プロセスを持続可能で、自動化され、俊敏で信頼性の高いものにしてくれます。
Cloud Content Delivery は純粋に使用量に応じて課金されるシステムで、配信されたアセットに対してのみ課金が発生します。つまり、アセットを一部のプレイヤーにのみ配信することで、使用する帯域幅を大幅に削減し、最終的にはコストを削減することができます。さらに、最初の 50GB の帯域幅を毎月無料で提供しているため、コンテンツを開発してテストしている間はコストをかけずに、ソフトローンチ時にサービスを試すことができます。
コンテンツの更新に適用される原則は、バグ修正にも適用されます。Addressable アセットシステムは、プレイヤーの手元で起きる問題の原因となっている、欠陥のあるアセットをすぐに見つけることができるように機能します。問題を特定して修正した後は、すべてのプレイヤーにゲームの再ダウンロードを強制することなく、新しいアセットを配置することができます。
Cloud Content Delivery のバッジ付与システムは、異なるビルドまたはバージョンを識別して自由に切り替えることができるため、実験が非常に簡単になります。例えば、異なるリソースバケットに「staging」や「production」などのタグを付けることで、ビルドパイプラインの中で様々なプロジェクトのサイクルを回すことが簡単になります。同様に、アセットをビルドの繰り返し更新されるバージョンとしてバンドルすることで、ボタンをクリックするだけで、不要な変更を取り消したり、失敗したアップデートをロールバックしたりできるように、簡単に前後にジャンプすることができます。
ここまで紹介したように Cloud Content Delivery を動作させるためには、Addressable をコマンドラインインターフェイス(CLI)に接続する必要があります。以下の 4 つの手順を実行してください。
Cloud Content Delivery で Addressable アセットを管理する最初のステップは、必要なアセットを Addressable アセットとしてマークすることです。詳細は「Marking assets as Addressable」をご覧ください。
次の重要な手順は、アセットをグループに配置することです。後でこれらのグループに基づいてアセットバンドルを生成する必要があるためです。詳細は「Using the Addressables window」をご覧ください。
次に、プロジェクトを Cloud Content Delivery プロジェクトにリンクする必要があります。これを行うには、カスタム URL を、希望する Addressables プロファイルの RemoteLoadPath として挿入します。この段階では、2 つのワークフローのパスを選択することができ、それぞれに独自のカスタム URL が存在します。
https://(ProjectID).client-api.unity3dusercontent.com/client_api/v1/buckets/(BucketID)/release_by_badge/(BadgeName)/entry_by_path/content/?path=
上記の URL の例において使われているプレースホルダーは、以下の意味を持ちます。
カスタム URL を取得したら、次の手順を実行します。
URL を入力したプロファイルについて、プロジェクトはどこで Addressable アセットを取得するかを把握します。
次に、Cloud Content Delivery で使用するプロファイルについては、後に Cloud Content Delivery プロジェクトに配置する Addressable コンテンツを生成する必要があります。
Addressable コンテンツをビルドすると、コンテンツカタログ(.json)、ハッシュファイル(.hash)、アセットバンドル(.bundle)ファイルが生成されます。この時点で、これらのファイルを Cloud Content Delivery CLI 経由で上記の手順で指定したバケットにアップロードする必要があります。
ここで Cloud Content Delivery の真価が発揮されます。Addressable バンドルがリンクされたバケットの場所を特定するとすぐに、そこにあるすべてのコンテンツを管理し、QA を行い、ステージングと本番環境の間を簡単に移動させることができます。
2020 年後半から、Nifty Games 社はさまざまな Unity 製品の中でも、特に Cloud Content Delivery と Addressable を使い込んでおり、同社のゲームタイトル『NFL Clash』で無駄のないスムーズなプレイヤー体験を実現しています。この講演では、Nifty 社の技術責任者である Ibs Rageh 氏が、ユーザーへの要求を最小限に抑えながらリリースを管理し、コンテンツをデプロイするための同社のプロセスについて、解説しています。
以下に掲げた動画では、Cloud Content Delivery がゲームにどのような効果をもたらすのかを大まかに説明しています。こちらの動画をご覧いただいた上で、Cloud Content Delivery にぜひご登録ください。毎月最初の 50 GB の帯域幅は無料でご利用いただけます。