Wizardry風ダンジョンのランダム作成 (2016.3.13 suxgames)
CursedDungeon開発の目的は、「製作者が遊びたい」です。
製作者が手ずから作成したダンジョンでは、スリルが9割減ですので、
ランダムでダンジョンを作成するようにしています。
本コラムでは、Wizardry風のダンジョン(ギミックのないシンプルなもの)の
ランダム作成方法を説明します。
ローグ風ランダムダンジョンの作成
CursedDungeonのダンジョン作成は、ローグ風のダンジョン作成を参考にしています。
まずは、ローグ風ダンジョン作成のおさらいから。
領域を二分割して部屋と通路を作成
基本的には、領域を二分割して、その分割線を跨ぐように通路を作成します。
分割線を跨いで相互通行可能にすることで、「たどり着けない」ということがなくなります。
再帰的に実行
領域分割を再帰的に行ったのがこちら。
再帰の往路で領域を分割し、
再帰の末端で部屋を作成し、
再帰の復路で通路を作成しています。
(往路で通路を作ろうとすると、部屋や他の通路と干渉してしまうので、
復路で作成する必要があります)
※Random取得順の都合で、少し分割が変わっています・・・
Wizardry風ランダムダンジョンの作成
ローグ風作成方法とほぼ同様です。
まずはいくつかサンプルを。
領域を二分割してドアを配置
基本的には、領域を二分割して、その分割線にドアを配置して相互通行可能にします。
それにより、「たどり着けない」ということがなくなります。
再帰的に実行
ローグ風と同様に再帰的に実行。
再帰の往路で領域を分割し、干渉の心配がないのでドアも作成できます。
※Random取得順の都合で、やはり少し分割が変わっています・・・
これだけだと、ただの小部屋の集まりになってしまうので、
再帰の末端で、部屋かどうかの色付けを行います。
(青い部分が「部屋」)
「部屋」と判定されなかった領域は、ドアとドアを通路でつなぎます。
これで完成。
通路の作成方法
通路を作成するイメージとしては、
- とりあえず「部屋」と判定されなかった領域を、「岩」で埋めます。
- ドアの正面に、「モグラ」を配置します。
- 「モグラ」をランダムに1匹選び、他の「モグラ」に向けて、1歩ずつランダムに進めます。
- 「モグラ」が、他の「モグラ」や、他の「モグラ」が掘った通路にぶつかったらその「モグラ」は除去。
- 「モグラ」が1匹だけになったら、全てのドアが通路で連結した状態になります。
明るい青のセルが、「モグラ」の現在地です。
通路の作成方法
ただ、このままだと、通路が細切れになります。
通路になった領域と、通路になった領域が隣接してドアでつながっている場合は、
そのドアを取り払うことで、複雑な通路の形になります。
左がドア除外前、右がドア除外後です。
左半分の通路がつながっています。
「ドアの向こうは必ず部屋」ということが無いように、半分程度のドアは残しています。
一方通行のドア
前述のとおり、
領域を二分割して、その分割線にドアを配置して相互通行可能
にすることが重要です。
つまり、一方通行のドアを、反対向きに2つ設置するだけで、この条件を満たせます。
終わり
以上で、Wizardry風ダンジョンのランダム作成の説明となります。
システム的にはSimpleDungeonというIDにしています。
当面は、SimpleDungeonだけとなりますが、街っぽいダンジョンや村っぽいダンジョン、
城や森っぽいダンジョンも、ランダムに作成できるようにしたいですね。
最終更新:2016年03月13日 20:43