金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
NPC可分为两种:简单NPC和智能NPC,这两种NPC的处理逻辑不同。

这两种NPC的区别在于是否存在NPC AI脚本。
简单NPC没有AI脚本,只有NPC的移动,攻击的简单反应。
智能NPC是由AI脚本控制的。

从处理逻辑上看,简单NPC不需要独立的AI处理,而智能NPC具有独立的AI循环。
智能NPC处理时与人物角色相同,是一个对游戏世界作出反应的智能生物。
简单NPC与物品的处理相同,仅仅是一些数据,如果没有智能生物可以感知到它们时,
它们不需要存在,也不需要游戏主循环进行处理。
当智能生物的感知区域包含简单NPC时,它们才会实例化。

例如,两个智能NPC会相互攻击,不管周围是否有人物观察,
服务器总是在处理它们的移动和攻击。
而简单NPC如果周围没有智能生物的观察,它们是不存在的,
服务器不需要对无需感知的简单NPC进行处理。

智能NPC要求游戏主循环处理,应尽量减少数量。
如果智能NPC的行为是确定的,不需要时时处理,就应该转为简单NPC。
例如NPC的回血是确定的,t1时刻的血量已知,那么当它在t2时刻进入角色的感知时,
血量完全可以从时间差计算出来,没必要在t1-t2时段中时刻计算,
没必要为了计算回血而把它当作智能NPC。
如果该NPC能够在AI脚本控制下吃红药回血,服务器无法预测到回血量时,
该NPC就是智能NPC,必须时刻处理。

(金庆的专栏)


posted on 2010-07-23 15:19 金庆 阅读(1850) 评论(1)  编辑 收藏 引用 所属分类: 2. 网游开发

评论

# re: 简单NPC和智能NPC 2010-07-24 16:34 陈昱(CY)
感觉 真三国无双 中的兵力处理也差不多这样,
视野看不见的地图上,按照兵力、士气比例,按时间消耗;视野看得见的地方,就变成带ai的npc,按一次次具体的攻击消耗算  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理