那里有什么寻路算法?[关闭]


Answers:


34

如果您想研究和学习一般的寻路技术,我绝对建议您学习不仅仅是一种算法。您将希望了解总体概念,但能够将其应用于您正在从事的工作。大多数需要认真探索的游戏开发人员最终都会编写自己的自定义算法,尽管它们高度依赖于已知的解决方案,但每个游戏都是不同的,并且会有不同的要求。

我将从阅读一些更广为人知的方法开始,例如A *,Dijkstra的算法,深度和广度优先搜索。每个方面在互联网上都有很多很好的信息。(http://en.wikipedia.org/wiki/Pathfinding

阅读它们时,请注意每种方法的优点和缺点,以及算法可以处理的数据类型。可以将其应用于3维路径吗?可以对其进行修改以解决我们希望避开地图中的地雷的人类AI的问题吗?

在寻路方面,A *几乎是每个人使用的黄金票。您绝对应该知道它是如何工作的。(http://en.wikipedia.org/wiki/A*_search_algorithm

这是A *的一个很好的例子,因为它适用于RTS游戏,该游戏需要考虑不同大小的实体:http : //aigamedev.com/open/tutorials/clearance-based-pathfinding/

祝好运!


2
+1表示程序员必须学习适应已知的解决方案。这是许多可能成为游戏开发者的东西。
工程师

22

寻路算法基本上是一种图搜索问题解决算法。

http://en.wikipedia.org/wiki/Pathfinding#Algorithms

最著名的是Djikstra的算法:http : //en.wikipedia.org/wiki/Dijkstra's_algorithm

及其A *搜索算法的变体:http : //en.wikipedia.org/wiki/A*


2
最后一个链接已断开,因为*并未被视为其中一部分:en.wikipedia.org/wiki/A%2A
Hendrik Brummermann 2010年

fixx0r3d两个链接
tenpn 2010年

简单的图搜索算法只是寻路的基础。
martinkunev

13

这是一个很好的入门资源,它以一种非常易于理解的方法来研究路径查找的所有方面。

阿米特关于寻路的注意事项

...寻路解决了寻找从起点到目标的良好道路的问题-避开障碍物,避开敌人并最小化成本(燃料,时间,距离,设备,金钱等)。运动解决了走道路并沿着道路前进的问题。您可能仅将精力花在其中之一上。在一个极端情况下,复杂的探路者结合了琐碎的运动算法...


1
为Amit +1。我十多年前从他的网站上学到了A *。
tenpn's

很棒的插图。高质量。
猴子

5

寻路是一个非常解决的问题...几乎在每个答案中都提到过,您将使用A *的一些变化。

对我来说,最大的挑战是您如何代表自己的道路。使用网格,路径节点,导航网格,分层网格或其他复杂结构等。

我没有任何具体的参考,但是探索AIGameDev将为您提供各种建议。

请记住,每种表示形式都有其优缺点;这不是要找到“最佳人选”,而是要找到最适合您的游戏玩法的人



4

有几种寻路算法。

最受欢迎的游戏之一可能是A *(A-Star)。如果您具有启发式功能,可以给您估计达到目标的成本(例如,到目标的视线距离),这是一种非常有用的算法。A *对于找到从起点到终点的最短路径非常有用。

除此之外,还有Dijkstra算法,该算法对于从多个项目中查找最接近的项目非常有用。例如。如果您想找出哪个加电(或类似功能)最接近您的游戏角色。

还有其他几种算法,但我想A *是迄今为止最受欢迎的算法。垫巴克兰有关于他的书寻路的优秀篇章编程游戏AI的例子。我强烈建议您获得一份副本。否则,您可以通过搜索“星级搜索”来在线查找大量信息。


天啊。当我键入此内容时,给出了相同的答案,搜索次数达数十亿次。抱歉:)
bummzack 2010年

只是注意到提到的书也在Google-Books上(尽管还不完整)。在此处阅读:books.google.com/books?
id=gDLpyWtFacYC


3

这是在带有某些伪代码的游戏中使用A *的一个很好的示例:http ://www.anotherearlymorning.com/2009/02/pathfinding-with-a-star/


2

这并不是入门知识,但是我们在2009年秋季的算法课程中广泛讨论了图算法。我们使用了这本书,

算法入门,第三版,Thomas H. Cormen,Charles E. Leiserson,Ronald L. Rivest和Clifford Stein

http://mitpress.mit.edu/algorithms/

并且还附有MIT课程的youtube讲座。

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-046j-introduction-to-algorithms-sma-5503-fall-2005/video-lectures/

第17、18和19章讨论了最短路径。



-2

这看起来很有趣:

http://www.codeproject.com/Articles/455 我想知道它比A *好吗?


欢迎来到该网站。您所提供的被称为仅链接的答案,不建议这样做。最好在您的答案中总结该方法的质量。然后,您可能会争辩说它是否比简单的A *好,而不是懒散地在文本中思考它。
塞斯·巴丁

我认为您对此问题的回答或多或少都差不多(很不幸)。我并不是要单挑您,我只是在第一个帖子审阅队列中通过了您的输入。无论如何,始终欢迎您改进答案。
赛斯·巴丁

我只想重复塞思所说的话。总结。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.