网站首页 > 技术教程 正文
在众多寻路算法中,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 欧几里得算法 最大公约数欧几里得算法
你 发表评论:
欢迎- 07-01类似于STM32之类的单片机,RTOS比裸机真有那么大优势?
- 07-01单片机系统按键硬件、软件设计技巧
- 07-01单片机键盘消抖“独门”汇编方案分享,不用延时还能用什么?
- 07-01单片机引脚功能介绍(单片机引脚工作原理)
- 07-01单片机与外设的交互(单片机与电脑交互)
- 07-0126单片机的最小电路介绍(单片机最小电路图pcb)
- 07-01汇编入门第一篇,小白也能看懂(汇编rl)
- 07-01单片机简介(arm单片机)
- 最近发表
- 标签列表
-
- 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)
本文暂时没有评论,来添加一个吧(●'◡'●)