一般的なイメージで言うと、壮大に自動化されてめちゃくちゃすごいものが(中略)生成されるみたいな、なんかそういうイメージが強いような気がするんですけど。実はですね、なんでも壮大に自動化する…というのがプロシージャル、というのはちょっと違います。
~高瀬紗月~
これってみんな思ったことあるだろうけど極めて常識的な疑問だと思うんですよ。プロシージャル生成ってさ、ランダムにステージを生成するわけじゃん?ローグライクやローグライトと合わせて使われることが多くて興味深い議題やん。そこにAIが結びついていて、ランダムに生成されるわけなのにクリア不可能っていうゲームがないじゃん(まともなゲームだったら)。これはなぜか?っていうことをここで調べたんで解説してみるわ。結論から言うと、PCGはランダム生成ではないからクリア不可能なステージを生成しない…っていうことになる。だが、(’・ω・’)<何言ってんだお前、な案件なのでそこを調べてみたん。ソースはCopilot経由で示す。
まずね、PCGって単に言ってもそんなに単純なものではなくて①ルール(制約)の設定っていう要素がある。PCGは一見無作為にステージを生成するように見えて、まったくそうではないってことだね。つまり特定のルールがあって、PGCのライブラリなんかにもプレイヤーがゴール不可能にならないように道筋を立てている、っていうことなんだ。レベルデザインは生成する段階において、ルールが決められていて、詰みがないようになってる。単純にランダムで生成するっていうことじゃない。それはPCGに対する誤解なのだ。
※ソース:[UE5] プロシージャルコンテンツ生成(PCG)最初に知っておきたいポイントと実践TIPS | gam0022.net
例えば、ステージ上にランダムに椅子を置くとしよう。だが、そこには配置の一定のルールが設けることができる。これによって、ランダム性に一定の規則を持ち込むことができるので、椅子同士が重ならないようなPCGが実現可能なのだとソースは示している。またテーブルなどの他のオブジェクトの取り扱いも同じように可能なことが示されているのがわかるよね。
次に②フィードバックテストが挙げられる。これはね、生成したコンテンツにクリア不可能なコンテンツがないのかどうかを確認する作業のことを言っている。問題が見つかった場合そのケースに沿った解決策を実装することでPCGはクリア不可能なレベルデザインを回避することができるんだ。①と違って、生成時にルール制約するだけでなく、テストもする。そうすることで確認を行う、ってことだな。フィードバックなんてもともとはサイバネティクス(創始者:Norbert Wiener)の概念だよな。
※ソース:UE5 PCGのスプライン機能を用いて、プロシージャルに道を生成する – 電通総研 テックブログ
例えば、エリアに道を作るだけ、という単純な手法であってもルールを基盤に生成しているのがわかるよね。PCGは単にステージをランダムに構成するわけじゃない。最近はエンジン自体が高度化しAI化がされているため、ピンポイントクリックしていくだけで作り込めるようになっているみたいだけに忘れられつつあることだ。
あるいは③パラメータの調整ってのも忘れられない。難易度やバランスを保つため、そもそもの生成パラメータに各種調整が入る。こうすることで難易度やバランスに一定の配慮を持ち込むことができるというわけ。ルールの制約・テストティングのほかにも生成時に各種パラメータをアレンジする能力も併用されている、っていうことだね。PCGの手法を司る重要な概念のうちのひとつだ。
※ソース:ゲームとエンタテインメント技術×第2回 ゲームとCG~プロシージャル技術~
コンテンツの拡張に当たっては、パラメータを弄ることで簡単に実現可能だ、ということがこの投稿論文で示されている。コンテンツを圧縮すると同様(基本的にFCやSFCのマリオと同じことをやってるんだろうと思うけど…言うなれば~使いまわし~が可能なんだよな)、拡張するにあたってもパラメータ調整は重要な概念なんだね。
最後に④階層的アプローチってのがある。これはね、生成の付加重性のことを指す。つまり、PCGは大まかにステージを構成した後、詳細を煮詰めるためにさらに詳細を別なレベルとしてデザインしなおす。全体の一貫性を保ちながらも生成段階を多重にすることで、大まかなアプローチと細やかな配慮的アプローチを組み合わせてレベルデザインをするんだ。こうすることで矛盾を回避できるわけだね。
※ソース:ブループリントとPCGで、オブジェクトをプロシージャルに生成&配置。UE5極め本の著者が披露するPCG極め術【UE5 Deep Dive 2023】|ゲームメーカーズ
この追加要素のことをソースではアトリビュートなどと呼んでいる。つまり、情報の追加のことだな!手作業でアトリビューションする過程もこのソースで示されているようだね。
さてわかってただけただろうか?情報技術ってのはこのように追加の要素を保ち、コンピューターに任せるべきところは任せることで作成者たる人間の作業と互いに助け合って構成されるものだ、ということがよくよくわかる事例だと思う。思うに、伝統的ローグライクゲームに端を発してPCGは古典的なAIとともにその道を開拓して歩んできた。その歴史を辿っていくと、コンピューターの進化とともにそれらが発展してきたことがよくわかる。その一方、技術史に目を振り返らなければ、こうしたJKな疑問には答えられないこともあるんだということもよくわかった。PCGは人の手によってアルゴリズムを改善・工夫してどこまでコンピューターにコンテンツ生成に関わらせるか取り決めることで矛盾を経験、それを徹底して回避してきたんだね。
<人間とコンピューター、共に歩んできた近代史を感じさせられるネ♪ |
[関連リンク1:ある数学者の生涯と弁明 – Wikipedia]
[関連リンク2:Pentium FDIV バグ – Wikipedia]