041 · ゲーム

bsp

矩形を割って、部屋にする

矩形を縦か横に割り続け、残った小区画に部屋を彫り、隣どうしを通路でつなぐ。ローグライク風のダンジョンを毎回ちがう間取りで生成する。仕組みは BSPで部屋を割る と、木の兄弟をたどる 部屋を廊下で繋ぐ。矩形を割り続ける骨格は 再帰サブディビジョン と同じ。

この実装では、分割木をたどって nodesroomscorridors を集めておき、フレームが進むごとに枠 → 部屋 → 通路の順で描き足す。間取りができていく過程がそのまま見える。色は三層で、区画の枠を tintAlpha(0, 0.06) でうっすら、部屋を tint(28) の中間色、通路を INK の一番濃い色に分ける。重ねる濃さで枠・床・道の役割を分けている。

分割の深さは毎回 4 か 5 をランダムに選び、ノード数が 58 を超えたら割るのを止めて木の大きさに天井を設ける。完成から 100 フレーム後に作り直し、別の間取りに切り替わる。