[英]strategy game help: fog of war
我試圖制作一個真正的戰略游戲,如星際爭霸或帝國時代。 我的地圖必須支持多達約1500個實體。 我的問題在於如何在不延遲游戲的情況下實施戰爭迷霧。 我最初嘗試的方法是每次移動時簡單地計算到一個單元的所有周圍區域的距離,但正如我預期的那樣,由於許多單元將不斷移動,因此這種情況滯后。 如果有人知道更快的algorythim戰爭迷霧,請幫助。 地圖將基於圖塊並存儲在數組中。
一個非常基本的實現可以如下:
可見性由每個圖塊(i,j)
的值v[i,j]
給出。 低於某個閾值的任何值都在霧中。
使用以下兩個步驟,使用常規時間步驟更新這些值(注意:對於非常特殊的情況,不需要高精度或高頻率):
v[i,j]
unit
將值v[unit_i, unit_j]
增加一個恆定量。 如果單位在正方形上(無論有多少單位),您也可以添加一個恆定的數量。 另一種解決方案:為您的實體裝箱。
您可以創建相對備用的網格,甚至是四叉樹。 給定坐標(x,y)
,它允許您在log(d)
步驟中找到位於相同(或相鄰)單元格中的所有實體,其中d
是四叉樹的深度。
在繩索的幫助下(葉子節點指向相鄰小區的指針),可以在恆定時間內訪問鄰居。
要了解給定的地圖圖塊是否可見,您只需要查詢四叉樹。
此外,四叉樹可能對與戰爭無關的其他任務有用。 例如,您可能希望找到距給定坐標(x,y)
最近的“工人” (x,y)
或者您想對區域中的所有單位應用一些區域損壞。
每當一個單位移動時,你可能會認為它移動到相鄰的瓷磚,不是嗎? 在這種情況下,您還可以假設此單元的可見區域也沿同一方向移動一個圖塊,因此您應該可以確定或更新應該可見的區域。 根據單元的視距,僅更新需要更新的值可能會節省大量CPU功率。
問題是應該模糊的區域 - 可以有更多的單位看到相同的瓷磚,但這可以通過做霍華德的建議來解決。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.