【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