网站首页 > 技术教程 正文
在众多寻路算法中,A* 的确是比较不错的。但在游戏寻路领域,A* 耗时过大,显然需要改进。
改进
我的想法是预先将地图按照一定的规则划分为多个区域,这些区域彼此连通,并且计算好彼此连通的区域之间的来往的消耗(预计算部分,经检测耗时极少)。
从几千个正方形组成的障碍矩阵中构造出一张数据量大大减少的带权连通图。
每次寻路时自动检测起始位置和终点分别在图中的哪两个节点,在很短时间内构造出一条最短路径。
接着,计算进入以及离开每个区域的比较适合的点,再经过路径平滑算法,得到的路径与传统 A* 没有明显区别,但是中间节点减少,耗时大大减少。经过计算,耗时为传统 A* 的 1/800 - 1/1000,取得相当显著的效果。而且对于 A* 其他的改进措施,也可以用在该改进方法上,如双向 A*,在较复杂的图中可以明显加快寻路速度。并且该寻路代码也可以放在非主线程中,影响更是可以忽略不计。
(改进 A* 路径)
(传统 A* 路径)
在障碍图中的信息发生改变时,可以重新进行计算,得出新的带权连通图,并且广播所有已经寻路完成但是还没有达到终点的物体,使其修改路径,耗时同样在可接受范围内。
总结
该 A* 改进算法是典型的以空间换时间的算法(虽然耗费的空间也很少,在游戏领域可以忽略)
接下去我会继续研究比如策略游戏中一个群体单位寻路算法的改进,因为他们无论起始点是否在同个区域,在带权连通图中总会经过相同的节点,这些计算完全可以缓存下来,减轻后面计算的负载。
猜你喜欢
- 2024-10-25 AMEYA360报道:智能扫地机器人 SLAM技术与A算法
- 2024-10-25 基于LFOA算法的相关向量机核参数优化
- 2024-10-25 定积分的换元法与分部积分法 定积分的换元和分部
- 2024-10-25 Apriori算法是什么?适用于什么情境?
- 2024-10-25 用Python写一个A*搜索算法含注释说明
- 2024-10-25 浅谈什么是分治算法 浅谈什么是分治算法是什么
- 2024-10-25 技术分享 | Prometheus避障—A_star算法代码阅读
- 2024-10-25 浅析机器人学位置与姿态之坐标系绕任意轴线旋转算法
- 2024-10-25 一文简介常见的机器学习算法 常见机器学习算法
- 2024-10-25 欧几里得算法 最大公约数欧几里得算法
你 发表评论:
欢迎- 最近发表
-
- 函数公式的7大潜规则,这次给你讲透了
- 数据逆向查找不止有vlookup,你该知道的三种逆向查询操作
- Vlookup函数怎么一次查找能返回多个结果?
- vlookup函数的嵌套你用过吗?一次可以引用3个表格的数据
- Vlookup函数的新用法,查询合并单元格,很多Excel高手都不知道
- 分明有数据,公式也没错,为什么vlookup还是会返回错误值
- 条件判断还在用if函数就out了,vlookup函数模糊查询一键完成
- EXCEL函数 VLOOKUP函数 HLOOKUP函数
- excel中vlookup函数的用法(excel中vlookup函数公式)
- 自动获取vlookup函数的第三参数,再也不用一列一列的数了
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)