【2024.11.19】中世紀的週一談話#53


3樓貓 發佈時間:2024-12-04 01:13:07 作者:SEERS Language

在該篇中,製作組討論了遊戲中火焰的運行邏輯,以及對火焰機制的調試。

目前的火焰效果

一、現實中的火災模擬

在程序上模擬火勢傳播,科學家們通常用以下兩種代碼模型:

· 元胞自動機(Cellular Automata)

· 波傳播(Wave Propagation)

這類代碼模型能很好的量化和模擬風向、熱量等相關要素,用好這類模型,能很有效的模擬森林火災的開始、蔓延和熄滅,在挽救生命、防止火災發生和避免額外的經濟損失。

二、遊戲中火焰運行邏輯的選擇

遊戲使用的是體素概念,即一個個方塊構成整個世界,所以更適合元胞自動機(Cellular Automata)上的火災模型。整體上:

· 編譯簡便。雖然元胞自動機(Cellular Automata)上的火災模型是2D網格工作,但只要加入一個座標系,就能很好的適應3D體素世界。

在程序中,火焰在2D平面的展現

· 適應性高。比起波傳播(Wave Propagation),元胞自動機(Cellular Automata)模型更適合捕捉不規則的火勢蔓延模式,比如火勢在植被之間跳躍或因障礙物而改變形狀。

在程序中,火焰在3D平面的展現

三、火焰的影響要素

1.體素點燃的四個要素

當一個體素被點燃,它將受以下四個因素影響:

· 體素血量(Voxel health)——血量大於零即可燃燒

· 可燃性(Flammability)——燃燒速度

· 火焰強度(Flame intensity)——該值範圍介於 0.0 - 1.0 之間,大於0.0表示有火、越接近1.0表示火越大

· 溼度(Wetness)——決定該體素的潮溼度,會影響燃燒速度和決定能否燃燒。

【2024.11.19】中世紀的週一談話#53-第0張

遊戲中未增加特效粒子的火焰

2.火焰蔓延的測試

火勢蔓延由火焰強度決定,高於0.4則會激發蔓延的判定,其判定速度還在調整,但至少是其他判定的1/3-1/4。

為保證遊戲的穩定和效率,火焰傷害的判定是獨立於火焰運行之外的系統,每隔幾幀才會判定一次,後續的消防系統會與其保持一致。

蔓延速度極快的火焰

火焰強度(Flame intensity)與 溼度(Wetness)相互作用於火焰烈度和存續時間。

如果體素上面有可燃燒的東西(如草地上的木牆),其火焰強度(Flame intensity)將增長,代表將燃燒起更大、更烈的火焰;但如果體素處於非常潮溼的地面,則溼度(Wetness)將增長,代表火焰的強度將減弱,尤其是雨雪和水會立竿見影的提升溼度(Wetness)。


© 2022 3樓貓 下載APP 站點地圖 廣告合作:asmrly666@gmail.com