二维平面中实体的人工智能(或至少路径生成)

Artificial intelligence (or at least path generation) of entities in a 2-dimensional plane

TL;DR

给定一个可以包含障碍物(静态物体)或实体(如坦克或车辆)的二维平面(比如 800x600 像素甚至 4000x4000),计算机控制的坦克如何在不与追逐其他坦克时的静态物体?请注意,每个静态对象或实体都可以 360 度自由旋转并具有任意大小。

上下文

我真正想做的是开发一款坦克游戏。它最初是作为一种名为 "Battle City" 的旧街机游戏的现代替代品。起初,考虑到 13x13 网格、固定尺寸和无旋转,开发 AI 可能很容易。但是现在,在自由旋转和任意大小的情况下,我无法找到在这些情况下复制这种行为的方法。

电脑控制的坦克必须能够在充满障碍的地图上行驶并追击玩家。我认为主要问题是为坦克创造所有可能去的地方;碰撞系统已经实施并等待使用。例如,坦克可能只需调整其旋转角度就可以穿过狭窄的空间(例如,可以是对角线)。

虽然我在编程方面有一定的经验,但这是我力所不及的。尽管我更喜欢关于坦克人工智能实施的更广泛的答案,但生成上述路径的方法可能就足够了。

我最初虽然想使用图表,但我不知道如何应用它们,因为不同的坦克有不同的大小,而且旋转的事情让我很头疼。再一次,如果我要使用图形,节点代表什么?一个像素? 16,000,000 个节点将是一个很大的数字。

我在用什么

期待您的指导。感谢您的宝贵时间!

我一直在从事一个人群模拟项目,其中包括寻路和 obstacles/other 人员回避。

我们使用了 Recast Navigation,这是一个实现最先进导航网格算法的一体化库。 您可以在此处获取更多信息:https://github.com/memononen/recastnavigation

在我们的项目中,它已被证明是可靠的并且非常可配置。即使它是用 C++ 编写的,您也可以轻松 find/make 一个包装器(在我们的例子中,我们一直在 Nodejs 服务器上使用它包装在 Javascript 中!)

如果你不想使用这个库,你仍然可以看看 Navigation Meshes,这是 Recast 背后的基础理论。

希望对您有所帮助!

Navigation Mesh,这就是您要找的。稍微解释一下,这在理论上非常简单。你构建你的世界(2D/3D)并在创建后生成一个新的网格,告诉实体它们可以移动到哪里,而不会与周围环境发生碰撞。然后他们在这个网格上移动。接下来是路径生成算法,基本上没有别的,然后以任何数学形式检查如何使该网格达到目标。在实际的导航网格上,如果您想到一个网格,在其中检查要移动哪些字段以获得最短路径,这将变得相当复杂但很容易。

如此简短的回答,你需要你的世界的任何类型的附加层,告诉 AI 允许它移动到哪里,以及适合你的层类型的任何类型的算法来计算路径。

作为提示,以unity为例,有很多免费的好的构建解决方案。你也会找到一堆很好的库来实现这一点,而不需要像 unity 这样的游戏引擎。