美文网首页
RVO避障的探究

RVO避障的探究

作者: overflow_e4e4 | 来源:发表于2019-06-19 15:29 被阅读0次

    RVO避障的探究

    如果战斗中有数百个单位,不管是避障还是寻路,这个数量已经不适合在服务器端进行所有运算了,假设需要同时进行100场战斗,一场战斗400个单位,总4w个单位。假设后端逻辑20帧/秒,要在这1/20秒内tick4w个单位的逻辑,我觉得是不可能的。所以改成后端只做1个单位的逻辑,前端将这一个单位行为丰富化变为一个部队。之前在游戏寻路和避障探索文中提到了这一算法。这个算法可以根据在教学网站和一些比较好的博客学习RVO算法
    这里讲一下我遇到的问题

    1. 我方单位和对方单位需不需要避障

    原来写demo的时候,我是将所有单位单位避障的。这样的话就会有问题,假设两个单位是正对面即将碰撞的,就是一般战斗中敌方和我方单位相撞而打起来的情况,在这情况下如果这两个单位相互避障将都无法运动,因为他们的行为目的就是靠近甚至相撞,而如果避障的话得目的相反。这就矛盾了,最后用RVO算法算出的双方速度都将是0。所以我方单位和对方单位不能避障,那怎么避免他们重合?只要设定攻击范围是略大于物体半径的,当敌对两方单位靠近到一定距离就会停止移动,并开始攻击,这一点是可以通过自己的游戏逻辑实现的。但是这样并不能保证完全不重合,因为每次移动的距离有可能比较大。

    2. RVO的每次移动精度

    官网给出的两个例子中,其中有一个例子是

    image.png 图中250小圆点,通过RVO可以使这250个单位都无碰撞的运动到到对面的坐标。但这只是理想情况,因为一些周围避障的一些干扰,实际上当单位多时,一个单位很难完全运动到自己的目的地,所以根据自己的情况允许当物体达到目的地的半径xx范围内就算抵达目标,否则一些情况运动将无法停止。

    相关文章

      网友评论

          本文标题:RVO避障的探究

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