是否有可用的Python路径寻找库?
我正在用Python开发一个实时的等角视角角色扮演游戏,想把它做成可以在手机上玩的。现在我遇到的主要问题是路径寻找。为了适应我使用的地图,我尝试了几种算法,包括A*算法,并做了一些调整。
我对我的算法结果很满意——它们看起来有点智能,而且是确定性的,也就是说,无论角色朝哪个方向移动,两个角色朝着对方的位置走时,最终都会在中间相遇。
但问题是,虽然在我的电脑上效果很好,因为电脑处理能力强,但在手机上就不一样了,算法计算时常常会有一秒或更长的延迟。因此,我考虑写一个库,把性能要求高的代码用C语言写,不过如果有现成的解决方案或者更好的方法,我非常乐意听取建议。
我偶然发现了python-pathfinding,但这个库似乎比我自己为我的需求开发的要慢。
我的使用场景:
我的地图是由不同的房间组成,这些房间被墙壁(可见或不可见)包围,并且必须通过门(可见或不可见)相连。
我现在的做法是使用两种不同的算法:
在一个房间内,我把每个瓷砖当作节点来搜索,每个边界都视为相同成本的边,使用深度优先搜索朝着目标位置的方向。
在房间之间,每扇门作为一个节点。通过第一个算法计算出房间内从一扇门到另一扇门的最短路径,并将其存储在哈希表中作为这些节点之间的边的成本。然后计算可以从一个节点到另一个节点的边集,并同样存储在哈希表中,路径中不允许重复使用同一条边。
我在启动时生成一个单独的进程,利用第一个算法为第二个算法生成一个图,这样解决了我很多问题,因为房间相对较小,所以实时路径寻找的负担比可能的要小。对于更长的距离:
- 使用第一个算法计算当前地点到当前房间每扇门的距离。
- 使用第一个算法计算目标房间每扇门到目标位置的距离。
- 第二个算法的输出用于获取房间之间的路径集合。
- 将这些路径的成本加上到达第一扇门和从最后一扇门的成本。
- 将解决方案按成本排序,使得相同成本的路径顺序始终一致。
- 选择解决方案集合中的第一个项目。