遊戲開發中的人工智能——基本路徑尋找及航點應用

轉轉至 閱讀筆記-遊戲開發中的人工智能-第6章-基本路徑尋找及航點應用

1. 基本的路徑尋找

    從最基本得層次來講,路徑尋找只是讓某個遊戲角色,從其最初位置移向所需到達的目的地的過程而已。本質上,這一點和第二章中的基本追逐算法的原理相同。具體如:簡單追逐追逐方法(最簡單的使座標逐漸相同)和視線追逐方法(使用Breseman方法)。但是,如果遊戲環境中有障礙物,那麼就需要考慮其他事情了。如下圖所示,兩種方法產生的路徑都可能被障礙物阻截。
   
1.1 隨機移動避開障礙物
    此方法適用於障礙物較少的情況,如下圖,環境中的樹木不是很多,隨意移動一下巨人,玩家就能進入巨人的視線。這種方法簡單有效,避免了負責路徑算法對CPU的消耗。
   

if(玩家在視線內) {
    採用直線路徑走向玩家
}
else {
    以隨機方向移動
}


 

1.2 繞行障礙物   

    繞行障礙物是另一種簡單的避開障礙物的方法。當你要在策略遊戲或者角色扮演遊戲中,找出一條繞過大型障礙物的路徑時,比如繞過山區,這種方法相當有效。
    方法說明:· 假設單位透過障礙物看到目的地,但是不能夠越過障礙物到達目的地。
                  · 讓單位朝着目的地使用直接走過去,當遇到障礙物了,就沿着障礙物的邊緣走。
                  · 當障礙物與目的地之間沒有障礙物的時候,再朝着障礙物走過去。
   

2. 以麪包屑尋找路徑

    麪包屑路徑尋找方式可以讓計算機控制角色看起來很聰明,因爲是玩家在不知不覺間替計算機控制角色建立了路徑。每次玩家走一步時,都會毫無所知地再遊戲世界中留下看不見的標記或者麪包屑。當遊戲角色碰到麪包屑時,就能憑着麪包屑一路走下去。遊戲角色會跟着玩家的足跡,直到追上玩家。
    麪包屑方法也是計算機控制角色成羣移動的有效方式。不必讓羣體的每個成員,都以費事費力的路徑尋找算法找路徑,可以直接讓成員跟着領頭者留下的麪包屑走。
    思考:角色智能與否,要看玩家的路徑是否智能,如果玩家在轉了一個圓圈,再走出去,那麼角色會完全複製玩家的路徑,這樣就不那麼智能了。對於成羣的單位也是這樣,如果單位都是按照領頭者的路線走,那麼就只有一種路線,太單調了。關鍵還是要找到合適的使用情況。
    實際上,書中給出例子,也沒有完全複製目標單位的路徑,而是每次尋找最新的相鄰的麪包屑路徑。這個圖太模糊了,不上傳了。這樣就是在玩家走的路線中,做了一點點優化。   

3. 尋着路徑走

    路徑尋找通常僅被認爲是從起點行走到所需到達的目的地的問題。然而,很多情況下,在遊戲環境中,即使沒有最終的目的地,也要讓計算機控制的角色以仿真的現實的方式移動。例如,計算機控制的賽車就必須沿着賽車道前進。同樣,策略遊戲中,也許要讓軍隊在城鎮間的道路上巡邏。如下圖:
   
     上圖中,標示爲1的地形元素視爲道路,標示爲2的地形元素視爲道路邊界以外的區域。我們不想讓巨人在道路上隨機移動,這種結果看起來不自然,我們想讓讓巨人看起來像是沿着道路行走。因此,我們需要分析周圍地形,決定巨人的路徑。
     核心思路是,每一步儘量沿着上一步的路線走。比如:上一步走的是向左上方,那麼對8個方向給出8個權值,左上方的權值爲+2,上方和左方的權值都是+1,右下方的權值是-1,其他方向的權值都爲0。然後把這八個方向按權值從大到小排序,然後,選取數值最大的,且地形可以走到的位置,作爲路徑的下一步。最可能的是沿着左上方繼續走,最不可能的是原路返回。
    

4. 沿着牆走

    和遵循道路走一樣,這種方法也不會去算起點和終點之間的路徑。沿着牆走更像是探索的技巧。有時候,需要讓計算機控制的角色探索環境,以搜尋玩家、武器、燃料、寶物或任何遊戲角色可以接觸的東西。讓計算機控制的角色在環境中隨機移動,是遊戲開發人員最常用的辦法。如下圖:
   
      一個簡單的方法:左側移動法。即每次巨人總是儘量向其左邊移動,這樣就能對環境做出較爲完整的探索工作。但是要注意,左側移動法,並不能保證巨人會進入到遊戲環境中的每個房間。
     

5. 航點導航

    路徑尋找是一項非常耗時,且耗用CPU資源的運算工作。減少這種困擾的方式之一,就是儘可能預先算好路徑。航點導航減少這種困擾的做法就是,認真地在遊戲環境中置放節點,然後,使用預先計算好的路徑,或者是簡單的路徑尋找方法在節點之間移動。如下圖:
   
    注意,圖中的每個點,至少都能讓另一個節點的視線看見。這樣,遊戲控制的角色總是能使用簡單的視線算法,到達圖中的任何地點。下一步,就是規定這些節點之間的關係。
    
      有了這個路徑關係,兩點之間的最短距離,就可以使用Dijkstra算法或者Floyd等算法實現。

6. 結束
    本章討論的每種方法都有其優缺點,而且使用範圍往往比較侷限。下一章將要介紹的A*算法,可適用大部分的路徑尋找問題。

 

發佈了133 篇原創文章 · 獲贊 4 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章