遊戲尋路中 A* 演算法的改進
在眾多尋路演算法中,A* 的確是比較不錯的。但在遊戲尋路領域,A* 耗時過大,顯然需要改進。
改進
我的想法是預先將地圖按照一定的規則劃分為多個區域,這些區域彼此連通,並且計算好彼此連通的區域之間的來往的消耗(預計算部分,經檢測耗時極少)。
從幾千個正方形組成的障礙矩陣中構造出一張資料量大大減少的帶權連通圖。
每次尋路時自動檢測起始位置和終點分別在圖中的哪兩個節點,在很短時間內構造出一條最短路徑。
接著,計算進入以及離開每個區域的比較適合的點,再經過路徑平滑演算法,得到的路徑與傳統 A* 沒有明顯區別,但是中間節點減少,耗時大大減少。經過計算,耗時為傳統 A* 的 1/800 - 1/1000,取得相當顯著的效果。而且對於 A* 其他的改進措施,也可以用在該改進方法上,如雙向 A*,在較複雜的圖中可以明顯加快尋路速度。並且該尋路程式碼也可以放在非主執行緒中,影響更是可以忽略不計。
(改進 A* 路徑)
(傳統 A* 路徑)
在障礙圖中的資訊發生改變時,可以重新進行計算,得出新的帶權連通圖,並且廣播所有已經尋路完成但是還沒有達到終點的物體,使其修改路徑,耗時同樣在可接受範圍內。
總結
該 A* 改進演算法是典型的以空間換時間的演算法(雖然耗費的空間也很少,在遊戲領域可以忽略)
接下去我會繼續研究比如策略遊戲中一個群體單位尋路演算法的改進,因為他們無論起始點是否在同個區域,在帶權連通圖中總會經過相同的節點,這些計算完全可以快取下來,減輕後面計算的負載。
來源:indienova
原文:https://mp.weixin.qq.com/s/JD9bFJvirP-OBR-ZFGbukg
相關文章
- 遊戲中的自動尋路-A*演算法(走斜線篇——帶DEBUG)遊戲演算法
- 遊戲AI尋路——八叉樹+A*尋路遊戲AI
- 改進飛碟(Hit UFO)遊戲遊戲
- 中國遊戲的希望之光:這是一家不走尋常路的中國遊戲公司遊戲
- 尋寶路漫漫,從《金銀島》聊聊”尋寶“主題遊戲的代入感進階之路遊戲
- 課時4:改進我們的小遊戲遊戲
- 使用Xamarin開發移動應用示例——數獨遊戲(四)產生新遊戲演算法改進遊戲演算法
- 暴力搜尋演算法的典型應用——24點遊戲演算法遊戲
- 粒子群演算法中對於學習因子的改進演算法
- 在製作遊戲的過程中,我都解決和改進了哪些問題遊戲
- 動畫改編遊戲的不易:從《馴龍高手》系列遊戲談改編動畫遊戲
- 演算法修養--A*尋路演算法演算法
- [TK] 尋寶遊戲遊戲
- 哪吒大聖開路,國漫改遊戲能崛起嗎?遊戲
- 走進遊戲中的美術:遊戲美術風格介紹遊戲
- 電子遊戲中改變視角的過場動畫遊戲動畫
- 【譯】.NET 6 網路改進
- 元遊戲正在如何改變休閒遊戲的變現遊戲
- 尋路演算法之A*演算法詳解演算法
- 演算法信仰的力量:改進演算法能提升多少效能?演算法
- JPS/JPS+ 尋路演算法演算法
- 遊戲中“血條”設計的進化史遊戲
- 動作肉鴿+二遊?又一款遊戲“不走尋常路”遊戲
- 電商搜尋演算法技術的演進演算法
- kmp字串匹配,A星尋路演算法KMP字串匹配演算法
- A*尋路演算法詳細解讀演算法
- 位元組跳動又一款中重度遊戲曝光,它要進軍“漫改MMO”領域!遊戲
- 你會如何改進這個演算法?演算法
- NPC會在遊戲地圖中迷路嗎?——自動尋路的發展由來與應用前景遊戲地圖
- 【翻譯】.NET 5中的效能改進
- 【譯】.NET 7 中的效能改進(十三)
- 【譯】.NET 5 中的診斷改進
- 【譯】.NET 7 中的效能改進(六)
- 【譯】.NET 7 中的效能改進(八)
- 【譯】.NET 7 中的效能改進(十二)
- 【譯】.NET 7 中的效能改進(七)
- 【譯】.NET 7 中的效能改進(三)
- 【譯】.NET 7 中的效能改進(五)