はじめに
プロシージャルワークフローについて説明する文章がまとまったので思い切って投稿してみました。
専門学生の戯言なので何の説得力もありませんがご容赦ください。
プロシージャルって何?
ゲーム業界で最近話題の技術分野です。
「プロシージャ」とは関係がないので注意してください。
直訳すると「手続き的な」という意味の単語ですが、一般的にはテクスチャやモデルやアニメーション等を自動生成する技術と解釈されています。
しかし、プロシージャル=自動生成という訳ではなくて、その辺の説明をこれからしていこうと思います。
プロシージャルワークフローを理解する
プロシージャルワークフローとはプロシージャルの技術を用いて効率的にコンテンツを制作することで、検索すると具体的な実例が複数出てきます。
しかし、具体例をいくら見てもプロシージャルワークフローへの理解は中々進みませんし、かといって抽象的に理解できるかと言うと自分の頭では文章化することはできませんでした。
そこで、ここからは一般的に共感できる"料理"に例えながら、プロシージャルワークフローの中身とメリットを考えていきたいと思います。
料理に例える理由は、「Houdini」というモデルやエフェクトをプロシージャルに作成するためのツールの中で、自分が設定した作業工程の結果をシーン上に反映させることを"Cooking"と呼称していたため、プロシージャルワークフローと料理に共通点があると思ってのことです。
料理 = 材料 + 調理器具 + レシピ + 調理
料理を完成させるために必要なものは何かを考えてみると、大きく材料・調理器具・レシピ・調理に分かれていると考えられます。
つまり、レシピ通りに調理器具を使って材料を調理することで料理は完成します。
これらは下記のようにゲーム制作の作業工程ともリンクしています。
- 料理 完成品(テクスチャ、モデル、アニメーション、エフェクト)
- 材料 データ(統計、地図情報、ランダム、レベルデザイン、ゲーム中の状況)
- 調理器具 アルゴリズム、ツール、フレームワーク、開発エンジン
- レシピ 完成品を作るための手順
- 調理 実行、出力
こういった必要なものを分解するということはプロシージャルワークフローを考える際にとても重要になってきます。
野菜炒めを作ってみる
料理が出来上がるまでの流れを、野菜炒めを例に見ていきたいと思います。
必要なもの
材料
野菜(キャベツ、ニンジン、玉ねぎ、ピーマンなど)
油(サラダ油、ゴマ油など)
調味料(塩コショウ、しょうゆなど)調理器具
包丁、まな板、フライパン、コンロレシピ
①野菜を包丁で一口サイズに切る
②フライパンに油をしく
③コンロでフライパンを加熱
④野菜を入れて炒める
⑤調味料で味付け
⑥皿に盛り付ける
材料や調理器具にムラがある
ポイントは、材料と調理器具が完全に一致することはほとんどない点です。
野菜炒めにおいて、使用する野菜の種類は決まっていませんし、同じ種類の野菜でも大きさや味は均一ではありません。
また、包丁やフライパンについても各家庭でメーカーや材質が異なっています。
そのため、炒める時間や味付けの分量はある程度調整する必要が出てきます。
これがプロシージャルワークフローの一つ目のメリットで、材料となるデータをいじるだけで差分のあるレプリカを大量に生成することができるます。
これは3Dアセット(モデルやモーション)の作成でパンク寸前の制作現場では特に需要があり、オープンワールドゲームを最小限のコストで制作する際には必須とも言えるほどに活用できます。
また状況にフィットするように差分を調整できる点も役立ちます。
例えば足を上げるモーションで正面の段差の高さに応じて足を上げる高さや体の傾きを調整するように設定することができます。
家庭でも美味しい料理が作れる
もう一つのポイントが、材料と調理器具とレシピさえあれば簡単に料理が完成する点です。
たいていの材料や調理器具がスーパー等で購入できてレシピがネットから取得できる現代において、料理を作ることはそれほど難しくありません。
実際に調理するスキルがなくても、解決する代替手段はいくらでもあります(カット野菜を使う、時間や量を測る等)。
これが二つ目のメリットで、3Dアセットを作成する際に料理人(デザイナー)の負担を極端に減らすことができます。
これまでの開発現場では料理人(デザイナー)が注文を元に、材料(参考資料、ラフ)を仕入れて調理器具(ツール)を吟味してレシピを考案して調理して、ようやくオリジナルな完成品を生み出していました。
プロシージャルワークフローでは
- 材料はプランナーが用意
- 調理器具はプログラマーが用意
- レシピはデザイナーが用意
- 調理はツールやエンジンが実行
というように、必要なものを役職ごとに分担して揃えられます。
結果としてデザイナーの負担を軽減することができ、プランナーのアイデアをすぐに完成品に反映させることができます。
また、「必要なものがすべて揃えば実行するだけで完成品が出来上がる」という事象をもって、ここでようやく"自動生成"が成立します。
「プロシージャルは自動生成」という解釈に対してここにきてようやく理解ができました。
まとめ
プロシージャルワークフローとは、差分のあるレプリカを効率的に作成する工程のことを指します。
もちろん一流の作品は一流のプロフェッショナルたちの創意工夫によって生み出されますが、すべてをオリジナルで作っていては労力に対して人も時間も圧倒的に足りません。
限りある人と時間の中で最大限のコンテンツを作成するために、プロシージャルワークフローの重要性はこれから増していくばかりだと思いました。