Study Works

YuukiHiraiの勉強したものを上げていきます。

Unity Dungeon Architect アップデートで追加されたSnap Dungeonの紹介

この記事は「Unityアセット冬のアドベントカレンダー 2021 Summer!」の 8/28 の記事です!

assetstore.info

 

はじめに

Dungeon Architectというアセットをご存知でしょうか

assetstore.unity.com

ダンジョン系のマップを作成する際にとても便利なアセットで
知っている方やすでに購入されている方が多いかと思います。

Dungeon Architect は2016年にリリースされて、現在に至るまで様々なアップデートで新機能の追加が行われてきました。

その中で追加された機能のSnap Dungeonを紹介します。

 

Snap Dungeonについて

イメージとしては作成した部屋を図面上のグラフでつなぎ合わせてダンジョンを作成する機能な感じです。

 

Snap Builderは、構築済みの部屋のプレハブをつなぎ合わせてダンジョンを生成します。それらをステッチするためのルールは、グラフ文法によって制御されます
~下記のサイトより引用~

docs.dungeonarchitect.dev

www.youtube.com 

サイドスクロールダンジョン

今回、サイドスクロールのダンジョン作成をもとにSnap Dungeonを解説します。

f:id:yuukihirai0331:20210808211900p:plain

Dungeon Architectと言えば3Dの見下ろす型のマップをよく思いつきますが、実は2Dのサイドスクロールダンジョンも生成できます!

 

1、モジュールプレハブの作成解説

モジュールプレハブとは、Snap Dungeonで使用する1つ1つのエリアや部屋を指します。
下記の例画像のようにオレンジのブロックをドア(穴)として設定して、それらのエリアをつなぎ合わせています。

f:id:yuukihirai0331:20210814013601p:plain

モジュールプレハブ(エリア)を作る際に2つのポイントがあります。
・ドア(入口や出口)を用意する
・ドアが重なっても問題がないように整形する

 

ドア(入口や出口)を用意する

モジュールプレハブはドア(SnapConnection)が存在するように作成します。
ドアがないと入口が見つからず、ダンジョンとして成立しなくなるためです。

ドアとなる空のGameObjectにSnapConnectionをAddComponentし、WallObjectに壁となるオブジェクトを入れます

f:id:yuukihirai0331:20210816001328p:plain

モジュールプレハブは重なっても問題がないように作成します。

 

f:id:yuukihirai0331:20210816002731p:plain
上記の画像のようなはみ出しているモジュールプレハブだとダンジョンビルド時にエラーが発生してダンジョンが生成出来なくなります。

 

f:id:yuukihirai0331:20210816003146p:plain
上記の画像のように重なる部分がなければ、ダンジョン作成可能です。

 

f:id:yuukihirai0331:20210816003238p:plain
しかし、歪なダンジョンになるため注意が必要です。

 

2、Dungeon Flow EditorのUI解説

最初は下記の画像の通りにダンジョンの設計図となるダンジョンフローグラフを作成します。
ダンジョンフローグラフはSnapDungeonの設計図となるオブジェクトです。

f:id:yuukihirai0331:20210818011540p:plain


ダンジョンフローグラフを作成したら、ダブルクリックをしてSnapFlowEditorを開きます。

f:id:yuukihirai0331:20210818011856p:plain

 

それぞれのグラフ画面について説明します。

f:id:yuukihirai0331:20210822043744p:plain

RuleList はダンジョンの法則や配置情報をまとめたリストになります。
最初は「Start Rule」が入っていて、その「Start Rule」にマップの配置情報を設定していきます。
他のルールを追加することでマップ情報を拡張していくことも可能です。


f:id:yuukihirai0331:20210822044525p:plain

NodeList は先ほど解説したモジュールプレハブ(エリア)のリストになります。

 

f:id:yuukihirai0331:20210822045410p:plain

Production Rule: ~ は RuleList の各ルールを編集するグラフになります。

 

f:id:yuukihirai0331:20210822045735p:plain

Execution Graph は RuleList のルール同士を繋いだり編集するグラフです。
左上の「▶」ボタンを押すことで全ダンジョンのシミュレートビルドできます。
ビルドした結果は Result Graph や ErrorList に表示されます。

 

f:id:yuukihirai0331:20210822050725p:plain

Result Graph は Execution Graph で実行されたダンジョンの全体図を表示します。

 

f:id:yuukihirai0331:20210822050734p:plain

Error Graph は Execution Graph で実行されたダンジョンに問題がある場合や他の動作で問題が発生した際にエラーログとして表示されます。 

3、ダンジョン生成

次はダンジョンを作成していきます。
今回、下記の画像のようにダンジョンフローグラフを作成し
f:id:yuukihirai0331:20210823215925p:plain

 

下記の画像のダンジョンを作成しました。

f:id:yuukihirai0331:20210824232514p:plain

 これらをどのように作成したか解説します。

 

今回、下記2つのモジュールプレハブを作成しました。
・ダンジョンの基礎となる部屋
f:id:yuukihirai0331:20210823215933p:plain
・部屋を繋ぐ通路
f:id:yuukihirai0331:20210824232311p:plain

部屋(Room)と通路(Corridors)をNode Listに追加し、初期ルール(Start Rule)に4つのルームを繋ぎます。

f:id:yuukihirai0331:20210825000932p:plain

部屋と部屋の間に通路を入れるように追加のルールを作成します。
初期設定のルール以外に下記のルールを作成しました。

f:id:yuukihirai0331:20210823215937p:plain

LHS Graph で Room → Room の接続を設定し、RHS Graoh にて Room → Corridors → Room と設定します。
これにより LHS Graph で設定した Room → Room の接続箇所を RHS Graoh の Room → Corridors → Room ように置き換えるルールを設定しました。

 

f:id:yuukihirai0331:20210825002116p:plain

そして、作成したルールを Execution Graph に設定してUnityエディタのInspectorで Run Mode を Iterate に設定します。
Iterate にすることでルールを加算で追加することが可能です。

 

次に、SceneにDungeonSnapSideScrollerを配置します。
DungeonSnapSideScrollerはサイドスクロール型用のダンジョン生成プレハブです。
DungeonSnapSideScroller以外にもDungeonSnap~のプレハブでスナップダンジョンが作成できます。
そして、モジュールプレハブを統括するDungeonMapという空のGameObjectを作成します。

f:id:yuukihirai0331:20210825003454p:plain



Sceneに配置したDungeonSnapSideScrollerを開きます。

f:id:yuukihirai0331:20210825004115p:plain

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 を押して、ダンジョン作成です。

f:id:yuukihirai0331:20210826234930p:plain 

最後に

今回、紹介した内容はサイドスクロール以外にもアップダウン型のダンジョン等でも使用されている機能です。
Dungeon Architect以外のAssetも無料でアップデートされていたり、有料版でバージョンアップされているAssetもあります。
購入した後も定期的にアップデートを確認してゲーム開発をより良く進められればと思います。