【发布时间】:2013-02-27 14:46:40
【问题描述】:
所以基本上我编写了一个 A* 探路者,它可以找到穿过障碍物的路径并进行诊断。我基本上将http://www.policyalmanac.org/games/aStarTutorial.htm的伪代码实现为真实代码,并使用二进制堆方法从openlist中添加和删除项目。
使用二叉堆带来了显着的性能提升,比我之前使用的插入排序算法快了大约 500 倍。
问题是它仍然平均需要大约 150 万纳秒,大约是 0.0015 秒。
所以问题是,我的计划是制作一款塔防游戏,每次我在地图上添加一座塔时,每个暴徒的寻路都需要更新。如果我在地图上最多有大约 50 个小怪,这意味着更新整个小怪的所有路径大约需要 0.0015 * 50 = 0.075 秒。游戏基本上每 1/60 秒(即 0.016 秒)打勾(所有游戏内容更新),所以问题是更新路径的时间比打勾的时间长,这将导致巨大的延迟。那么我该怎么做呢?我是否需要找到一个更好的算法来对 openlist 进行排序,或者以某种方式划分寻路任务,以便每个刻度只执行 X 个寻路任务,而不是全部。
【问题讨论】:
-
你的问题对于你给我们的描述来说太具体了。
标签: java artificial-intelligence a-star