Unity 万人寻路(dots版本)

这篇具有很好参考价值的文章主要介绍了Unity 万人寻路(dots版本)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

时间:2023-7-29

北京下雨,公司停电,回家早了,更新一下。

寻路模块,还是前前后后,打磨了2个月,中间穿插着搞很多其他的功能,有些螺旋迭代的味道。

进入正题:

1,需求简介:

设计团队,会从游戏性角度考虑,提出很多需求。

基础的需求:

1,单位之间的规避,模型不能穿插

2,建筑物规避,模型不能穿插

3,寻路目标,移动向地方基地、靠近附近敌人

4,单位不能闪烁、卡顿(这也是常见的寻路抖动问题)

更进一步的需求:

1,碰撞等级

      1.1  高等级兵种,不会被低等级兵种卡住

      1.2  画面层次感,高级单位要推开低等级单位

2,快速包围

        2.1 以单个单位为例,当前方有己方单位,要像两侧规避

        2.2 包围大型单位,比如地方基地,包围的速度、阵容画面都要考虑

3,快速散开

        3.1  当出兵点拥挤了大量同等级单位,要快速散开;

        3.2  同时中线的单位数量,像两侧要依次递减

2,查阅到的资料:

1,RVO2:

来自:GitHub,

性能承载:

5k 30FPS,7k 20FPS。虽然不够理想,但也比传统的UnityMonoAgent好多了。

弃用原因:

Rvo2 仅仅是避障,并不是真正意义上的寻路。

如果面前有刚性障碍物,单位会卡住,而不是绕开。

提一下为什么Rvo2卡顿:

Rvo2的原理是线性规划、切割可移动空间,单位越多,切割的细腻,代价就是性能了。

虽然,Rvo2是包含了多线程的,性能依然是堪忧的。

2,AgentsNavigation

来自:UnityStore 

Agents Navigation | Behavior AI | Unity Asset Store

Unity 万人寻路(dots版本),unity,游戏引擎

性能承载:

8k 30FPS,13k 20FPS

弃用的原因:

达不到我们5万人的寻路需求。

3,FlowField

来自:youtube

https://www.youtube.com/watch?v=I1KX6YM_GeI&t=130s

Unity 万人寻路(dots版本),unity,游戏引擎

性能承载:

异常。7k 30FPS,但是当众多单位汇聚到一起,FPS便会暴跌。

弃用的原因:

FlowField 仅仅是在Rvo2的基础上,添加了寻路,性能并不会有太多提升。

同时,FlowFiel 比UnityDots出现更早,官方并没有 Dots版本的。

3,我们的解决方案:

我们是通过自研解决问题的,并没有采用外部的插件

首先推荐一个链接,讲了寻路算法的演化

避障算法 - VO、RVO 以及 ORCA (RVO2)|移动_新浪新闻

1,ECS设计

bake对象时,添加phyCom组件,

在phySystem中计算碰撞,在moveSystem中计算移动、以及转向

2,phyCom 结构

包含单位半径、碰撞等级、拥堵状态、用于计算的中间数据

3,phySystem 逻辑

拥堵状态的检测:统计到自身半径内单位大于4,标记为拥堵

速度控制:拥堵时,速度降低;非拥堵时,恢复原始速度

周围单位统计:用数学dot、cross 判定前后、左右。

        unity提供了优化后的数学库,用 math.dot、math.cross ,在job中运行效率更高。

碰撞计算:    根据周围单位的方向、距离,累积推力。

离散计算:   

         何时向左侧移动,

        如果前方单位拥堵,右侧单位也拥堵,左侧单位为空,添加左转的辅助力

        何时向右侧移动,

        如果前方单位拥堵,左侧单位也拥堵,右侧单位为空,添加右转的辅助力

Unity 万人寻路(dots版本),unity,游戏引擎

 引力计算:

        如果周围有单位,像两侧移动,给自己添加2/3的引力。

        这样便有 队形散开的效果

  碰撞等级:

        高等级的单位,忽略低等级的单位,不计算对应逻辑便可

4,moveSystem 逻辑

       合力计算 = 基础速度+碰撞推力+离散辅助力+建筑物推力 

        当然,这里是思路简介,实际的辅助力会更多。

4,一些作者的话

碰到需求后,先找找资料,减少研发周期、试错成本。

查阅资料后,要整理。验证资料,要耐心。

没有什么现成的东西,让你去CV。

真正的技术,也是牢牢锁在公司的内网库。出于保密,他们也不会公开。

我曾经在百度、bilibili看到他们展示技术,他们做的,就是我们要的。但有粉丝问xxx怎么做,被采访的开发者,只说了5个字,甚至连方向都没说。

我们要自己去 理解需求、查阅资料、组装、设计、改良自己的项目。

资料渠道比如:

baidu、youtube、google 、unity forums、bilibili

国外开发者,会分享一些教程。甚至一些研发历程。

看他们的视频、他们的博客、他们视频简介的说明、也可以勇敢的去邮件交流。

粘贴一个思路链接:

https://www.youtube.com/watch?v=ALL7AQ1MRas

Unity 万人寻路(dots版本),unity,游戏引擎

 

没有做全局规划。

他的工作方式是,每个单位,在一个小半径内环顾四周,

吸引附近单位的质心,并前往同一个目的地。

为了不与附近的单位重叠,他也会排斥附近的单位

根据实体间距离的增加,而衰减

最后,平衡这些所有的力文章来源地址https://www.toymoban.com/news/detail-721092.html

到了这里,关于Unity 万人寻路(dots版本)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Unity DOTS物理引擎的核心分析与详解

    Unity DOTS物理引擎的核心分析与详解

    最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们来给大家分享和介绍一下这个物理引擎的使用。 Unity.Physics的设计哲学 Unity.Physics是基于DOTS设计思想的一个高性能C#物理引擎的实现, 包含了物理刚体的迭代计算与碰撞检测等查询。Unity.Phy

    2024年01月16日
    浏览(10)
  • DOTS Unity.Physics物理引擎碰撞查询核心分析

    DOTS Unity.Physics物理引擎碰撞查询核心分析

      最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们给大家分享和介绍一下这个物理引擎的碰撞查询以及核心相关概念。 Unity.Physics碰撞查询概述   碰撞查询(Collison Qurey)是Unity.Physics物理引擎中的一个很重要的功能。很多游戏逻辑都需

    2024年04月25日
    浏览(12)
  • DOTS Unity.Physics物理引擎的核心分析与详解

    DOTS Unity.Physics物理引擎的核心分析与详解

    最近DOTS发布了正式的版本,同时基于DOTS的理念实现了一套高性能的物理引擎,今天我们来给大家分享和介绍一下这个物理引擎的使用。 Unity.Physics 的设计哲学 Unity.Physics是基于DOTS设计思想的一个高性能C#物理引擎的实现,  包含了物理刚体的迭代计算与碰撞检测等查询。Unity.

    2024年03月18日
    浏览(15)
  • DOTS介绍+Unity DOTS-MAN小游戏项目实战

    DOTS介绍+Unity DOTS-MAN小游戏项目实战

    DOTS是Unity在17年左右提出的一个概念,其核心是ECS。 提示:以下是本篇文章正文内容,下面案例可供参考 全称:(Multi-Thread)Data-Oriented-Tech-Stack (多线程式)数据导向型技术堆栈 实体组件系统(ECS) - 提供使用面向数据的方法进行编码的框架。在Unity中它通过Entities软件包进行分发,

    2023年04月13日
    浏览(10)
  • Unity 2022 版本 寻路 NavMesh

    Unity 2022 版本 寻路 NavMesh

    官方教程地址 https://docs.unity3d.com/Packages/com.unity.ai.navigation@1.1/manual/index.html 首先装包 先给地图 和 阻挡 设置为静态 然后给地上行走的地方 添加组件 可以直接bake 然后会显示蓝色的可行走路径 player 添加插件 然后给角色添加脚本 搞定 场景内添加两个圆柱体 并设置为静态 起始

    2024年02月07日
    浏览(9)
  • Unity DOTS《群体战斗弹幕游戏》核心技术分析之3D角色动画

    Unity DOTS《群体战斗弹幕游戏》核心技术分析之3D角色动画

    最近DOTS发布了正式的版本, 我们来分享现在流行基于群体战斗的弹幕类游戏,实现的核心原理。今天给大家介绍大规模战斗群体3D角色的动画如何来实现。 DOTS 对角色动画支持的局限性 截止到Unity DOTS发布的版本1.0.16,目前还是无法很好的支持3D角色动画。在DOTS 的baker过程种,

    2024年02月04日
    浏览(12)
  • 十八、Unity游戏引擎入门

    十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(41)
  • 使用团结引擎开发Unity 3D射击游戏

    使用团结引擎开发Unity 3D射击游戏

           本案例是初级案例,意在引导想使用unity的初级开发者能较快的入门,体验unity开发的方便性和简易性能。       本次我们将使用团结引擎进行开发,帮助想体验团结引擎的入门开发者进行较快的环境熟悉。      本游戏是一个俯视角度的射击游戏。主角始终位于屏幕

    2024年01月19日
    浏览(39)
  • Unity、UE、Cocos游戏开发引擎的区别

    Unity、Unreal Engine(UE)和Cocos引擎是三个常用的游戏开发引擎,它们在功能和特性上有一些区别。以下是它们之间的主要区别: 编程语言:Unity使用C#作为主要的编程语言,开发者可以使用C#脚本进行游戏逻辑编写。Unreal Engine主要使用C++作为编程语言,但也支持蓝图系统,允许

    2024年02月22日
    浏览(39)
  • Unity vs Godot :哪个游戏引擎更适合你?

    Unity vs Godot :哪个游戏引擎更适合你?

    游戏引擎的选择对开发过程和最终产品质量有着重大影响。近年来,Godot和Unity这两款引擎受到广泛关注。本文将从多个维度对两者进行比较,以期为开发者提供正确的选择建议。 Godot和Unity都有各自的优势,没有绝对的好坏之分。Godot开源免费,上手简单,更适合2D和小型游戏

    2024年01月23日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包