Re: [討論] 隨機地下城.物件.是很簡單的技術嗎?

看板C_Chat作者 (一卡)時間1年前 (2022/11/10 00:25), 編輯推噓8(8013)
留言21則, 6人參與, 1年前最新討論串2/2 (看更多)
※ 引述《yokann ( )》之銘言: : 以前玩暗黑破壞神 玩世紀帝國 : 甚至是更早的如勇者鬥惡龍怪物仙境 : 都有隨機地城系統 : 但是暗黑開一場關非常快 : 要馬上能按規律亂數生成所有物件/掉寶/怪物 : 感覺很吃運算? : 還是其實這個難度很低且不吃效能? : 畢竟Gameboy的勇者鬥惡龍怪物仙境都能有亂數地圖了 : 有沒有相關背景的人能說明一下 產生地下城的做法在 1980 左右就有了,你去找 roguelike 建立地下城的 演算法就能看到好幾種不同做法。 最簡單的難度是真的很低,1980 年代就能做到移動到下層才產生新地下城 了,以現在的機器來說,除非你建立一張超大地圖像 CDDA 那樣,才有可能 在建立地圖的時候就有效能問題。 我這邊舉例兩個最簡單的演算法。 第一種很直覺,先隨機建立兩個房間,然後將兩個房間用通道連起來,從 第三個房間開始,一建立好就跟上一個房間用通道連起來。 這種做法可能做出兩個重疊一部分的房間,如果你想確保房間都不會重疊, 建立好房間就檢查有沒有碰撞發生,有就刪掉新房間。 第二種就把一個空白地圖做分割,每一刀都把一個區塊分成兩個空白區塊, 完成之後你會得到一張有很多不同大小的長方形的地圖,把長方形當成房間 再用通道相連,就能得到一個保證不會碰撞的地下城了。 這個你用 BSP trees 下去找就能找到範例。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.227.207.243 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1668011152.A.3B6.html

11/10 00:28, 1年前 , 1F
房間內物件也也可以用機率權重計算敵人/寶物/陷阱的數量
11/10 00:28, 1F

11/10 00:30, 1年前 , 2F
之前是看到用波函數塌陷演算法
11/10 00:30, 2F

11/10 00:38, 1年前 , 3F
所以瑪奇的地下城具體來說是怎麼生出來的?好像不完全是
11/10 00:38, 3F

11/10 00:38, 1年前 , 4F
這兩種?
11/10 00:38, 4F

11/10 00:39, 1年前 , 5F
瑪奇偏1,先構築房間再找道路
11/10 00:39, 5F

11/10 00:39, 1年前 , 6F
我想不太到要怎麼自動生成鑰匙房跟鎖房而不會彼此卡死
11/10 00:39, 6F

11/10 00:41, 1年前 , 7F
首先一定要現有一個入口側跟出口側,而鑰匙一定要在入口
11/10 00:41, 7F

11/10 00:41, 1年前 , 8F
側區域能連通的地方,就不會卡死了
11/10 00:41, 8F

11/10 00:47, 1年前 , 9F

11/10 00:48, 1年前 , 10F
當然以瑪奇地下城的做法,應該在構築時先生出房間與通路
11/10 00:48, 10F

11/10 00:48, 1年前 , 11F
,再一個個去算合理鎖上的門,並確保所有開啟機關都是與
11/10 00:48, 11F

11/10 00:48, 1年前 , 12F
入口側相鄰就好
11/10 00:48, 12F

11/10 00:50, 1年前 , 13F
從頭目房開始上鎖,只要被上鎖的區域就不允許生出下一道
11/10 00:50, 13F

11/10 00:50, 1年前 , 14F
鎖門的鑰匙大概就行了
11/10 00:50, 14F

11/10 01:02, 1年前 , 15F
瑪奇以前常常生一堆垃圾圖,走了大老遠結果是死路
11/10 01:02, 15F

11/10 01:03, 1年前 , 16F
大概有想法了 先生出地圖後 從BOSS的鎖開始隨機決定每個
11/10 01:03, 16F

11/10 01:04, 1年前 , 17F
房間是鎖還是鑰匙還是燈柱 並確保一定要先有鎖才有鑰匙
11/10 01:04, 17F

11/10 01:04, 1年前 , 18F
倒著把整個地城走完就做完了 感謝
11/10 01:04, 18F

11/10 03:34, 1年前 , 19F
瑪奇經常繞了地圖最外圈結果啥都沒有
11/10 03:34, 19F

11/10 03:35, 1年前 , 20F
不然就是鑰匙和門在最遠的兩頭
11/10 03:35, 20F

11/10 07:22, 1年前 , 21F
先生成「路徑」再去生成房間跟鎖就好了
11/10 07:22, 21F
文章代碼(AID): #1ZQzIGEs (C_Chat)
文章代碼(AID): #1ZQzIGEs (C_Chat)