ローグライク(仮)部屋・牢獄などの自動判定
自動的にダンジョン生成をしたあと、そこに部屋のような場所があるか判定して部屋として設定する仕組みを作った。どうしてそんな物が必要かというと、単調なダンジョンに見た目の変化をもたらしたり、モンスターハウスのような部屋だからできるギミックを設定できるようにしたかったからだ。階段も部屋にあったほうが自然な感じがするよね。
作ったツール
以前にも紹介したツールだが、ダンジョンのルールやその他のパラメータを設定して生成したダンジョンを閲覧できるツールである。赤い部分が部屋として判定された部分である。
アルゴリズムは FOV (Field of View) を用いて、あるセルが持つ視野の面積が一定以上なら部屋とする、というルールでパラメータをうまく設定するとこのように空間が部屋と認識される。なお FOV の後にセルオートマトンで少し加工して今のきれいな状態になっている。加工前はこのような感じ。
こうやって作った部屋をゲーム上にもってくると下の画像のようなことができる。
現在は部屋ならではのタイル、装飾などを自動で配置されるようにしている。
牢獄の判定
このゲームの物語では、プレイヤーが最初に居るのは牢獄となる。この牢獄から抜け出すのが第一目標となっている。そんな牢獄を手作業で作っていてはローグライクとは言えない。自動生成してこそローグライク、牢獄っぽいダンジョンを自動生成して牢獄っぽいテイストにしたいのだ。
そこで、牢獄らしいダンジョンルール Prison を作成した。これは先程から上げている画像のような、人工的な形で廊下があって小さな部屋があるダンジョンである。
このルールは以前の日記で紹介しているものだ。
牢獄であれば檻が存在するもの。その檻も自動判定しなければならない。現在のところ作成中だが現状を紹介しよう。
先程のツールで新たなパラメータを用意して紫色の部分を判定するようにした。この紫の場所は狭くて周りが壁に囲まれている小さな空間なのだが、廊下の途中も判定されてしまっており、まだアルゴリズムの改良が必要だ。だが、このように判定したことで牢獄っぽさを演出できた。
まだ仮だが、檻で部屋を閉じることができた。
このようにして、ぼくの制作しているローグライク(仮)プロジェクトのダンジョンは人間の手で作らずなるべく「自動生成」しようとしている。他のローグとは違った面白さをそこに見出したいと思っているからだ。
おまけ
部屋においてあるトーチはアニメーションもしている。
こういう細かい部分を作るのも楽しいね。
応援してくださると嬉しいです。よろしくお願いいたします!