Questions tagged «path-finding»

用来绘制从一个点到另一个点的行进路线的方法,通常可以避免途中的障碍。

2
尽管使用了Time.deltaTime,但移动似乎与帧速率有关。
我有以下代码来计算在Unity中移动游戏对象所需的转换LateUpdate。据我了解,我对的使用Time.deltaTime应使最终的翻译帧速率独立(请注意CollisionDetection.Move(),仅用于进行射线广播)。 public IMovementModel Move(IMovementModel model) { this.model = model; targetSpeed = (model.HorizontalInput + model.VerticalInput) * model.Speed; model.CurrentSpeed = accelerateSpeed(model.CurrentSpeed, targetSpeed, model.Accel); if (model.IsJumping) { model.AmountToMove = new Vector3(model.AmountToMove.x, model.AmountToMove.y); } else if (CollisionDetection.OnGround) { model.AmountToMove = new Vector3(model.AmountToMove.x, 0); } model.FlipAnim = flipAnimation(targetSpeed); // If we're ignoring gravity, then just …

3
如何在网格上使用A *制作看起来自然的路径?
我一直在阅读:http : //theory.stanford.edu/~amitp/GameProgramming/Heuristics.html 但是有些事情我不理解,例如,文章说使用这样的东西进行对角线运动的寻路: function heuristic(node) = dx = abs(node.x - goal.x) dy = abs(node.y - goal.y) return D * max(dx, dy) 我不知道如何像本文中那样设置D来获得自然的外观路径,就像上面所说的那样,我将D设置为相邻正方形之间的最低成本,而且我不知道它们对启发式技术的意义是什么。是4 * D,那似乎并没有改变任何事情。 这是我的启发式功能和移动功能: def heuristic(self, node, goal): D = 5 dx = abs(node.x - goal.x) dy = abs(node.y - goal.y) return D * max(dx, dy) def move_cost(self, …

1
nVidia的CUDA是否适合执行寻路计算?
我想知道在某些情况下是否值得在GPU上执行寻路(使用nVidia的CUDA或同等产品),或者这是否会浪费精力。我想这种情况将是一个无头的多人服务器,负责为机器人寻找路径。 我对使用导航网格物体进行A *寻路特别感兴趣,但是如果有另一种寻路算法可以从GPU执行中受益更多,我很想听听它。

1
是否有可以处理不同运动类型的寻路算法?
我正在为BattleTech桌游模拟器http://en.wikipedia.org/wiki/BattleTech开发一个机器人,它是回合制的。 木板分为六边形,每个都有不同的地形类型和标高。您驾驶一个在它们上方移动的机器人,以摧毁其他机器人。 我只知道Dijkstra和A *寻路算法,但是问题是有3种类型的运动:步行,奔跑和跳跃几个六角形(每个都有自己的规则)。走路和跑步几乎相同。 最佳路径可以是组合,也可以是每种运动类型。这是地图的示例http://megamek.info/sites/default/files/isometric_view.png 您是否知道用于这种复杂寻路的好算法,或者为每种运动类型组合A *结果的方法?

2
如何在大型网络世界中处理实体寻路和运动?
考虑到上面的图像将瓷砖分成32x32的框,我有一个实体被标记为“ aggro”附近的玩家。我希望这个怪物理想地追逐玩家(并继续追逐玩家一段时间)。目前,我的唯一动作是使用一个用于远程实体的简单插补器完成的,这是可行的,因为动作更新之间的差距很小。 我不能成功地仅仅告诉客户怪物想要移动到他/她所处的位置,因为这将导致实体移动得比其应该快得多(这可以通过对插值函数使用一些数学运算来解决) -有效),但更重要的是,它看起来不太现实,可能会夹住墙壁!如果可以避免,我不想在服务器上模拟整个运动……虽然我想我可以,但是仍然不能解决裁剪问题。我怀疑该解决方案涉及一些寻路,并向客户端发送定期的节点更新,并让它们模拟运动,但是我不确定。 谢谢!

1
自由空间中的高效寻路
我在太空中有一个游戏,我想发布移动指令,这需要寻路。现在,据我了解,A *等主要适用于树,而不适用于没有寻路节点的空白空间。我有一些障碍,目前表示为固定的AABB,即没有无限的“地形”障碍。另外,我希望大多数障碍物可以合理地近似为立方体或球体。 因此,我一直在考虑应用一种更简单的寻路算法-即简单地将射线从当前位置投射到目标位置,然后可以使用空间划分相对较快地获得障碍列表。我不太确定的是如何确定有序单位在障碍物周围进行操纵的部位。 到目前为止,我一直在想的是,我将仅使用潜在的场-即,所有单元都将感觉到彼此相互排斥的强大排斥力,而向目标点施加了适度的排斥力。这还有一个优势,就是发出团体命令,我可以简单地向另一个实体订购一支中级部队。但这显然无法实现最佳解决方案。 给定我的参数,势场会达到合理的近似值,还是我需要其他解决方案?
12 c++  path-finding 

3
您如何在2物理引擎(如farseer / box2d)中遵循AI路径?
我正在将自己一直在努力的2d自上而下游戏移植到像Farseer这样的合适的刚体物理引擎中。到现在为止,我只是在需要的地方才编写了自己的物理代码。 我正在尝试在这里学习正确的做事方式。 一旦在物理引擎内部使它们成为刚体,使AI遵循设定路径的正确方法是什么? 如果我在地图上有需要AI遵循的导航节点路径,那么以前,我会通过沿下一个步骤计算它们应位于的下一个位置并将其手动设置为该位置来手动沿路径移动它们。 但是现在它们是刚体,容易受到碰撞以及任何可能撞击它们并将其击落的力。 因此,为了使AI向前迈进,我相信我现在应该向它们施加冲动/力量了吗?我不应该再手动设置每个帧的位置。 因此,我认为我需要从一个确定性世界出发,在这个世界中,我必须迫使AI严格遵循一个不确定性世界,在这种情况下,如果受到撞击,它们可能会在任何方向被撞倒,我只是将它们轻推到路径中的下一个节点让他们动起来。 是对的吗?那是别人怎么做的吗? 这就引发了一些问题,即如何避免您的AI一直走在不正确的道路上,而又如何避免它们卡在风光的拐角处?你们如何处理这种事情呢? 还是以某种方式将两者混合并让您的AI通过手动设置其位置而遵循固定的路径,并且仅在您可以轻松控制的某些情况下对其他作用力做出反应,才更好呢? 感谢您的任何建议。

1
预先计算的寻路是否仍然有意义?
语境 老卢卡斯艺术公司(ScummVM时代)使用预先计算的寻路来点击图形冒险游戏。这是该技术的粗略概述。 第1步 每个房间的地板都被划分为所谓的“步行箱”,它们几乎等同于导航网格中的节点,但仅限于梯形形状。例如: ______ _____ _________ _____ \ A | B | C | D \ \_____| | |_______\ |_____| | |_________| 第2步 离线算法(例如Dijkstra或A *)将计算每对节点之间的最短路径,并将路径的第一步存储在2D矩阵中,并在每个维度中由使用的起始节点和结束节点进行索引。例如,使用上面的步行框: ___ ___ ___ ___ | A | B | C | D | <- Start Node ___|___|___|___|___| | A | A | A | …

4
如何让AI代理沿着曲线移动?
目前,我非常基本的AI框架中的代理沿着由一系列点组成的锯齿状路径移动。 他们只需将位置从一个点移动到另一个点即可。当他们到达下一个点时,他们会前进到下一个,依此类推。如何更改此设置,以便它们沿着路径的弯曲版本平滑移动,以及如何生成曲线?

3
四处移动/避免障碍
我想写一个“游戏”,在其中可以放置一个障碍物(红色),然后黑点尝试避开它,并到达绿色目标。 我正在使用一种非常简单的方法来避免这种情况,如果黑点接近红色,它会改变方向,移动一会儿,然后向前移动到绿点。 如何为计算机控制的“玩家”创建“平滑”路径? 编辑:不是光滑度是主要重点,而是要避免红色阻塞“墙”,而不是撞向它,然后再避免它。 如果我只有3分,我该如何实施某种寻路算法? (如果您可以设置多个障碍,这会使事情变得更加复杂吗?)
12 ai  path-finding 

5
为什么强化学习很少在寻路中使用?
最古老的最短路径图理论算法A *及其后续改进(例如,层次标注A *)显然是游戏开发中寻路的首选技术。 相反,在我看来,RL是在游戏空间中移动角色的更自然的范例。 但是我还不知道有一个游戏开发人员已经实现了基于强化学习的寻路引擎。(我不能由此推断出RL在寻路中的应用为0,只是相对于A *和朋友而言,它很小。) 不管是什么原因,这并不是因为这些开发人员没有意识到RL,事实证明RL在游戏引擎的其他位置经常使用。 这个问题不是在寻路中对RL提出意见的借口。实际上,我假设对A *等人的默认偏好。对RL的理解是正确的-但这种偏爱对我来说并不明显,我对此感到非常好奇,尤其是对于任何尝试使用RL进行寻路的人。

1
在均匀地形上进行2D,非网格移动的寻路
我正在寻找游戏中寻路的最佳解决方案。该地图最终是基于网格的,但是实体使用浮点定位,并且可以沿任何方向移动到地图上的任意点。我的游戏中的“地面”具有统一的移动成本,但是当然可能存在障碍。大多数障碍都是静态的,尽管游戏中还会有其他有生命的实体,但我可能会不考虑它们而逃脱-这是一款等距的主题医院风格战略游戏,因此没有战斗力。 我见过的大多数寻路文章都涉及3D或基于网格的2D运动。有什么建议可以涵盖我的用例吗?非常感谢。
12 2d  path-finding 

2
为动态障碍物和玩家造成的障碍寻找路径?
嗨,我正在Unity 5中创建TD,并且在寻路方面需要一些帮助。 我将为我的AI 使用Arons A *寻路,这使我能够使用动态对象并在运行时更新路径。但是,在我的游戏中,我希望玩家能够使用特殊的炮塔来阻挡小兵,这将迫使小兵攻击“障碍塔”而不是到达目的地。 我怎样才能完成这样的事情? 图片更清晰:
11 unity  c#  2d  ai  path-finding 

4
如何在基于回合,基于距离的策略游戏中确定可能的运动范围?
我正在使用c ++和SFML-2.0创建一个二维的,基于回合的策略游戏。运动是基于距离的,而不是基于网格的,具有几个不同的三角形块,这些三角形块在给定的转弯中可以就位旋转或向前移动。 移动将以这样的方式进行:玩家选择棋子要移动到的位置,从而为棋子生成一条可能的路径。玩家确认自己的决定后,棋子将沿着该路径移动到所需位置。路径受到两个因素的限制:距离,一块东西可以走多远,考虑任何转弯(因此,如果有一条曲线,它将是沿着曲线的长度,而不是直接从一点到另一点);和转向角,即在移动(例如,从-30度到30度)时,该零件在任何(以及每个点)可以旋转多远。 我的问题是,我应该如何确定玩家可以选择将棋子移动到的潜在位置范围? 我不确定要在这里使用什么方程式和/或算法。我最初的计划过于复杂,以至于几乎无法实施,更不用说解释了,在这一点上,我因项目停滞而完全迷失了。 考虑到其转弯半径,如何确定设备可以移动的范围? 例如,在下图中。红线,蓝线和绿线的长度都相同。紫色圆圈表示单位可以移动的移动范围。(形状可能不准确,线条的长度实际上可能不相同,但您会明白的)

3
查看两个体素是否互连的算法
我正在寻找以下问题的良好算法:给定3D体素网格(可能为空或填充),如果我选择两个不相邻的体素,我想知道它们是否通过以下方式相互连接其他体素。 例如(为了说明2D的情况),其中#是实心正方形: 1 2 3 a # # # b # # c # # # 如果我选择a3和c3,我想尽快确定它们是否已连接;如果在a3和c3之间存在通过填充像素的路径。(当然,实际情况是在3D体素网格中。) 我已经研究了泛洪算法和路径查找算法,但不确定如何选择。两者都执行不必要的工作:洪水填充会尝试填充所有体素,但这不是必需的。寻路算法通常与寻找最短路径有关,这也是不必要的。我只需要知道,如果有是一个路径。 我应该使用什么算法? 编辑:根据评论,我认为应该添加以下内容:体素的内容事先未知,并且还需要算法来检测是否删除(清空)体素是否会导致该组体素破裂分成两个或更多个较小的组。

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.