手続き型生成

手続き型生成（てつづきがたせいせい、英:procedural generation）またはプロシージャル生成とは、コンピュータを用いたデータ処理（コンピューティング）の手法の一つ。手作業によってデータを生成するのではなく、アルゴリズムに基づいてデータを生成する手法である。
基本的には、手作業で生成したアセットおよびアルゴリズムを、コンピュータの処理能力を使って無作為（ランダム）に組み合わせる手法が多い。CGの分野においては、テクスチャや3Dモデルを生成する時に一般的に使われている。ビデオゲームの分野においては、ゲーム内の大量のコンテンツを自動的に作成するために使用される。実装次第ではあるが、手続き型生成の利点としては、ファイルサイズを小さくできる、大量のコンテンツを用意できる、ランダム生成で予測不可能なゲーム体験、などが挙げられる。手続き型生成とは、ジェネレーティブ・メディア（AIによるメディア生成）の一種でもある。
概要.
「手続き型（プロシージャル）」という用語は、コンピュータを使って特定の作業を行わせる際のプロセスを示すものである。例えばフラクタルは、主に手続き的な手順を用いて生成される幾何学的な文様である。プロシージャルなコンテンツとしてよく見かける物としては、テクスチャマッピングのテクスチャやポリゴンのメッシュなどがある。サウンドはプロシージャルに生成されることも多く、楽曲制作だけでなく音声合成においても利用されている。「ジェネレーティブ・ミュージック」という言葉を広めたブライアン・イーノを始めとして、アーティストたちによって様々なジャンルのエレクトロニック・ミュージックの曲を作るのに使用されている。
ソフトウェア開発においては、長年にわたって手続き型生成の手法の利用が模索されてきたが、このアプローチを広く採用している製品はほとんどない。一方でビデオゲームにおいては、手続き的に生成された要素が早い時期から見られる。『The Elder Scrolls II：Daggerfall』のマップは、その大部分が手続き的に生成されたものであり、現実のブリテン諸島の約3分の2のサイズの広さがある。Raven Software社の『Soldier of Fortune』では、敵モデルのモーションを生成する際に単純なルーチンによるモーションをプロシージャルに組み合わせるという手法が使用されていたが、続編の『Soldier of Fortune II』ではマップのランダム生成がフィーチャーされていた。Avalanche Studiosは『Just Cause』の広大かつ様々な形態の熱帯諸島を細部まで描写するために手続き的生成を利用した。Hello Gamesの『No Man's Sky』はゲーム内の全ての要素が手続き的に生成されたものに基づいている。
現代のデモシーンでは手続き型生成を使用して、大量の視聴覚的コンテンツを比較的小さなプログラムにパッケージ化している。
IEEE Conference on Computational Intelligence and GamesやGames and Artificial Intelligence and Interactive Digital Entertainmentなどのカンファレンスにおいて、新たな手法やアプリケーションが毎年発表されている。
特にビデオゲームにおいて、リプレイ性を高めることを目的として手続き型生成を応用した場合、手続き型システムが冒険のための数限りないワールドを生成してくれる一方で、これらに対して十分な誘導と規則をあらかじめ人力で設定しておかないと、結果は「プロシージャル・オートミール」と呼ばれる状態となる。これは作家のケイト・コンプトンによる造語で、手続き型生成によって数学的には異なる何千ものオートミールのボウル（日本で言うと「茶碗に盛ったご飯」）を生成することは可能であるが、一方でユーザーにおいてはそれらは全て「同じ物」であると認識されてしまい、手続き型生成が本来目的とすべきである、プロシージャルに生成された成果物がそれぞれに異なったユーザー体験を生み出すという「一意性」を欠いた状態となるのである。
近年の応用例.
テーブルトークロールプレイングゲーム.
ゲームで手続き型生成を使用するのは、テーブルトークロールプレイングゲーム（TRPG）を起源とする。当時の人気のTRPGのシステムであったTSR社の『アドバンスト・ダンジョンズ&ドラゴンズ』では、ダンジョンマスター（ゲームマスター）に対してサイコロのランダムな出目を利用したダンジョンと地形の生成方法を提供しており、これは後のエディションにおいて複雑に分岐した手続き的なテーブル表を含んだものに拡張された。Strategic Simulations社はTSR社からライセンスを受け、TSR社が公開したテーブル表に基づいてダンジョンを生成するコンピュータープログラムである『Dungeon Master's Assistant』をリリースした。同じくTSR社から発売された『トンネルズ&トロールズ』は、主に1人プレイ用として設計されていたが、ダンジョンの生成方法として同様の手続き的手法を利用していた。他のTRPGは、ワールドの様々な要素を生成するにあたって、これとよく似た手続き型生成のコンセプトを借用した。
ビデオゲーム.
初期の歴史.
グラフィック指向のビデオゲームが登場する以前に存在した、いわゆる「ローグライク」と呼ばれるゲームのジャンルは、『ダンジョンズ＆ドラゴンズ』に直接的な影響を受け、一人プレイに特化した物であり、TRPGのシステムと同じ手法による手続き型生成を多用していた。このような初期のゲームには、『Boneath Apple Manor』（1978）や、ジャンル名と同名の『ローグ』（1980）などがある。ローグライクで用いられた手続き型生成システムは、ASCIIもしくは通常のタイルベースのシステムでダンジョンを作成し、部屋、通路、モンスター、そして宝物を定義してプレイヤーを待ち受けていた。ローグライク、およびローグライクのコンセプトに基づいた『不思議のダンジョン』タイプのゲームでは、ゲームのワールドを作成するために必要以上の時間を費やすことなく、複雑なゲーム体験を用意できる。
1978年に発売されたAtari VCS用ソフト『Maze Craze』は、アルゴリズムを利用してプレイするごとにトップダウンの迷路がランダムに生成された。
一部のゲームでは疑似乱数ジェネレータが使用されていた。これらの疑似乱数は、事前に定義されたシード値とともに利用されることがしばしばあり、プレイ開始時にこれらの数値を用いて広大なゲーム世界を手続き的に生成し、あたかも事前にゲーム内に広大なゲーム世界を作成していたかのように見せかけた。こうすることで小容量のROMデータで広大な世界が賄えるのである。例えば3Dパズルゲームの『センチネル』は、たった48KB-64KB程度の容量で10,000の異なるステージを持っていたとされる。極端な例の一つは銀河交易ゲームの『エリート』であり、それぞれに256個の太陽系を従えた2の48乗（約282兆）個の銀河を舞台とするゲームとして計画されていた。しかし、そのような巨大すぎる宇宙がプレイヤーに不信感を与えることをパブリッシャ側が懸念したため、これらの銀河のうち8つが最終バージョンとして選択された。他の注目に値する初期の例としては、1985年に発売された惑星探索ゲーム『Rescue on Fractalus』があり、エイリアン惑星の岩だらけの山をフラクタルを用いてリアルタイムでプロシージャルに作成していた。また、1982年にアクティビジョンが発売した『River Raid』は、線形帰還シフトレジスタを用いて生成された擬似乱数列を使ってスクロールする迷路の障害物をプロシージャルに生成していた。
近年の使用例.
近年のコンピューターゲームでは初期のゲームのようなメモリとハードウェアの制約は無くなったが、ランダム化されたゲームプレイ、マップ構成、レベル、キャラクター、あるいはプレイするたびにそれぞれ異なる形で現れるその他の様相を作成するために、手続き型生成の手法が頻繁に採用されている。
2004年、『.kkrieger』と言うPC用ファーストパーソンシューティングゲームがドイツのデモグループからリリースされた。全てのデータがわずか96KBのMicrosoft Windows用の実行ファイル内に含まれており、実行時に数百MBの3Dおよびテクスチャデータを生成する形となる。プログラマーの一人によれば、技術デモとして見た場合はともかくとして「ゲームとしての側面に関する限り、それは完全な失敗でした（主な理由として、誰もゲームとしての側面に関して真底まで関与しなかったからです）。」
Naked Sky Entertainmentの『RoboBlitz』は手続き型生成を利用することで、当時のXbox Live Arcade用ダウンロードゲームの「50MB未満」と言う規定内においてコンテンツの内容を最大化することができた。ウィル・ライトの『Spore』も手続き型生成を利用している。
手続き型生成は、アクションロールプレイングゲームや大規模マルチプレイヤーオンラインロールプレイングゲームなど、クエストドリブン（クエスト駆動型）ゲームのルートシステム（戦利品システム）においてよく使用される。クエストの報酬は固定であったとしても、武器や鎧といったその他の戦利品は、プレイヤーキャラクターのレベル、クエストの難易度、クエストでの彼らのパフォーマンス、および他のランダムな要素に基づいてプレイヤーごとにプロシージャルに生成される場合がある。これはつまり、手続き型生成システムが平均よりも優れた属性を持つアイテムを生成するようになっていた場合、戦利品として必ずレアアイテムをゲットできると言うことである。たとえば『Borderlands』シリーズではプロシージャル生成システムに基づいて、100万種類を超えるユニークな銃やその他の装備品を作成できる。
多くのオープンワールドゲームやサバイバルゲームは、ランダムなシード値またはプレイヤーが入力したシード値から手続き的にゲームワールドを作成するため、プレイするたびに違ったプレイ体験が得られる。『Dwarf Fortress』およびその影響を受けて作られた『マインクラフト』を念頭において欲しいが、これらの生成システムは、おびただしい量のピクセルまたはボクセルをベースとして、資源、オブジェクト、および生物の分布を伴ったバイオームを作成する。プレイヤーは生成用のパラメーターを適時調整することが可能であり、例えばワールド内の水域の範囲を指定したりすることができる。これらのゲームに関連する、手続き型生成のワールドにおけるアーチファクト（歪み）に関してであるが、プレーヤーが探索できるスペースが制限されていない場合、アセットをランダムに組み合わせてコンテンツとして提示するという手続き型生成の手法において、スペースの端に向かうにつれてノイズが蓄積し、ついにはコンテンツよりもノイズが目立ち始める（つまり、あからさまにワールドがバグり始める）と言うことである。Minecraftの以前のバージョンにあった「ファーランド」バグのことである。そこでは、通常ならバイオーム間のスムーズな移行となるはずの所が、でたらめなバグ地形に置き換えられていた。
手続き型生成は、宇宙探査ゲームや交易ゲームでも使用される。『Elite：Dangerous』は、天の川銀河の4千億の既知の星をワールドの基盤として使用しているが、手続き型生成を使用することでこれら全ての惑星およびそれぞれの惑星が持つ太陽系をシミュレートしている。同様に、『Star Citizen』では手作業で制作（プロシージャルではない）されたゲーム内宇宙に表示される各惑星に対して手続き型生成を使用することで、惑星の遠景サイズから地表に降り立つまでに表示される一連の画像をシームレス（ローディング無し）に生成している。『I-Novae Infinity』は、手続き型で生成される多数の惑星を備えており、プレイヤーはそれらの惑星の間を宇宙船を使って移動できる。『Outerra Anteworld』は、まだ開発中ではあるが、手続き型生成と実世界のデータを使用して、実際のスケールで地球のバーチャルなレプリカを作成する予定である。『No Man's Sky』は、ゲーム内宇宙に1800京個の惑星が存在し、それぞれの惑星はプレイヤーが航行中に遭遇するたびに生成されるが、そこには地形、天気、動植物、動物相がそれぞれ存在し、またそこに暮らすたくさんのエイリアン種族も存在する。このゲーム内宇宙は、決定変数を使ったエンジンによって単一のランダムシード値を使って定義されているため、すべてのプレーヤーにおいて同じ場所で同じコンテンツが生成されることを保証しており、プレーヤーは仮想銀河における惑星のロケーションさえ知っていれば自分の発見を他のプレーヤーとシェアすることができるようになっている。
映画.
ゲーム業界と同じく、手続き型生成は視覚的に興味深く正確な空間をすばやく作成するために、映画でもよく使用される。これにはさまざまな応用が存在する。
一例が「imperfect factory」と呼ばれる手法で、アーティストはこの手法が使われたソフトウェアを利用することで、ほとんど同じだが微妙に違うたくさんのオブジェクトをすばやく生成できる。これは、現実世界では全く同一の形のオブジェクトは2つとしてない、という事実に即している。例えばアーティストが食料品店の棚の商品をモデリングする際、「imperfect factory」法を使うことで、よく似た形をした沢山のオブジェクトを生成して棚に配置することができる。
「MASSIVE」は映画やテレビ業界で使われている、群集関連の視覚効果を生成するために使用されるハイエンドコンピュータアニメーションおよび人工知能ソフトウェアパッケージである。これは、ピーター・ジャクソンの映画『ロード・オブ・ザ・リング』において、数十万人の兵士から成る戦闘を自動的に作成するために開発された。
コヒーレントノイズは、映画におけるプロシージャルのワークフローにおいて極めて重要である。多くの場合、シンプレックスノイズはアーチファクトが少ない上に高速であるが、パーリンノイズと呼ばれる古い関数も未だによく使われている。ここで言うコヒーレントノイズとは、n次元で滑らかな擬似的ランダム性を生成する関数（擬似ランダム関数）を指す。