摘要:使用寻路算法时,您可能希望将地图空间视为空地、障碍物之外的其他内容。 通常会有更多可用信息,例如通过该区域的难度(开销)。 例如,沼泽和山脉可能比草原和沙漠更难通过。 使用某些算法(如 A*),您可以将此信息编码到成本函数中。 下面列出了一些可能有用的移动成本的想法。 高度 高海拔(如山脉)的移动成
阅读全文
随笔分类 - 寻路算法
摘要:使用寻路算法时,您可能希望将地图空间视为空地、障碍物之外的其他内容。 通常会有更多可用信息,例如通过该区域的难度(开销)。 例如,沼泽和山脉可能比草原和沙漠更难通过。 使用某些算法(如 A*),您可以将此信息编码到成本函数中。 下面列出了一些可能有用的移动成本的想法。 高度 高海拔(如山脉)的移动成
阅读全文
摘要:我专注于寻路的任务,找到从一个地方走到另一个地方的路径。 然而,一个同样重要的问题是:一旦我有了一条路,我该如何移动呢? 最明显的答案是从位置 A 走直线移动到位置 B。 我们可能还希望以曲线的方式移动,或者具有多个移动种类。 但是这些路径中的部分位置,在微观视角来看,可能是偏离航线的。 再让我们提
阅读全文
摘要:有时,寻路在性能方面的限制因素,不是计算路径所需的时间,而是数百个单元的路径所占用的空间。 探测器需要运行算法的空间,以及存储路径的空间。 算法运行所需的临时空间(使用 A*,OPEN 和 CLOSED 集合)通常比存储结果路径所需的空间大。 通过将游戏限制为一次只计算一条路径,可以最大限度地减少所
阅读全文
摘要:寻路算法将计算静止障碍物周围的路径,但是如果障碍物移动会怎么样? 当单元到达特定点时,障碍物可能不再存在,或者可能存在新的障碍物。 如果可以绕过典型的障碍物,请对你的探路者(pathfinder)使用单独的避障算法(转向)。 探路者将找到所需的路径,然后移动对象在跟随它时,绕过障碍物移动。 但是,可
阅读全文
摘要:变种 1 - 束搜索(Beam Search) 【编程算法】【寻路】【A*优化 - 束搜索】 - 秋月疾风 - 博客园 在 A* 算法的住循环中,OPEN 集存储可能需要搜索的节点,用来以查找路径。 束搜索是 A* 的变体,它限制了OPEN集的大小。 如果集合变得太大,则丢弃给出良好路径的最差机会的
阅读全文
摘要:启发式函数h(n)告诉A * 估计从任何顶点n到目标的最小成本。选择一个好的启发式函数是很重要的事情。 用启发式算法的A* 启发式可用于控制A *的行为。 在一个极端,如果 h(n) 是0,那么只 g(n) 起作用,A* 变成 Dijkstra算法,保证找到最短路径。 如果 h(n)总是低于(或等于
阅读全文
摘要:网格通常用于游戏中,用于表示游戏区域,如地图(在“文明”和“魔兽”等游戏中),游戏界面(如游泳池,乒乓球和扑克等游戏),运动场(棒球和足球等游戏),棋盘(在象棋,Monopoly和Connect Four等游戏中,以及抽象空间(在俄罗斯方块之类的游戏中)。我试图在这些页面上收集我对网格的看法。我避免
阅读全文
摘要:本文译自 Introduction to A*. 对一个物体来说,移动起来很容易,而寻路则相对复杂。 为什么需要寻路算法?请看—— 有一个单位,最初位于地图的底部 start,并希望到达顶部 goal。 没有寻路算法的极端情况: 他可以移动的区域(浅红色)中没有任何阻挡,因此他径直前进。直到在弧形障
阅读全文
摘要:本文译自 Amit’s Game Programming Information,并作为后续文章的目录。 寻路,是我们在游戏开发经常面对的问题。 A. 寻路算法 得到的路径可以避开障碍物、躲避敌人,并最大限度地降低开销(燃料,时间,距离,设备,金钱等)。 B. 移动算法 解决了得到路径后移动相关的问
阅读全文
|