※某らんダンのことではない(むしろあれダンジョン自体はランダムじゃないと思う)
兼ねてからやってみたかったランダム生成ダンジョンの仕組みがふと浮かんだので、やってみたらできたった。
不思議なダンジョンみたく部屋と通路を分けたランダム生成のダンジョンっていうのはわりに見かけるけど、
自分としては、よりもっと無造作な配置のランダム生成がしてみたかった。
Fuhrung Weissでも、漆黒の終点地マップはランダムっぽくなっているけれど、あれはマップを複数用意して移動先を変えているだけだった。
ゲーム内で可変的なマップを作るという技術がなかったので、前は工夫で頑張ってた。(XP時代はすごいスクリプトが配布されてたけど)

(床のみ)
これの上2マスと下2マスはXのみランダムで、固定で出現するようになっている入口と出口にあたる部分。
それを繋ぐように床配置が理想的なランダム感になっている・・
ただこれだと、壁を配置したときに見栄えが変になってしまうので、壁部分ができた場合は高さ3を確保するように改良が必要になった。
ロジック的にはこんな感じになっている。

配列を1個用意して(ここではpos)、ここに追加したマスをいれていく。
まずは入口用の上2マスを用意してから、そこを起点として1マス下に追加する。
追加されたマスを今度は起点として、隣接する、左、右、下、に一定確率(変数prop)で1マス追加する。
追加されるマスがなくなるまでこれを繰り返すだけ、・・と実は結構シンプル。
条件として、すでにマスが配置されているマスや、領域外のマスは除外。壁の高さが確保できない場合も除外判定を加える。
終了条件となるY座標になるまでに、左と右の追加判定後に追加マスがなかった場合は、下マスは確定で追加。
それ以外では下マスは左と右と同様に確率で追加・・ といった具合。
処理的に無駄もそんなにないと思うし、結構これで満足な出来。
迷路とか作るプログラムの方が難しそうだなー。こういうの大学の講義とかでやってたら受けたかったものだ。
ちなみに追加確率変数を変えると・・

80%でこんな感じに。ほぼ左右に追加されていくので空きマスがかなり減る。

40%にすると、ほぼ一本道に。
左右に追加されない場合、下追加は必ずされるから、確率を下げていくと一本道になりやすいよう。
こういう変動もおこせるとバリエーション豊かになるので、この確率もランダム化させたら面白そう。
あとはこれにちょっと面倒だけどオートタイルの設定をして壁と天井つけていけば本格的なダンジョンに仕上がりそう。
自分としてはもう床だけでも満足な感じだけども。
床や壁タイルのIDも可変にすればさらに見栄えも多様性が増しそう・・
マップオブジェクトもランダム配置で・・これこそ入る度に変わる変幻自在ダンジョンですわ。
そうマップチップという細分化された素材たちはランダム設置のためにあったではないか・・?!
(もう自分でマップ打つ必要ないね!)……と、いっそこれだけでもゲーム一本作れそうな勢いだけど、たぶん挑戦ダンジョンみたいなサブコンテンツ的なものでだす予定。
なんだかんだランダムだけに頼ると、それもまた規則的なものに見えてきちゃうからなぁ……。