我正在设计一个基于网络回合的3D-6DOF太空舰队战斗策略游戏,该游戏很大程度上依赖于船只定制。让我稍微解释一下游戏,因为您需要对游戏有所了解才能提出问题。
我的目标是能够创建具有自定义形状和附加模块(螺旋桨,牵引梁...)的自有舰队,这将给每艘船带来好处和不利之处,因此您拥有许多不同的舰队分布。例如,长船在侧面带有两个螺旋桨将使该船容易绕该飞机旋转,除非您在后面放置许多螺旋桨,否则较大的船将缓慢移动(因此,在移动时会花费更多的“构造”点和精力,它将使只能朝那个方向快速移动。)我计划围绕此功能平衡所有游戏。
游戏将围绕两个阶段旋转:命令和战斗阶段。在订购阶段,您将指挥不同的船只。当所有玩家都完成了命令阶段后,战斗阶段便开始了,并且船舶命令会在一段时间内实时得到解决,然后动作会暂停并进入一个新的命令阶段。
当我想到玩家的输入时,问题就来了。要移动船舶,如果要转向,向前行驶,制动,就地旋转,则需要打开或关闭不同的螺旋桨...这些螺旋桨不必全力以赴,因此您可以实现更大的运动较少螺旋桨的组合。
我认为这种方法有点无聊。玩家不想摆弄马达或其他任何东西,而只想移动和杀死。我打算让玩家向这些船只下达命令的方式是通过目的地和旋转,然后AI将计算正确的螺旋桨功率以实现该移动和旋转。在整个转弯计算中,推进力不必相同(在发出订单后),因此,如果船在移动时做出反应,动态地调整螺旋桨的功率以满足其需求,那将是很酷的,但可能实施起来非常困难,游戏真正不需要它。
在这两种情况下,人工智能将如何决定激活哪个螺旋桨以实现最佳(或至少不是最差)轨迹?
我虽然讲一些方法:
- 学习AI:船型将通过反复试验来了解它们的运动,通过更多用途来调整其行为,并最终变得“智能”。我不想涉足AI编码领域,我认为这可能会让玩家感到沮丧(即使您可以让它不玩而学习)。
- 预先计算的时间步长运动:在造船时,将计算给定时间间隔内每种螺旋桨配置和功率的所有可能运动。内存密集,难看,不好。
- 预先计算的轨迹:与上面相同,但不是每个增量时间,而是整个轨迹,然后将尽可能拟合整个轨迹。在整个战斗阶段都需要固定的螺旋桨配置,并且仍然需要占用大量内存,难看且不好。
- 持续的暴力逼迫: AI会在整个战斗阶段连续检查所有可能的螺旋桨配置,并预先计算几个时间步长,并据此确定最佳的时间步长。骗局:现在的好东西以后可能就没那么好了,而且它占用的CPU太多,很丑,而且很糟。
- 单次蛮力逼迫:与上面相同,但仅在模拟开始时就蛮力逼迫,因此在整个战斗阶段都需要恒定的螺旋桨配置。
- 连续角度检查:这不是完整的运动方法,而是一种丢弃“愚蠢”螺旋桨配置的方法。给定当前螺旋桨的法向矢量和最后一个矢量,您可以根据角度近似估算螺旋桨所需的功率。您必须在整个战斗阶段中连续进行此操作。我最近想出了这个,所以我没想太多。先验地,它也有“现在好了,以后可能就没那么好了”的缺点,它也不在乎其他螺旋桨,它们可以一起做出更好的推进配置。
我真的被困在这里。有任何想法吗?