終于進(jìn)行到這里了,由于Mathematics And Physics我只看懂了Floating-Point Tricks,并覺得里面說的東西有點(diǎn)繁瑣,其實(shí)現(xiàn)在很多引擎根本不會用到這些tricks,而且書內(nèi)也建議在不得已的情況下才使用,就不在這里介紹了。
其中的Real-Time Particle-Based Fluid Simulation with Rigid Body Interaction我還是打算嘗試好好看的,不過能不能看懂就是另外的事情了。一直比較遺憾的是,數(shù)學(xué)一直是弱項(xiàng),也許是阻礙成長的一個瓶頸吧。
那么,現(xiàn)在進(jìn)入 ARTIFICIAL INTELLIGENCE
3.2 Achieving Coordination with Autonomous NPCs
本篇講述了如何實(shí)現(xiàn)NPC和玩家對抗的時候,如何進(jìn)行NPC之間的協(xié)作,使得看起來像一個有組織有記錄的部隊。
首先拋出的解決方案是The Centralized Approach,由一個中央單元收集和分析玩家、NPC的所有信息,做出決策,然后給不同NPC下達(dá)不同指令,形成有組織的行動。NPC沒有靈活的決策權(quán)。
但是這個解決方案有一個問題,那就是隨著游戲系統(tǒng)的增大,中央單元的決策邏輯逐漸變得更復(fù)雜,消耗更多的CPU時間。因此文章拋出了一個Autonomous NPCs。
Autonomous NPCs是一個自治單元,能自我作出決策,并能和其它NPC交流并共享信息。
文章給出了多個在自治單元間交流和共享信息的方法,前面的方法都比較具體,后面的就比較抽象和籠統(tǒng)了,這也是一個由低到高的過程。
(a)Attack Slots
NPC在決策最佳攻擊位置的時候,總是傾向于最接近玩家的距離,因此玩家很可能就被包圍住了。Attack Slots就是用來解決這個問題的。它就像一個令牌用來規(guī)定每個NPC能接近玩家的最小距離。
形象的說,Attack Slot是以玩家為圓心的許多半徑不同的圓,這個半徑是NPC能接近玩家的最小距離。每個半徑只能容納一定數(shù)量的NPC,當(dāng)某個slot被其他NPC占據(jù)后,當(dāng)前NPC就只能選擇另外一個slot了。以這種方式來分散NPC,形成一種錯落有致又不難對付的戰(zhàn)斗。
(b)Exclusion Zones
雖然Attack Slots能解決NPC過分包圍玩家的問題,但是它們還是有可能選擇同一個攻擊位置,或者站在能擋住別人攻擊的地方。
Exclusion Zones是NPC用來標(biāo)記它領(lǐng)地的,即NPC當(dāng)前位置下一定半徑的圓,以及火力線區(qū)域,它將這些區(qū)域標(biāo)記為已使用,因此其他的NPC就不能進(jìn)入這些區(qū)域了。
這也在一定程度上分散NPC,并使它們有協(xié)作性,而不是相互妨礙。
(c)Trigger Systems
觸發(fā)器系統(tǒng),想必大家都知道的。此前,我多少有點(diǎn)把消息機(jī)制和觸發(fā)器機(jī)制相混淆,或者說他們本身就有很大的相似性。
這里所說的觸發(fā)器,就像是玩家或者NPC下的蛋,不屬于原有的角色,而是一個全新而獨(dú)立的對象了。并且,觸發(fā)器產(chǎn)生消息,但觸發(fā)器并非消息本身。
觸發(fā)器系統(tǒng)能夠很好的解決聲音和尸體的問題,NPC發(fā)出聲音,或者NPC尸體,都會生成一個觸發(fā)器對象,觸發(fā)器對象給周圍的角色發(fā)送某個消息,周圍的角色就對此作出了反應(yīng)。
(d)Enemy Events
消息系統(tǒng),NPC之間可以根據(jù)自身的情況發(fā)送消息給其他NPC,至于是否處理則看消息的優(yōu)先級以及其他NPC樂不樂意之類的。
(e)Player Mutex
對于NPC而言,玩家就是一份共享資源,加鎖的話,就可以控制同時打算攻擊玩家的NPC數(shù)量。
(f)Allowed Zones
這個用來定義每個NPC的活動范圍,以防止NPC為了追擊玩家跑出自己的活動范圍。
(g)BlackBoards
黑板系統(tǒng),又名知識共享系統(tǒng),NPC可以向黑白添加自己知道的信息,也可以讀取自己感興趣的信息,以作出相應(yīng)的決策。
黑板系統(tǒng)在NPC進(jìn)行資源共享方面相當(dāng)有用。
最后一篇了。自己知道,卻未必能寫出來。還是少說話,多學(xué)習(xí)為上。
posted on 2007-11-30 21:06
LOGOS 閱讀(1484)
評論(2) 編輯 收藏 引用 所屬分類:
《GAME PROGRAMMING GEMS6》讀書筆記