摘要:從游戲中怪物角色的人工智能系統(tǒng)進(jìn)行分析,闡述了打怪升級游戲中怪物的人工智能的設(shè)計規(guī)則。通過怪物人工智能系統(tǒng)的三個方面:怪物NPC的屬性,自發(fā)性動作事件,反應(yīng)性動作事件,重點論述了游戲怪物角色人工智能系統(tǒng)的創(chuàng)建規(guī)律和原則。
關(guān)鍵詞:游戲怪物;無人控制;人工智能;屬性;事件;判定
中圖分類號:TP18 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2008)09-11699-04
Eccentric Person NPC Artificial Intelligence Analyses Game
SHU Xiao-ling
(Sichuan TOP Vocational Institute of Information Technology, Computer Art and Science Department, Chengdou 611743, China)
Abstract: The article artificial intelligence system from game middle eccentric person role carries out the design regulation having analysed, setting forth the artificial intelligence fighting to blame promotion game for being hit by eccentric person. Pass three aspect of eccentric person artificial intelligence system: Eccentric person NPC attribute, spontaneity action event, reactiveness action event, concentrate on having discussed game eccentric person role artificial intelligence system's establishing law and principle.
Key words: Game Eccentric Person; NO People Control(NPC); Artificial Intelligence(AI); Attribute; Event; Decide
在游戲中,如果只有玩家操控的角色在游戲世界里孤單的產(chǎn)生一系列行為,而沒有其他任何可以和玩家角色形成交互活動、產(chǎn)生事件的話,玩家會覺得非常索然無味。此時如果在游戲中加入一些有一定功能和智能的人物和怪物,使之與玩家形成各種事件的互動,我們通常就把這些角色稱為NPC(NO people control)——游戲世界中無需玩家操控而具備智能的物體。玩家就與這些有“智能”的NPC共同構(gòu)成一個有故事有內(nèi)容的游戲世界,這樣既能讓玩家在游戲中了解到如同看故事書或看電影般的內(nèi)容情節(jié),又能親身操控角色參與到這個虛擬的世界里面。
有了NPC在游戲世界里,我們就必須賦予他們足夠的“思想”,才能讓他們行動起來,形成一個有生命的世界,通常我們將之稱謂NPC AI(即NPC的人工智能)。NPC一些精彩的思想,所做出的事件往往會讓玩家得到更多驚喜的體驗。所以NPC的智能思想在游戲設(shè)定中越來越重要乃至于整個AI系統(tǒng)也越來越龐大。
下面就讓我們在這篇文章里面著重分析游戲中怪物NPC的AI系統(tǒng)設(shè)定的規(guī)律和原則,從而揭開NPC AI的神秘面紗。
1 怪物NPC AI系統(tǒng)
設(shè)計怪物的AI系統(tǒng)需主要考慮怪物處于主動和被動狀態(tài)下會做出什么樣反應(yīng)。在怪物處于主動狀態(tài)下時,設(shè)定一個警戒范圍,如果沒有目標(biāo)進(jìn)入這個范圍,那么怪物會自發(fā)的進(jìn)行行走,停留等動作,反之如果有目標(biāo)進(jìn)入,怪物則會進(jìn)入戰(zhàn)斗狀態(tài)準(zhǔn)備攻擊目標(biāo);在怪物處于被動狀態(tài)時,就該考慮怪物應(yīng)該被施與哪些被動動作。我們可以構(gòu)架一個怪物AI系統(tǒng)的基礎(chǔ)框圖來形象的說明。如圖1所示。
2 怪物NPC的屬性
怪物在主動和被動狀態(tài)下會做出的任何反應(yīng)都需要依賴于其自身的各種屬性設(shè)定,也就是AI系統(tǒng)的運作是根據(jù)其各種屬性來進(jìn)行判定。根據(jù)怪物NPC當(dāng)前狀態(tài)下的不同屬性,驅(qū)動產(chǎn)生出多種行為事件。
通常我們將怪物NPC的AI中涉及到的屬性歸納為兩類:
2.1 基本屬性
我們在AI系統(tǒng)設(shè)定時考慮的第一個基本屬性為怪物的種類。一個游戲中怪物種類的設(shè)定是多種的,設(shè)定時由種類不同得到特性會有不同,或可以說“智商”會有不同,比如:人形怪的AI通常都設(shè)定非常高,當(dāng)被獵殺而打不過時會聰明地選擇逃跑保命,而動物系的怪AI設(shè)定一般就比較低,在一樣的情況下可能會選擇一味的猛攻直到死亡。第二個要考慮的基本屬性是等級。原則上等級越高給其設(shè)定的AI也會越高,但不是絕對。第三個要考慮的屬性就是怪物的性別。一般設(shè)為三種性別,雌、雄、無性別。
2.2 AI相關(guān)的戰(zhàn)斗屬性
戰(zhàn)斗屬性中的各種屬性一般是由公式計算得到的具體數(shù)據(jù)值,是AI系統(tǒng)判定的重要指標(biāo)。先分析戰(zhàn)斗屬性的基本屬性:HP(Health Point)屬性——怪的血量值,也稱為生命值,需要設(shè)定怪的當(dāng)前血量值和最大血量值,怪會依據(jù)血量值有不同動作,可能繼續(xù)戰(zhàn)斗,或呼喚同伴幫忙,或死亡。MP(Magic Point)屬性---怪的魔法值或法力值,需要設(shè)定怪的當(dāng)前魔法值和最大魔法值,怪物會依據(jù)魔法值施出不同的技能或不同的攻擊方式。還有物理攻擊力屬性,物理防御力屬性,魔法攻擊力屬性,魔法防御力屬性分別代表對物理或魔法的適性。以及閃避(Dodge)屬性——怪物NPC躲避玩家角色攻擊的幾率,在AI設(shè)計中,通常會讓某些怪物NPC具備增強閃避率的技能,增強對玩家攻擊的躲閃能力,以至于給玩家造成足夠的麻煩。而命中,致命一擊和格擋屬性在AI中應(yīng)用和閃避屬性類似,不再敷述。命中(Hit)屬性——怪物NPC攻擊玩家角色的命中率。致命一擊(Critical)——怪物NPC攻擊中的致命一擊的概率。格擋(Block)——怪物NPC抵擋玩家角色的概率。
3 自發(fā)性動作事件
AI系統(tǒng)中,設(shè)定自發(fā)性動作事件首先考慮怪物的生成情況。怪物的生成第一考慮的是怪物生成區(qū)域,也就是怪物在自發(fā)性動作事件中的活動區(qū)域。需要設(shè)定一個坐標(biāo)點Point=[x,y]為中心,r為半徑的圓形區(qū)域內(nèi)生成某種類型怪物NPC;其次要設(shè)定怪物生成數(shù)量,在單位區(qū)域內(nèi)某類型怪物NPC最大生成個數(shù);再來是怪物生成時間間隔,設(shè)定N 秒生成1個怪物,直到達(dá)到最大生成個數(shù)。最后還需設(shè)定怪物生成坐標(biāo),某一個怪物NPC生成的坐標(biāo)位置。以及怪物活動關(guān)鍵點,每兩個關(guān)鍵點之間可任意生成行動路徑,怪物在行動路徑上活動。
生成設(shè)定好了以后,再考慮怪物的自發(fā)性動作。包括停留,行走,警戒。行走,是通過預(yù)先在一定區(qū)域內(nèi)隨機(jī)分布停留點,每兩個停留點之間的連線就形成了該怪物NPC行走的路徑;停留,是在一定區(qū)域內(nèi)隨機(jī)設(shè)定單位數(shù)量無重復(fù)的坐標(biāo)點,也就是怪物NPC行走的停留點;警戒,包括“警戒范圍”的設(shè)定,主動性攻擊怪物NPC在停留或行走過程中始終在警戒范圍內(nèi)進(jìn)行著敵對目標(biāo)的搜索行為,一旦發(fā)現(xiàn)敵對目標(biāo)進(jìn)入該警戒范圍內(nèi),就會主動攻擊目標(biāo)。
用圖來形象說明自發(fā)性動作事件設(shè)定需考慮的因素。如圖2所示:
4 反應(yīng)性動作事件
對主動攻擊性怪來將,當(dāng)目標(biāo)進(jìn)入警戒范圍內(nèi),就會由自發(fā)性動作事件轉(zhuǎn)換為反應(yīng)性動作事件。開始對目標(biāo)進(jìn)行一系列的攻擊動作。而對被動攻擊性怪來說,當(dāng)目標(biāo)攻擊時才轉(zhuǎn)換為反應(yīng)性動作攻擊目標(biāo)。
怪物的反應(yīng)動作事件包括:目標(biāo)選取判定,戰(zhàn)斗技能使用判定,追擊判定,逃跑判定。
4.1 目標(biāo)選取判定
目標(biāo)選取判定的關(guān)鍵是怪物屬性之一的“仇恨值”。怪物攻擊目標(biāo)可以設(shè)定首先遵從仇恨值最大原則。再依次考慮當(dāng)前HP(血量)少的對象攻擊原則,就近攻擊原則,低等級對象攻擊原則,原先仇恨值排位較高原則。
仇恨值最大原則,根據(jù)仇恨值計算方法得出當(dāng)前怪物仇恨值列表,怪物會選擇攻擊當(dāng)前仇恨列表中“仇恨值”最大的目標(biāo)。那么什么是仇恨值呢?是對玩家打擊程度的數(shù)值累加,其范圍為正整數(shù),是決定該怪物的攻擊對象判定的關(guān)鍵數(shù)據(jù)。引起一個怪物仇恨值產(chǎn)生有三種方式:進(jìn)入“主動攻擊性”怪物的“警戒范圍”,如果玩家A第一個主動或被動進(jìn)入某個處于“和平狀態(tài)”的主動攻擊物的“警戒范圍”內(nèi),該怪物將會對玩家A產(chǎn)生N點“初始仇恨值”,并進(jìn)入“戰(zhàn)斗狀態(tài)”,主動攻擊玩家角色;第二種,該怪物被攻擊,每一次攻擊怪物都會使怪物對該玩家產(chǎn)生新的除“初始仇恨值”以外的增量仇恨值;第三種,幫助攻擊該怪物的對象(間接敵對)。玩家A對怪物X仇恨列表中存在的玩家B使用輔助或恢復(fù)技能,怪物X會對玩家A產(chǎn)生一定的仇恨增量。
仇恨值產(chǎn)生以及值的變化會造成仇恨列表刷新,也就會引起怪物仇恨值的變化,怎么進(jìn)行仇恨列表刷新呢? 需從三方面考慮,一方面怪物在每完成一次進(jìn)攻后(不論成功或失敗),就會觸發(fā)“仇恨列表”刷新事件,重新從仇恨列表中選取仇恨值最高的玩家作為攻擊目標(biāo);另一方面需設(shè)定一次攻擊動作事件的時間和仇恨列表固定刷新時間,這個時間定義為N秒,這項設(shè)定作用在于為了防止交替出現(xiàn)仇恨數(shù)值變化,如兩個玩家遠(yuǎn)程攻擊怪物,使怪物仇恨交替上升造成怪物跑來跑去;再者由玩家的特殊技能(只改變自身的仇恨值而不造成傷害和增減益效果的技能)造成“仇恨列表刷新”引起的時候,怪物會立刻強制響應(yīng)這個變化。
仇恨值最大原則的另一重要設(shè)定是仇恨列表的刪除。玩家A如果處于怪物B的仇恨列表中,當(dāng)玩家A跑出怪物B的追擊范圍后,怪物B會從自身的仇恨列表內(nèi)將玩家A的仇恨信息刪除; 玩家A如果處于怪物B的仇恨列表中,當(dāng)玩家A跑出怪物B所在的場景地圖后,怪物B會從自身的仇恨列表內(nèi)將玩家A的仇恨信息刪除;玩家A如果處于怪物B的仇恨列表中,如果玩家A死亡,怪物B會從自身的仇恨列表內(nèi)將玩家A的仇恨信息刪除;玩家A如果處于怪物B的仇恨列表中,如果玩家B因為非正常退出游戲或者直接返回人物選擇界面,那么在玩家A的登出延遲時間結(jié)束并完全退出游戲后,怪物B會從自身的仇恨列表內(nèi)將玩家A的仇恨信息刪除;怪物死亡后,怪物的仇恨列表所有內(nèi)容會被清空,不再記錄玩家的仇恨值。
4.2 戰(zhàn)斗技能使用判定
也就是怪物NPC在戰(zhàn)斗中選擇怎樣的攻擊方式,其判定的主要依據(jù)則和第3節(jié)列舉出來的怪物NPC屬性關(guān)聯(lián)甚密。先分析怪物NPC在和玩家角色的戰(zhàn)斗中通常會使用的技能攻擊種類有:普通攻擊、單體近戰(zhàn)技能、群體近戰(zhàn)技能、單體遠(yuǎn)程技能、群體遠(yuǎn)程技能、單體法術(shù)
技能、群體法術(shù)技能、單體增益技能、群體增益技能、單體減益技能、群體減益技能。
4.2.1 戰(zhàn)斗技能使用判定基本流程
這里主要列舉分析一個近戰(zhàn)類怪物NPC戰(zhàn)斗技能使用的流程。請參看下面的流程圖3。
使用戰(zhàn)斗技能分為:對敵使用技能和對友使用技能。
4.3 怪物NPC追擊判定
當(dāng)玩家角色離開怪物攻擊范圍后,怪物會選擇追擊。具體追擊條件一般設(shè)定為兩種:
玩家角色離開怪物攻擊范圍;該玩家A在怪物仇恨列表里排第一位,將繼續(xù)追擊玩家A,達(dá)到怪物的進(jìn)攻范圍就實行攻擊。
4.4 怪物NPC逃跑判定:
4.4.1 逃跑與否判定
據(jù)該怪物的“逃跑率”進(jìn)行判定,逃跑率越大則逃跑的可能性越高,取值范圍0.00~1.00。當(dāng)HP(血量)值在15%-20%之間時進(jìn)行第一次逃跑判定;如果第一次判定逃跑失敗,當(dāng)前HP值在5%-10%之間時進(jìn)行第二次逃跑判定。根據(jù)該怪物的“逃跑率”進(jìn)行判定是否逃跑成功。如果超出HP值判定范圍,出現(xiàn)范圍溢出,將自動失去逃跑判定機(jī)會。根據(jù)怪物NPC的具體特性設(shè)置怪物逃跑方式:徹底逃跑,根據(jù)該怪物的“逃跑率”進(jìn)行判定,逃跑率越高越易逃跑。逃跑成功后仇恨列表內(nèi)容將全部清除。
4.4.2 逃跑方向判定
當(dāng)怪物NPC的HP值下降到一定百分比時,在AI設(shè)計中往往會設(shè)計讓該怪物NPC選擇逃跑,以擺脫玩家角色的繼續(xù)攻擊。AI設(shè)計基本原則通常以下三點:
(1)與玩家角色當(dāng)前相反的方向逃跑。
(2)逃跑范圍必須滿足始終不超出“怪物生成區(qū)域”。
(3)盡可能往最近同伴位置逃跑,并且使用“呼叫”使周圍同伴前來援助。
5 結(jié)束語
以上涉及到的內(nèi)容主要是怪物NPC的AI系統(tǒng)核心框架。根據(jù)各種游戲設(shè)計思維的不同,游戲設(shè)計師們?yōu)榱俗層螒蛑蠳PC的表現(xiàn)出與其他游戲的差異性使其表現(xiàn)得更加豐富多彩,這就需要他們進(jìn)行更多更為細(xì)節(jié)化的AI設(shè)計工作。以當(dāng)今游戲的發(fā)展趨勢來看,隨著廣大玩家對游戲的可玩性要求越來越高,相信在未來的游戲中NPC的AI系統(tǒng),將會設(shè)計得更加精彩,帶給玩家更多的驚喜和快樂!
參考文獻(xiàn):
[1] 亞歷山大. 大型多人在線游戲開發(fā)MASSIVELY MULTIPLAYERGAME DEVELOPMENT[M]. 北京:人民郵電出版社,2006.
[2] 方約翰. 人工智能在計算機(jī)游戲和動畫中的應(yīng)用—認(rèn)知建模方法[M]. 清華大學(xué)出版社,2004.6.
[3] Tom Meigs. 頂級游戲設(shè)計-構(gòu)造游戲世界[M]. 北京:電子工業(yè)出版社,2004.5.
[4] Geroge F.Luger. 人工智能:復(fù)雜問題求解的結(jié)構(gòu)和策略[M]. 北京:機(jī)械工業(yè)出版社,2004.1.