『星のカービィ ディスカバリー』プロシージャル地形生成への取り組みから見るアーティストとエンジニア、レベルデザイナーの協力体制【CEDEC2022】

2022.11.10
CEDECゲームの舞台裏講演レポートお役立ち情報公開資料まとめCEDEC2022
この記事をシェア!
Twitter Facebook LINE B!
Twitter Facebook LINE B!

国内最大規模のゲーム業界カンファレンス「CEDEC2022」が、2022年8月23日(火)から8月25日(木)までの日程で開催されました。2日目となる8月24日には、株式会社ハル研究所 開発本部 開発環境室エンジニア 加藤 歩氏が登壇し、「『星のカービィ ディスカバリー』 プロシージャル地形生成への取り組み」と題した講演が行われました。人気シリーズ『星のカービィ』最新作『星のカービィ ディスカバリー』におけるプロシージャル地形の生成やマテリアル・テクスチャにおける工夫などが解説された本講演をレポートします。

目次

登壇したのは株式会社ハル研究所のエンジニア加藤 歩氏。加藤氏は株式会社ハル研究所の入社後に複数のタイトルに関わり、『星のカービィ ディスカバリー』ではマップ制作フローの設計および地形生成システムの設計・実装を担当しています。

シリーズ初の3Dアクション、課題は地形の作成・調整コスト

『星のカービィ ディスカバリー』は『星のカービィ』本編シリーズ初の3Dアクションゲームであり、地形の作成・調整にかかるコストが増大すると見込まれていました。

本作の最終的な地形生成のワークフローは以下のようなものでした。

  1. レベルデザイナーがマップエディタ上でブロック状のパーツを配置し、地形の形状を作成する
  2. すばやくゲーム画面に反映される簡易地形機能を使い、地形調整のイテレーションを回す
  3. 地形の調整が終わったら地形モデル出力ボタンを押し、本番用の地形モデルを自動生成する
  4. キャラクター、ギミック、装飾パーツを配置する

そして、最大のポイントとなるのはAutodesk Mayaを用いて本番用の地形モデルをプロシージャルに自動生成することだと語りました。本講演はこの地形生成システムができる経緯や実装方法、運用時の問題や解決方法の詳細を紹介しています。

地形生成システムができるまで -黎明期編-

前作『星のカービィ スターアライズ』でも3Dモデルは使われていますが、今作と異なり2Dアクションゲームでした。その当時の地形制作には以下のようなワークフローが使用されていました。

  1. レベルデザイナーがマップエディタ上でブロック状のパーツを配置し地形を作成する
  2. アーティストの作った3Dモデルが地形に沿うように自動的に配置される
  3. アーティストが地形モデルの配置を細かく調整
  4. 地形以外の装飾物を配置する

レベルデザイナーがマップエディタで作成した地形形状に3Dモデルが自動的に配置され、マップとして出力されるという仕組みであり、加藤氏は「言ってみれば、この頃からプロシージャルな地形モデルを生成していた」と振り返ります。

自動生成を行うことで少人数のレベルデザイナーとアーティストでマップを制作でき、マップクオリティのハンドリングも行いやすくなっていた

3Dアクションゲームとなった本作では、当初以下のようなワークフローが想定されていました。

  1. レベルデザイナーが地形の設計図を作成する
  2. それを元にアーティストが地形モデルを作成する

ただし、これにはレベルデザインの調整・変更のしづらさや、アーティストの作業コストの重さなどの懸念点がありました。これはレベルデザイナーとアーティスト双方にとって喜ばしくないものです。

そこで3つのミッションが生まれました。

レベルデザイナーがギリギリまで地形形状を調整できるようにしたい」、「アーティストの地形モデル作成コストを大幅に下げ、その分、他のことに手を回せるようにしたい」、その上で「地形モデルのクオリティは下げたくない」。

つまり「2Dの頃の文化を引き継ぎつつ、そのまま製品に載せられるクオリティの地形モデルを自動で作る」ことが目指されました。これらの目的を達成するために新たな地形モデル自動生成へと取り組むことになりました。

まずはカービィの最初のステージとしておなじみの草原の地形モデルから自動生成の検討を始めました。シリーズ初の3Dアクションということで「どんなマップにするのか」「どうやって地形の形状を作るのか」などさまざまな選択肢や検討事項がありました。

下側の2つの画像はアーティストが作成した今作のコンセプトアート

アーティスト、レベルデザイナー、実装を担当するエンジニアで地形生成についてのイメージがそれぞれ違うため、まずはイメージの共有を行う必要があります。今作では実際にレベルデザイナーがマップエディタを使って作りたい地形を作成し、その上にアーティストが絵を描き、紙の上でやりたいことを再現しました。この工程でメンバー間のイメージを統一しました。

モコモコしたフチや一部の地形の見た目変更、有機的な壁、丸みのある角など、この絵には地形の自動生成で達成したいポイントがいくつも含まれているという

具体的な実装として、まずはステージの「フチ」にあるモコモコした形状を付ける部分から着手。Mayaのカーブワープ機能を使い、部品モデルを並べることで実装しています。また90度など、尖った角の部分では単純に変形させるとメッシュが潰れてしまうため、角を前後から挟むように部品を配置し、その後に頂点同士を繋げています。

地面と壁の境界である「フチ」の作成は前作や今作のコンセプトアートなど地形モデルに共通する要素

UVについて地面は真上から、壁は周囲から投影している

地形自体はレベルデザイナーがブロック状の地形パーツを組み合わせて作っています。これは細かい調整を簡単に行えること、2Dでの制作手法に近いことから採用されました。

マップエディタにはUnityを使用(ランタイムは内製の「Frat Framework」)。マップエディタについては『星のカービィ ディスカバリー』 変化し続けるプロジェクトに寄り添ったシステム・ツール開発の紹介のセッションでも解説されている

アーティストによるブラッシュアップが施された初期の草原面。この頃からチーム内でフチのモデルのことを「モコ」と呼ぶようになった

草原面が生成できるようになったため、続いて砂漠面、ショッピングモール面に着手していきます。当初は各面専用の処理が必要になるかと考えていましたが、試してみると「モコ(ステージのフチにあるモコモコした形状)」とマテリアルのみ変えることでかなり印象の違う地形が生成されることが分かりました。

マテリアルとモコのみで印象の違う地形が生成できたことに関しては、アーティストの力量が大きく寄与している

モコの機能も拡張され、壁の下に溜まった砂の表現や角への専用パーツをつけることが可能に。最終的には合計4種類の異なる見た目のメッシュが使えるようになった

まったく印象が異なるマップに見えるが、2つの面は同じ仕組みで生成されている

以降はこのシステムを発展させて地形生成を作ることになりました。また、同時期にエンジニアとアーティストの役割分担も決まってきたとのことです。

地形生成システムができるまで -発展編-

ひな形として生まれた地形生成システムはまだシンプルなもので、アーティストの求めるクオリティには達していませんでした。ここからはクオリティを追求するために追加された機能、そして最終的に作られたマップ、今作のワークフローの特性などを解説します。

道の表現

まずは「道を作る機能」が追加されました。道となるメッシュを用意する、投影により表現するなどいくつかの案が出ましたが、今作では頂点カラーを使った表現方法が採用されています。

特に3Dアクションゲームではプレイヤーを誘導・指示するために道は非常に重要な機能

マップエディタでエリアを配置することでエリアに沿った頂点カラーを生成時につけ、マテリアルから参照して質感を変更する

頂点カラーを用いた手法には、テクスチャ同士で同じUVが使えることや、地形の角にも使用できることなど表現上のメリットもあったと語られました。

元のテクスチャが変化したような見た目のテクスチャを同じUVで重ねることで、より自然に変化した質感を表現することが可能

UVを使用しているため、角に使っても引き伸ばされた見た目になることはない

頂点カラーによって局所的に見た目を変える機能は、今作では水たまりやコンクリートの劣化などさまざまな用途に使用されています。

コリジョン属性も自動的に設定されるので、水しぶきなど歩いた際のエフェクトも自動的に反映される

有機的な地形へ

続いて追加したのは「地形を有機的な見た目にする機能」です。地形形状は数十種類のブロックの組み合わせで作られるため、モコである程度緩和できているものの、無機質さやブロック感が出ていました。特に、壁のシルエットや地面との境界などにはっきり真っ直ぐなラインが見えてしまっていました。

地形を有機的にするために「丘パーツ」「歪み機能」「くり抜きパーツ」という機能が追加されました。「丘パーツ」はアーティストが作成した自由形状のパーツモデル。ブロック地形とは別扱いであり、ブロックと組み合わせることでなだらかな丘などを作ることが可能です。

「歪み機能」は地形の頂点にノイズを加えることで歪ませる機能。壁のシルエットの直線感などの軽減を目的としています。

「くり抜きパーツ」は丘パーツとは真逆にあたる、重なった地形をくり抜く機能。今作の荒廃した世界観とは特に相性がよく、多くの場所で使用されているほか、ギミックや装飾パーツの配置などにも役立っています。

また、モデルの細部のクオリティを上げる方法として、ベベル機能と地形の角やモコの周辺に自動で頂点カラーをつける機能を紹介しました。

アーティストから必須の機能と要望があったベベル機能。地面と壁ラインのブロック感軽減、壁のシェーディングの滑らかさなどに大きな効果があったという

角には角度の変化に応じた頂点カラーを、モコ周辺には特定の色の頂点カラーを自動的につける。こすれたような表現やアンビエントオクルージョン表現に使用された

また、レベルデザイン側の機能として「破壊用くり抜きパーツ」が紹介されました。これは重なった部分の地形を破壊可能なものにする機能です。くり抜きパーツと同じく論理差で地形をくり抜いた後、論理積で取ったメッシュを複製、ボロノイ分割し、ランタイム上では破片として制御します。

表面にはヒビ割れ用の頂点カラーを、内部断面には断面用の頂点カラーをつけることで見た目を変化させている

エンジニアが用意したこれらの機能をもとにして、アーティスト側はさまざまなモチーフデータを作成します。草原、ビル、砂漠、コンクリート、ショッピングモール、氷山、火山、トレジャーロードなど、約40のモチーフデータが作成されています。

地形形状はレベルデザイナーが担当し、細部形状やテクスチャ・マテリアル・ベベル・歪みといったパラメーターをアーティストが作成・設定、その2つのセクションをエンジニアが橋渡しし、最終的に地形モデルを自動生成するというワークフローで、有機的なステージを作ることが可能となりました。

ワークフローの特性として地形の形状は何度も再調整することが可能となった

装飾パーツを修正する必要はあるものの、地形のモチーフも後から変更可能

地形生成システムの実装方法

ここからはエンジニア、テクニカルアーティストに向けて、地形生成システムの実装方法が解説されました。今作の地形生成システムはMayaで実装されています。マップエディタのバックグラウンドでMayaを起動し3Dモデルを作成、データ出力・コンバートしてゲーム側に反映させています。

地形生成システムのMaya上の処理は全てPythonスクリプトで書かれている

Maya上でのモデル生成の流れ。ベースメッシュ作成から頂点カラーの反映まで大きく7つの手順を行っている

ベース作成

ベース作成ではマップエディタで作成された地形の「綺麗なメッシュ」を作成しています。マップエディタでは地形ブロックをそのまま配置しているため、内部に不要なポリゴンが大量に存在しています。これらを表面だけ残して取り除きます。

各ブロックを面ごとに分離したメッシュとその反転となるメッシュを使い、周囲のブロック配置を見ながら必要なメッシュのみを配置します。

非多様体のメッシュが残っているとあとの処理でエラーとなるため、原因となっている頂点を検出・操作し解決しています。

ベベル・歪み

ベベルにはMayaのベベルを使用。ただし、メッシュ形状が崩れたり破綻する恐れがある場所は無効にしたり補正処理を入れたりしています。歪みに関しては頂点座標をシードにしたノイズを頂点のXZ座標に加算します。こちらも装飾パーツと干渉を避けるためにパーツ付近では歪みを無効化しています。

くり抜き

くり抜きはMayaのブーリアン機能を使用して実装しています。

いくつかの条件のもとではブーリアン処理が失敗し、調査と対応に時間がかかったという

マテリアル設定

メッシュの法線から「地面」と「壁」のマテリアルを割り当てています。頂点カラーによる制御ができるため、地形マテリアルの種類としては「地面」「壁」そして「モコ」の3種類となっています。

モコ作成

ランダム感を出すために、多くのモコのモデルは複数種類が用意されています。角にも3通りの配置方法を用意しています。

メッシュには専用のアトリビュートで処理の細かな内容を選択できるようになっている

自然地形なのか人工物なのかによって角の配置方法も細かく変えられる。その他にも終端部分には専用パーツを配置しているという

UV

地形のUVはプロジェクト初期からの課題であり、特に壁のUVには苦労したと語られました。

地面のUVは真上からの投影で実装。坂道で引き伸ばされる弱点があったものの、装飾パーツなどアーティストの工夫で乗り切れたとのこと

壁のUVは試行錯誤した上で8方向から投影し、UVシェルを操作することで切れ目の少ないUVを作成。ただし切れ目自体は無くすことができないため、カメラから映らない位置に切れ目を配置している

頂点カラー

地形生成の最後の処理の頂点カラー付与では、マップエディタのエリア情報から頂点カラーを適用しています。

もとのポリゴンのままだた頂点カラーがデコボコしてしまうため、頂点カラーが変化している部分には複数回の分割を追加している

運用して起きた問題とその解決

地形の自動生成システムには運用時に発覚した課題がいくつかありました。主な問題と解決方法の事例を3つ紹介します。

①出力に時間がかかる

第一に出力時間の問題です。ブーリアンや巨大メッシュのエッジ分割などは重く、レベルデザイナーが作成したマップの出力には数分~数十分ほどかかっていました。

この問題には簡易的な地形を出力する機能や頂点カラーのみを反映させる機能、地形モデルの出力をJenkins®サーバーに依頼することである程度フォローができました。

②一部の地形モデルが古いままになる

地形生成システムには機能追加やモチーフデータ更新など日々さまざまな変更が入るため、マップ数が増えてくると一部マップが古いままになる問題がありました。

対策として競合が起こらない夜中に一部地形モデルを再出力するようにしましたが、開発終盤では間に合わなくなったため優先度の高いマップから出力するようにしていたとのことです。

③一部のマップの出力が失敗する

機能追加やモコデータの変更の際に「ほとんどのマップでは問題ないが、一部マップで出力が失敗する」ということがたまに起きていました。

この問題は「気づかないうちに起きた不具合がしばらく経った時点で発覚し、どの変更で起きたのかがわからない」という状況を引き起こし、特定マップの地形モデルが出力できないという深刻なものでした。対策として、「簡易テスト」と「全マップテスト」の2種類のテストを用意し、エラーの感知の精度を高めています。

最後に、加藤氏は「地形モデルの自動生成によって省力化を実現し、それにともなって生じるシステム対策も行った結果、少人数でも遊びごたえのある3Dマップが制作できた」と語り、本講演を締めくくりました。

『星のカービィ ディスカバリー』公式サイト「『星のカービィ ディスカバリー』 プロシージャル地形生成への取り組み」 - CEDEC2022

関連記事

シリーズ初の3Dアクション『星のカービィ ディスカバリー』におけるカービィらしさと遊びやすさ、そして現実世界との融合を目指したアートディレクション【CEDEC2022】
2022.12.28
モデラーとしてコンセプトアートと徹底的に向き合う『ELDEN RING』におけるキャラクターモデルへのアプローチ【CEDEC2022】
2022.11.30
『ヘブンバーンズレッド』のゲームデザイン――ADV、フィールド、バトルパートの全てにおいて「切なさ」を演出【CEDEC2022】
2022.11.09
“フル”クラウド開発の第一歩は新人研修から。バンダイナムコスタジオによるリモート環境でのゲーム開発インフラ整備【CEDEC2022】
2022.11.07 [PR]
AIによるアセット自動生成、ビルド時間の短縮――『FORSPOKEN』事例から見るマイクロソフト&Luminous Productionsの開発効率化【CEDEC2022】
2022.10.25 [PR]
ゲームプランナーに必要なスキルセットを可視化する――トイロジックのプランナー研修から見る”ゲームデザイン”の教え方【CEDEC2022】
2022.10.20

注目記事ランキング

2024.11.14 - 2024.11.21
VIEW MORE

連載・特集ピックアップ

イベントカレンダー

VIEW MORE

今日の用語

フォワードシェーディング(Forward Shading)
フォワードシェーディング オブジェクト毎にライティングの計算を行い、その計算結果を描画するレンダリング手法。フォワードレンダリングともいう。ディファードシェーディング(Deferred Shading)に比べてポストプロセスの自由度は低いが、(何も物を配置しなかった際にかかる)最低限の描画コストが低く、アンチエイリアス処理などにおいてフォワードシェーディングの方が有効な分野も存在する。
VIEW MORE

Xで最新情報をチェック!