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,必须时刻处理。
(金庆的专栏)