3Dアクションゲームのレベルデザインの基本

レベルデザインの基本を学びました。

レベルデザインは面白い体験への誘導ができているかどうかを重視する。
最初にやるべき事は大雑把にレベルを作るです。記号的な下書きで構いません。

レベルを細かく作り込むのはゲーム全体の下地を浅く完成させてからです。そうしなければ、いつまで経ってもゲームは完成しないでしょう。

Quixel Bridgeからマテリアルをダウンロード→Add

今回は草原ベースのレベルを作ります。

Quixel Bridgeからランドスケープ用のマテリアルを2種類入手します。
全体のベースとなる草のマテリアルと、道となるダートのマテリアル。

  • WILD GRASS
    ID: vb0nceog
    ベースとなる全体の草マテリアル
  • QUARRY SLATE GROUND GRASS DIRT 01
    ID: xbreair
    道のダートマテリアル

それぞれDownloadしてからAdd。

ランドスケープ用マテリアルの作成

草や土のマテリアルはキレイに整列してしまうと不自然に見えます。
Texture_Bombingを使って自然に馴染ませるマテリアルを作成します。

コンテンツブラウザで右クリックして マテリアル
名前はM_Landscape_Grassにしました。

M_Landscape_Grassの編集

マテリアルの結果ノードを選択した状態で詳細を見る。
Use Material Attributesにチェックを入れる。

Landscape Layer Blendを配置し、マテリアルの結果ノードと繋げる。Landscape Layer Blendを選択した状態で詳細を見る。
レイヤーの配列エレメントを2つ追加します。
インデックス[0]のLayer Nameを Grass にします。
インデックス[1]のLayer Nameを Dirt にします。

MakeMaterialAttributesを2つ配置。
Grass用とDirt用です。

まずWildGrassの設定をします。
完成画像は下にあります。

Wild_Grass_xbreagfフォルダ内にある3つのテクスチャをドラッグ&ドロップでM_Landscape_Grass内に配置します。
T_Wild_Grass_xbreagf_2K_D
T_Wild_Grass_xbreagf_2K_N
T_WildGrass_xbreagf_2K_ORDp
それぞれノード上で右クリックして「テクスチャオブジェクトに変換」をクリック。

Texture_Bombingを3つ配置。
さきほど変換した3つのテクスチャオブジェクトをTexture Objectに繋ぐ。

Tiling (S)のピンで右クリックして「パラメータへ昇格」をクリック。
値を0.1にして、3つのTexture_BombingのTilingと繋ぐ
Tilingは大きさです。0.1だと引き延ばして大きく表示されます。

Offset (S)のピンで右クリックして「パラメータへ昇格」をクリック。
値を10.0にして、3つのTexture_BombingのOffsetと繋ぐ
Offsetは位置です。

3つのTexture_BombingのResultをMakeMaterualAttributesに繋ぎます。深緑色がBaseColor、黄緑がRoughness、青がNormlです。

MakeMaterualAttributesからLandscape Layer BlendのLayer WildGrassに繋ぐ。

同じやり方でGrassDirtの設定もします。
WildGrassのノード群をコピー&ペーストして、テクスチャだけ置き換えると楽です。

Landscape Layer Blendの配列エレメントを追加すれば、レイヤーを追加できるわけです。岩、砂漠、雪などなど。

空のレベルを作成

上メニューの ファイル > 新規レベル > 空のレベル を選択して作成。
名前は何でもいいです。

環境ライト ミキサー

上メニューの ウィンドウ > 環境ライト ミキサー をクリック。
作成できる5つの要素を全て作成します。「スカイ ライトを作成」「ディレクショナルライトを作成」「Sky Atmosphereを作成」「ボリュメトリック クラウドを作成」「ハイトフォグを作成」をクリック。

ランドスケープの作成

左上の「選択モード」を「ランドスケープモード」に切り替える。
デフォルト設定のまま 作成 をクリック。

  • 63×63 クワッド
  • 1×1 セクション
  • コンポーネント数 8×8
  • 全体の解像度 505×505
  • 合計コンポーネント 64

このデフォルト設定ですと504mx504mのマップサイズになります。
広いか狭いかはマップの下地を作ってテストプレイすればわかります。

レイヤーの設定

ランドスケープモードのタブで「ペイント」を選択。
ターゲットレイヤー > レイヤー+をクリックして2つ追加。

名前がLayer_0となっている方をGrassに名前変更します。
名前がLayer_1となっている方をDirtに名前変更します。
レイヤーの名前で判別しますから間違えてはいけません。

名前を変えてから、レイヤー情報を割り当てます。
「なし」の右側にある+をクリック。
レイヤー情報を保存するフォルダを指定して保存。

ランドスケープマテリアルの設定

アウトライナーのLandscapeを選択して詳細を見る。
ランドスケープマテリアルの欄にM_Landscape_Grassを指定。

デフォルト設定が透明になっていますから、地面全体が透明になります。

ペイントモードのままレイヤーのGrassを選択し、ブラシサイズを50,000にすれば楽に全体を塗る事ができます。
消去したい時はShiftを押しながら左クリックです。

マテリアル設定のおかげでキレイに整列しすぎておらず、自然な地面になっています。

精細さが粗いと感じるなら、M_Landscape_GrassのTiling (S)を0.2~1.0に変えてみましょう。

レベルデザイン

レベルデザインで大事なのは誘導です。

  • メイン目標を作る。
  • メイン目標に向かう道中にプレイヤーの好奇心を刺激するサブ目標を作る。

これが基本の形だと考えます。
参考:『ゼルダの伝説 BotW』自然と寄り道してしまうレベルデザインのカギは、“引力”と“地形”! 魅力的なハイラルができるまでを解説【CEDEC 2017】

目標が点であり、それを繋ぐ道が線。

スタート地点からわかりやすく見えるメイン目標。プレイヤーは自然とそこを目指すでしょう。
そして、その道中に「引力」のある気になる場所を用意する。好奇心を刺激されたプレイヤーは、メイン目標を後回しにしてサブ目標へ向かいます。
サブ目標ではイベントが発生したりアイテムを入手するなどの報酬を用意する。

下書き


難しい事はしない。メイン目標1つとサブ目標2つ。
スペースは余っており、味付けする余地はありますが、まずシンプルに作る。

スタート位置からはメイン目標だけが見えます。まずプレイヤーはそこに向かいたくなる。
クエストマーカーで「行け」と指示されるのではなく、プレイヤーが能動的に向かいたくなる仕掛けが良いのです。

最初の一本道にはチュートリアル的なザコ戦を用意する予定です。
チュートリアルもレベルデザインによって自然に組み込むのが理想です。
プレイヤーにジャンプを覚えさせたいなら最初の一本道に段差や穴を用意するなど。

サブ目標はスタート位置からは見えず、プレイヤーがメイン目標に向かっている途中に見えて気付くようにします。
「あそこに行ってみたい」と思わせるようなサブ目標にする。その結果、報酬が得られると「探索して良かった」という満足感を得られる。この好奇心からの報酬が面白い体験であり、そこへ誘導するレベルデザインとなっています。
1つめのサブ目標は宝箱からアイテム入手。
2つめのサブ目標は敵がいて戦闘になる。

レベルの編集

「ランドスケープモード」から「選択モード」に切り替えましょう。

プレイヤースタートを配置

まずスタート位置となるところにプレイヤースタートを配置します。
X方向に進むようにした方がいいと思います。

視点を「パースペクティブ」から「上」に切り替えておくと、全体を把握しやすいです。

メイン目標を配置

形状 > コーン のスケールを大きくしてメイン目標として配置します。
最終的には地面を盛り上げて丘にして、スタート位置から見やすい目印にする予定です。

道を作る

左上の「選択モード」を「ランドスケープモード」に切り替える。

■レイヤーの追加
編集レイヤー > レイヤー+をクリックして、レイヤークラスはLandscape Edit Layer Splinesを選択。
スプライン専用のレイヤーです。

ランドスケープモードのタブの管理を選択。
スプラインを選択。
そしてレイヤーはSplinesを選択。

まずCtrlキーを押しながら左クリックで最初のスプラインポイントが配置できます。
別の位置でCtrlキーを押しながら左クリックすると2つめのスプラインポイントを配置でき、最初のスプラインポイントと繋がって道になります。
スプラインポイントですから後で修正可能です。細かい事は気にせず道を作りましょう。

道が完成したら全ての道を選択します。1つの区画(※スプラインポイントではなく道の区画そのもの)を選択した状態でCtrl+Aを押せば全選択できます。
詳細を見て、レイヤー名の欄に Dirt と入力します。
そうすると道のマテリアルが塗り替わります。

■道幅の変更
スプラインポイント(※道の区画そのものではなくスプラインポイント)を選択した状態で詳細の半角の値を変更すると道幅を変えられます。
デフォルト値の1000は太すぎますから、Ctrl+Aで全選択して一括で狭くしてから個々に調整した方が良いでしょう。 

ランドスケープモード > 管理 > スプライン になっている時、スプラインで作成した道は「スプラインポイント」か「道の区画全体」の選択ができます。
「スプラインポイント」を選択している状態でレイヤー名の欄にDirtと入力しても塗り変わらないですし、「道の区画全体」を選択している状態では道幅は変えられません。

「選択モード」に戻す。
形状 > シリンダー のスケールを大きくしてサブ目標として2つ配置します。

これでスタート位置とメイン目標x1とサブ目標x2が配置できました。
全体図で見ると狭く見えますが、504mx504mですから、けっこう広いです。

地面の凹凸も無ければ壁もありません。
でもプレイヤーを誘導する意図は明確にあり、「レベルデザインをした」という実感があります。
明確な意図がありますから、どこに壁を置くとか丘にするとかもわかっています。チーム制作なら簡易的な壁を配置したほうが良いでしょうけど、1人制作なので自分の脳内でわかっていればOKかなと思います。

この状態のまま敵やアイテムを配置してテストプレイします。
マップサイズが狭いと感じたら、広く作り直す必要があります。

良さそうならこのレベルを仕上げるのではなく、次のレベルの下地を作ります。
まずは全体を浅く完成させる事が、個人ゲーム開発において重要です。私が1本目をリリースするまでに作品を完成させられず苦しんだ原因は、全体を浅く完成させる前に細かいところに注力してしまった事でした。

Youtubeで「unreal engine 5 Level」と検索すると、素晴らしいグラフィックのレベルを作成するためのチュートリアルが多数あります。
しかし、私はそれらを見てもゲーム作りは進みませんでした。いざ自分でレベルを作成しようとしても、どこに何を配置していいのかわかりません。
Fabで高クオリティな完成済のアセットを購入して、何となく敵や宝箱を配置しても味気ないものになってしまいました。
その原因は、レベルデザインの骨組みとなる面白い体験への誘導がなかったからです。レベルデザインを学ぶにあたって最初に覚えるべき事は、どうすれば「面白い体験への誘導ができるか?」かと思います。これはゲームのジャンルによって違ってくるでしょう。
人気ゲームのレベルデザインを分析して「ここが良い」と言うのは簡単ですけど、いざ自分のゲームのレベルデザインに組み込むとなると難しい。3Dアクションゲームにおいて、1つのメイン目標と2つのサブ目標というのは、わかりやすい形ではないでしょうか。

「面白い体験」の候補

次のレベルではショートカットを繋げる面白さを入れてみたいです。フロム・ソフトウェアのソウルシリーズでは定番のやつですね。

コメント

タイトルとURLをコピーしました