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