プロシージャル生成とAIエージェント:どちらを選ぶか
ノイズ・文法・WFCと、エディタを操作するエージェント。決定性、規模、ランタイム、反復コスト——選択を決める軸で比べます。
波動関数の崩壊(WFC)ソルバーは昼までに一万個の構造的に正しいダンジョンを吐き出しますが、記憶に残るものは一つもありません。エディタを操作するエージェントは、噴水が人間なら置くであろう場所に立っている町の広場を一つ作ります。所要四分、そして実行のたびに費用がかかります。この二つは同じ製品への二つの挑戦ではありません。別々の機械であり、問うべきなのは「自分の課題はどちらの形をしているか」だけです。
古典的なPCGとは実際に何なのか
プロシージャル生成は一つの技術ではありません。これを一枚岩として扱うことこそ、この比較がたいてい崩れる場所です。出荷された作品で実務をこなしているのは、おおむね四つの系統です。
ノイズ場
座標から値への関数です。Perlin、simplex、Worleyのセル。いくつかのオクターブを重ね、しきい値と再マッピングで標高、湿度、鉱脈の密度、洞窟の体積に変えます。頂点ごとに評価できるほど軽く、どの方向にも無限で、シードを固定すれば完全に決定的です。Godotは FastNoiseLite を標準で積んでいますし、他のエンジンでも同じものは小さなファイル一つ分の距離にあります。ノイズは地形を与えます。与えられないのは意図です。ノイズは村をどこに置くかについて意見を持ちません。
文法と書き換え
L-systemの出自は生物学です。Aristid Lindenmayer、1968年、藻類の成長のモデル化。これが枝分かれする植物の記述に非常に向いていたため、植生のツールは今でもここに立っています。シェイプグラマーは同じ手口を建築に使います。CityEngineのCGAルールは、塊を階に、階をファサードのパネルに、パネルを窓へと分割していきます。グラフ書き換えが扱うのはジオメトリではなくレベルのトポロジーで、部屋と接続からなるグラフ上での検索置換です。
最後の代表例がUnexploredの循環型ダンジョン生成で、その規模は知っておく価値があります。ジェネレーターが二つ、モジュールが多数、そして手書きの書き換えルールが約五千。専用のツール上で編まれています。この数字は文法の正直な代価であり、同時に文法の意義でもあります。五千のルールとは、一度書けば永久に効く五千個の設計意図です。
制約ソルバー
WFCは、Paul Merrellが2007年にmodel synthesisとして発表したものを、Maxim Guminが2016年に実装したものです。レベルをセルの格子とみなし、各セルにそこでまだ可能なタイルの集合を持たせます。エントロピーが最小のセルを確定させ、隣接制約を近傍へ伝播させ、繰り返す。タイルと「どの辺がどの辺と接してよいか」を与えれば、ソルバーは構造上、不正な接合を出せません。答えられないのは、そこを歩いて面白いかどうかです。
エンジン内蔵とDCCのシステム
Unrealはノードベースのフレームワークとして PCG を内蔵しています。レベル上のコンポーネントから空間データが流れ込み、点になり、グラフの中でフィルタと変換を受け、メッシュを生成します。エディタ上でリアルタイムに、あるいはランタイムでも実行できます。パイプラインの反対側にいるのがHoudiniで、デジタルアセットを一度作り、パラメータを露出したままHoudini Engine経由でUnityやUnrealに読み込みます。ここまで来るとPCGはデモではなく生産インフラです。Ghost Recon Wildlandsは山岳地形に数千キロの道路を通すのにこれを使い、Far Cry 5のチームはビルドマシンで毎晩ゲーム世界全体を作り直していました。
オープンワールドがまるごとこれらのシステムの上に載っていますし、それが消えることはありません。
エディタを操作するエージェントとは何なのか
もう一方のやり方は、レベルデザイナーが使う道具を言語モデルに渡します。道路網を引く、街区を分割する、指定寸法の建物を置く、ポリゴンの内側に木を散らす、太陽の角度を決める。そして段階を踏ませ、その合間にシーンを読み返させます。Cuberta はこの形です。エディタがロケーション単位の道具を Model Context Protocol で公開し、そこに自分のエージェントを接続すると、ロケーションがオブジェクト単位で現れていきます。その間も、何でも選択・移動・取り消しができます。
構造上の違いは「AI対アルゴリズム」ではありません。プロシージャルなシステムの成果物はコンテンツを生むシステムであり、エージェントの成果物はコンテンツそのものだ、という違いです。片方は工場、もう片方は非常に速い施工業者です。
ランタイムか、オーサリング時か
この区別は、面白い議論が始まる前にたいていの論争を終わらせます。そしてしょっちゅう飛ばされます。
プロシージャルなシステムはゲームにコンパイルされて入ります。シードと数キロバイトのルールとノイズ関数が、プレイヤーが見る一フレーム前に、その人の機械の上で惑星になります。エージェントにはできません。モデルとネットワーク往復、数十秒から数分、そして呼び出しごとの費用が必要です。ローグライクのフロア間のロードにそれを挟む人はいません。
要件に「ランタイムで」という言葉が入っているなら——無限の地形、周回ごとに新しいダンジョン、データとして同梱するには大きすぎる世界——比較は始まる前に終わっています。必要なのはPCGで、どんなエージェントもそこは変えません。エージェントは完全にオーサリング時、ビルドの手前側に住んでいます。
決定性と、出荷できるシード
同じシードなら、どの機械でも、いつでも同じ世界。技術的な脚注のように読めますが、価値は非常に大きいものです。
Elite は星系を保存せずシードを保存することで、メモリが数キロバイトの機械に銀河を収めました。No Man's Sky は惑星も動植物も配色も64ビットのシードから導きます。1800京を超える惑星という数字はここから来ていますし、同じ座標へ飛んだ二人のプレイヤーが同じ岩を見るのもそのためです。Minecraftのプレイヤーはシードを掲示板に貼るだけで、他人の手元にまったく同じ世界が立ち上がります。
日常的な見返りは宣伝文句より地味で、はるかに実用的です。シードの入ったバグ報告は再現できます。デザイナーはチュートリアル島のシードを固定したまま、島が足元から動く心配なくルールを直せます。
エージェントはこのどれも与えません。同じプロンプトを二度走らせれば別の町が二つできます。どちらももっともらしく、どちらも再現できません。ただし失われたものは正確に見ておくべきです。非決定的なのはプロセスであって、成果物ではありません。エージェントがシーンを組み終えてGLBを書き出せば、そのファイルは人が作ったものと同じくらい固定されていて、ビルド間で揺れることはありません。失うのは再現可能な生成——ランタイムとQAで効いてくるものです。安定したアセットは失いません。
残りの軸
| プロシージャルなシステム | エディタ内のエージェント | |
|---|---|---|
| 書くもの | コンテンツを作るルール | コンテンツそのもの |
| 最初の結果 | 数日。まずシステムを作る | 数分 |
| 一万個目の結果 | 実質ただ | 最初の一万倍 |
| 同じ入力を二度 | 構造上まったく同じ出力 | 別のもっともらしい答え |
| 動く場所 | エディタと出荷後のゲーム内 | オーサリング時のみ |
| 途中で要件が変わる | ルールを直し全体を再生成 | 新しい指示を言って続行 |
| おかしいとき | グラフを読み、シードで二分 | その手順を見て直させる |
| 誰が書くか | グラフかコードに慣れた人 | 場所を的確に説明できる人 |
| 得意なこと | どれもまあ良い百万件 | 本当に良い一件 |
意図を一度書くか、毎回解釈させるか
文法とはコンパイルされた意図です。「店は角、住宅は街区の中ほど、広場から40m以内は三階建てまで」。一度書けば、そのシステムが将来生成するすべての事例に何年でも効き続け、あなたが再び考える必要はありません。代価は、意図をルールとして述べられなければならないことです。「この通りは火事のあと急いで建て直したように見えてほしい」はルールではありません。少なくとも一日で書けるルールではありません。
エージェントは依頼のたびに意図を解釈し直します。ルールを一行も書かずに火事のあとの通りが手に入り、そして明日は同じ一文から別の通りが出てきます。解釈は柔軟さと不揃いさを同じ荷物で届けます。片方だけ受け取ることはできません。
規模と、線が交わる場所
百万件ではプロシージャルなシステムが埋めようのない差で勝ちます。事例あたりの限界費用がほぼゼロで、エージェントのそれは決して下がらないからです。一件では順序が逆転します。システムは何かを出す前に数日を食い、エージェントの最初の結果は数分で来るからです。交点は百万件ではありません。実務では数十件のあたり——同じ制約をエージェントに五回説明したところで、書き留められたはずのルールを手で実行し続けていたと気づく、あの地点です。
エージェントが本当に勝つところ
- 作り込まれた感触が要る一点物の場所。拠点の村、ボス戦のアリーナ、トレーラーに映る通り。一度しか要らないもののためにジェネレーターを書く人はいませんし、プレイヤーが二時間過ごす場所に汎用生成品を置くのは採算が逆です。
- 途中で変わる要件。「やっぱり漁村にして」はエージェントには一文、文法には書き直しです。鉱山町を生んだルールには、もう成り立たない前提が埋め込まれているからです。
- ルールのほうが結果より高くつくとき。農家の庭の三バリエーションに専用ジェネレーターは見合いません。一万なら見合います。多くの仕事は三のほうに近いはずです。
- テクニカルアーティストがいないチーム。文法にはグラフやコードで考える人が要ります。エージェントに要るのは場所を正確に説明できる人で、こちらのほうがレベルデザイナーには身近な技能です。
エージェントが苦手なこと
多数のシーンにまたがる一貫性
家を四十軒頼めば、エージェントは「家」という語を四十回解釈します。階高がずれ、縁石の断面がずれ、マテリアルのパレットが広がっていきます。キット前提のプロシージャルなシステムはこの失敗をしません。キットが一つ、制約が一組しかないからです。一貫性は制約の問題であり、エージェントは制約を強制するのではなく近似します。下にプロシージャルな層を残しておくべき最大の理由がこれです。
シーンあたりのコスト
ロケーションごとにモデルの時間と費用がかかり、十個目も一個目と同じだけかかります。プロシージャルなシステムの費用はほぼ全部が先払いで、量が要る場面ではこちらのほうがはるかに良い形です。
ゲームには載らない
この比較でいちばん硬い制約なので繰り返します。エージェントはパイプラインの道具であって、ゲームの中のシステムではありません。作ったものは、プレイヤーが見る前にアセットへ焼き込まれている必要があります。
多くのスタジオが落ち着く先のハイブリッド
妥協ではなく、上の軸に沿った分業です。エージェントが作り、プロシージャルなシステムが埋めます。
具体的には、道路網、街区の構造、そしてプレイヤーが実際に見る二十棟の建物はエージェントが組みます。判断が要る仕事で、しかも二十棟しかないからです。そのロケーションはテクスチャ込みのGLBかFBXとしてCubertaから書き出され、エンジン側ではPCGグラフが引き継ぎます。傾斜とバイオームマスクで植生を散らし、スプラインに沿って街路設備を並べ、遠景を密度で埋め、レイアウトが動くたびに全部を作り直す。ランタイムに存在しなければならないものは、否応なくプロシージャル側に残ります。AI都市ジェネレーターとして売られているツールの多くも、すでにこの継ぎ目に立っています。モデルがレイアウトと様式を選び、実際に並べるのはプロシージャルな配置ルールです。
分け方が正しいかどうかの目印は、仕事が流れる向きです。判断はエージェントへ、量はルールへ。どちらにも相手の仕事をさせない。リードデザイナーとHoudini担当のあいだでも、おおむね同じ分け方が成立していました。驚きというより、安心できる話です。道具は変わりました。問題の形は変わっていません。