AI移动定制形状的宇宙飞船(形状会影响移动行为)


15

我正在设计一个基于网络回合的3D-6DOF太空舰队战斗策略游戏,该游戏很大程度上依赖于船只定制。让我稍微解释一下游戏,因为您需要对游戏有所了解才能提出问题。

我的目标是能够创建具有自定义形状和附加模块(螺旋桨,牵引梁...)的自有舰队,这将给每艘船带来好处和不利之处,因此您拥有许多不同的舰队分布。例如,长船在侧面带有两个螺旋桨将使该船容易绕该飞机旋转,除非您在后面放置许多螺旋桨,否则较大的船将缓慢移动(因此,在移动时会花费更多的“构造”点和精力,它将使只能朝那个方向快速移动。)我计划围绕此功能平衡所有游戏。

游戏将围绕两个阶段旋转:命令和战斗阶段。在订购阶段,您将指挥不同的船只。当所有玩家都完成了命令阶段后,战斗阶段便开始了,并且船舶命令会在一段时间内实时得到解决,然后动作会暂停并进入一个新的命令阶段。

当我想到玩家的输入时,问题就来了。要移动船舶,如果要转向,向前行驶,制动,就地旋转,则需要打开或关闭不同的螺旋桨...这些螺旋桨不必全力以赴,因此您可以实现更大的运动较少螺旋桨的组合。

我认为这种方法有点无聊。玩家不想摆弄马达或其他任何东西,而只想移动和杀死。我打算让玩家向这些船只下达命令的方式是通过目的地旋转,然后AI将计算正确的螺旋桨功率以实现该移动和旋转。在整个转弯计算中,推进力不必相同(在发出订单后),因此,如果船在移动时做出反应,动态地调整螺旋桨的功率以满足其需求,那将是很酷的,但可能实施起来非常困难,游戏真正不需要它。

在这两种情况下,人工智能将如何决定激活哪个螺旋桨以实现最佳(或至少不是最差)轨迹?

我虽然讲一些方法:

  • 学习AI:船型将通过反复试验来了解它们的运动,通过更多用途来调整其行为,并最终变得“智能”。我不想涉足AI编码领域,我认为这可能会让玩家感到沮丧(即使您可以让它不玩而学习)。
  • 预先计算的时间步长运动:在造船时,将计算给定时间间隔内每种螺旋桨配置和功率的所有可能运动。内存密集,难看,不好。
  • 预先计算的轨迹:与上面相同,但不是每个增量时间,而是整个轨迹,然后将尽可能拟合整个轨迹。在整个战斗阶段都需要固定的螺旋桨配置,并且仍然需要占用大量内存,难看且不好。
  • 持续的暴力逼迫: AI会在整个战斗阶段连续检查所有可能的螺旋桨配置,并预先计算几个时间步长,并据此确定最佳的时间步长。骗局:现在的好东西以后可能就没那么好了,而且它占用的CPU太多,很丑,而且很糟。
  • 单次蛮力逼迫:与上面相同,但仅在模拟开始时就蛮力逼迫,因此在整个战斗阶段都需要恒定的螺旋桨配置。
  • 连续角度检查:这不是完整的运动方法,而是一种丢弃“愚蠢”螺旋桨配置的方法。给定当前螺旋桨的法向矢量和最后一个矢量,您可以根据角度近似估算螺旋桨所需的功率。您必须在整个战斗阶段中连续进行此操作。我最近想出了这个,所以我没想太多。先验地,它也有“现在好了,以后可能就没那么好了”的缺点,它也不在乎其他螺旋桨,它们可以一起做出更好的推进配置。

我真的被困在这里。有任何想法吗?


您是否研究过转向行为?
stonemetal

1
@stonemetal当然。这里的问题是,通常在完全控制对象的位置和旋转以及某些约束(或者至少是我在网上发现的约束)的前提下对操纵行为进行建模。此处的AI对实体没有完全控制权,但仅限于使实体移动的事物(螺旋桨)。我很难将这些转向行为与飞船的实际运动联系起来。
kaoD

这也是在赛车上转向行为效果不佳的原因。转向行为很棒,但并不是所有问题的通用解决方案。
tenpn 2011年

@haoD我在按照ghostonline的回答思考。让他们建立任何东西,然后将其转换为转向行为的约束。尽管从您的响应看来,转向行为可能还不够灵活。
stonemetal

1
我知道这已经很老了,但是您要寻找的是运动动力学计划
mklingen 2015年

Answers:


4

抱歉,还没有一个久经考验的解决方案,但是这不能在数学上解决吗?

给定任何螺旋桨及其距质心的偏移,您可以计算出可以旋转的平面。

对于任何运动,您都可以使用1个或多个螺旋桨。可以查询每个螺旋桨,以查看其飞机是否可以对目标方向做出贡献,从螺旋桨做出贡献要付出多少努力(远离CoM的螺旋桨可以使用更少的能量来产生更多的转弯),以及获得的接近程度您要进行目标定向。然后,您在整个搜索空间中进行A *操作,直到找到一个低成本的解决方案,该解决方案可能是总能耗最少或移动速度最快的解决方案。

继续重新评估当您接近目标时完成转弯和中等功率时,可能使用PID控制器。

对于向前运动,一个简单的解决方案将使您始终向前行驶,并在接近目标时降低目标速度。由于您拥有3D空间,因此可以避免复杂的3点转弯程序。您需要将为直线速度选择的螺旋桨的输出作为某种初始状态考虑到您的转弯计算中。

这是非常有面子的,但我看不到任何重大缺陷。仅需大量的努力和数字调整。:)


这是我一直在寻找的一种数学解决方案...谢谢!我希望它听起来一样简单。
kaoD 2011年

7

由于您想放弃使用AI的可玩性的玩家控制权,因此您可能要考虑简化螺旋桨的固定效果,并将船的尺寸更改为计算机算法所需的更小,更易于管理的参数。仍然允许玩家在船上任何给定的部分上添加螺旋桨,但是一旦完成,它将被“压缩”为参数。

每个螺旋桨都会影响船舶的转弯速度,或者与平行放置的螺旋桨组合会影响特定尺寸的行驶速度。结合每个螺旋桨的这些参数,您将获得船舶的最大转弯速率和速度。对于所有可用尺寸(上,下,左,右,前进,后退),将每个推进器和推进器设置的这两个参数组合为整个船的最大转弯和速度。

使用每个维度的转弯速率和速度,您可以获得足够的信息,实际上可以使船移至目的地。玩家将看到螺旋桨配置的效果,但是在引擎盖下,他的输入得到了极大的简化。您可以根据船的行驶距离提出不止一种飞行策略,以使飞行看起来更自然,并增强玩家对船的移动控制的感觉。但是最后,就像您说的那样,船如何到达目的地以及航线是否最佳并不重要,它只需要到达那里,其到达时间就受到螺旋桨配置的影响。

对于船舶尺寸,可以在获得压缩速度值以得到大致效果时将其考虑在内,或者在计算时使用它们以获得更精确的效果。您可能想测试精确的方法是否值得努力,因为差异可能不会影响玩家的控制感。


并不是我要找的东西,但是如果我确实需要,可以解决这个问题。支持这个想法:)
kaoD 2011年

0

在太空中,形状不会影响运动。没有空气拖。

重要的是船和附加总质量。这是一个更简单的质量推力重力问题。因此,您可以进行这些计算,或者由于它是回合制游戏,因此可以开发像Traveler这样的RPG之类的运动系统。


欢迎来到GD.SE!这个问题已经有一个可以接受的答案,并且在2年前被提出-也许您可以在网站上回答一些较新的问题。
Polar

是的,完全正确,但是我始终认为其他人会在以后(像我一样)偶然发现它,并发现它有一定用途。嘿,我不是来这里回答问题的……与大多数人一样,我正在为自己的问题寻找解决方案。
gnoll110

@极性问题海报在这里。我发现他的回复很有趣!我很高兴他回来回答了,我认为多年后增加价值是SO最有价值的部分之一。
kaoD

@ gnoll110我在这里可能是错误的。不会有阻力,但是推力矢量与质心形成的角度会影响船的平移或旋转方式...对吗?例如:与重心成一直线的引擎平移,而将其移离重心会为船增加旋转分量。
kaoD

@kaoD很抱歉,如果它看起来有点苛刻-显然,很多SO稍后会增加价值。我只是建议他也可以回答较新的问题-回答的问题越多越好!
2013年
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.