fc2ブログ

ランダムダンジョン生成-空間分割

15/01/05改稿

さて。
別にこいつはローグライク必須の要素というわけでもないですが、いちおうランダムダンジョンの作り方なんてのも載せてみます。
といっても、別に面白くもない四角形の部屋&通路ダンジョンを生成するだけなので、たいしたことは書けないです。
そんなことより自然っぽい地形を生成したいよ~とかいう方は、自作ゲー『ワールドフロンティア』にて悪戦苦闘した記録があるので、そっちを見てみては。

不思議のダンジョンチックなダンジョン生成については、自分も他のサイトを参考にしたので、とりあえずはこちらを見てみるといいかと思われます。
ttp://www40.atwiki.jp/spellbound/pages/384.html

基本的なランダムダンジョンの生成手順は3つに分かれます。以下、この流れに沿って説明していきます。
1.空間分割
2.部屋生成
3.通路生成

1.空間分割
ここではまず、まっさらなマップをいくつかの空間に分割する処理を行います。
ここで分割した空間の中に、後で部屋を作ることになります。
手順はこんな感じ。

[ループ地点]
空間を二つに分割。空間の縦サイズ>横サイズのときは縦分割、逆なら横分割。これはどの分割においても一緒。分割線を入れるときは、分割によってできる空間が小さくなりすぎないように注意。

できた二つの空間の情報をデータベースに入力。左上の点の座標とか、右下の点の座標とか。

あらかじめ空間の最小縦サイズ、最小横サイズを決めておき、できた空間をさらに分割しても最小サイズ以下にならないときは、ループ地点に戻る。
どう分割してもどちらかが最小サイズ未満になってしまうときは、分割できないので次の空間に移動。

文字だと分かりづらいですが。。
絵で説明するとこんな感じです。


最初の何も分割のされてないマップ

一回分割した後の状態


分割した空間をさらに分割


さらに分割


これ以上分割ができなくなったら(=分割すると空間の最小サイズ未満になってしまうときは)次の空間の分割に移行


空間分割が完成した状態
この空間の中にひとつずつ部屋を生成する。

注意点としては、空間と空間の間を必ず1マス空けること!
後で通路を作る際に困ったことになってしまうので、空間と空間の間は必ず1マス空けるようにしましょう。
なお、空間の最小サイズについては余裕をもって設定するといいと思います。というのも、その空間の中にさらに部屋を作ることになるからです。部屋サイズも最低4×4くらいは欲しいので、空間サイズも最低6×6くらいは欲しいですね。
また、空間分割の際は、それぞれの空間の空間情報を保存するデータベースの並びを整えていくとのちのち便利です。

空間DB
1.空間A
2.空間B


とあるときに、空間Aを分割したら

空間DB
1.空間A
2.空間A'
3.空間B


と保存するようにすると後で通路を作る際に困らずに済みます。
関連記事
スポンサーサイト



コメントの投稿

非公開コメント

Twitter
カテゴリ
最新コメント
月別アーカイブ
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR