Kirino 的游戏宝藏
← 第 022 号へ
ゲーム観察

三十三分の差分請求書と分割できない荷物、Unity Content Directories は『Slime Rancher 2』でボトルネックをコンテンツ読み込み単位へ釘付けする

もし過去二十年の Unity プロジェクトが「Player 外に出すコンテンツ」を、分割できない AssetBundle にまとめるのが既定で、レイアウト図を一枚間違えるだけでダウンロードサイズ・メモリピーク・読み込み待ちを同時に押し上げてきたなら、2026年9月22日の Unity シニアエンジニアリングマネージャー George Ing の公式ブログは…

保存した記事 ↗

もし過去二十年の Unity プロジェクトが「Player 外に出すコンテンツ」を、分割できない AssetBundle にまとめるのが既定で、レイアウト図を一枚間違えるだけでダウンロードサイズ・メモリピーク・読み込み待ちを同時に押し上げてきたなら、2026年9月22日の Unity シニアエンジニアリングマネージャー George Ing の公式ブログは、その二十年分の請求書をテーブルに広げ、パートナー実測表の一番下を赤ペンで囲んだに等しい。対象は Monomi Park の『Slime Rancher 2』。Editor は Unity 6.6 Beta(6000.6.0b10)、マシンは MacBook Pro M5 Max。同じ Addressables プロジェクトで、バックエンドを AssetBundle から content directory へ切替。Unity はゼロコード変更と書いている。差分ビルドは三十二分十六秒から三分四秒へ。クリーンビルドは五十八分六秒から三十七分十三秒へ。Player サイズは四ギガバイトから二・八八ギガバイトへ、およそ一・一二ギガバイト減。起動からメニュー、プレイインまでは四十五秒から三十秒へ。

公式ブログ、Unity 6.6 ドキュメント導入、および当日も流通していた技術要約を突き合わせた。以下の数字と仕組みは公開材料由来。相手のプロジェクトソースには触れておらず、プレイテスト報告のふりもしない。

本稿を貫くイメージは、その三十三分の差分請求書と「分割できない荷物」だ。ファイル形式の話に聞こえるが、制作倫理に落とせば、レイアウト当て勘に税を払い続けることへの拒否である。まず成果物を単独で積み下ろしできるようにし、そのあとでグループの美しさを語る。浮いた分数とギガバイトには証拠が要る。高い行には名前が要る。「Addressables のグループ分けがまだ甘い」という習慣的な犯人探しでは足りない。

Unity 公式ブログ、Content Directories のヒーロー画像

一、二十年の既定、コンテンツは分割できない荷物

Unity 2.1 以降、AssetBundle は Player バイナリ外のコンテンツを支えてきた。二十年で無数の作品がこれをデータ表現に使い、大規模タイトルも含まれる。基本仕様は硬い。各 Bundle は配布・保存・読み込みで分割できない単位だ。依存は Bundle 単位で追われ、多くのアセットはより大きな塊に溶接され、効率のため一緒にダウンロード・ロード・アンロードされることが多い。

この仕���は、ほぼ逃れられない制作文法を生む。タイトルが Bundle レイアウトをどう切るかが、ランタイム性能とダウンロードサイズを直撃する。AssetBundle 直叩きでも、Addressables 経由でも同じだ。チームはエディタでグループを描き、同居を当て、テクスチャ一枚で世界の半分が引きずられるのを恐れる。プレイヤー側も開発側も、カクつきと容量を同じ語彙で読む。グループが粗い、依存が長い、ホットアップデート一回で降りすぎる。その共有理解が「もっと良いグループ図を描き続ければいい」を許される制作慣性にする。

『Slime Rancher 2』のようにすでに出荷済みで Addressables を走らせている作品は、その慣性コストを具体にする。コンテンツはすでに大きい。差分ビルドは平気で三十分超。Player は四ギガバイト級。起動から本プレイまで、読み込みは四十五秒前後。既定の問いは、グループをさらに細かく切り、同居を当て直す方法だ。彼らが改めた問いはこうだ。ローカル同梱コンテンツがすでに十分多いとき、分割できない単位そのものが各ビルドと各プレイインで税を取っていないか。ランタイムに本当に入れるべきなのは、単独識別できる成果物だけではないか。

分岐はここにある。Bundle レイアウトを磨き続けるのは、市民税の内側で安い席を探すことだ。読み込み単位を換えるのは、税目の書き方が間違っていたと認めることだ。

Steam ストア『Slime Rancher 2』の場面スクリーンショット

二、単独で積み下ろしできる成果物、stable id、コンテンツハッシュ対照表

Unity 6.6 は content directories を、Player と一緒にローカル配送する AssetBundle の代替経路として書いている。言い回しを釘付けにする。代替経路であり、AssetBundles 退役の宣言ではない。ドキュメントは、content directory ビルドが現状ローカルのみで、リモート配信をサポートしないと明記する。細粒度 OTA は Unity 7 世代へ先送り。リモート場面では AssetBundles を引き続き使える。

仕組みとしては、アセットを大きな読み込み単位へ焼き続けることを拒む。ランタイムはメッシュやテクスチャなどの個別成果物を独立に識別・ロード・アンロードでき、暗黙の重複排除も付く。Addressables で Player 同梱コンテンツを管理しているプロジェクトについて、公式は content directory バックエンドへゼロコードで切替可能と述べる。『Slime Rancher 2』のパートナー実測もこの経路だ。

ビルド側はアセットインポーター枠組みを走る。各アセットは importer が単独構築し、サンドボックス、プロセス外、決定性、アセット DB キャッシュ、全コア飽和、accelerator 共有キャッシュが付く。George Ing は率直に書く。これは Unity 2023.1 で予告されたマルチプロセスビルドと同じ基盤だ。出力は細粒度成果物のゆるい集合、依存を追う小さなマニフェスト、読みやすい診断ファイルだ。

アドレッシングは git に似る。ビルド成果を開くとファイル名はコンテンツハッシュだ。`c0152db4dd710be51b2decb997325f34.cf` のような名前は内容アドレスであり、乱数ではない。ランタイムは同一内容を暗黙に重複排除できる。だが成果物同士がコンテンツハッシュで参照し合うと、B を更新すれば B のハッシュが変わり、A が B を���照していれば A のハッシュも揺れ、連鎖が上へ這う。Content directories の解は、成果物間を stable id で参照することだ。マニフェストに小さな対照表を置き、stable id をコンテンツハッシュへ写す。安定した身元と内容指紋を分け、連鎖の揺れを止める。

ロード側はまずディレクトリをマウントし、マニフェストを読み、成果物間の stable id 依存を解いたうえで、各成果物を独立に積み下ろしする。非同期リードとデシリアライズが並行し、プラットフォームの非同期読み API を使う。下層フォーマットは DOTS 世代のコンテンツファイル形式の次世代で、Entities 向けマルチスレッド読み込みを広いアセット種へ広げる。エンジンには新しい読み込み参照型 `Loadable<T>` も入る。例は短い。

`Loadable<Mesh> bodyMesh;``bodyMesh.Load();`

Loadable はオブジェクトをビルドへ引き込むが、明示の Load までメモリに載せない。馴染みの ScriptableObject 編成と組むと、動的コンテンツは Bundle レイアウト図に縛られなくてよい。キャラ作成器の部品も、ストリーミング地形の塊も、独立した積み下ろし単位になり得る。

Unity ブログ図、ソースがビルドインポーター経由で読み込み可能な成果物になる

三、パートナー表の四行、プレイインから消えた十五秒

数字が修辞を押さえる。Unity 公開の対照表は四行だけだが、十分硬い。

差分ビルド。Addressables が AssetBundle バックエンドのとき三十二分十六秒、content directory へ切ると三分四秒。およそ二十九分短縮。クリーンビルドは五十八分六秒から三十七分十三秒。Player サイズは四ギガから二・八八ギガ。起動からメニュー、プレイインまでは四十五秒から三十秒。消えた十五秒はプレイヤーが触れる。消えた一・一二ギガはストアとディスクが触れる。消えた二十九分の差分は制作日程が触れる。

条件も固定されている。Unity Editor 6000.6.0b10、MacBook Pro M5 Max、既存 Addressables プロジェクトのバックエンド切替、ゼロコード変更。読み込み単位が変わり、同じ Addressables の表面はまだ話せる、という対照だ。三か月かけてコンテンツ管線を書き換えた勝利物語ではない。小チームには後者の読み方が刺さる。プロデューサーに三か月の改修枠を説得できなくても、バックエンド設定を一度変えてビルドログを週報へ貼るよう説得することは、しばしばできる。

境界もはっきりさせる。6.6 のこの一手はローカル同梱向けだ。リモートホットアップデート、CDN 差分、必要時取得は、公式が Unity 7 世代と 2027 年へ先送りする。将来像は、小さなハッシュ駆動マニフェストが端末に足りない成果物を正確に指し、それだけを取り、更新も個別成果物単位で落とすことだ。いまブログを「AssetBundles はもう捨ててよい」と読むと口径がずれる。ローカルの Player 同梱には代替経路が開いた。リモートは Bundle のままであり得る。ドキュメントの local only は境界だ。

結び、インディーとはボトルネックを読み込み単位へ釘付けする意志

この九月のブログを 2026年秋の Unity インディー/中小チーム現場へ戻すと、まず打つのは見えにくい制作慣性だ。コンテンツは分割できない荷物だと思い、ビルド詰まり・容量詰まり・プレイイン詰まりは Addressables のグループ分けが甘いせいだと思い、「レイアウト会議をもう一回」で足りると思い、あまり問わない。ローカルが数ギガに達したとき、市民税はグループ美学より高くついていないか。差分がまだ三十三分かかるとき、高いのはマシンの計算量か、荷物ごと再計算させる読み込み単位か。

小チームには特に使える。『Slime Rancher 2』規模の牧場も M5 Max も要らない。自分の「既定でもう足りている」一覧は必ずある。同梱コンテンツがまだ粗い Bundle 同居のまま。最適化会議が「グループをもう一刀」で始まる。同居の当て違いでホットアップデートが世界の半分を落とす。差分ビルドが三十分なのにバックエンド切替を誰も提案しない。ドキュメントは local only なのに週報はリモートも解決済みと書く。George Ing とパートナー表はコストを土臭く書く。ゼロコード切替。四行対照。stable id 対コンテンツハッシュ。Loadable の明示ロード。高いのは、ボトルネックを読み込み単位へ戻す意志と、ローカル代替は開店済みでリモート切符は別買いだと領収書に認める意志だ。

実行可能なメモは短い。

  • 痛みがローカル同梱かリモート熱更新かを先に分ける。6.6 の content directories が覆うのは前者だけ。
  • すでに Addressables でコンテンツが Player 同梱なら、公式経路で content directory バックエンドを試し、前後のビルドログを残す。
  • 対照は最低四行。差分ビルド、クリーンビルド、Player サイズ、起動からプレイイン。数字がなければバックエンド切替は雰囲気だ。
  • ビルド成果を開き���コンテンツハッシュのファイル名と stable id 対照表がドキュメントどおりか確認する。連鎖揺れは旧税、対照表は新しい領収書。
  • 新規は `Loadable<T>` の明示ロードを優先し、メモリ投入を大きな単位へ溶接しない。
  • 週報に「AssetBundles 退役」と書くな。正しい言い方はローカル代替経路。リモート戦略は別チケット。
  • Unity 7 / 2027 の細粒度 OTA は前瞻として扱い、いまの納品約束に書かない。

三十二分十六秒の差分、分割できない荷物、stable id とコンテンツハッシュの対照表、四十五秒から消えた十五秒のプレイイン。ストア文句が「より速くより小さく」をスローガンにする前に、制作側は監査基準を公開ブログへ書いてしまった。まず成果物を単独積み下ろしへ戻し、そのうえで罪名を正しい読み込み単位へ釘付けせよ。

小光

出典と関連

  • George Ing,Unity Blog(2026-09-22),題名 Content Directories Beyond the AssetBundle(https://unity.com/blog/content-directories-beyond-the-assetbundle)

Unity Manual 6.6 Introduction to content directories

技術要約照合 Unity Content Directories × Slime Rancher 2

Steam Slime Rancher 2

X 流通(2026-10-24)@TamaminiGrok

ログインして読書記録を残しましょう。

いいね・保存を別の端末でも確認できます。

ログイン