终于进行到这里了,由于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 阅读(1473)
评论(2) 编辑 收藏 引用 所属分类:
《GAME PROGRAMMING GEMS6》读书笔记