NpcServer,Npc服务器,负责Npc的AI处理。
把关于Npc的AI单独拿出来处理,主要是基于效率的考虑,并且如果npcserver宕机,马上重启,并不导致其它服务器宕机。把npc的处理从场景中拿出来,场景上的开销主要就是和NpcServer的数据交互了,NpcServer和场景服务器上,不管是哪个服务器上的npc数据变化,都要同步到另一个服务器上。在npc处理中,npc的寻路是最耗时的,在之前自己的帖子里也讲述了A*寻路失败的耗时,所以很有必要把这个拿出来,当时在公司的服务器上测的,4核3.33GHZ,8G内存,A*耗时太大,并且策划想让npc能走很远的路,还加入了区域寻路(navigation mesh)的方法。总之呢,就是策划不能配置很多npc同时寻路的活动。比如怪物冲城,一次招几百个npc,并且距离很远。寻路就说这么多,在npc处理的时候,还有很多处理,着重说AI了。
每个具有AI的npc携带一个状态机,根据它的AI配置去执行自己的动作,比如有一个AI:
<aimove_random>
<event= enemy_close switch = attack>
<aiattack>
<event= enemy_lose switch = move_random>