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

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