




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MMORPG游戲的人工智能(AI )和行為樹(shù)設(shè)計(jì)文 / alchemistli 什么是 MMORPG 的 AI ?玩MMORPG的地球人都知道,MMORPG的AI實(shí)在是弱智 的要死。即 使是在WOW這樣頂級(jí)的游戲中,AI也是有限得掉渣,絕大部分NPC都 像一個(gè)木樁一樣,哪怕是精心設(shè)計(jì)的BOSS也就只有一些戰(zhàn)斗AI O盡管有很多人把動(dòng)畫(huà),或者自動(dòng)尋路之類(lèi)的功能也叫做AI ,但是我們并不討論這種基本功能。我們討論的AI是指,可以使得NPC好像一個(gè)真人一樣活動(dòng)的AI O擁有這樣AI的NPC看起來(lái)就不再是那個(gè)只有血條和攻擊力的模 型,而給玩家的感受會(huì)是一個(gè)有信念、欲望和意圖的生命。從更廣泛的意義 上說(shuō)
2、,如果整個(gè)游戲世界是高AI ”的,那么這個(gè)游戲世界會(huì)充滿(mǎn)著自由度。這意味著玩家可以在游戲中創(chuàng)造”出前所未有的武器、科技甚至?xí)?有能力改變整個(gè)游戲世界外貌和文明。如果真正出現(xiàn)這樣款MMORPG ,那 么贏得粉絲們的驚聲尖叫應(yīng)該并不意外。品管中心孕育中的項(xiàng)目“失落的大陸”目前就正在向這個(gè)方 向努力中,希望能夠取得一定水準(zhǔn)的突破。個(gè)典型的AI系統(tǒng)包括,感知,導(dǎo)航和決策三個(gè)字系統(tǒng)。對(duì)于游戲來(lái)說(shuō),感知系統(tǒng)是可以“作弊”的,不需要NPC去“感知”世界,系統(tǒng)可以直接告訴NPC世界是怎樣的。而導(dǎo)航系統(tǒng),不屬于今天的討論范圍。而決策系統(tǒng)才是讓NPC看起來(lái)可以有自己的意圖和信念,所以我們接下來(lái)主要討論決策系統(tǒng)。A
3、I決策系統(tǒng)的常見(jiàn)模型AI決策系統(tǒng)往往是這樣寫(xiě)的:switch (自己) case 血量充足": 打怪();break;case 快死了 "補(bǔ)血 0 ; break: case 死了戲全局->Ganieover() ; break: 復(fù)制代碼件的提高, 以分給AI執(zhí)行的CPU時(shí)間越來(lái)越長(zhǎng),老板們可隨著硬對(duì)AI的要求自然也提高了,比如說(shuō)老板可能會(huì)想出這樣的策略:血量80的時(shí)候用魔法補(bǔ)一補(bǔ)就行了,血量60的時(shí)候吃個(gè)小血瓶,血量40的時(shí)候吃大血瓶,血量20的時(shí)候趕快逃跑。于是AI程序員就需要找到上面這個(gè)switch ,然后修改里頭的case。想象一下,萬(wàn)一碰到了一個(gè)Dota高
4、手當(dāng)老 板,心中有著各種很NB的殺敵策略,需要隨時(shí)根據(jù)環(huán)境狀態(tài)判斷利用哪 種策略。當(dāng)策略越來(lái)越多,很快,一個(gè)帶有上 萬(wàn)行代碼的函數(shù)就橫空出世 7!如果這個(gè)時(shí)候遇到bug 了,甭說(shuō)修復(fù)了,僅僅是閱讀這個(gè)函數(shù)就恐怕 就得嘔吐了。毫無(wú)疑問(wèn),上面的方法在遇到大量的狀態(tài)的時(shí)候會(huì)讓代碼崩潰,不過(guò)經(jīng)過(guò)無(wú) 數(shù)前輩前仆后繼用各種切身努力,幫我們提出了一種又一種精簡(jiǎn)代碼的手 段。目前常見(jiàn)的AI模型包括FSM (有限狀態(tài)機(jī),包括HFSM分層有限狀態(tài)機(jī))和Behavior央”switch-case來(lái)說(shuō),F(xiàn)SM編程與人類(lèi)思維相似從而便于梳理,更加靈 活。當(dāng)每種狀態(tài)被封裝之后,就不會(huì)再有一個(gè)“中函數(shù)來(lái)控制所有 的邏輯,每
5、個(gè)狀態(tài)只要管好它自己就好了。這樣復(fù)雜的決策系統(tǒng)就被切分兩個(gè)子系統(tǒng),不同狀態(tài)以及狀態(tài)之間的轉(zhuǎn)化。切分后的這兩個(gè)子系統(tǒng)的復(fù)雜度與原系統(tǒng)比都大大簡(jiǎn)化,從而使得代碼變得可以維護(hù)。FSM在相當(dāng)多的游戲中被應(yīng)用,甚至Unreal Engine的腳本語(yǔ)言是直接支持狀態(tài)編程的。當(dāng)游戲中的NPC決策并不太復(fù)雜時(shí)候,F(xiàn)SM是非常有效的。比如Half-Life這款游戲,里面的AI被業(yè)界稱(chēng)贊了很久,而其中的AI就是通過(guò)FSM來(lái)實(shí)現(xiàn)的。們接下來(lái)通過(guò)一個(gè)簡(jiǎn)單的例子來(lái)認(rèn)識(shí)一下FSMo比如個(gè)AI文字表述如下:1)平時(shí)的狀態(tài)是巡邏2)如果遇到敵人之后打量一下敵人3)如果敵人比自己弱小,那就打攻擊4)如果敵人比自己強(qiáng)大,那就跑逃
6、跑那么這個(gè)可以很自然的轉(zhuǎn)換成FSM ,然后進(jìn)行編程實(shí)現(xiàn)帶邊框的節(jié)點(diǎn)表示狀態(tài),而箭頭上的條件表示狀態(tài)切換的條件。雖然FSM簡(jiǎn)潔,和人的直覺(jué)思維相近,但是FSM也是有缺點(diǎn)的:A)由于我們所能做的僅是編輯從一狀態(tài)到另一狀態(tài)的轉(zhuǎn)換,而無(wú)法做出更高層次的模式功能,所以會(huì)導(dǎo)致我們發(fā)現(xiàn)自己總是在構(gòu)建相似的行為,這會(huì)花費(fèi)我們大部分時(shí)間。B)使用FSM實(shí)現(xiàn)目標(biāo)導(dǎo)向的行為需要做很多工作。這是一個(gè)大問(wèn)題,因?yàn)榇蟛糠钟嗅槍?duì)性的AI需要處理長(zhǎng)遠(yuǎn)目標(biāo)。C) FSM難以并發(fā)。當(dāng)并行運(yùn)行多個(gè)狀態(tài)機(jī),要么死鎖,要么我們通過(guò)手工編輯來(lái)確保它們?cè)谀硞€(gè)程度上能夠兼容。D)大規(guī)模支持較差,即使是分層的有限狀態(tài)機(jī),也難以大規(guī)模擴(kuò)展。它們
7、往往是在其中夾雜一大塊邏輯代碼,而非行為編輯模塊化。E)用FSM實(shí)現(xiàn)任何設(shè)計(jì)都需要做大量工作,需要花費(fèi)設(shè)計(jì)師的大量時(shí)間(并非編程時(shí)間),甚至最終這還會(huì)成行為中的bugs的來(lái)源。行為樹(shù)(Behavior Tree) 行為樹(shù)是在Next-Gen AI中提出的模型, 雖說(shuō)是Next-Gen Al ,但距其原型提出己有約10年時(shí)間。其中 Spore (抱子),Crysis (孤島危機(jī))2, Red Dead Redemption野大鏢客:救贖)等就是用行為樹(shù)作為它們的AI模型。而越來(lái)越多的引擎也都開(kāi)始直接支持行為樹(shù),比如Cry Engine,Havok 等。對(duì)于用行為樹(shù)定模型構(gòu)造的AI系統(tǒng)來(lái)說(shuō),每次執(zhí)
8、行AI時(shí),系統(tǒng)都會(huì)從根節(jié)點(diǎn)遍歷整個(gè)樹(shù),父節(jié)點(diǎn)執(zhí)行子節(jié)點(diǎn),子節(jié)點(diǎn)執(zhí)行完后將結(jié)果返回父節(jié)點(diǎn),然后父節(jié)點(diǎn)根據(jù)子節(jié)點(diǎn)的結(jié)果來(lái)決定接下來(lái)怎么做。行為樹(shù)常見(jiàn)的基本類(lèi)型節(jié)點(diǎn)有5種(當(dāng)然也可以擴(kuò)展更多類(lèi)型):1)順序節(jié)點(diǎn)(Sequence):屬于組合節(jié)點(diǎn),順序執(zhí)行子節(jié)點(diǎn),只要 碰到一個(gè)子節(jié)點(diǎn)返回false,則停止繼續(xù)執(zhí)行,并返回false,否則返回true,類(lèi)似于程序中的邏輯與。2)選擇節(jié)點(diǎn)(Selector):屬于組合節(jié)點(diǎn),順序執(zhí)行子節(jié)點(diǎn),只要碰到一個(gè)子節(jié)點(diǎn)返回true,則停止繼續(xù)執(zhí)行,并返回true,否則返回false,類(lèi)似于程序中的邏輯或。3)平行節(jié)點(diǎn)(ParallelNode):提供了平行的概念,無(wú)論
9、子節(jié)點(diǎn)返回值是什么都會(huì) 遍歷所有子節(jié)點(diǎn)。所以不需要像哪個(gè)Ch訂d Node應(yīng)擺前,哪個(gè)應(yīng)擺后。Selector/Sequence 那樣預(yù)判Parallel Node 增加方便性的同時(shí),也增加實(shí)現(xiàn)和維護(hù)復(fù)雜度。4)條件節(jié)點(diǎn)5)執(zhí)(Condition):屬于葉子節(jié)點(diǎn),判斷條件是否成立。行節(jié)點(diǎn)(Action):屬于葉子節(jié)點(diǎn),執(zhí)行動(dòng)作,一般返回true接下來(lái)我們看一個(gè)行為樹(shù)構(gòu)造的AI ,這個(gè)AI的邏輯文字表 述為,一個(gè)NPC在晚上需要執(zhí)行巡邏任務(wù)。而且如果天下雨的話,戶(hù)外的人是需要打傘的。程序大概流程如下1)次處理接先處理Basic_AI節(jié)點(diǎn),由于該節(jié)點(diǎn)是并行節(jié)點(diǎn),所以將會(huì)依 下來(lái)兩個(gè)子樹(shù),無(wú)論第一個(gè)
10、子樹(shù)的返回值是什么。2)對(duì)于打傘節(jié)點(diǎn),由于該節(jié)點(diǎn)是順序節(jié)點(diǎn),所以會(huì)依次處 理其子節(jié)點(diǎn),但是如果某個(gè)子節(jié)點(diǎn)返回false,那么該節(jié)點(diǎn)執(zhí)行停止執(zhí)行,并且返回false。因此執(zhí)行打傘動(dòng)作會(huì)不會(huì)執(zhí)行取決于在它前面的兩個(gè)條件是否返回true3)執(zhí)行完大傘節(jié)點(diǎn)后,接下來(lái)必然會(huì)執(zhí)行守夜節(jié)點(diǎn),而守夜節(jié)點(diǎn)是選擇節(jié)點(diǎn),所以要 么會(huì)執(zhí)行夜里巡邏,要么會(huì)執(zhí)行休息節(jié)點(diǎn)。夜里巡邏會(huì)不會(huì)這姓自然取決于條件節(jié)點(diǎn)是晚上嗎的返回值行為樹(shù)模型看似簡(jiǎn)單,但是以下幾個(gè)優(yōu)點(diǎn)讓行為樹(shù)目前變成了復(fù)雜AI的主流模型A)靜態(tài)性越復(fù)雜的功能越需要簡(jiǎn)單的基礎(chǔ),否則最后連自己都玩不過(guò)來(lái)。即使系統(tǒng)需要Halo3帶來(lái)方便。B)直觀性行為樹(shù)可以方便地把復(fù)雜
11、的AI知識(shí)條目組織得非常直觀。默認(rèn)的組合節(jié)點(diǎn)處理子節(jié)某些動(dòng)態(tài)性,也應(yīng)該盡量使用靜態(tài)的行為樹(shù)來(lái)表示。相對(duì)于Halo2對(duì)BT AI的一個(gè)改進(jìn)就是去除了一些的動(dòng)態(tài)性。原則就是保持全部Node靜態(tài),只是根據(jù)事件和環(huán)境來(lái)檢查是否啟用Node。靜態(tài)性直接帶來(lái)的好處就是整棵樹(shù)的規(guī) 劃無(wú)需再運(yùn)行時(shí)動(dòng)態(tài)調(diào)整,大大方便設(shè)計(jì)人員和編程人員, 并且大大減少詭異的bug,同時(shí)這也為很多優(yōu)化和預(yù)編輯都點(diǎn)的迭代方式就像是處理一個(gè)預(yù)設(shè)優(yōu)先策略隊(duì)列,也非常符合人類(lèi)的正常思考模式:先最優(yōu)再次優(yōu)。此外,行為樹(shù)編輯器對(duì)優(yōu)秀的程序員來(lái)說(shuō)也是唾手可得。C)復(fù)用性各種節(jié)點(diǎn),包括葉子節(jié)點(diǎn),可復(fù)用性都極高。D)擴(kuò)展性可以容易地為項(xiàng)目量身定做新的組合節(jié)點(diǎn)或修飾節(jié)點(diǎn)。還可 以積累一個(gè)項(xiàng)目 相關(guān)的節(jié)點(diǎn)庫(kù),長(zhǎng)遠(yuǎn)來(lái)說(shuō)非常有價(jià)值。小結(jié) 在瀏覽過(guò)行為樹(shù)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 初中數(shù)學(xué)第5章 圖形的軸對(duì)稱(chēng)同步單元達(dá)標(biāo)測(cè)試題+2024-2025學(xué)年北師大版七年級(jí)數(shù)學(xué)下冊(cè)
- 全方位解析裝液氮的容器原理、操作、維護(hù)與應(yīng)用拓展
- 2《我向國(guó)旗敬個(gè)禮》公開(kāi)課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)(表格式)-2
- 標(biāo)準(zhǔn)自行車(chē)零件采購(gòu)合同
- 簡(jiǎn)易不銹鋼材料采購(gòu)合同版本
- 房屋買(mǎi)賣(mài)合同修訂協(xié)議
- 三方合同:資源共享與互惠互利
- 會(huì)員卡轉(zhuǎn)讓合同模板
- 2025年醫(yī)療器械購(gòu)銷(xiāo)合同樣本
- 事業(yè)單位勞動(dòng)合同中的勞動(dòng)權(quán)益保護(hù)
- 15j403-1樓梯欄桿標(biāo)準(zhǔn)
- 2024年03月湖南省韶山思政教育實(shí)踐中心2024年招考5名合同聘用制教師筆試歷年高頻考題(難、易錯(cuò)點(diǎn)薈萃)答案帶詳解附后
- 2024-2025年全國(guó)初中化學(xué)競(jìng)賽試卷及答案
- 電力各種材料重量表總
- 《巖漿巖巖石學(xué)》課件
- (完整文檔版)CRF表
- 廣東深圳市道路交通管理事務(wù)中心招考聘用員額制工作人員筆試歷年高頻考點(diǎn)試題含答案帶詳解
- 家長(zhǎng)會(huì)課件:四下英語(yǔ)家長(zhǎng)會(huì)優(yōu)質(zhì)課件
- 癌癥醫(yī)療保險(xiǎn)(2021版)
- 工作危害分析(JHA)(起重作業(yè))
- 幼兒認(rèn)識(shí)警察ppt
評(píng)論
0/150
提交評(píng)論