ローグライクのダンジョン生成アルゴリズムを調べる

Cellular Automaton (セルオートマトン)
ルールを元にマップを生成するアルゴリズム。セルオートマトン自体にも何個も種類があるらしい。
目を通した記事では、セルオートマトンを利用すると良い感じのダンジョンが作れたり、上手く利用すると洞窟のようなダンジョンが作れる見たい。
・記事の内容を抜粋
1.マップをグリッド上に分割して、ランダムに壁や床を配置
2.ルールを適用(壁が多いとそのセルが壁になる、少ないと床になる)
3.オプションの配置(敵、宝箱、階段の配置)
▼Unity公式でセルオートマトンに関するチュートリアルがあった
▼参考記事

Binary Space Partitioning (バイナリスペースパーティショニング)
略称でBSPと呼ばれているらしい。
ランダムな部屋配置、つながった通路の作成に役立つアルゴリズムらしい。
部屋と通路を繋げてくれることから無難にいい感じのマップが生成できそう。
・記事の内容を抜粋
1.マップをランダムな方向(水平または垂直)に分割 ※最小値の値まで分割を繰り返す
2.分割した区間内にランダムなサイズの部屋を作成
3.部屋から分割した境界線まで辿り次の部屋へと繋げる
4.オプションの配置(敵、宝箱、階段の配置)
▼参考記事

番外:GitHubCopilotとペアプロする
ローグライクダンジョンを一緒に作るらしい。ちょっと興味ある。

番外:棒倒し法? 壁倒し法?
2つの呼び方があるけどどっちが正しいんだろう?宗教...?
迷路生成アルゴリズムで定番の手法。迷路生成アルゴリズムの中でも最もシンプルらしい。
1.外壁を作る
2.内側に1マスごとに起点となる壁を作る
3.2で並べた壁を起点に上下左右に倒していずれかの1マスを壁にする
▼参考記事

番外:穴掘り法
穴を掘るように道を作る、迷路生成アルゴリズムの定番手法らしい。
棒倒し(壁倒し)法と違って、何もないところから道を作ることから人が手書きで作った風な迷路を作ることができる見たい。
1.二次元配列を壁で全部埋める
2.掘り進める開始地点を決めて壁を掘る
3.1セル先の掘る場所が通路なら方向転換(進めれるところまで掘り続ける)
▼参考記事

番外:壁伸ばし法
名前の通り、壁を伸ばすアルゴリズム。これも迷路生成アルゴリズムだと定番らしい。
壁を止める判定を作るのが少し複雑らしく、棒倒し(壁倒し)法、穴掘り法と比べると少し複雑見たい。
1.外壁を作る
2.セルが奇数の場所をリストにまとめ開始位置を決めて壁を伸ばす
3.起点をランダムにしつつ壁を伸ばす
▼参考リンク

今日は一旦ここまで。
棒倒し(壁倒し)、穴掘り、壁伸ばしは3点セットで紹介されている内容が多い。
若干脱線してたけど、考え方を知っとけば他のアルゴリズムと組み合わせてごにょごにょできるのかな。