設計面向游戲的人工智能:戰術和戰略人工智能(AI)

>>>  創業先鋒 眾人拾柴火焰高  >>> 簡體     傳統


  文 / Donald Kehoe

  上次談到游戲主角(智能代理,簡稱 IA)時,他們已經能夠觀察周圍情況并能夠判斷前進方向。在本文中,我將向大家介紹如何提高代理的智能級別。代理現已能夠處理即時情況。現在,大家正在努力實現人工智能。人工智能具有豐富功能,能夠處理各種工作。

  戰術人工智能

  戰術人工智能的作用是協調游戲中智能代理組的工作。這種人工智能的實施對許多類型的游戲都至關重要。戰術第一人稱射擊 (FPS) 游戲中的小隊以及實時戰略游戲中的單元組都使用戰術方法。小組更加高效,因為組員能夠相互支持,作為一個整體開展行動,一起獲取和分享信息。

  戰術人工智能的概念以小組動力為基礎,需要游戲跟蹤不同的實體小組。每個小組需要與單個成員分開進行更新。您需要使用專用的更新模塊實施更新,該模塊能夠跟蹤不同的小組及其目標和組成。然而,這種方法需要為引擎開發一個單獨的系統,因此我更喜好使用組長方法 (group captain method)。

  您可為單個小組分配空軍上校的角色。小組中的每個其他成員都需要聽從組長指揮,根據組長的命令采取相應行動。組長全面負責實施整個小組的戰術人工智能計算。

  小組移動: 路徑查找

  實體移動是一個實施區域,可通過小組動力進行改進。智能代理用作一個單元可提升移動的效率和逼真度。

  路徑查找較為耗時,即使使用預計算的路徑圖和多線程人工智能進行加速也無效。小組動力可大幅減輕路徑查找系統的壓力。

  當單元小組獲得了行動目標(通過玩家或人工智能指令),最接近目標的單元被設置為組長,所有其他成員都需要跟隨組長。當組長被替換時,它需要查詢路徑系統。借助路徑信息,組長可以達到目標。小組中的所有其他單元只需要跟隨組長,無論組長要去哪里。

  小組移動:陣型

  由于小組作為一個集體采取行動,因此您能夠成功減輕路徑系統的負載。遺憾的是,各單元的行動方式較為松散,缺乏組織性。輸入陣型。借助陣型,小組能夠以規則的圖案開展行動,如方陣(歷史模擬)或三角形(Codemaster《霸王(Overlord*)》中的士兵開展行動的方式,如圖 1 所示)。


  圖 1. 在《霸王》中,士兵(紅色著裝者)在聽到玩家(身披盔甲者)的命令之后會以編隊形式集體行動。

  編隊的設置非常簡單,而且是對組長概念的延伸。在編隊中,每個成員都有一個不可或缺的特定角色。編隊組建完成后,每個成員都有特定站位,就像單個成員被指定為組長一樣。編隊中每個成員的站位都需要與其他成員保持相對距離。

  讓我們以《霸王》中的士兵為例。他們以金字塔編隊開展行動。在圖 2 中,組長“C”只需按照路徑行動。成員 1 將在目標成員“C”的后方偏左位置以設定速度行進,成員 2 需與成員 1 保持一致。成員 3 完全以成員 1 而非組長為行動導向。小組中的每位成員都需要以這種編隊方式開展行動。

三角形行動編隊設置


  小組戰術

  戰術不僅僅指以編隊形式行進,而且注重團隊并肩作戰。組長負責團隊的規劃和協調工作。畢竟,保護小組成員的生命是指揮官的職責所在。

  小組戰術的實施需使用以往文章探討的系統,如基于規則的系統或有限狀態機 (FSM)。下面列舉一些有關典型小組行動的示例(見圖 3):

  治療支持。有些游戲具有醫療兵或牧師等治療支持角色,例如,游戲中的醫療兵需要了解小組成員的健康水平。組長可根據相關信息安排戰斗。例如,組長可命令醫療兵守護在可能受到火力攻擊的組員附近。

  偵察。在《深入敵后:雷神戰爭 (Enemy Territory: Quake Wars)》*等游戲中,相關角色可為其他組員提供偵察服務。在這款游戲中,偵察兵可以部署雷達以提供有關敵軍行動的信息。即使沒有雷達,任何被戰斗人員發現的敵人將被添加到整個團隊中的小組雷達。如欲接近未覆蓋的區域,可派遣人員潛入未知區域偵察敵方陣地。經過喬裝打扮的任何偵察兵可輕松完成這一任務。

  掩護火力。當某區域受到周全防御時,支持人員可以提供掩護火力,集中攻擊敵人防御部隊,盡可能延長與他們的交戰時間,以便到達攻擊目標。

  犧牲。當敵方攻擊火力異常密集且人員犧牲不可避免,應考慮組織敢死隊。負責關鍵任務的小組成員(如某些情況下的工兵)需要受到保護,具體方式包括優先攻擊以己方工兵為打擊目標的敵方人員,以及參與火線狙擊,保護工兵的生命安全。

在 Id Software* 和 Splash Damage, Ltd.* 開發的《深入敵后:雷神戰爭》中,小組動力包括五種不同角色的士兵。


  另一個可幫助小組的分析級別是針對每位小組成員能力的自我分析。組長需要了解小組在哪些情況下能夠有效作戰,小組何時具備優勢以及何時撤退。

  例如,Blizzard 的《星際爭霸 (Starcraft)》*等戰略游戲包含飛行部隊和地面部隊。并非每個地面部隊都能攻擊飛行部隊。每個小組都需要了解自身是否具備這一攻擊能力。如果小組不具備任何可攻擊飛行部隊的部隊,那么當飛行部隊來襲時最好逃跑。即使能夠攻擊飛行部隊的部隊數量不多,只要支持部隊能夠為攻擊飛行部隊的部隊提供治療服務或支援,那么最好與飛行部隊頑強對抗。

  實體能力的多樣性及具備實體能力的部隊數量可用于衡量小組在不同情況下的戰斗力。考慮這些因素能夠大幅增強戰斗力。

  戰略人工智能

  至此,我介紹了實體和實體小組可如何應對艱難的作戰環境。現在,我將介紹人工智能的更大意義。戰略人工智能是更高級別的人工智能,可用于指揮整個軍隊和制定指導戰略。

  戰略人工智能最常用于實時戰略 (RTS) 游戲,但正日益頻繁地用于戰術 FPS 游戲。玩家控制的指揮官可以使用自身的系統,或設置為空實體系統,即沒有場地或圖形,但會進行更新并具有思考能力。

  指揮官將由等級規則系統和 FSM 指導,它們用于管理多種元素,如資源收集、研究技術樹、構建軍隊等。在多數情況下,游戲元素的這種基本維護不需要太多實際思考能力。而與其他玩家進行互動則需要智能。

  戰略人工智能的基本要素可用于支持這類互動(或戰斗)。指揮官需要了解游戲地圖,以找到玩家,識別關鍵點(如障礙),構建防御系統,并分析其他玩家的防御策略。具體如何執行并不明確,但決策地圖能夠發揮重要作用。

  決策地圖

  決策地圖是二維陣列,類似于游戲地圖。陣列中的每個單元對應著游戲中的一個區域,并具有關于該區域的重要信息。這些地圖可用于幫助您的戰略人工智能針對整個游戲制定有效決策。

  資源地圖

  資源地圖包含戰略游戲中資源的位置信息。了解資源集中在地圖的什么位置可影響指揮官的許多決策,例如在哪部署擴充或衛星基地(指揮官基地附近的資源),敵方可能在哪部署其擴充(他們基地附近的資源)以及可能需要爭奪的陣地(中間資源)。

  計算潛在的可用資源還可影響支持哪些部隊以及如何部署軍隊。如果資源缺乏,那么指揮官在為每個部隊安排任務時需要更謹慎,因為補充兵員可能較少。如果資源充裕,那么指揮官便可實施積極作戰戰略,動員大量兵員或組建強大的作戰部隊。

  進攻地圖

  這些地圖包含有關指揮官目標的信息,例如敵軍基地位置、地圖目標(炸毀、保護、攻擊等)位置、指揮官軍隊的要素(主要基地、英雄部隊等)。掌握這些信息可幫助指揮官合理部署軍隊。需要保護的據點應該被防御工事環繞,并安排小分隊始終駐守在這些據點附近。找到攻擊目標后便可對防御工事進行測試。必須通過分析目標周圍的防御工事找到最佳的攻破策略。這是軍事游戲沖突地圖的基礎。

  沖突地圖

  沖突地圖(見圖 4)的使用和更新頻率遠高于前述地圖。沖突地圖可在整個關卡中跟蹤戰斗的發生場所。無論何時與敵軍戰斗,士兵都需要使用關鍵信息及時更新沖突地圖:

  沖突類型。部隊和/或建筑物

  部隊能力。攻擊地面和/或空中力量

  數量。遭遇的敵軍數量

  兵力。相關區域的破壞潛力

  通過分析這些信息,可確定以下情況:

  當敵人發動攻擊時,人工智能將能判定部署的防御措施是否有效,防御措施是得到啟用還是被忽略,以及沖突是否發生在防御目標附近。然后,人工智能可以適當改變防御工事的布局和結構。

  在攻擊敵人(最好有偵察兵提供協助)時,快速找到敵軍防御工事的弱點。如果路徑有利于避免沖突或最大限度減少沖突,您便可以實施最佳的軍隊部署戰略。

  對抗措施是否適當取決于敵軍軍事能力的組成。因為多數戰略游戲試圖在各部隊之間保持某種平衡,所以電腦將能夠確定突破不同據點防御措施所需的部隊數量和類型。

某地形上的沖突地圖示例。紅色越黑,遭遇的沖突越多。


  構建和應用地圖

  我以前說過,這些地圖由指揮官的部隊構建。它們屬于規則的一部分,旨在引導人工智能盡快派遣偵察兵探秘敵軍陣地,以開始構建地圖。卓越的人工智能應該定期確保這些地圖處于最新狀態。在游戲開始時,只有少數部隊具有這些地圖,因此游戲引擎更新比較容易。當游戲正在激烈進行時,大量部隊同時提供信息,這可能會影響游戲的運行性能。

  確保決策地圖快速得到維護并不太難,通過將決策地圖系統集成到其線程中便可做到。事實上,人工智能控制的每位玩家都應該具有自己的線程,以處理自己的一套決策地圖。如果所有的實體都分解為多個線程,那么性能便會得到真正提升。決策地圖線程只需要處理并行化實體更新消息中的請求。

  總結

  智能系統采用的最基本形式是基于規則的系統。該系統需充分利用人工智能特性,因為實際的智能性較低。一組預設行為用于確定游戲實體的行為。對于各種行為,總體結果可以是不明顯的行為系統。

  游戲世界的智能代理開始形成。您能夠借助其基本能力開展偵察和行動,并增強決策和行為的有效性。您的智能代理現在能夠在游戲扮演更主動的角色,而不是僅僅被動應對局勢變化。您能夠為玩家創建更聰明和難以對付對手,反過來,厲害的玩家能夠取得出色的成績。

  本系列到此結束。下篇文章將重點介紹將多線程應用于人工智能。您甚至將獲得一些實用高效的算法來運行人工智能,隨著應用于更多的實體,它們將不可避免地變得日益復雜。如果希望您的系統能夠滿足增長的需求,您需要利用多核處理器。下篇文章將介紹通過簡單改動代碼,獲取多線程優勢。


英特爾開發人員專區 授權


GameRes游資網 2015-08-23 08:54:46

[新一篇] 戰棋不死 經典戰棋游戲的設計難點在哪里?

[舊一篇] 茶館訪談 星辰互動唐坤:小團隊的轉身之道
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表