關於尋路演算法的一些思考(11):尋路演算法的其他應用

威士忌發表於2015-09-11

本系列:


除了查詢一條可沿著移動找到一個單位的路徑之外,尋路在其它方面還有很多用途。

探索

如果你的成本函式對已知世界的路徑進行懲罰,那路徑更有可能會通過處女地。這些路徑能很好地偵測到其它單位。

偵查

如果你的成本函式對敵方瞭望塔等單位附近的路徑進行懲罰,那你的單位會傾向保持隱蔽。但請注意,為了能良好執行,你需要考慮到敵方單位的移動,定期更新你的路徑。

道路建設

從歷史上看,道路沿著是經常使用的路徑被建造。當路徑走的越來越多時,植被被清除,變成泥路,再後來用石頭或其它材料覆蓋。尋路的一個應用就是找到道路。考慮到人們通行(去城市,湖泊,泉水,礦山等等),會隨機得找到這些重要地點之間的路徑。在發現上百上千次路徑後,確定地圖上的哪些空間最常被使用在路徑上,然後把這些空間變成道路。跟隨探索者喜歡的道路,重複該實驗,你會發現更多的道路需要被建設。這種技術可以用於多種型別的道路(高速公路,公路,泥路):最常用的空間應該變成高速公路,不太常用的空間變成普通公路或者泥路。

地形分析

結合勢力圖,尋路和視線可以給你有趣的方式來分析地形。

用與道路建設同樣的方法,給定一組起點和目標點,我們可以使用尋路來確定哪些區域是最有可能被訪問到的,這些區域附近往往具有重要的戰略意義。Clash of Civilizations就是使用這種方式來實現它們的地圖AI。

通過進一步分析公共路徑,我們可以找到伏擊點。路徑上沒有被視線掃到的位置,繼續沿著路徑再走N步之後才能被看到,部署伏擊點在這些位置上意味著當前敵方無法看到你,直到你們的距離小於N時,這樣你就能伏擊大部隊了。

城市建設

城市往往是圍繞著自然資源形成的,比如農田和礦產。城市裡的居民相互交易需要貿易路線,使用尋路來幫助他們找到自己的貿易路線,並且在路線上標註行進一天的價值。當商隊走了一天需要找個地方駐紮時:一個完美的城市位置!沿著一條以上的貿易路線的村莊是用於交易的好地方,最終它會成長為城市。

道路建設和城市建設相結合可以用於生成出逼真的地圖,無論是指令碼還是隨機地圖。

相關文章