B星寻路算法

上传:wing_33010 浏览: 20 推荐: 0 文件:.c 大小:14.87 KB 上传时间:2022-07-13 18:08:59 版权申诉

在此把这个算法称作B* 寻路算法(Branch Star 分支寻路算法,且与A*对应),本算法适用于游戏中怪物的自动寻路,其效率远远超过A*算法,经过测试,效率是普通A*算法的几十上百倍。

通过引入该算法,一定程度上解决了游戏服务器端无法进行常规寻路的效率问题,除非服务器端有独立的AI处理线程,否则在服务器端无法允许可能消耗大量时间的寻路搜索,即使是业界普遍公认的最佳的A*,所以普遍的折中做法是服务器端只做近距离的寻路,或通过导航站点缩短A*的范围。

算法原理

本算法启发于自然界中真实动物的寻路过程,并加以改善以解决各种阻挡问题。

前置定义:

1、探索节点:

为了叙述方便,我们定义在寻路过程中向前探索的节点(地图格子)称为探索节点,起始探索节点即为原点。(探索节点可以对应为A*中的开放节点)

2、自由的探索节点:

探索节点朝着目标前进,如果前方不是阻挡,探索节点可以继续向前进入下一个地图格子,这种探索节点我们称为自由探索节点;

3、绕爬的探索节点:

探索节点朝着目标前进,如果前方是阻挡,探索节点将试图绕过阻挡,绕行中的探索节点我们成为绕爬的探索节点;

算法过程

1、起始,探索节点为自由节点,从原点出发,向目标前进;

2、自由节点前进过程中判断前面是否为障碍,

a、不是障碍,向目标前进一步,仍为自由节点;

b、是障碍,以前方障碍为界,分出左右两个分支,分别试图绕过障碍,这两个分支节点即成为两个绕爬的探索节点;

3、绕爬的探索节点绕过障碍后,又成为自由节点,回到2);

4、探索节点前进后,判断当前地图格子是否为目标格子,如果是则寻路成功,根据寻路过程构造完整路径;

5、寻路过程中,如果探索节点没有了,则寻路结束,表明没有目标格子不可达;

演示如下:

B*与A*算法的性能比较

寻路次数比较(5秒钟寻路次数)

B*与A*性能比较实例

1、 无障碍情况

此种情况,根据以上测试数据,B*算法效率是普通A*的44倍(左为A*,右为B*)

2、线形障碍

此种情况,根据以上测试数据,B*算法效率是普通A*的28倍(左为A*,右为B*)

3、环形障碍

此种情况,根据以上测试数据,B*算法效率是普通A*的132倍(左为A*,右为B*)

4、封闭障碍(目标不可达)

此种情况,根据以上测试数据,B*算法效率是普通A*的581倍(左为A*,右为B*)

上传资源
用户评论
相关推荐
AB算法
用XNA4.0平台上写得A*和B*算法,其中B*算法有BUG的!由于时间关系没修复,但解决一般简单的路径是没问题的。只提供参考了解B*算法用。具体思路解释看代码注释。(ctrl+a进行A星算法,ctr
ZIP
0B
2019-05-31 16:51
A算法B算法c++实现MFC
代码中实现了3种寻路算法AStar,AStar_Direct,BStar() 在VS2019环境下运行,建议以release方式运行,DEBUG没有调会崩溃
7Z
147KB
2020-11-28 08:02
Erlang B算法源代码B算法源代码
ErlangB星寻路算法源代码B*寻路算法源代码,由C++改写而来。效率是A星算法的几十倍到上百倍。做为服务端怪物寻路的最佳选择。
ERL
0B
2019-05-31 16:51
A算法
A*搜寻算法俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC的移动计算,或线上游戏的BOT的移动计算上。 其中里面的排序用二叉堆实现。 编译环境:VC
RAR
0B
2019-02-21 05:28
A算法A
寻路,经典A星算法(A*):1。采用静态内存方案,寻路过程不会出现动态内存分配,杜绝内存泄漏的可能2。CloseList采用直接寻址方式实现3。OpenList采用优化过的遍历查找插入算法,实现简单高
RAR
0B
2019-07-31 22:51
VB A算法VB A算法
VB中的A星寻路算法用了折半快速插入有序队列可以很快的添加结点数据数组是以距离从大到小的一个有序队列每次取数组中最后的数据,可以快速删除例如:redimpreserveA(ubound(A)-1)
RAR
0B
2019-09-10 00:38
unityAStarAA算法Demo
基于Unity5.4.4版本,随机障碍物,动态实现寻路,UnityA星寻路完整Demo
RAR
0B
2019-07-13 07:11
b算法
b星 bstart b* 寻路 完整的算法代码
RAR
0B
2019-01-20 04:09
A算法自由
如果你是做游戏方面开发的,这个是必不可少的,里面主要探讨的是思想
DOC
0B
2019-01-20 04:10
A算法迷宫
A star algorithm, maze pathfinding
RAR
0B
2019-06-26 04:08
VB A算法a
献给想用VB开发游戏的人,我本来想用VB做一个游戏结束和VB的相遇,然后进入另一个世界VC的世界,但是只差一点点就可以完成了,最后还是放弃了...自己的理想
ZIP
0B
2019-05-31 16:51
A算法自动
A星算法自动寻路
E
0B
2018-12-20 09:37
A系统
采用A星寻路,让任务自动采取路径寻路到敌人身边,以最近路径
RAR
0B
2019-04-02 16:28
a算法算法
a*算法绝对经典C#源码有不懂得可以问我
rar
0B
2019-04-27 13:02
aa
a星寻路!速度快
rar
0B
2019-07-22 18:12