游戏AI的架构模型_第1页
游戏AI的架构模型_第2页
游戏AI的架构模型_第3页
游戏AI的架构模型_第4页
游戏AI的架构模型_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、游戏AI的架构模型游戏AI的架构模型运动层:AI的具体行为,比如移动决策层:决定AI下一时间步该做什么战略层:从集体层面对个体AI进行控制除此之外,还要结合动画系统,物理引擎,感知系统等,共同组成人工智能个体AI表21操控行为术语中英文对服衰英文术培中文术语H义Seek靠近使角色靠近目筹Fles离开使用色离开目标Arrival抵达当角色接近目标时使它减速Plimuil追逐使捕猫者追逐猫物Erode逃避使猎物逃离捕猫者Wandtr瞳机徘制使角色随机排翻PathFntlowil)g路也的使角色沿着某条削定路径移动(MkHtHtleAy加dcini:巴避开障碍使角色避开障碍物GroupBfh,廿欣1

2、组行为多知色成组的操控行为HqrUr雷达探测周隅相邻南色位置Sc|Mrali<Mi分离与春中等居库特适当距离Al师m产nt队列与群中邻居保持朝向一致Cohiraioii聚集成群聚集在一起Seek是最常见的AI行为,最简单的实现是给AI添加一个修正力使之向目标移动6中清花图教肓wwA,IHtj.|U4dUU中加tfFlee和Seek相反,通常我们都要设置一个Distance范围判断结束行为。用Vector3.sqrMagnitude向量平方长度,计算会更快Arrival到达目标减速至停止,可设置一个StopDistance,距离大于停止距离时给一个Force移向目标Pursuit追逐会预测

3、Target的未来位置,比如预测t时间内Target不会转向,AI将计算未来位置朝之移动。另外还可以用点乘计算夹角,判断双方是不是面对面Evade逃避。与Pursuit反向Wander随机徘徊。设置一个圆周半径,每帧给Target附加随机位移,比AI只按照预设好的路线移动更加真实FollowPath路径跟随。设置radius路点半经,让AI在路径间切换更加真实CollisionAvoidance避开障碍。向前射线检测障碍物的包围圈,产生一个排斥力。集体AI后中清花图教肓组行为:分离:避免局部拥挤队列:朝向附近同伴的平均朝向聚集:向附近同伴的平均位置移动Radar检测附近的AI角色(数学/Tri

4、gger)Separation分离。搜索领域内的其他邻居,计算两者间的向量并单位化,得到排斥力方向,排斥力大小与距离成反比Alignment队列。将AI的朝向纠正为和邻居一致,平均朝向减去当前朝向就是操控朝向Cohesion聚集。集体AI往往需要一个集体状态机,负责判断团队整体状态和动作各个角色则需要完成动作的多层状态机设置,比如这层行动路线,下层具体行为,下层角度速度细节AIDirector导演系统控制整局游戏流程更多实例暂略A*寻路A*(A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法,也是许多其他问题的常用启发式算法。注意是最有效的直接搜索算法,之后涌现了很多预处理算法(

5、如ALT,CH,HL等等),在线查询效率是A*算法的数千甚至上万倍。欧几里得/欧拉距离:多维空间两点间的距离,即直线距离曼哈顿距离:估计到目标格子之间的水平和垂直方格的数量和,即不走斜路地图,目标估计,代价,节点导航图:将地图用图表示1、基于单元的导航图将地图划分为多边形单元组成的规则网格。易于动态更新,但时间空间消耗都大2、创建可见点导航图先手工放置一些路径点,然后若路径点之间可视,就能以边连接。可以设置一些特殊点,适(3中清热图教肓©中清ze图教肓碑立,I0*gIU-4idtD庸tft合简单的寻路3、创建导航网格NavMesh将可行走区域划分为凸多边形。可以是多种多边形的组合,让

6、网格划分更加合理采用视线确定”方法,向前跳到视线最远途经点,对路径进行后处理,得到更平滑的路径效率高,空间小以基于单元的导航图为例,执行A*算法g(n):起始节点到当前节点n的代价h(n):当前节点n到目标节点的估计代价f(n尸g(n)+h(n)从初始状态经由状态n到目标状态的代价估计open表:待考察的结点的优先级队列,代价从低到高(可以不排序,只找最小值)closed表:已考查的结点列表开始时,Clos"表为空,而Open表仅包括起始节点由每次迭代中,A*算法将Opn表中具有最小代价值(即f值最小)的节点取出进行检直,如果这个节点不是目标节点,那么考虑该节点的所有8个相邻节点口对

7、于诲个相邻节点按下列规则处理:(I)如果它既不在。p«n表中,电不在Clewed表中,则将它加入Oppn表中;(2)如果它已经在Open表中.并且新的路径具有更低的代价值,则更新它的信息:(3)如果它已经在口必人表中,那么检查新的路径是否具有更低的代价值如果是,那么将它从Clmed表中移出.加入到Open表中,否则忽略口,第一步:取起始结点,将其8个邻接点加入Open,并将各邻接点的父节点设置为起始节点,起始点加入Close第二步:计算open表中结点的代价f=g+h,计算规则是:g:取父节点g值,根据n点和父节点的连接方式计算。如果是直角连接g+,对角连接g+=1.414h:采用欧

8、几里得距离/曼哈顿距离不考虑障碍物根据f大小来确定open表中下一个要被检查的节点第三步:取f最小结点,检查8个邻接点,障碍物点无视。e中清花图教肓.IlQ*gIU*。工由Etfr-计算各邻接点通过当前结点得到的新 规则同上g值)计算新结点加入open表已经在open表的,若新g值比原值大,不需更新。若小于原值,则更新g,f,父节点,而不用更新h已经在closed表的,按上图文字处理第四步:对于具有相等的最小代价值f的结点,可任选一个计算。循环直到终点其他1 .对于已经计算的(存在于open或closed表中)节点,无需再次计算,因为选择那些节点只会绕远2 .障碍物节点加入closed表,对于

9、被open或closed表包围的节点)也加入closed表中和Dijkstra算法的区别:Dijkstra是BFS,不会去预估到终点的距离,因此在有多个权值相等的路径时会搜索很多不必后中清花图教肓要的结点。而且没有考虑障碍物A*是按照启发函数,向着目标搜。很适合寻路Dijkstra会求出所有点的最短路径,得到理论上的最优解,而A*则只会找需要计算的点。结果是A*更快,但是不一定是最优解Unity寻路AI使用NavMeshAgent组件如果要配合物理引擎使用,则AI需要有kinematic的刚体)表示刚体由nav控制和Animator配合使用的话)最好不要用rootmotion将地面勾选Navi

10、gationStatic)再打开Navigation视图,点击bake即可看到蓝色可达区域NavigationArea可以设置object为不同Area,会用不同颜色表示可以在NavMeshAgent中修改其可以行走的AreaOffMeshLink添加跳跃点(手动路径)默认的NaveMeshAgent组件上面是勾选了AutoTraverseOffMeshLink(自动通过OffMeshLink)选项的。这样的意思是人物只要到了OffMeshLink的开始点,就会自动的移动至ijOffMeshLink的结束点。NavmeshObstacleenable时不可通行,false时可通行。此情况下物体

11、不会暂停寻路还有很多用法,这里就暂不详述了AI感知事件AI往往要感知视觉、听觉等信息来决策下一步的行为,其中又包括位置信息,对象属性信息,自身信息等1、轮询(主动查询信息)轮询类似编程中的switch-case,是AI周期性地查询所需要的信息,轮询非常常见,容易维护,但有效信息率低,花费性能较多轮询中心(没有必要每个AI都进行一遍查询,而是集中处理需要查询的信息)2、事件驱动(被动得知信息)事件是一种高效的消息传递机制,由事件分发者主动通知每个感兴趣的AI,这样就使AI准时获得有效信息可以做一个中心检测系统(事件管理器),记录每个AI感兴趣的事件,并通知他们,还方便了调试3、Trigger触发

12、器触发器其实和事件比较接近,相比之下,触发器是事件的本源,比如监听声音的声音触发器,检测观察物的视觉触发器,等待时间的时间触发器Trigger常用一个半径计算检测的范围,Sensor感知器则定义了枚举类型和变量,保存了事件管理器视觉感知:圆锥形探测听觉感知:衰减范围。而感知器也有对应的感知阈值触觉感知:碰撞器记忆感知:记忆List+Time留存时间FSM有限状态机finite-statemachine是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。最简单的用enum+switch即可实现在Unity中,我们可以用Animator或其他FSM框架实现可视化状态机但是对于一些复杂的AI,用FSM图十分繁琐,效率低且容易出错,对一般的AI来说,FSM就足够了BehaviorTree行为树行为树是由行为节点组成的树状结构对于FSM,每个节点表示一个状态,而对于BT,每个节点表示一个行为。行为树层次清晰,易于模块化,封装性好,可重e中清花图教肓用,是一种效果理想的AI编辑器在BT中,节点是有层次(Hierarchical)的,子节点由其父节点来控制。每个节点的执行都有一个结果(成功Success,失败Failure或运行Running),该节点的执行结果都由其父节点来管理,从而决定接下来做什么,父节点的类型决定了不同的控制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论