国内最大規模のゲーム業界カンファレンス「CEDEC2022」が、2022年8月23日(火)から8月25日(木)までの日程で開催されました。2日目となる8月24日には、株式会社ハル研究所 開発本部 開発環境室エンジニア 加藤 歩氏が登壇し、「『星のカービィ ディスカバリー』 プロシージャル地形生成への取り組み」と題した講演が行われました。人気シリーズ『星のカービィ』最新作『星のカービィ ディスカバリー』におけるプロシージャル地形の生成やマテリアル・テクスチャにおける工夫などが解説された本講演をレポートします。
目次
登壇したのは株式会社ハル研究所のエンジニア加藤 歩氏。加藤氏は株式会社ハル研究所の入社後に複数のタイトルに関わり、『星のカービィ ディスカバリー』ではマップ制作フローの設計および地形生成システムの設計・実装を担当しています。
シリーズ初の3Dアクション、課題は地形の作成・調整コスト
『星のカービィ ディスカバリー』は『星のカービィ』本編シリーズ初の3Dアクションゲームであり、地形の作成・調整にかかるコストが増大すると見込まれていました。
本作の最終的な地形生成のワークフローは以下のようなものでした。
- レベルデザイナーがマップエディタ上でブロック状のパーツを配置し、地形の形状を作成する
- すばやくゲーム画面に反映される簡易地形機能を使い、地形調整のイテレーションを回す
- 地形の調整が終わったら地形モデル出力ボタンを押し、本番用の地形モデルを自動生成する
- キャラクター、ギミック、装飾パーツを配置する
そして、最大のポイントとなるのはAutodesk Mayaを用いて本番用の地形モデルをプロシージャルに自動生成することだと語りました。本講演はこの地形生成システムができる経緯や実装方法、運用時の問題や解決方法の詳細を紹介しています。
地形生成システムができるまで -黎明期編-
前作『星のカービィ スターアライズ』でも3Dモデルは使われていますが、今作と異なり2Dアクションゲームでした。その当時の地形制作には以下のようなワークフローが使用されていました。
- レベルデザイナーがマップエディタ上でブロック状のパーツを配置し地形を作成する
- アーティストの作った3Dモデルが地形に沿うように自動的に配置される
- アーティストが地形モデルの配置を細かく調整
- 地形以外の装飾物を配置する
レベルデザイナーがマップエディタで作成した地形形状に3Dモデルが自動的に配置され、マップとして出力されるという仕組みであり、加藤氏は「言ってみれば、この頃からプロシージャルな地形モデルを生成していた」と振り返ります。
3Dアクションゲームとなった本作では、当初以下のようなワークフローが想定されていました。
- レベルデザイナーが地形の設計図を作成する
- それを元にアーティストが地形モデルを作成する
ただし、これにはレベルデザインの調整・変更のしづらさや、アーティストの作業コストの重さなどの懸念点がありました。これはレベルデザイナーとアーティスト双方にとって喜ばしくないものです。
そこで3つのミッションが生まれました。
「レベルデザイナーがギリギリまで地形形状を調整できるようにしたい」、「アーティストの地形モデル作成コストを大幅に下げ、その分、他のことに手を回せるようにしたい」、その上で「地形モデルのクオリティは下げたくない」。
つまり「2Dの頃の文化を引き継ぎつつ、そのまま製品に載せられるクオリティの地形モデルを自動で作る」ことが目指されました。これらの目的を達成するために新たな地形モデル自動生成へと取り組むことになりました。
まずはカービィの最初のステージとしておなじみの草原の地形モデルから自動生成の検討を始めました。シリーズ初の3Dアクションということで「どんなマップにするのか」「どうやって地形の形状を作るのか」などさまざまな選択肢や検討事項がありました。
アーティスト、レベルデザイナー、実装を担当するエンジニアで地形生成についてのイメージがそれぞれ違うため、まずはイメージの共有を行う必要があります。今作では実際にレベルデザイナーがマップエディタを使って作りたい地形を作成し、その上にアーティストが絵を描き、紙の上でやりたいことを再現しました。この工程でメンバー間のイメージを統一しました。
具体的な実装として、まずはステージの「フチ」にあるモコモコした形状を付ける部分から着手。Mayaのカーブワープ機能を使い、部品モデルを並べることで実装しています。また90度など、尖った角の部分では単純に変形させるとメッシュが潰れてしまうため、角を前後から挟むように部品を配置し、その後に頂点同士を繋げています。
地形自体はレベルデザイナーがブロック状の地形パーツを組み合わせて作っています。これは細かい調整を簡単に行えること、2Dでの制作手法に近いことから採用されました。
マップエディタにはUnityを使用(ランタイムは内製の「Frat Framework」)。マップエディタについては『星のカービィ ディスカバリー』 変化し続けるプロジェクトに寄り添ったシステム・ツール開発の紹介のセッションでも解説されている
草原面が生成できるようになったため、続いて砂漠面、ショッピングモール面に着手していきます。当初は各面専用の処理が必要になるかと考えていましたが、試してみると「モコ(ステージのフチにあるモコモコした形状)」とマテリアルのみ変えることでかなり印象の違う地形が生成されることが分かりました。
以降はこのシステムを発展させて地形生成を作ることになりました。また、同時期にエンジニアとアーティストの役割分担も決まってきたとのことです。
地形生成システムができるまで -発展編-
ひな形として生まれた地形生成システムはまだシンプルなもので、アーティストの求めるクオリティには達していませんでした。ここからはクオリティを追求するために追加された機能、そして最終的に作られたマップ、今作のワークフローの特性などを解説します。
道の表現
まずは「道を作る機能」が追加されました。道となるメッシュを用意する、投影により表現するなどいくつかの案が出ましたが、今作では頂点カラーを使った表現方法が採用されています。
頂点カラーを用いた手法には、テクスチャ同士で同じUVが使えることや、地形の角にも使用できることなど表現上のメリットもあったと語られました。
頂点カラーによって局所的に見た目を変える機能は、今作では水たまりやコンクリートの劣化などさまざまな用途に使用されています。
有機的な地形へ
続いて追加したのは「地形を有機的な見た目にする機能」です。地形形状は数十種類のブロックの組み合わせで作られるため、モコである程度緩和できているものの、無機質さやブロック感が出ていました。特に、壁のシルエットや地面との境界などにはっきり真っ直ぐなラインが見えてしまっていました。
地形を有機的にするために「丘パーツ」「歪み機能」「くり抜きパーツ」という機能が追加されました。「丘パーツ」はアーティストが作成した自由形状のパーツモデル。ブロック地形とは別扱いであり、ブロックと組み合わせることでなだらかな丘などを作ることが可能です。
「歪み機能」は地形の頂点にノイズを加えることで歪ませる機能。壁のシルエットの直線感などの軽減を目的としています。
「くり抜きパーツ」は丘パーツとは真逆にあたる、重なった地形をくり抜く機能。今作の荒廃した世界観とは特に相性がよく、多くの場所で使用されているほか、ギミックや装飾パーツの配置などにも役立っています。
また、モデルの細部のクオリティを上げる方法として、ベベル機能と地形の角やモコの周辺に自動で頂点カラーをつける機能を紹介しました。
また、レベルデザイン側の機能として「破壊用くり抜きパーツ」が紹介されました。これは重なった部分の地形を破壊可能なものにする機能です。くり抜きパーツと同じく論理差で地形をくり抜いた後、論理積で取ったメッシュを複製、ボロノイ分割し、ランタイム上では破片として制御します。
エンジニアが用意したこれらの機能をもとにして、アーティスト側はさまざまなモチーフデータを作成します。草原、ビル、砂漠、コンクリート、ショッピングモール、氷山、火山、トレジャーロードなど、約40のモチーフデータが作成されています。
地形形状はレベルデザイナーが担当し、細部形状やテクスチャ・マテリアル・ベベル・歪みといったパラメーターをアーティストが作成・設定、その2つのセクションをエンジニアが橋渡しし、最終的に地形モデルを自動生成するというワークフローで、有機的なステージを作ることが可能となりました。
地形生成システムの実装方法
ここからはエンジニア、テクニカルアーティストに向けて、地形生成システムの実装方法が解説されました。今作の地形生成システムはMayaで実装されています。マップエディタのバックグラウンドでMayaを起動し3Dモデルを作成、データ出力・コンバートしてゲーム側に反映させています。
ベース作成
ベース作成ではマップエディタで作成された地形の「綺麗なメッシュ」を作成しています。マップエディタでは地形ブロックをそのまま配置しているため、内部に不要なポリゴンが大量に存在しています。これらを表面だけ残して取り除きます。
各ブロックを面ごとに分離したメッシュとその反転となるメッシュを使い、周囲のブロック配置を見ながら必要なメッシュのみを配置します。
非多様体のメッシュが残っているとあとの処理でエラーとなるため、原因となっている頂点を検出・操作し解決しています。
ベベル・歪み
ベベルにはMayaのベベルを使用。ただし、メッシュ形状が崩れたり破綻する恐れがある場所は無効にしたり補正処理を入れたりしています。歪みに関しては頂点座標をシードにしたノイズを頂点のXZ座標に加算します。こちらも装飾パーツと干渉を避けるためにパーツ付近では歪みを無効化しています。
くり抜き
くり抜きはMayaのブーリアン機能を使用して実装しています。
マテリアル設定
メッシュの法線から「地面」と「壁」のマテリアルを割り当てています。頂点カラーによる制御ができるため、地形マテリアルの種類としては「地面」「壁」そして「モコ」の3種類となっています。
モコ作成
ランダム感を出すために、多くのモコのモデルは複数種類が用意されています。角にも3通りの配置方法を用意しています。
UV
地形のUVはプロジェクト初期からの課題であり、特に壁のUVには苦労したと語られました。
頂点カラー
地形生成の最後の処理の頂点カラー付与では、マップエディタのエリア情報から頂点カラーを適用しています。
運用して起きた問題とその解決
地形の自動生成システムには運用時に発覚した課題がいくつかありました。主な問題と解決方法の事例を3つ紹介します。
①出力に時間がかかる
第一に出力時間の問題です。ブーリアンや巨大メッシュのエッジ分割などは重く、レベルデザイナーが作成したマップの出力には数分~数十分ほどかかっていました。
この問題には簡易的な地形を出力する機能や頂点カラーのみを反映させる機能、地形モデルの出力をJenkins®サーバーに依頼することである程度フォローができました。
②一部の地形モデルが古いままになる
地形生成システムには機能追加やモチーフデータ更新など日々さまざまな変更が入るため、マップ数が増えてくると一部マップが古いままになる問題がありました。
対策として競合が起こらない夜中に一部地形モデルを再出力するようにしましたが、開発終盤では間に合わなくなったため優先度の高いマップから出力するようにしていたとのことです。
③一部のマップの出力が失敗する
機能追加やモコデータの変更の際に「ほとんどのマップでは問題ないが、一部マップで出力が失敗する」ということがたまに起きていました。
この問題は「気づかないうちに起きた不具合がしばらく経った時点で発覚し、どの変更で起きたのかがわからない」という状況を引き起こし、特定マップの地形モデルが出力できないという深刻なものでした。対策として、「簡易テスト」と「全マップテスト」の2種類のテストを用意し、エラーの感知の精度を高めています。
最後に、加藤氏は「地形モデルの自動生成によって省力化を実現し、それにともなって生じるシステム対策も行った結果、少人数でも遊びごたえのある3Dマップが制作できた」と語り、本講演を締めくくりました。
『星のカービィ ディスカバリー』公式サイト「『星のカービィ ディスカバリー』 プロシージャル地形生成への取り組み」 - CEDEC2022関連記事

注目記事ランキング
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
1
2
3
4
5
連載・特集ピックアップ
西川善司が語る“ゲームの仕組み”の記事をまとめました。
Blenderを初めて使う人に向けたチュートリアル記事。モデル制作からUE5へのインポートまで幅広く解説。
アークライトの野澤 邦仁(のざわ くにひと)氏が、ボードゲームの企画から制作・出展方法まで解説。
ゲーム制作の定番ツールやイベント情報をまとめました。
GAME CREATORS CONFERENCE ’25で行われた講演レポートをまとめました。
GDC 2025で行われた講演レポートをまとめました。
UNREAL FEST 2024で行われた講演レポートやインタビューをまとめました。
東京ゲームショウ2024で展示された作品のプレイレポートやインタビューをまとめました。
CEDEC2024で行われた講演レポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブル2024で行われた講演のアーカイブ動画・スライドをまとめました。
CEDEC2023で行われた講演レポートをまとめました。
東京ゲームショウ2023で展示された作品のプレイレポートやインタビューをまとめました。
UNREAL FEST 2023で行われた講演レポートをまとめました。
BitSummitで展示された作品のプレイレポートをまとめました。
ゲームメーカーズ スクランブルで行われた講演のアーカイブ動画・スライドをまとめました。
UNREAL FEST 2022で行われた講演レポートやインタビューをまとめました。
CEDEC2022で行われた講演レポートをまとめました。




今日の用語
Aスタンス
Xで最新情報をチェック!

