【问题标题】:A* map segmentation algorithmsA* 地图分割算法
【发布时间】:2013-12-02 18:00:48
【问题描述】:

我正在开发一款玩家可以向任意方向移动的游戏。该地图由放置在任意位置且大小不同的障碍物组成。所有障碍物/物体均为矩形。

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

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

但是我似乎无法找到正确的方法来做到这一点。由于玩家的大小可能会发生变化,并且由于障碍物的任意放置,我会遇到各种通关问题。

所以我的问题是:在上述限制条件下,如何有效地将地图“分割”成 2 维网格供 A* 使用?

【问题讨论】:

  • 如果你严格限制使用二维网格,我看不出你能得到多少。您可能能够在运行时确定障碍物之间的最小间隙并相应地更改“单元”大小,但是如果障碍物足够多,对于大多数地图来说,最终可能会保持 1x1。

标签: algorithm path-finding a-star


【解决方案1】:

您可以在地图上创建导航网格,例如AI Game Programming Wisdom - Google 书籍中也有很大一部分内容(例如,“construct navmesh”)。

另一种选择(如果您不想将自己限制在导航网格中)是使用四叉树导航之类的东西。

【讨论】:

    猜你喜欢
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多