Edited at

[DTL]洞窟の自動生成(ローグライク穴掘り法)💀


💀洞窟を創造する💀

rlcave.gif

今回は洞窟をつくります。


💀ローグライクのおさらい💀


>> [DTL]ローグライク(穴掘り法)💀

以前作ったローグライク穴掘り法のアルゴリズムを使用します。

詳しくは前回の記事をご参照ください。

rl4.gif


💀手順💀

1. ローグライク穴掘り法でローグライクダンジョンの生成

2. 1以上の数値と0の数値で2値化する

3. ノイズを加えて洞窟っぽくする

こんな感じでいきます。


1.ローグライク穴掘り法でローグライクダンジョンの生成

前回の解説記事の時に作った"RogueLike関数"を使用します。


生成

int main() {

std::array<std::array<std::uint8_t, 64>, 32> matrix{ {} };
dtl::RogueLike<std::uint8_t> d(matrix, 20);
}

rl.gif


2. 1以上の数値と0の数値で2値化する

dtl::RogueLike<std::uint8_t> d(matrix, 20);

dtl::dungeonBinarization(matrix_, 1);

ID
名前

0.
外壁
■■青■■

1.
内壁
■■白■■

2.
部屋
■■緑■■

3.
玄関
■■黒■■

4.
通路
■■黄■■

1以上の数値を1に変えます。

rlcave_no.gif

ほんの少し洞窟みが出てきました。


3. ノイズを加えて洞窟っぽくする

このままだとあまり洞窟っぽくないのでノイズを加えます。

dtl::RogueLike<std::uint8_t> d(matrix, 20);

dtl::dungeonBinarization(matrix_, 1);
dtl::noiseShoreBothBool(matrix_, 0.1);


💀完成💀

無事に実装できました。

rlcave.gif


💀実装ライブラリ(ソースコード)💀

今回解説した洞窟の自動生成は"Dungeon Template Library""RogueLike Cave"として実装されています。

ぜひ、活用してみてください!

logo640.gif


💀ソースコードのライセンス💀

These codes are licensed under CC0.

CC0

この記事のソースコードはCC0ライセンスとします。

ぜひ、自由に改変して遊んでみてください。

最後までお読みいただきありがとうございました!