特别大的地图A*算法优化思路

特别大的地图A*算法优化思路

搜索优化:

小技巧:

1.openList(用于存放可以搜索的点)使用优先队列来实现。

优先队列(小顶堆):插入一个点的复杂度为O(logN),取出一个最值点复杂度为O(1)

2.深度限制:有时要搜的路径非常长,利用A*算法搜一次付出的代价很高,造成游戏的卡顿。那么为了保证每次搜索不会超过一定代价,可以设置深度限制,每搜一次则深度+1,搜到一定深度限制还没搜到终点,则返还失败值。

针对大地图优化:

1.把地图瓦块变大减少节点数量。

2.多线程寻路(适用于多个角色同时寻路)。

3.把大地图分块,分成n个小地图:

如果起点和终点相隔几个小地图,那么寻路流程如下:

step1:根据起点和终点的方向算出走出当前小地图出口点,用A*寻路到出口点。

(注:当前小地图出口点也就是要经过的下一个小地图的入口点)

step2:让角色向下一个小地图的入口点移动,(移动的过程中可以继续寻下个小地图的出口路径,或者到达出口点后再寻路)

step3:若下一个小地图不是终点所在的地图,那么把这个入口点作为起点重复step1:根据入口点到终点的方向计算出,当前小地图的出口点,用A*找到出口点的路径。

若一个小地图是终点所在小地图那么就再用A*寻路到终点即可。

可以走到每个小地图的入口点后再对这个小地图的出口寻路

4.网格地图简化成路标形式(减少网格节点)

注:变成路标形式后每个节点之间的路径不再是1了,而是节点之间的实际距离

你可能也喜欢

Linux获取设备信息:从实用到强大(linux读取设备信息)
36500365体育在线投注

Linux获取设备信息:从实用到强大(linux读取设备信息)

📅 08-22 👀 1093
苹果Apple发布 macOS Tahoe 26 系统正式版更新 – 附升级教程和系统下载链接
世界杯足球比赛在哪个频道直播以及如何收看完整赛事信息解析
保罗·沃克个人资料(简介,身高,年龄)
36500365体育在线投注

保罗·沃克个人资料(简介,身高,年龄)

📅 08-20 👀 9905
世界最重金属排名:黄金竟然垫底
beat365中文官网

世界最重金属排名:黄金竟然垫底

📅 07-22 👀 737
iPhone SE 2020 充电需要多长时间?
36500365体育在线投注

iPhone SE 2020 充电需要多长时间?

📅 09-01 👀 8069