A *地图分割算法

时间:2013-12-02 18:00:48

标签: algorithm path-finding a-star

我正在开发一款游戏可以向任意方向移动的游戏。地图由位于任意位置和不同大小的障碍物组成。所有障碍物/物体都是矩形的。

到目前为止,我已经使用简单的二维网格实现了一个基本的A *算法(8个移动方向),其中网格中的每个单元格指向地图上的单个像素。显然它不能很好地工作,特别是对于大型2000x2000ish左右的地图。 请注意,由于某些外部约束,我不能使用二维网格以外的数据结构。

在我跳入JPS,沼泽和其他奇特的东西之前。我想我应该尝试一种不同的方法来将地图“分割”成运动点。也就是说,代替1个单元< - >而不是1个单元。 1像素映射可能是1个单元< - >地图中5x5像素宽的区域。

然而,我似乎无法找到一个正确的方法来做到这一点。由于玩家的体型可以改变,并且由于任意放置障碍物,我遇到了各种各样的清理问题。

所以我的问题是:在给定上述约束的情况下,如何有效地将地图“分割”成A *网格以供A *使用?

1 个答案:

答案 0 :(得分:1)

您可以在地图上创建导航网格,例如人工智能游戏编程智慧 - 谷歌书籍中也有很大一部分(例如,“构建导航网格”)。

另一种选择(如果你不想限制自己使用navmesh)就是使用像四叉树导航这样的东西。