洞窟類地牢生成

MimicNix發表於2021-04-25
這又是一片涉及洞窟類地牢生成方法的文章。

前言
最近在擴充套件地牢型別

首先實現的是洞窟類地牢


一、洞窟生成

洞窟類地牢生成

具體的實現方法是採用元細胞自動機,因為看起來的效果最自然。

實現流程

  • 首先在地圖上生成隨機牆(45%)


洞窟類地牢生成

  • 用元細胞自動機 45 規則迭代


洞窟類地牢生成

  • 迭代 5 次


洞窟類地牢生成

洞窟類地牢生成

洞窟類地牢生成
洞窟的雛形已經顯現

但是地牢的所有位置都應該可以抵達。

有兩種方法可以解決:

  • 填補小的空洞
  • 將較大的洞窟連通起來

流程:

  • 首先用 FillFlow 演算法檢測出所有連通區域
  • 計算所有區域面積
  • 只保留面積最大的幾個,過小的洞直接填掉
  • 將剩下次一級的洞窟的中心點去比對最大洞窟區域的點,找一個最近的位置。
  • 然後再從這個位置找一個本洞窟最近的點,然後挖個通道過去

挖通道可以用直線,也可以用隨機的趨勢去走。

二、地牢的內容放置

1. 首先要考慮的是出入口

流程

對洞窟生成一張評分圖

評分的依據是這個點周圍 9*9 的格子中有多少個牆

洞窟類地牢生成
上圖中左上角就是地牢的評分圖

越是冷色調,評分越高

隨機挑選一個評分最高的位置放置入口

然後將這個點周圍的區域評分清零(也就是變成紅色)

然後在剩餘最高評分的幾個點中挑一個離入口最遠的地方放置出口

然後再將出口地區周圍評分清零

以後每次放置一個地牢元素後都要把該點周圍的地區評分清零,避免地面元素過於聚攏

2. 接下來就是放置寶箱祭壇等元素

可以利用地牢出口的生成方法繼續生成

但是有時候有些元素你會希望他們生成在角落中,這樣就需要重新生成一張評分圖

例如首先本格是空地,然後周圍牆的元素越多評分越高。當然原本有牆的地方評分是 0

然後檢測之前生成過的元素,將部分割槽域評分提高或者拉低

然後再利用這張評分圖去放置你所需要的元素

3. 怪物陷阱的生成

同理,可以參考用評分圖的方式去生成。

比如空曠地區評分較高,如果加上寶箱那就更高

部分群居的怪物還可以增加周圍區域本類怪物生成的評分

通道地域(牆與地面 1:1 附近)或者寶箱周圍陷阱的生成評分就高

洞窟類地牢生成
大致效果就是這樣(圖上沒顯示怪物和陷阱)

本文旨在闡述地牢生成的思路和概念。

實現上有諸多細節,多與細胞自動機與影像處理演算法有關。本人精力有限,這裡就不多贅述。


來源:indienova
原文:https://indienova.com/indie-game-development/cave-dungeon-generation/

相關文章