ドルアーガの塔の迷路生成アルゴリズム

□ マップが違うのはある程度あきらめてたけど。

★S これは画期的なことかも知れないんだけれど、TODは1フロアにつきマップのデータを1バイトしか持っていません。つまり、プログラム的にはマップという概念がないんですね。ちょっと難しいのですが、説明します。
 TODの迷路は、まず全ての柱を想定します。そして、最初の1本を選び、そこから面数を根とした乱数によって、0〜3の数を導き出し、それに相当する方向(ex.0:上、1:右、2:下、3:左)に壁を作ります。それが外壁か別の壁に接触しなければ、新しい根より0〜2の乱数をもとめ、そちら方向(ex.0:進行方向左、1:まっすぐ、2:進行方向右)へ壁を伸ばします。これを外壁か別の壁に接触するまで続けます。
 もし外壁か別の壁に接触した場合、最初に選んだ柱から順番に、まだ壁の通過していない柱を選んで同じ処理を繰り返します。壁の通過していない柱がなくなると迷路の完成、結果として、迷路のある地点Aから別の地点Bまで1通りしかルートのない、狭義の意味での迷路ができるのです。
 このフロアを元にした乱数の根を255にすると、なぜか整然とした迷路になってしまったので、これを特別に最上階60階の迷路用の根として、残りはフロア数がそのまま迷路のデータとなっているのです。
 あのフロア全てをデータで持つと大変なのですが、このような方式で作成しているため、全く同じ方法を取ったとしても、迷路のサイズが異なれば構造が違ってしまうわけです。遠藤としては、最上階以外のフロアの形状に関しては、まったく関心がなかったので、移植が同じ方法で迷路を生成しているのは、かえって新鮮で良いのでは?と思いました。

◇ これはおもしろい発想ですよね。CD-ROM・DVD-ROM全盛の今からは想像もつかないようなデータ圧縮の苦労が、当時にはあったわけです。


これは面白い。