基于人工智能的RTS和FPS分層游戲AI系統(tǒng)研究
【摘要】 隨著現(xiàn)代游戲工業(yè)蓬勃發(fā)展,包括實時圖形渲染、真實感交互、游戲人工智能等相關(guān)技術(shù)也在不斷邁進。其中游戲人工智能技術(shù)受到理論人工智能發(fā)展和實時系統(tǒng)的計算時間的雙重限制,使得它的發(fā)展相對落后于圖形和交互技術(shù)。另外,因為不同的游戲?qū)θ斯ぶ悄艿男枨蟛町惡艽?所以人工智能模塊在游戲開發(fā)中并不能完全依賴游戲引擎,也并不存在集成完善的人工智能模塊的游戲引擎。在游戲領(lǐng)域中,休閑娛樂游戲?qū)θ斯ぶ悄艿囊筝^低,棋牌類游戲的人工智能比較固定和完備。而即時戰(zhàn)略游戲(Real-Time Strategy,本文簡稱RTS)和第一人稱射擊游戲(First-Person Shooter,本文簡稱FPS)由于其題材往往是模擬真實或虛擬戰(zhàn)爭,對人工智能的要求比較苛刻,這些要求體現(xiàn)在:(1)RTS和FPS游戲中,非玩家控制角色(Non-Player-Controlled Character,本文簡稱NPC)數(shù)量巨大。此類游戲NPC數(shù)量往往可以達(dá)到幾十甚至數(shù)百,如此眾多NPC的人工智能完全由計算機托管的同時要保證游戲幀率,就對人工智能數(shù)學(xué)模型的復(fù)雜程度提出限制。(2)RTS游戲中,虛擬場景中攝像機處在高處向下俯瞰,可以縱觀戰(zhàn)場,玩家可觀測到群體NPC的宏觀行為,對NPC的群體智能提出較高要求。而FPS游戲中,畫面模擬人的真實視野,對NPC行為提出更高的要求,NPC做出合理行為的同時又要保證移動和動畫播放銜接流暢,給游戲玩家較好的用戶體驗。本文針對RTS和FPS游戲?qū)θ斯ぶ悄艿男枨?設(shè)計了一套較為完整的戰(zhàn)場人工智能系統(tǒng),既包含一些底層人工智能技術(shù)如移動、感知、動畫控制等,又著重研究了控制多個群體戰(zhàn)斗行為的人工智能架構(gòu),最終借助Unity3D游戲引擎予以實現(xiàn)。本論文的主要研究內(nèi)容包括:(1)設(shè)計實現(xiàn)了底層的移動-動畫控制系統(tǒng)。改進傳統(tǒng)的Flock群聚移動技術(shù),并使用A*尋路算法實現(xiàn)多個NPC群體的移動,使得NPC可以在地圖中沿最優(yōu)路徑到達(dá)任意位置,并規(guī)避動態(tài)障礙物。同時將動畫管理子系統(tǒng)和移動子系統(tǒng)結(jié)合起來,用移動信息來驅(qū)動動畫播放。(2)設(shè)計實現(xiàn)了NPC感知記憶模型,為NPC提供虛擬環(huán)境信息輸入。結(jié)合Unity3D中內(nèi)置的物理引擎實現(xiàn)NPC的視覺和記憶,并設(shè)計一種消息路由機制使得視覺和記憶信息可以在NPC之間共享,以模擬真實戰(zhàn)場的士兵相互通信。(3)設(shè)計實現(xiàn)了一個地圖分析系統(tǒng)。利用視覺和記憶信息進行實時地圖分析,NPC可以根據(jù)敵人信息對地圖的各個區(qū)域形勢進行判斷,并決策生成目標(biāo)移動地點。(4)設(shè)計一個分層控制的人工智能架構(gòu)。包括指揮官-分隊隊長-分隊成員三個控制層級,運用消息系統(tǒng)實現(xiàn)信息匯報和指令分發(fā)。在各控制層添加可執(zhí)行指令隊列的指令機,并為不同控制層分別設(shè)計相應(yīng)的指令內(nèi)容。不同層級的決策系統(tǒng)將指令壓入對應(yīng)的指令隊列,指令即可在各個層級順序執(zhí)行,最終以NPC的戰(zhàn)場行為表現(xiàn)出來。
第一章 緒論
1.1 研究背景和意義
自從計算機游戲誕生開始,人工智能(Artificial Intelligence)就伴隨著它的發(fā)展,自從古老的Pong(打磚塊游戲)和Pac-Man(吃豆游戲)開始,一直到近來發(fā)布的BattleField 3(戰(zhàn)地3射擊游戲),人工智能一直是游戲的一個不可分割的組成部分。在計算機計算能力有限的1970-1980年代,人工智能并不受游戲開發(fā)者的重視[1]2-3,因為當(dāng)時的計算機無法承受過于復(fù)雜的數(shù)學(xué)模型計算和游戲邏輯計算,早期的計算機游戲一般邏輯簡單,題材單一,多為休閑娛樂性質(zhì),即使如此,人工智能仍然是決定游戲成功的重要因素,因為游戲邏輯是通過簡單的游戲人工智能表現(xiàn)出來,很大程度上決定了游戲的玩法和用戶體驗 。近十幾年來,計算機硬件計算速度大幅提升,推動相關(guān)計算技術(shù)創(chuàng)新,帶動游戲產(chǎn)業(yè)的迅猛發(fā)展,游戲銷售額逐年上升,吸引越來越多的資金投入游戲產(chǎn)業(yè)中,一些大制作游戲的開發(fā)成本高達(dá)數(shù)億美元,F(xiàn)代游戲中的圖形、音效、交互方式等方面都達(dá)到了前所未有的水平,各大游戲公司分別推出自己的游戲引擎,提供可重用的代碼、庫和編輯器,極大縮短游戲的開發(fā)周期。同時游戲題材也越來越廣泛,包括戰(zhàn)爭、生活模擬(life-simulation)、策略、休閑益智、棋牌等等,游戲人工智能的一個重要特點是它和游戲內(nèi)容關(guān)系密切,不同內(nèi)容的游戲需要人工智能提供的功能也不同,例如戰(zhàn)爭題材游戲需要戰(zhàn)場上的作戰(zhàn)智能,而棋牌類游戲需要強大的博弈能力。觀察游戲市場上的各種游戲,可以發(fā)現(xiàn)不同的游戲題材、游戲情節(jié)、游戲玩法各需要不同的人工智能支持,游戲引擎卻只能提供一些游戲人工智能的中間件或者底層庫,無法涵蓋所有的人工智能需求,而圖形、聲音、交互等模塊通用性很強,游戲引擎可以大大簡化這些模塊的開發(fā)工作,所以在現(xiàn)代游戲開發(fā)中,游戲的人工智能模塊的開發(fā)就處于開發(fā)工作中的中心位置。
........
1.2 研究內(nèi)容
本文的研究目標(biāo)是設(shè)計一個戰(zhàn)爭題材游戲的人工智能模塊,該模塊的智能模型可以同時滿足 FPS 游戲和 RTS 游戲的智能需求。該模塊實現(xiàn)的功能有:
(1)NPC 基本行為動作,例如攻擊、臥倒、下蹲等。
(2)NPC 可以組隊在地圖上自由移動,繞開靜態(tài)和動態(tài)障礙物。
(3)NPC 可以組隊完成高級的任務(wù),該任務(wù)可由若干基本行為組成。
(4)NPC 分隊之間可以相互配合,共同完成某一任務(wù)。
本文設(shè)計的模塊應(yīng)支持多個群體的多人對戰(zhàn),同時在地圖上存在的數(shù)量應(yīng)當(dāng)在40-50 人左右,而要保證游戲流暢程度,平均幀率應(yīng)大于 30 幀/秒。該智能模塊包括的核心技術(shù)有群體移動、動畫控制、感知系統(tǒng)、分層決策等。本文設(shè)計了一個擴展性較高的戰(zhàn)斗游戲人工智能模型和架構(gòu),將以上各種技術(shù)相結(jié)合,并結(jié)合 Unity3D 引擎作為實驗平臺進行實驗(Unity3D 引擎不包含任何人工智能庫),該系統(tǒng)支持類似 RTS游戲的用戶輸入,有完整的運行時調(diào)試模塊。本文的設(shè)計主要包括以下內(nèi)容:
(1)設(shè)計底層的移動系統(tǒng)與動畫控制系統(tǒng)。其中移動系統(tǒng)將支持多個 NPC 群體以較高效率進行群體移動,該系統(tǒng)在算法設(shè)計上將改進傳統(tǒng)的 Flock 群聚移動算法,并借助A*尋路算法實現(xiàn)路徑規(guī)劃,使群體NPC可以在地圖中沿最優(yōu)路徑到達(dá)任意位置,并規(guī)避動態(tài)障礙物。同時將分層動畫管理子系統(tǒng)和移動子系統(tǒng)結(jié)合起來,用移動信息來驅(qū)動動畫播放,實現(xiàn)真實感群體移動。
(2)設(shè)計實現(xiàn)一個 NPC 感知記憶模型,并支持不同 NPC 之間的信息交流。結(jié)合Unity3D 中內(nèi)置的 PhysX 物理引擎實現(xiàn) NPC 的視覺和記憶,并設(shè)計一個信息路由機制使得視覺和記憶信息可以在 NPC 之間共享,以模擬真實戰(zhàn)場的士兵相互通信。PhysX 引擎在 Nvidia 顯卡上可以將大量碰撞檢測計算交給 GPU 處理,提高計算速度,減少 CPU 使用率。
(3)設(shè)計實現(xiàn)一個地圖分析系統(tǒng)。利用視覺和記憶信息進行實時地圖分析,分析數(shù)據(jù)可供決策系統(tǒng)使用。該系統(tǒng)可由設(shè)計人員在地圖上關(guān)鍵位置放置標(biāo)識物體,在游戲運行時會對各物體所代表的區(qū)域評分,評分作為 NPC 決策的依據(jù)之一。
(4)設(shè)計一個分層控制的人工智能架構(gòu)。包括指揮官-分隊隊長-分隊成員三個控制層級,運用消息系統(tǒng)實現(xiàn)信息匯報和指令分發(fā)。為了使系統(tǒng)易于擴展和調(diào)試,在各控制層添加可執(zhí)行指令隊列的指令機。指令機由指令隊列和指令操控邏輯組成,由決策系統(tǒng)生成的指令插入指令隊列后即可按順序被執(zhí)行。
..........
第二章 移動-動畫控制系統(tǒng)的設(shè)計實現(xiàn)游戲
人工智能的目標(biāo)是使 NPC 產(chǎn)生合理的行為,在 3D 場景中,行為最終體現(xiàn)為 NPC 移動和動畫播放。移動即 NPC 模型在場景中空間坐標(biāo)的變化,動畫播放為NPC 模型播放預(yù)置的骨骼動畫。本章將設(shè)計一個可以支持多個 NPC 群體移動的模塊,同時設(shè)計一個動畫管理系統(tǒng),并與移動系統(tǒng)相結(jié)合,用移動信息驅(qū)動動畫播放,最終使 NPC 在場景中自由的移動到任何位置,并在移動中正確播放動畫。
2.1 游戲人工智能中的移動技術(shù)簡介
2.1.1 路徑規(guī)劃的概念
路徑規(guī)劃又稱尋路,即給定地圖上任意兩個位置作為起點和終點,生成一條連接起點終點首尾相接的線段序列,NPC 或玩家控制角色發(fā)出路徑規(guī)劃請求,路徑規(guī)劃器收到請求后計算路徑并將路徑返回給請求角色,供該角色沿著路徑移動。現(xiàn)代游戲工業(yè)對于 2D/3D 場景的尋路有較為成熟的解決方案。具體實現(xiàn)上,分以下幾個步驟:
.......
2.2 移動子系統(tǒng)的詳細(xì)設(shè)計
2.2.1 用力驅(qū)動 NPC 移動的 Motor 類
根據(jù)牛頓定律為 NPC 的移動進行建模,為了實現(xiàn)真實感的移動,有必要對 NPC的最大加速度和最大速度進行限制,這里假設(shè) NPC 質(zhì)量為 1,則只需限制作用在 NPC上的最大力和最大移動速度進行限制即可。Motor 類的主要成員如下圖所示:

Motor 類生成的對象附加在每個 NPC 對象上,在游戲循環(huán)的 Update 中,其他模塊計算出的力通過調(diào)用 Motor 對象 AddForce 方法生成合力,Motor 對象在 LateUpdate函數(shù)中分別調(diào)用 UpdateSpeed 和 UpdatePosition 方法來計算這些力對速度和位移產(chǎn)生的效果。在游戲引擎中 Update 和 LateUpdate 的關(guān)系是這樣的:游戲循環(huán)中,由于某些模塊或?qū)ο蟮母驴赡芤蕾嚻渌K在同一次循環(huán)中的計算數(shù)據(jù),這就必須要求依賴者的更新函數(shù)在被依賴者的更新函數(shù)之后被調(diào)用,于是游戲引擎的設(shè)計者在通用基類上設(shè)計了 LateUpdate 函數(shù),任意對象的 LateUpdate 函數(shù)都是在全體對象的 Update 函數(shù)之后才被執(zhí)行,把被依賴者的計算在 Update 中執(zhí)行,依賴者的計算在 LateUpdate 中執(zhí)行,這就有效解決了更新依賴的問題。
......
第三章 虛擬角色的感知記憶系統(tǒng)..............15
3.1 3D 場景中的視覺............................. 15
3.2 視覺系統(tǒng)的設(shè)計實現(xiàn)................... 17
3.3 視覺系統(tǒng)的擴展-記憶系統(tǒng).......................... 18
3.4 共享的視覺-記憶系統(tǒng)............. 19
3.5 完整的感知記憶系統(tǒng)............... 21
3.6 本章小結(jié)................................. 22
第四章 地圖分析與分層決策................23
4.1 地圖分析................................ 23
4.2 三層決策體系.......................... 26
4.3 指令機系統(tǒng)............................ 28
4.4 本章小結(jié)................................ 32
第五章 系統(tǒng)整合與實驗分析
本章先簡要介紹本文系統(tǒng)整合測試的具體實現(xiàn),然后著重對實驗結(jié)果和系統(tǒng)運行效率進行分析和討論。
5.1 自定義調(diào)試工具
在開發(fā)游戲中的人工智能模塊時,經(jīng)常會發(fā)現(xiàn) NPC 的行為和設(shè)計本意相差很大,而開發(fā)者在代碼中逐行檢查代碼邏輯,效率較低,難以發(fā)現(xiàn) bug 的真正原因。NPC的行為存在異常是不可避免并且經(jīng)常發(fā)生的,一旦發(fā)生這種情況,就需要一種方法根據(jù)觀察到的現(xiàn)象快速簡單地解決問題[14]。由于游戲人工智能模塊經(jīng)常引入隨機量來減少智能的可預(yù)測性,試圖在下一次運行時在錯誤處中斷的調(diào)試方法常常會失敗,因為下一次運行時錯誤很難重現(xiàn)。既然開發(fā)平臺的調(diào)試工具無法滿足這種需求,有必要設(shè)計一個新的調(diào)試系統(tǒng),可以直觀的觀察到智能架構(gòu)中各個對象的變量,確定錯誤來源。本文設(shè)計的系統(tǒng)比較復(fù)雜,造成 NPC 行為異常的錯誤可能是任意模塊的邏輯錯誤或者設(shè)計缺陷,例如 2.2.2 節(jié)的 FlockSphere 類的力計算錯誤,3.1.3 節(jié)的視覺系統(tǒng)的隊列操作的邏輯錯誤。Unity3D 引擎在開發(fā)模式下可以隨時暫停執(zhí)行并實時觀察各個對象的成員變量的值,對調(diào)試工作提供較大的幫助。
........
第六章 總結(jié)與展望
6.1 本文工作總結(jié)
近幾年來游戲工業(yè)的快速發(fā)展催生出無數(shù)優(yōu)秀的電子游戲,而戰(zhàn)爭一直是熱門題材,國外大型游戲公司幾乎每年都會推出幾款制作精良的戰(zhàn)爭題材游戲。反觀國內(nèi)的游戲開發(fā)還主要集中在基本不需要人工智能的網(wǎng)絡(luò)游戲上,至今為止還沒有一款國產(chǎn)的 FPS 游戲上市。本文從游戲人工智能的一些底層技術(shù)出發(fā),對適合 FPS 和 RTS 游戲的人工智能技術(shù)進行實驗和探索,希望可以對游戲業(yè)界的程序員或者業(yè)余游戲開發(fā)愛好者提供一定的參考。本文主要研究工作包括:
(1) 設(shè)計移動系統(tǒng)實現(xiàn)群體移動,以及如何利用物理引擎實現(xiàn) Flock 算法。該系統(tǒng)把 Flock 算法和 A*尋路相結(jié)合,可以同時支持?jǐn)?shù)十人以上的群體在地圖中自由移動。
(2) 利用物理引擎的觸發(fā)器實現(xiàn)感知系統(tǒng),該系統(tǒng)為智能模型提供輸入。本文設(shè)計了多人共享視覺記憶系統(tǒng),增加了感知的真實性。
(3) 設(shè)計了地圖分析系統(tǒng),運用可見性測試進行地圖分析,地圖分析結(jié)果可供決策系統(tǒng)使用。
(4) 為了模擬真實戰(zhàn)場的組織結(jié)構(gòu),本文設(shè)計了三層的決策控制架構(gòu),并且設(shè)計了指令機系統(tǒng)與之配合,構(gòu)成易調(diào)試、易插拔的智能架構(gòu)。
6.2 進一步展望
本文最終系統(tǒng)的實驗結(jié)果還存在著一些缺陷,本文的研究工作僅僅只是個開始,還有很多地方需要改進。
(1) 在移動方面,可以對尋路請求進行分時執(zhí)行,降低同時移動時的峰值計算量,以穩(wěn)定游戲幀率。
(2) 在 NPC 組織結(jié)構(gòu)上,可以加入動態(tài)編組解組,增加群體行為的多樣性。
(3) 本文的智能系統(tǒng)計算時間占游戲計算時間的 39.1%,說明部分設(shè)計仍然需要進行僅一步優(yōu)化,減少計算冗余,提高游戲幀率。由于本文篇幅有限,系統(tǒng)的交互模塊、消息系統(tǒng)等部分實現(xiàn)細(xì)節(jié)并沒有詳細(xì)說明,如讀者存在部分內(nèi)容理解困難,請聯(lián)系作者索取工程文件源碼,聯(lián)系方式詳見附錄 D。
參考文獻(xiàn):
- [1] 鄒會來. 人工智能技術(shù)在游戲開發(fā)中的應(yīng)用與研究[D]. 浙江師范大學(xué) 2011
- [2] 張子開. 游戲虛擬戰(zhàn)場人工智能中間件的設(shè)計與實現(xiàn)[D]. 復(fù)旦大學(xué) 2011
- [3] 吳志達(dá). 一個基于Unity3d游戲引擎的體感游戲研究與實現(xiàn)[D]. 中山大學(xué) 2012
- [4] 朱柱. 基于Unity3D的虛擬實驗系統(tǒng)設(shè)計與應(yīng)用研究[D]. 華中師范大學(xué) 2012
- [5] 楊科選. 人工智能尋路算法及其在游戲中的應(yīng)用研究[D]. 中南大學(xué) 2009
- [6] 付林. 永豐大廈虛擬漫游數(shù)字平臺的設(shè)計與實現(xiàn)[D]. 北京交通大學(xué) 2010
- [7] 賈錚. 競速游戲中的人工智能[D]. 湖南大學(xué) 2010
- [8] 胡鋼鈴. 游戲引擎中的Al系統(tǒng)的設(shè)計與實現(xiàn)[D]. 北京交通大學(xué) 2011
- [9] 任巍. 人工智能技術(shù)在計算機游戲軟件中的應(yīng)用[D]. 西安電子科技大學(xué) 2006
本文編號:9592
本文鏈接:http://sikaile.net/kejilunwen/rengongzhinen/9592.html