【问题标题】:What is a good 2D grid-based path-finding algorithm? [closed]什么是好的基于 2D 网格的寻路算法? [关闭]
【发布时间】:2013-06-12 07:28:49
【问题描述】:

我目前正在使用 HTML5 元素用 Javascript 编写 2D 游戏。进展非常顺利,但我遇到了问题。

我的游戏的关卡设计是一个网格(因此从一个单元格移动到北/南/东/西单元格的路径成本为 1),各种障碍物占据了网格中的不同位置 - 很像迷宫,但有更多的回旋余地。每个单独的级别大约为 400 × 200 个单元格。

我正在尝试实现一个无论玩家身在何处都会寻找玩家的敌人,但我在尝试转换各种寻路算法以适应我的情况时遇到了麻烦。我遇到的大多数(如 A* 和 Dijkstra)似乎最适合 3D 或更复杂的 2D 情况。我想知道是否可以显着简化这些算法以更好地满足我的目的,或者考虑到级别大小,深度优先搜索之类的方法是否会是更有效的选择。

【问题讨论】:

  • 如果不给 A* 提供一些关于可能路径的先验知识(例如将地图划分为具有已知连通性的部分),您不会比 A* 做得更好。深度优先会比广度优先慢很多(很多很多)。
  • 这并不是 Stackoverflow/Stack Exchange 的真正意义;问一个有明确答案的问题,而不是购物问题。无论如何,请使用人们的建议,但在遇到编程问题时再回来。
  • @Dave:好吧,你可以很容易地find better than plain-ol' A* 约束到网格;但是,JPS+A* 比 A* 更复杂,通常没有必要。

标签: javascript html path-finding


【解决方案1】:

A* 是一种非常常见的二维寻路算法。如果不熟悉寻路,可能需要一点时间来了解正在发生的事情,但这并不是非常复杂。您可能只是在查看其他人的示例代码,这些代码是为比您想要的更复杂的应用程序开发的。有a good tutorial for understanding the algorithm here

【讨论】:

  • 链接好像失效了。
  • 如果链接似乎已失效,请尝试发送电子邮件:patrick (at) policyalmanac (dot) org
  • 您的链接已损坏。
【解决方案2】:

看看这个https://github.com/qiao/PathFinding.js它有很多演示和寻路算法。

【讨论】:

    【解决方案3】:

    EasyStar.js 是一个漂亮的库,看起来可以做你想做的事。我自己没用过,但是项目的github页面上的文档看起来还不错,大概是我在你的位置上会选择的吧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-19
      • 1970-01-01
      相关资源
      最近更新 更多