美文网首页
A\*和RVO入门

A\*和RVO入门

作者: overflow_e4e4 | 来源:发表于2019-05-31 17:42 被阅读0次

游戏寻路和避障探索

最近需要实现一个后端控制逻辑的多人多兵种的自动战斗AI。其中就需要涉及到寻路和避障的问题。这里简单记录一下遇到的问题和解决方案。

1. 寻路

说到寻路,首先想到A*,我们把地图抽象成了格子就像图中所示

A*寻路路径 ,至于A*算法如何编写已经他的原理就不再赘述。我一开始对多物体寻路的做法是,把所有物体也看做障碍物,这样多物体之间就不会发生碰撞。这样的好处是代码逻辑非常简单,缺点是增加了地图的复杂度,即使在小地图上A*的成本也很高。用Jprofiler在一个40*45的地图上,200个战斗单位每个物体每次寻路需要耗费1000多微秒(虽然开启了Jprofiler检测性能程序会比平时运行慢很多)也就是1毫秒左右,这样如果50毫秒为1帧,每帧只能寻路50个单位,这样是不满足需求的(在windows开发机器上测的,cpu是i7-6700 3.40GHz)。所以把所有物体也看做障碍物这样是不不可行的。

2. 避障

如果不允许把单位看成障碍物,那物体之间就要用到避障算法,由于之前没有接触过这个话题,所以只能在网上查找到好的做法。一番查找后我选择了RVO算法,这种算法把物体抽象成圆形物体,有半径和速度,通过速度和半径预判两物体是否相撞,如果相撞就转变方向,从而实现避障。(该算法的教学网站开源的java版本)。用了避障算法后就不用把物体看做障碍了。经过我的测试每次避障的消耗在14微秒左右,效率不错!并且这个算法的官方demo中也可以支持同时避障移动圆形物体和静态的矩形障碍物,我认为如果游戏中如果只存在少量的方块形障碍物的时候,不使用其他寻路算法直接采用边避障边寻路的方式也是可行的。

相关文章

  • A\*和RVO入门

    游戏寻路和避障探索 最近需要实现一个后端控制逻辑的多人多兵种的自动战斗AI。其中就需要涉及到寻路和避障的问题。这里...

  • C++之RVO返回值优化

    什么是RVO优化 RVO的全称是Return Value Optimization。RVO是一种编译器优化技术,可...

  • 强化学习链接

    2019-01-19 避碰算法 RVO多目标避碰算法python RVOpython RVO2 强化学习框架 op...

  • C++ RVO

    刷知乎的时候看到这个问题,C++函数返回值拷贝问题?,觉得有趣,因此写了这篇博客。 函数如何返回值 函数返回值的传...

  • RVO(Reciprocal Velocity Obstacle

    算法原理演示等地址:http://gamma.cs.unc.edu/RVO/全英文的理解起来有些朦朦胧胧,英语水平...

  • RVO - Reciprocal Velocity Obstac

    https://www.cnblogs.com/big-zhou/p/4733632.html unity 的A*...

  • Copy Elision、RVO、NRVO

    Reference:Copy ElisionReturn Value OptimizationRVO和NRVO的区...

  • C++之返回值优化

    返回值优化(Return value optimization,缩写为RVO)是C++的一项编译优化技术。它最大的...

  • Unity RVO实战系列:RVO动态避障技术方案介绍

    前言 对惹,这里有一个游戏开发交流小组[https://link.zhihu.com/?target=https%...

  • C++编译优化笔记

    本文是我在阅读文献或者代码中,关于编译优化的一些简单笔记。 RVO:即Return Value Optimizat...

网友评论

      本文标题:A\*和RVO入门

      本文链接:https://www.haomeiwen.com/subject/yvbwtctx.html