この記事は「Unityアセット冬のアドベントカレンダー 2021 Summer!」の 8/28 の記事です!
はじめに
Dungeon Architectというアセットをご存知でしょうか
ダンジョン系のマップを作成する際にとても便利なアセットで
知っている方やすでに購入されている方が多いかと思います。
Dungeon Architect は2016年にリリースされて、現在に至るまで様々なアップデートで新機能の追加が行われてきました。
その中で追加された機能のSnap Dungeonを紹介します。
Snap Dungeonについて
イメージとしては作成した部屋を図面上のグラフでつなぎ合わせてダンジョンを作成する機能な感じです。
Snap Builderは、構築済みの部屋のプレハブをつなぎ合わせてダンジョンを生成します。それらをステッチするためのルールは、グラフ文法によって制御されます
~下記のサイトより引用~
サイドスクロールダンジョン
今回、サイドスクロールのダンジョン作成をもとにSnap Dungeonを解説します。
Dungeon Architectと言えば3Dの見下ろす型のマップをよく思いつきますが、実は2Dのサイドスクロールダンジョンも生成できます!
1、モジュールプレハブの作成解説
モジュールプレハブとは、Snap Dungeonで使用する1つ1つのエリアや部屋を指します。
下記の例画像のようにオレンジのブロックをドア(穴)として設定して、それらのエリアをつなぎ合わせています。
モジュールプレハブ(エリア)を作る際に2つのポイントがあります。
・ドア(入口や出口)を用意する
・ドアが重なっても問題がないように整形する
ドア(入口や出口)を用意する
モジュールプレハブはドア(SnapConnection)が存在するように作成します。
ドアがないと入口が見つからず、ダンジョンとして成立しなくなるためです。
ドアとなる空のGameObjectにSnapConnectionをAddComponentし、WallObjectに壁となるオブジェクトを入れます
モジュールプレハブは重なっても問題がないように作成します。
上記の画像のようなはみ出しているモジュールプレハブだとダンジョンビルド時にエラーが発生してダンジョンが生成出来なくなります。
上記の画像のように重なる部分がなければ、ダンジョン作成可能です。
しかし、歪なダンジョンになるため注意が必要です。
2、Dungeon Flow EditorのUI解説
最初は下記の画像の通りにダンジョンの設計図となるダンジョンフローグラフを作成します。
ダンジョンフローグラフはSnapDungeonの設計図となるオブジェクトです。
ダンジョンフローグラフを作成したら、ダブルクリックをしてSnapFlowEditorを開きます。
それぞれのグラフ画面について説明します。
RuleList はダンジョンの法則や配置情報をまとめたリストになります。
最初は「Start Rule」が入っていて、その「Start Rule」にマップの配置情報を設定していきます。
他のルールを追加することでマップ情報を拡張していくことも可能です。
NodeList は先ほど解説したモジュールプレハブ(エリア)のリストになります。
Production Rule: ~ は RuleList の各ルールを編集するグラフになります。
Execution Graph は RuleList のルール同士を繋いだり編集するグラフです。
左上の「▶」ボタンを押すことで全ダンジョンのシミュレートビルドできます。
ビルドした結果は Result Graph や ErrorList に表示されます。
Result Graph は Execution Graph で実行されたダンジョンの全体図を表示します。
Error Graph は Execution Graph で実行されたダンジョンに問題がある場合や他の動作で問題が発生した際にエラーログとして表示されます。
3、ダンジョン生成
次はダンジョンを作成していきます。
今回、下記の画像のようにダンジョンフローグラフを作成し
下記の画像のダンジョンを作成しました。
これらをどのように作成したか解説します。
今回、下記2つのモジュールプレハブを作成しました。
・ダンジョンの基礎となる部屋
・部屋を繋ぐ通路
部屋(Room)と通路(Corridors)をNode Listに追加し、初期ルール(Start Rule)に4つのルームを繋ぎます。
部屋と部屋の間に通路を入れるように追加のルールを作成します。
初期設定のルール以外に下記のルールを作成しました。
LHS Graph で Room → Room の接続を設定し、RHS Graoh にて Room → Corridors → Room と設定します。
これにより LHS Graph で設定した Room → Room の接続箇所を RHS Graoh の Room → Corridors → Room ように置き換えるルールを設定しました。
そして、作成したルールを Execution Graph に設定してUnityエディタのInspectorで Run Mode を Iterate に設定します。
Iterate にすることでルールを加算で追加することが可能です。
次に、SceneにDungeonSnapSideScrollerを配置します。
DungeonSnapSideScrollerはサイドスクロール型用のダンジョン生成プレハブです。
DungeonSnapSideScroller以外にもDungeonSnap~のプレハブでスナップダンジョンが作成できます。
そして、モジュールプレハブを統括するDungeonMapという空のGameObjectを作成します。
Sceneに配置したDungeonSnapSideScrollerを開きます。
1、Pooled Dungeon Scene Provider の Item Parent に 先ほど作成したGameObjectのDungeonMapを設定します。これによりダンジョンで使用されるモジュールプレハブをDungeonMapの子に生成します。
2、Snap Config の Modules に作成したモジュールプレハブ(部屋と通路)を設定し、Node Listで設定したRoom(部屋)とCorridors(通路)をCategoryに設定します。
3、作成したダンジョンフローグラフを Snap Config の Snap Flow に設定します。
4、最後に Build Dungeon を押して、ダンジョン作成です。
最後に
今回、紹介した内容はサイドスクロール以外にもアップダウン型のダンジョン等でも使用されている機能です。
Dungeon Architect以外のAssetも無料でアップデートされていたり、有料版でバージョンアップされているAssetもあります。
購入した後も定期的にアップデートを確認してゲーム開発をより良く進められればと思います。