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

Reply · Report Post