游戲程序開(kāi)發(fā)是游戲的基礎(chǔ),如何給游戲設(shè)定一個(gè)好編程將決定游戲的好壞。如果你還是游戲編程的新手,那么你可以從怪物AI的設(shè)計(jì)入手來(lái)深入了解游戲應(yīng)該如何編程。
AI的設(shè)計(jì),如果從程序口中說(shuō),可能會(huì)跳出諸如“行為樹(shù)”“ 決策樹(shù)”“有限狀態(tài)機(jī)”之類的程序名詞,聽(tīng)起來(lái)很專業(yè)有木有?但是策劃沒(méi)學(xué)過(guò)腫么辦?不要急,我們先拋開(kāi)這些程序名詞,僅僅從策劃設(shè)計(jì)角度來(lái)梳理一下怪物AI的策劃設(shè)計(jì)。當(dāng)然,如果理解有錯(cuò)誤,希望大家指出,共同學(xué)習(xí)進(jìn)步。
怪物AI應(yīng)該說(shuō)是這是一個(gè)程序問(wèn)題,如果從策劃的角度來(lái)說(shuō),作為設(shè)計(jì)者,則需要了解怪物AI整體的設(shè)計(jì)流程,這樣才能提出自己的需求,從而讓游戲戰(zhàn)斗的整體體驗(yàn)符合設(shè)計(jì)預(yù)期,畢竟怪物AI也是屬于戰(zhàn)斗和體驗(yàn)的重要部分。
1、什么是怪物AI?
在策劃意義上來(lái)說(shuō),怪物的AI實(shí)際上是一種交互體驗(yàn),換句話說(shuō)就是怪物或NPC等虛擬角色在面對(duì)玩家操縱的角色的時(shí)能夠給出合適恰當(dāng)反應(yīng)。實(shí)際上,在游戲?qū)嶋H的設(shè)計(jì)中并不是一味地需求怪物的AI越高越好越真實(shí)越好。在游戲中,我們的目的是讓玩家和怪物或NPC的交互能夠產(chǎn)生一種近似真實(shí)的可對(duì)抗性,這種接近真實(shí)的對(duì)抗才是怪物AI設(shè)計(jì)的目的,這樣才能吸引玩家去繼續(xù)戰(zhàn)斗,甚至不斷的提示自己的裝備屬性和能力,引入進(jìn)一步的對(duì)抗。
怪物的弱小和強(qiáng)大,聰明和愚蠢其實(shí)都是設(shè)計(jì)的需求。
所以說(shuō),怪物的AI設(shè)計(jì)目的是期望和玩家的交互中可控的,平衡的以及具有誘導(dǎo)性的。
2、怪物的ai包括什么?
怪物的AI說(shuō)白了就是多種狀態(tài)之間的轉(zhuǎn)換,這種轉(zhuǎn)換是基于邏輯的,符合常理的逾期。
在怪物的狀態(tài)則是基于怪物的特色本身來(lái)設(shè)定的。
我們以《暗黑破壞神2》的骷髏怪AI為例:
在暗黑2中,在MonStats.txt這個(gè)文件中有aip1~aip8中這幾列設(shè)定怪物的ai行為參數(shù),暗黑2的檢定方式為隨機(jī)數(shù),即是以隨機(jī)取一個(gè)0到100的數(shù)字來(lái)和表中的參數(shù)數(shù)字比較,如果小于或者等于該數(shù)值則視為檢定成功,否則失敗。
Skeleton (骷髏)
描述:骷髏戰(zhàn)士是一個(gè)遲鈍的AI,它發(fā)現(xiàn)敵人后會(huì)試圖接近,有敵人在攻擊范圍內(nèi)時(shí)則持續(xù)攻擊,但是它經(jīng)常會(huì)毫無(wú)理由的停止動(dòng)作一段時(shí)間,站著發(fā)呆。
1. 當(dāng)肉搏范圍內(nèi)沒(méi)有敵人時(shí),繼續(xù)接近敵人的幾率
2. 當(dāng)肉搏范圍內(nèi)有敵人時(shí),攻擊敵人的幾率
3. par1,par3檢定失敗后等待的時(shí)間(單位:幀)
4. 攻擊時(shí),以A2代替A1的幾率
5. n/a
6. n/a
7. n/a
8. n/a
通過(guò)這幾條我們可以看到在暗黑2中骷髏的行為方式實(shí)際上比較簡(jiǎn)單,只有接近敵人,失敗等待以及攻擊等幾種簡(jiǎn)單的狀態(tài),一旦隨機(jī)數(shù)進(jìn)行判定,也只會(huì)從這幾種狀態(tài)中進(jìn)行反應(yīng)交互。
實(shí)際上來(lái)說(shuō)暗黑2的ai設(shè)計(jì)思路主要還是以隨機(jī)數(shù)判斷加上條件行為為主,這個(gè)實(shí)際上也是目前絕大部分游戲采用的方式。
這種思路來(lái)說(shuō),雖然比較原始和傳統(tǒng),但是優(yōu)點(diǎn)在于簡(jiǎn)單好維護(hù),理解和調(diào)試比較簡(jiǎn)單, 當(dāng)然缺點(diǎn)也比較明顯,就是容易出現(xiàn)怪物行為單調(diào),千人一面,因此也對(duì)怪物設(shè)計(jì)和條件的設(shè)定提高了要求。
如果來(lái)拆解暗黑3的AI,我們可以看到有這么幾條是必需的。
1、怪物AI的判定方式。一般采用隨機(jī)數(shù),也就是擲骰子的方式,這是比較常見(jiàn)的手法。用來(lái)判斷ai是否開(kāi)始執(zhí)行。
2、怪物的范圍設(shè)定。
怪物的范圍簡(jiǎn)單來(lái)說(shuō)就是怪物的戰(zhàn)斗范圍,實(shí)際上也可以 的說(shuō)是怪物的聽(tīng)覺(jué)視覺(jué),如果要說(shuō)細(xì)一點(diǎn),那還會(huì)分為戰(zhàn)斗前和戰(zhàn)斗中兩個(gè)階段,在戰(zhàn)斗前會(huì)有游蕩范圍,聽(tīng)覺(jué)警戒范圍和視覺(jué)警戒范圍,而在戰(zhàn)斗中會(huì)區(qū)分為追擊范圍,近戰(zhàn)攻擊范圍、魔法攻擊范圍和呼喊范圍。
聽(tīng)覺(jué)警戒范圍為360度,視覺(jué)警戒范圍為120到180度不等,二者可以共享半徑,也可以讓半徑不同。
∵體拆分如圖所示:
設(shè)置這些范圍有什么用處呢?這些范圍實(shí)際就是處理各種不同的AI行為條件的基礎(chǔ)了。
3、AI行為條目
AI的行為條目是只怪物所能夠采取的行為策略,在實(shí)際上,怪物的一個(gè)完整的流程是指怪物的從出生到死亡的整個(gè)過(guò)程。
出生,是指怪物的創(chuàng)建生成情況,這個(gè)比較好理解,這時(shí)對(duì)應(yīng)的戰(zhàn)斗前范圍。怪物的狀態(tài)可能是游蕩,巡邏,靜止等各種行為條目,這些就屬于第一類的AI行為。
而后的情況,則是怪物面對(duì)的戰(zhàn)斗情況,即如何進(jìn)入戰(zhàn)斗?一般來(lái)說(shuō),游戲會(huì)設(shè)定一個(gè)“仇恨值”或者主被動(dòng)的設(shè)定。
仇恨列表相當(dāng)于另一個(gè)系統(tǒng)了,這里就不展開(kāi)說(shuō)了,而對(duì)于AI來(lái)說(shuō),有了仇恨值,則可以進(jìn)行一系列基于仇恨的行為了,比如進(jìn)行攻擊,釋放技能,是否追擊,是否呼喊召喚支援等等。
最后就是怪物進(jìn)入瀕死階段的一些特殊行為,這些是基于特定條件的比如HP血量下降到一定程度,怪物會(huì)有潰敗逃跑、呼叫救兵或者使用特殊技能比如“自爆”等其他行為。
以上就是基于條件行為相關(guān)的一類基礎(chǔ)的怪物AI行為的設(shè)計(jì)邏輯。屬于比較基礎(chǔ)的AI設(shè)計(jì),當(dāng)然也是比較好用的一類設(shè)計(jì)。
主要可以用表格或者文本來(lái)制作,當(dāng)然具體的實(shí)現(xiàn)和調(diào)試則需要策劃和程序大神一起共同完善了。
隨著游戲制作技術(shù)的進(jìn)步,關(guān)于怪物AI的制作也越來(lái)越工具化了,感謝程序大神們的提供的各類高端工具,這里也順便介紹一下,希望后續(xù)能和大家交流。
一類是基于編輯器的怪物AI編輯。比如暴雪一般會(huì)提供一個(gè)功能相當(dāng)強(qiáng)大的游戲編輯器,在編輯器中則會(huì)有專門(mén)關(guān)于怪物AI的編輯內(nèi)容。
比如星際2中的編輯器,推薦大家學(xué)習(xí)使用,這里就不展開(kāi)說(shuō)了。
其次是怪物AI的行為樹(shù)編輯。行為樹(shù)這個(gè)概念也是比較久的一個(gè)工具,不少商業(yè)引擎都支持行為樹(shù)的編輯,比如Spore(孢子),Crysis2(孤島危機(jī))都是采用行為樹(shù)來(lái)制作對(duì)應(yīng)的AI模型。
如圖示意(示意圖來(lái)源為網(wǎng)絡(luò),僅做示意)
上圖所示為一個(gè)怪物的行為樹(shù),作為策劃來(lái)說(shuō),需要關(guān)注的是上圖中幾類不同的顏色區(qū)分,代表了不同的行為,條件和控制節(jié)點(diǎn)。
在我看來(lái),行為樹(shù)最好的方面在于如何去控制AI攜帶者的行為的路從初始到最終實(shí)現(xiàn)是如何走的,在行為樹(shù)上來(lái)有多個(gè)節(jié)點(diǎn)以及一系列控制條件幫助攜帶者的做出正確及時(shí)的選擇,這種選擇過(guò)程是充滿樂(lè)趣的。
相比之前的在excel表上的寫(xiě)寫(xiě)畫(huà)畫(huà),這無(wú)疑是打開(kāi)了新的一扇門(mén)。
從根節(jié)點(diǎn)從左往右可以看,怪物的每一步選擇以及判斷都會(huì)有對(duì)應(yīng)的行為分支來(lái)控制,猶如一顆樹(shù)一樣枝繁葉茂,每一條分叉都有對(duì)應(yīng)的行為和條件,就這樣多條分支的執(zhí)行來(lái)搭建成一個(gè)完整的行為模型。
因?yàn)槲覀兊淖罱K展現(xiàn)的仍然是怪物所執(zhí)行的行為結(jié)果,即為行為節(jié)點(diǎn)的內(nèi)容,不同是執(zhí)行行為節(jié)點(diǎn)的判斷以及行為過(guò)程的控制力度,行為樹(shù)可以增加任意多的節(jié)點(diǎn)選擇分支,這就給怪物的行動(dòng)判斷加多了更多的可能性,制作人員在理解上也會(huì)方便很多,當(dāng)然更重要的優(yōu)點(diǎn)是程序上處理的優(yōu)勢(shì),這里就不展開(kāi)討論了?偠灾治顰I制作博大精深,這里只是粗淺描述,難入窺門(mén)子徑,唯望可抱磚引玉,共饗同好。
投稿郵箱:chuanbeiol@163.com 詳情請(qǐng)?jiān)L問(wèn)川北在線:http://m.sanmuled.cn/