カレンダー

2024/03
     
      

広告

Twitter

記事検索

ランダムボタン

逆転の発想

by 唐草 [2024/03/31]



前回からの続き:

 ぼくが「ツクダオリジナル」と呼ぶ自作の迷路生成アルゴリズムは、これまでとは異なる方法で見た目の異なるダンジョンを生成する。この実装に新たな可能性を見出したので、さらなる挑戦に挑む気合が湧いた。
 これまではランダム性を前面に押し出すために不規則な配置のダンジョンが生成されるようにしていた。だが、「ツクダオリジナル」を完成させたことでランダム性への意識がガラッと変わった。従来の「配置のランダム性」ではなく、「接続のランダム性」を重視したダンジョンを生成したくなった。
 同じ大きさの部屋を碁盤の目に配置して、それらがランダムな通路でつながるダンジョン。ぼくの頭には参考とするものが浮かんでいた。それはドラクエ3の「バハラタ東の洞窟」。黒こしょうを求めて盗賊カンダタと2回目の戦いを繰り広げる舞台だ。
 ローグライクのダンジョンは、入口とつながっていない部屋を作ってはいけないというルールがある。開発中のゲームは壁を壊せるが、それに甘えて独立した辿り着けない隠し部屋を許容するつもりはない。4x4のマス目から12部屋を選択して、それらすべてをランダムに張り巡らされた通路でつなげたい。
 それを実現するため、ぼくは次のようなアプローチをとった。まず、入口と出口になる2部屋を選択する。それを最短とは限らない経路で結ぶ。できた経路に属さない部屋を袋小路にする。やりたいことは明確だったが、このアプローチはうまくいかなかった。
 乱数でバハラタ東の洞窟を作るのは無理なのか?
 そんなはずはあるまい。
 考えを整理するために作りたいダンジョンを紙に書き出した。
 すると閃いた。
 先に2つの部屋を繋ぐのではなく、繋がった12部屋のどこかに入口と出口を置けばいい。逆転の発想だ。これに気づけば簡単だった。12部屋を訪れるまでランダムに歩き回ってその経路を繋ぐだけ。嬉しいことにこの方法を一般化できたのでマス目の大きさも自由自在となった。
 ハマった時は、頭の中で考えるのを止めて、紙に書き出してみるのが一番だな。紙とペン最強。これがあれば、5種類に留まらずもっとアルゴリズムを追加できそう。