是否有可以处理不同运动类型的寻路算法?


12

我正在为BattleTech桌游模拟器http://en.wikipedia.org/wiki/BattleTech开发一个机器人,它是回合制的。

木板分为六边形,每个都有不同的地形类型和标高。您驾驶一个在它们上方移动的机器人,以摧毁其他机器人。

我只知道Dijkstra和A *寻路算法,但是问题是有3种类型的运动:步行,奔跑和跳跃几个六角形(每个都有自己的规则)。走路和跑步几乎相同。

最佳路径可以是组合,也可以是每种运动类型。这是地图的示例http://megamek.info/sites/default/files/isometric_view.png

您是否知道用于这种复杂寻路的好算法,或者为每种运动类型组合A *结果的方法?


我认为这通常是通过对A *加权路径的一些巧妙操作来解决的(权重是该路径/平方的成本)。例如,如果跳跃是可取的,则它的重量(例如5)比步行(例如10)低。
ashes999

这三种运动有何不同?是否可以将它们组合在一起(走到瓷砖A,然后跑到B,然后又跳到C)?是的时候,有哪些规则会阻止玩家始终使用最便宜的方法从图块A到达图块B?
菲利普

@Philipp是的,使用A *时可以。您可以将每种移动类型的每种磁贴添加到打开的列表中,然后根据每个磁贴的价格+良好的启发式方法,确定要进一步发展的磁贴。
阿卡塔尔

@Philipp不,每回合只能使用一种移动方式。
alexvisio

行走:在六边形中移动,高度差不大。运行:相同,但是可以走得很远,尽管会产生热量并失去准确的射击能力(因此并不总是最好的)。跳跃:您可以跳跃障碍物(墙壁或河流),而不是绕障碍物行走。
alexvisio

Answers:


10

Dijkstra和A *都可能会增加从一个图块到另一个图块的边缘(=连接)的成本。它们还允许连接具有多个边缘的两个节点(=瓦片),每个节点的成本不同。

替代跳跃模式意味着在跳跃距离中从每个瓦片到每个瓦片存在替代的直接边缘。但是由于机械手可以在转弯中行走或跳跃,因此使用此边缘的成本将是整个转弯的移动点,加上当前转弯已存在的当前转弯的剩余点数。

根据您的描述,步行与跑步的决定在路径选择方面并没有多大区别,但似乎是一项战略性决定。当在当前回合中可以到达目的地时,演员绝对可以步行而无需跑步。但除此之外,还有许多因素需要考虑,例如:

  • 当前的热量水平以及在能够降温之前参与战斗的可能性
  • 此轮需要解雇的任何枪击的难度
  • 快速到达目的地的战略重要性

做出此决定没有硬性规定。最好的办法是使用启发式方法。给所有情况分配正或负的点值,将它们加起来,然后看结果是正还是负。

寻路中还应考虑另一个因素:在某些情况下,机械避免在某些位置结束转向可能是有意义的。在危险区域中时,使用三圈从A到B,但将每一圈都遮盖住可能比只使用两圈但在每一圈的末端露出来更好。或者可能不是。这取决于环境和确切的游戏机制。同样,这是您必须基于启发法做出的战略决策。您可以通过在边缘上增加额外的成本来表示这一点,这些成本会终止危险瓷砖的转弯,从而阻止AI采取此行动。

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.