一、描述
        TW项目是一个拥有较广阔野外空间的SLG游戏,玩家的军队方阵可以在野外进行长距离行军、短距离自由行军、占领要塞、驻扎、形成战斗阵型战斗等行为。其中,野外的山脉、河流等会产生静态阻挡,可能会用到navmesh寻路;而由玩家把守的要塞、由玩家在空地上的驻扎行为,会在野外地图上产生动态阻挡;自动形成战斗阵型等行为,可能会兼用鱼群寻路算法或者RVO避障寻路算法。
        每个服务器活跃军队方阵可能有几万个,每天产生的长距离寻路请求可能达几十万或者百万个,而用常规的A*寻路、navmesh寻路算法计算量巨大,并且很多长寻路是由服务器端计算或者校验,影响服务器效能,所以我们必须找一个快速长距离寻路、校验的方法。由于玩家可以自由行军,产生的短距离寻路比长距离寻路数量更多,所以我们必须找一个能快速校验短距离路径的方法。由于在野外会产生动态阻挡,随时挡住长/短距离寻路的路径。
        本文给出了对于问题的分析和解决这些问题的方法。

二、需求
1、前端长距离行军寻路
2、后端长距离行军寻路(由于有些军队方阵所属于的玩家不在线,需要在服务器启动时或者玩家离线前有任务委托时寻路)
3、对前端长距离行军寻路的校验
4、前端短距离行军寻路
5、后端短距离行军寻路
6、对后端长距离行军寻路的校验
7、行军中遇到动态障碍物(要塞、驻扎的敌人)后停止
8、对战时形成战斗阵型(如步兵在前,工兵在后等)
9、军队方阵有最大密度,单位区域内达到最大密度会形成阻挡
10、隔障碍物(如河水)远距离攻击
11、追击(追击者最优路径)
注:以上所有需求是2D寻路

三、最优实践步骤
对于需求1-6,下面的第1,2,3步骤可以全部解决。
1、用navmesh寻路算法的第一步,为野外地图创建寻路面片并且优化,达到面片总数量最少、单个面片面积最大(要保证面片是凸多边形)即可;
2、用蚁群寻路算法、或者IP地址寻路算法、亦或者带权重网状递归寻路算法,计算形成静态网状路图,保存为数组,用来求寻路粗路径;
3、用漏斗寻路算法对第2步的粗路径计算得细路径(此步骤即可一次计算到终点也可以逐步计算);
4、对于需求7,军队方阵行军过程中,后端每隔一定的时间用第3步算法寻找未来一定时间内是否有动态阻挡。
        4.1)先按时间计算出长度;
        4.2)当前位置为起始点与最终目标地点拉直线,长度在本面片内的直接计算下一目标终点,计算完毕;
        4.3)长度超出本面片的,与下一面片连相交的直接按4.2方法计算下一目标终点,如果下一目标点在本面片内,则计算完毕;
        4.4)4.3步骤中与下一面片不相交的,则连接边线段的近点为折线点,这个点也是下一个起始点,重复4.3,直至到达4.1计算的长度或者到目标地点,计算完毕;
        4.5)4.3步骤中与下一面片相交,但是计算完下一目标点不在本面片内,以与再下一面片连接边的交点为起点,重复4.3,计算完毕。
        注:因为第4步所谓一定的时间,是一个较短的时间(如1秒)所以路径总长度不会太大,又由于第1步保证了面片面积尽量大,所以第4步的运算通常在4.1就结束了,不会有太大的效率问题。
5、对于需求8,由于只是前端表现,不牵扯后端严格校验,所以可能会采用鱼群算法寻路。
6、对于需求9,同样采用第3,4步的计算方法,并且在短寻路后查看一下目标位置人数,如果超出规定数量后则不再前进。
7、对于需求10,与战斗计算相关,与寻路不直接相关
8、对于需求11,也是前端每个一定时间,计算当前位置与要追击目标的最优路径,如果比当前路径优,则发给服务器并按新路径行军。

四、拓展
        寻路的算法有很多,各自应用在不同的场景。本次最优实践筛选了十几种不同的寻路算法,本文参考、采用或者部分采用了其中4,5种,也将一些算法拆解只用其中一部分,然后还自创了一些寻路算法,自创部分是最大化的用空间换取时间,最终达到了后端的长距离行军粗路径寻路CPU消耗为0的程度,然后在军队方阵行军时用很小的代价逐步细化路径。

五、专有名词解释
1)工会/帮会:由大概40玩家组成的组织,互为友好阵营,可以一起做一些事情。
2)野外要塞:野外的狭小的口装区域(如桥、山谷、城门等等),可由工会占领,形成对本工会会员可以通行但对敌对工会会员产生阻挡。
3)驻扎:点击玩家的军队方阵后,有驻扎按钮,点击后原地驻扎,驻扎成功后形成阻挡。
4)长距离寻路:指跨越手机整个屏幕或者跨越若干个面片的寻路。短距离寻路与此相反。

TW项目寻路算法最优实践相关推荐

  1. 游戏人工智能——A*寻路算法实践

    A*寻路算法实践 一.题目背景 随着多媒体设备.虚拟现实.增强现实.物联网等技术的飞跃发展,计算速度与存储容量的日益提高以及相关软件的研究取得长足进步,人工智能的应用得以进一步推广发展起来.地图寻径问 ...

  2. 如何快速找到最优路线?深入理解游戏中寻路算法

    如果你玩过MMOARPG游戏,比如魔兽,你会发现人物行走会很有趣,为了模仿人物行走的真实体验,他们会选择最近路线达到目的地,期间会避开高山或者湖水,绕过箱子或者树林,直到走到你所选定的目的地. 这种看 ...

  3. 分级加权评分算法 java_荐书|智能风控:原理、算法与工程实践

    图书简介 风控领域是新兴的机器学习应用场景之一,其特点包括了负样本占比极少.业务对模型解释性要求偏高.业务模型多样.风控数据源丰富等. <智能风控:原理.算法与工程实践>一书共 8 章,包 ...

  4. 如何实现A星寻路算法 Cocos2d-x 3 0 beta2

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本文实践 ...

  5. [转]关于寻路算法的一些思考

    关于寻路算法的一些思考(1):A*算法介绍 物体的移动算法似乎显得很简单,然而寻路规划问题却十分复杂.考虑下面这个例子: 这个单位的初始位置在地图的下方,想要到达地图的顶部.如果物体所能侦测到的地方( ...

  6. android动画不占cpu如何实现,【实战总结】帧动画调优实践

    原标题:[实战总结]帧动画调优实践 原文链接:https://www.zybuluo.com/avenwu/note/876161 APP架构师整理发布,转载请联系作者获得授权. 1.背景 在做动画的 ...

  7. 深入理解JVM虚拟机10:JVM常用参数以及调优实践

    本文转自[JVM常用参数以及调优实践](https://blog.csdn.net/a724888/article/details/78367780) JVM常用参数选项 jvm 可配置的参数选项可以 ...

  8. unity学习:寻路算法(AStar算法)与简单AI(势能场估价算法)

    项目地址:https://github.com/kotomineshiki/AIFindPath 视频地址:多重寻路 综合寻路--包括攻击考量的寻路算法 GamePlay 这是一个<文明> ...

  9. 【智能车】从零写一份自己的完全模型智能车寻路算法(有手就行) --- 01

    有手就行的智能车视觉寻路算法 前言 被同学拉进了智能车完全模型组做智能车的上层视觉软件算法,在交流群里吹水很多人起哄说让写一篇博客来教他们怎么写寻路.众望所托,今天就开始了这一系列的更新,保证有手就行 ...

最新文章

  1. 城市大脑全球标准研究3:如何理解城市大脑中的“大脑”?
  2. SharePoint 2016 必备组件离线安装介绍
  3. 【ThinkPHP系列篇】ThinkPHP框架的介绍和搭建(一)
  4. 产品策划系列:洞察需求(四)
  5. Javascript中 toFixed 规则介绍及其改进方法
  6. 计算机应用与基础实践怎么考,自考计算机基础应用科目笔试和实践性考试怎么考...
  7. java calendar_Java Calendar complete()方法与示例
  8. RocketMQ源码解析-PullConsumer取消息(2)
  9. Leetcode 236.二叉树的最近公共祖先
  10. 机器学习非平衡数据集概述
  11. cubes第六篇-sql支持
  12. SPSS统计分析行业应用实战--SPSS 24.0新增
  13. C++ 隐藏窗口在任务栏的显示
  14. TOMCAT中文乱码
  15. ASP.NET_各个币种之间的汇率转换(实时)使用Yahoo汇率。
  16. QQ、微信、QQ浏览器UserAgent
  17. 计算机设计项目符号和编号,项目符号和编号
  18. 用python对S曲线加减速建模
  19. Linux系统时间、系统时区和时钟同步的部分理解
  20. 循环神经网络RNN论文解读

热门文章

  1. CSS 与 地图可视化 模糊注记 (十七)
  2. 特征工程——缺失值显示和填充(集中趋势(众数、平均数、中位数)、缺失值矩阵图、条形图、集中趋势填充)
  3. 第 1 集:招聘风云!
  4. 新浪导航(html+css)
  5. H5查看pdf文件(pdfh5)
  6. 安装HP WebInspect时,SQLServer2008安装不上咋办
  7. map与vector排序
  8. RouteOS开局初始配置整理 V1.1
  9. flutter 配置charles抓包
  10. 计算机第四章费用表,2014年计算机一级考试MSOffice第四章考点解析(10)