android遊戲尋路演算法

2021-09-10 02:14:24 字數 910 閱讀 3385

遊戲開發區很多朋友都在談論a*尋路演算法,大家都感到高深莫測,而不敢涉足尋路演算法.希望下面的分析能為大家解開這個誤區.

a*演算法確實是最高效、最流行的尋路演算法,是搜尋演算法最深層的延伸.a*演算法是由4個要素組成:a*=估價函式+並查集+堆+廣搜.想要寫a*演算法,我們必須門心自問對這4個方面的基本功打的怎麼樣?因此,a*演算法不是所有開發者都能享受的,這種高深的演算法必須有強大的演算法功底和長年累月的實戰積累才能實現.另外,a*也不是最適合的演算法.是的,我前面確實說過a*是最高效、最流行的演算法,但是指的是它在不同運用領域所表現出來的更強的通用性,指的是基於資料統計它的效能期望最高.

那麼a*是否適合移植到android平台呢?我們需要來分析它的特點與專長.a*演算法的精髓是以空間換時間,它的運用前提是:解空間充分大,運算時間有限,而儲存空間(一般是記憶體)相對充足.當我們將它移植到手機平台,手機極其珍貴稀缺的記憶體資源,使a*失去了用武之地;其二,手機遊戲的尋路空間相對較小,解空間相對狹隘,因此,搜尋演算法的瓶頸不再是冗餘的搜尋消耗,而估價函式的開銷以及較長實現**將成為新的瓶頸.因此,a*演算法並不是android手機遊戲的唯一選擇,針對不同的搜尋需要,我們應該定製不同的搜尋演算法.

對於涉及演算法不是太深的開發者,其實不必追求華麗的a*,寫乙個普通的寬搜或者廣搜就ok,畢竟手機遊戲的解空間與pc遊戲差了不止乙個數量集.大家唯一要做的,只是做好減枝和優化就行了.開發尋路演算法的大門永遠都向我們敞開著,只要我們選準了突破方向.

對於演算法牛人來說,我們需要分類**.對於解空間較小,及時性較高的遊戲,採用a*是最恰當的選擇.如果解空間較大,記憶體空間緊缺,那麼採用跌代加深搜尋更好.如果是持續尋路(比如npc每走一步,都要尋找一次最優路徑),那麼遺傳演算法是再適合不過的選擇了.

posted @

2012-07-11 14:48

00000000o 閱讀(

...)

編輯收藏

遊戲開發 A 尋路演算法

原文出處 a pathfinding for beginners 譯者序 很久以前就知道了a 演算法,但是從未認真讀過相關的文章,也沒有看過 只是腦子裡有個模糊的概念。這次決定從頭開始,研究一下這個被人推崇備至的簡單方法,作為學習人工智慧的開始。這篇文章非常知名,國內應該有不少人翻譯過它,我沒有查詢...

遊戲演算法實踐 A星尋路

先展示效果圖 如圖中亮綠色點為起點,藍點為終點,白色為牆體不可行走。黃色點區域為被試探到的位置,綠色的路徑為最後的最短路徑。其中這裡移動規則是只能上下左右移動。建立乙個open集合,乙個close集合 把起點加入close集合,並把它設為current節點 重複如下過程 查詢current節點的相鄰...

迷宮尋路(A星尋路演算法)

題目 假設我們有乙個7 5大小的迷宮,如下圖所示,綠色格仔表示起點,紅色的格仔表示終點,中間的3個深灰色格仔表示障礙物。請找到一條從起點到終點最短的路徑。解題思路 需要引入兩個集合和乙個公式,如下 具體步驟 把起點放入openlist 檢查openlist中是否有值,如果沒有則無法到達終點,結束尋路...