




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