我正在尝试制作一个实时策略游戏,比如星际争霸或帝国时代。我的地图需要支持大约1500个实体。我的问题在于如何实现战争迷雾而不会使游戏卡顿。我最初尝试的方法是每次单位移动时简单地计算其周围区域的距离,但正如我所预料的那样,这会导致卡顿,因为许多单位会不断移动。如果有人知道更快的战争迷雾算法,请帮忙。地图将基于瓦片,并存储在数组中。
对于每个方块 (i,j)
,都有一个值v[i,j]
表示其可见性。任何低于某个特定阈值的值都在雾中。
使用以下两个步骤定期更新这些值(注意:除了非常特殊的情况外,此类事物不需要高精度或高频率):
v[i,j]
v[unit_i, unit_j]
增加一个固定量。如果一个单位在一个方块上(无论有多少个),还可以添加一个固定量。(x,y)
,它允许您在 log(d)
步骤内找到所有在同一(或相邻)单元格中的实体,其中 d
是您的四叉树深度。(x,y)
的“工人”,或者您想对区域中的所有单位应用某些区域伤害。
[0,0,0,1,0,0,0]
,一步之后看起来像[0,0,0.25,1,0.25,0,0]
。因此,根据阈值,您可以有一个可见的地图瓦片(其中单位位于)或三个。模糊是一种“扩散”单位到整个地图上而不实际计算距离的简单方法。 - Howard