GameServer游戏AI(四)


一、寻路算法

基于unity的navmesh寻路,用于将unity中的三角网格行走层数据导入服务器中,用于服务器进行怪物的AI、玩家寻路、技能战斗等判断。寻路方式采用A*算法。服务器算法参考game-ai项目,客户端操作参考Unity NavMesh数据导出演示客户端

1. 客户端导出navmesh数据操作

  1. 将地图取名为map101,创建行走层对象xingzouceng,添加Mesh Renderer,Mesh Filter,Mesh Collider组件
  2. 烘培行走层对象
  3. 点击测试地图大小,修改地图范围
  4. 点击生成巡逻数据
    操作窗口
    客户端地图

2. 服务器寻路操作

  1. 在unity客户端工程中将生成的101.navmesh数据复制到工程目录中,运行服务器检测客户端
    服务器寻路

3. 寻路方式

1. 多边形寻路

多边形寻路参考PolygonNavMesh 原理:

  1. 将unity导出的数据生成凸多边形
  2. 找出所有凸多边形共享的边
  3. 使用A*算法找出起点到目标点所经过的多边形列表
  4. 使用漏斗算法找出顶点坐标

unity寻路网格导出脚本PolygonNavMeshWindow

2. 三角形寻路

三角形寻路参考TriangleNavMesh 原理同多边形

3. 性能对比

  1. 多边形寻路和三角形寻路由于原理相同,性能消耗差不多,由于多边形合并了三角形,速度稍微快一些;顶点寻路相比于多边形寻路慢了5~40倍
  2. 多边形寻路需要导出的寻路数据在行走层中没有额外的顶点,共边顶点坐标需要一致,顶点寻路由于由于采用阻挡区三角形顶点寻路,因此没有此限制,但是增加了额外的阻挡区数据
  3. 多边形寻路支持3D寻路,顶点寻路只能平面寻路

二、行为树

简单行为树封装用于自己项目,源码参考gdx-ai。行为树设计采用java脚本和XML配置文件实现
XML使用参考:BehaviorTreeTest

BehaviorTreeManager.getInstance().parseBehaviorTree(path);
		BehaviorTree<Person> behaviorTree 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值