チャプター外のPAD利用アセットの扱い方

30 views
Skip to first unread message

mini

unread,
Oct 1, 2025, 3:19:54 AM (2 days ago) Oct 1
to 宴ユーザーグループ
【宴のバージョン】Utage version 4.0.1
【UnityのバージョンとOS】Unity 6 (6000.0.40f1) , Windows 11 Home
【Unityの熟練度】約1年半の開発業務経験アリ (他、UnrealEngineやC++でのゲーム開発経験も約8年アリ)

お世話になっております。


Androidアプリの開発を進める中で、
PlayAssetDelivery(以下、PAD)を利用する場合の適切なロード処理が判断できませんでした。
(ストアからのダウンロードではなく、あくまで読み込みについて)

現在は下記のようなアセット状況です。
  ・タイトル画面(シーン上にアセット配置。つまりAndroidアプリに同梱想定)
  ・チャプター選択画面(PADのinstall-time設定でアセットパック化)
  ・チャプター1(PADのon-demand設定でアセットパック化)

タイトル画面はアプリ起動後に問題無く表示・動作できましたが、
チャプター選択画面で初生成されるテクスチャやサウンドアセットの読み込みで失敗しているようでした。
(チャプター1は未確認)

また、宴では「チャプターごとのダウンロード」や、「指定サーバーからのダウンロード」に関してのご説明を見かけたのですが、
「チャプターに属さず、PADを利用した場合のダウンロード」については見受けられなかったため、
そもそも読み込み処理の失敗というよりも、ダウンロード処理の時点で、
私の設計が宴の想定から外れている可能性もあるのかと考えております。


今回のケースに適切なダウンロード・読み込み処理を教えていただけないでしょうか。


以上です。
他ドキュメントの見逃しや、サポート対象外の内容でしたら申し訳ありません。
ご確認ご回答のほど、よろしくお願いいたします。

マッドネスラボ

unread,
Oct 1, 2025, 10:06:05 AM (2 days ago) Oct 1
to 宴ユーザーグループ
すみません。どう実装したのかわからないので、なんともいえないのですが、
PlayAssetDelivery自体は宴が直接対応しているわけではないです。

>そもそも読み込み処理の失敗というよりも、ダウンロード処理の時点で、
宴に限らずですが、Unity公式のファイルロードやアッセットバンドルのロード処理や、Unity公式の拡張アセットであるAddressable Assets Systemも、PlayAssetDelivery自体に対応しているわけではないはずで、その点は宴でも同じです。
もし、Unity公式機能経由で対応方法がすでにあるのであれば、その設定をしてもらえば自動的に解決するするかもしれませんが、リンク先のドキュメント等にある通りサンプルを応用して独自に実装する必要があるかと思います。

>私の設計が宴の想定から外れている可能性もあるのかと考えております。
宴はファイルロードの仕組み自体はカスタムできるようになっているので、その意味では設計思想的には対応可能ともいえます。
(普通のUnityのアセットはロード処理はカスタムできないのが普通だと思いますので)
とはいえ、対応するための実装が必要になります。

アセットバンドルは基本的には、自分のサーバーからファイルを追加DLする仕組みが用意されています。(なのでサーバーの運営・管理維持コストがかかります)
GoogleのPlayAssetDeliveryは、追加コンテンツを扱うという意味では同じですが、独自処理が必要になります。(Googleに任せられるというメリットがあるのかと思います)
それを使用するべきかどうかは、プロジェクト固有のご判断にお任せします。


>PlayAssetDelivery(以下、PAD)を利用する場合の適切なロード処理が判断できませんでした。

PlayAssetDeliveryはアセットバンドル化したアセットを、PlayAssetDelivery経由でダウンロード・ロードするという仕組みのはずなので、
おおざっぱには次のような独自の仕組みがあるのかと思います。
1 アセットバンドルを作成し、PlayAssetDelivery用の場所に置く
2  PlayAssetDelivery経由で、それらをダウンロードする(アプリ起動時、または実行中)
3  PlayAssetDelivery経由で、アプリ実行中に必要になった時にアセットをロードする

1に関しては、アセットバンドル作成までは従来のやり方か、Addressable Assets Systemと同じかと思います。それ以上はPlayAssetDeliveryの仕組みに従う形で。
2に関しては、設定しだい(install-time?)ではアプリ起動時に自動的にDL済みになってるのかもしれないですが、基本的にはPlayAssetDeliveryの仕組みに従って実装してください。
多くの場合は、ロードの前にダウンロードを終えているように実装することが多いと思います。(ロード時にダウンロードされていなかったらダウンロードしてロードというのもありえますが、その場合はそのようにロード処理を実装してください)
この場合、どのタイミングでどのアセットをダウンロードしておくかが問題になりますが、それもPlayAssetDeliveryの仕組みに合わせて適切に設計する必要があるかと思います。

3に関して、
宴というかUnityのデフォルトのシステムでは、PlayAssetDelivery経由でロードすることができないはずなので、
この仕組みなどを使ってロード処理をカスタムする必要があります。 Asset File Manager | ロードやアンロードの処理をカスタムする

宴のAddressable Assets System対応を使っている場合、
Addressable Assets SystemのPlayAssetDelivery対応に合わせて、必要に応じて宴側のAddressable Assets System対応もカスタムする必要が出てくると思います。



2025年10月1日水曜日 16:19:54 UTC+9 mini:

mini

unread,
Oct 1, 2025, 11:05:34 PM (2 days ago) Oct 1
to 宴ユーザーグループ
迅速なご回答、とても助かりました。

いずれにせよ、各所でPlayAssetDeliveryへの対応を独自実装することになる、ということですね。
かしこまりました。

ご対応いただきましてありがとうございます。

---------------------------------------------------

※今回頂いたご返答を精査しているときに、
 本会話を参照された方への参考になりそうなサイトを見つけたので載せておきます。
 ただし、少し情報が古かったり、そもそもこれで合ってるかどうかの確証はないので、きっかけ程度まで。

  これを模倣するというより、一つの成功例として参考になりそう
  AndroidとiOSでの制限差異も踏まえたものになっている

  直近のエンジン類の更新よりも前の記事 & ほぼコードで処理する形っぽいので、鵜呑みにはできない(かもしれない)けど、
  「AssetPackからロードするように実装する」という部分が、PlayAssetDelivery経由でロードするということに該当する(かもしれない)
2025年10月1日水曜日 23:06:05 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages