使用 字典(或者说优先级队列) 或者 堆 来替代 列表 也可以加速 A* 算法.在这些数据结构中遍历元素非常之快,这会非常有助于你在其中搜索某一节点,同样的,在有序字典或者最小堆中,我们也能很方便的找到具有最低...分帧寻路.如果你的游戏并不需要在一帧中就获取完整的寻路结果,那么我们就可以使用分帧寻路来优化 A* 算法.我们可以设置一个循环上限,如果 A* 算法在该循环限制内没能完成寻路,我们便暂停当前寻路,并在下一帧继续...(译注:原文的意思应该是分段寻路,方法是如果在设置的循环限制内不能完成寻路的话,下一帧就从最后一个搜索节点开始重新寻路,这种方法并不一定能正确得到寻路结果,译文调整为分帧寻路)
节点中保存 is_open...,之后你就可以分帧来搜寻这些(部分)节点之间的路径,与上述的分帧寻路不同的是,你不用限制循环上限,而是一帧一帧的来寻找(部分)节点之间的路径....和 HPA 不同的是, JPS 不需要预计算任何数据,他的优势在于遍历开放列表和关闭列表的开销很小.需要注意的是, JPS 只支持规则网格(节点)的寻路,即使你的游戏地图包含不同寻路成本(距离)的网格或者区域