洞窟類地牢生成
前言
最近在擴充套件地牢型別
首先實現的是洞窟類地牢
一、洞窟生成
具體的實現方法是採用元細胞自動機,因為看起來的效果最自然。
實現流程
- 首先在地圖上生成隨機牆(45%)
- 用元細胞自動機 45 規則迭代
- 迭代 5 次
洞窟的雛形已經顯現
但是地牢的所有位置都應該可以抵達。
有兩種方法可以解決:
- 填補小的空洞
- 將較大的洞窟連通起來
流程:
- 首先用 FillFlow 演算法檢測出所有連通區域
- 計算所有區域面積
- 只保留面積最大的幾個,過小的洞直接填掉
- 將剩下次一級的洞窟的中心點去比對最大洞窟區域的點,找一個最近的位置。
- 然後再從這個位置找一個本洞窟最近的點,然後挖個通道過去
挖通道可以用直線,也可以用隨機的趨勢去走。
二、地牢的內容放置
1. 首先要考慮的是出入口
流程
對洞窟生成一張評分圖
評分的依據是這個點周圍 9*9 的格子中有多少個牆
上圖中左上角就是地牢的評分圖
越是冷色調,評分越高
隨機挑選一個評分最高的位置放置入口
然後將這個點周圍的區域評分清零(也就是變成紅色)
然後在剩餘最高評分的幾個點中挑一個離入口最遠的地方放置出口
然後再將出口地區周圍評分清零
以後每次放置一個地牢元素後都要把該點周圍的地區評分清零,避免地面元素過於聚攏
2. 接下來就是放置寶箱祭壇等元素
可以利用地牢出口的生成方法繼續生成
但是有時候有些元素你會希望他們生成在角落中,這樣就需要重新生成一張評分圖
例如首先本格是空地,然後周圍牆的元素越多評分越高。當然原本有牆的地方評分是 0
然後檢測之前生成過的元素,將部分割槽域評分提高或者拉低
然後再利用這張評分圖去放置你所需要的元素
3. 怪物陷阱的生成
同理,可以參考用評分圖的方式去生成。
比如空曠地區評分較高,如果加上寶箱那就更高
部分群居的怪物還可以增加周圍區域本類怪物生成的評分
通道地域(牆與地面 1:1 附近)或者寶箱周圍陷阱的生成評分就高
大致效果就是這樣(圖上沒顯示怪物和陷阱)
本文旨在闡述地牢生成的思路和概念。
實現上有諸多細節,多與細胞自動機與影像處理演算法有關。本人精力有限,這裡就不多贅述。
來源:indienova
原文:https://indienova.com/indie-game-development/cave-dungeon-generation/
相關文章
- 在Unity中程式化生成的地牢環境Unity
- 《逃出地牢》:為了更快地逃出地牢,所以只需要“突突突”
- CodeSmith生成實體類MIT
- 二維碼生成工具類
- 類似優酷 url 的生成是怎麼生成的?
- IDEA自動生成實體類Idea
- 使用Math類生成隨機數隨機
- 動態生成簽名工具類
- 《暗黑地牢2》:更殘酷,更動人
- 一類生成樹計數問題。
- Laravel自定義Make命令生成Service類Laravel
- Minecraft類遊戲地形生成機制Raft遊戲
- 用php生成HTML檔案的類PHPHTML
- 《無盡地牢》正式發售 上市宣傳片曝光!
- 騰訊入股《貪婪洞窟》開發商阿哇龍科技,佔股12.7%
- NeurIPS Spotlight|從分類到生成:無訓練的可控擴散生成
- generatorConfig自動生成實體類以及自定義生成註釋的方法
- 《暗黑地牢》—“克蘇魯”式的絕望冒險
- 從《暗黑地牢》的壓力系統談情感互動
- 直播公佈!《元素地牢》4月22日正式上線!
- java:一鍵生成二維碼工具類Java
- JavaFx 生成二維碼工具類封裝Java封裝
- JPA透過表反向生成相關類
- 在執行時生成C# .NET類C#
- 自動生成檔案層級樹類
- 通過類名動態生成物件物件
- mybatis_plus程式碼生成器類MyBatis
- 地牢裡發生了什麼3D模型免費分享3D模型
- “時間都去哪了”系列新作:《地牢迷途》遊玩報告
- 學習Source Generators之從swagger中生成類Swagger
- Laravel中使用Carbon時間類生成日曆Laravel
- [xmlbeans]自動生成讀寫xml的java類XMLBeanJava
- 【乾貨分享】C# 實體類生成工具C#
- 由《暗黑地牢》這款「地主模擬器」引發的思考
- 《暗黑地牢》的美術風格是怎麼誕生的
- 見證少女的勇氣 《神之天平外傳:幻霧之洞窟》商店頁開放
- 寫一個工具生成資料庫實體類資料庫
- MyEclipse2014使用Hibernate逆向工程生成實體類Eclipse