自上而下的游戏AI

我正在创建一个游戏,游戏中屏幕上的单位需要根据团队和每个团队指定的敌人进行战斗。玩家不控制任何坦克或团队。

问题在于,单位(目前是坦克)之间的战斗应该足够有趣,以至于玩家可以观看并享受乐趣,而无需做任何事情。

我目前让坦克完全随机地移动,并在射程内互相射击,但我正在寻找更智能的东西。

我应该研究哪些类型的AI和AI算法?欢迎所有想法,我只想让每场战斗都变得有趣。


回答:

对于策略和战术,你的AI可能需要进行一些理性的决策,使其看起来更智能。有很多方法可以做到这一点,最简单的方法是为你的坦克写下几个条件-行动规则,并将它们实现为有限状态机。FSM易于实现且易于调试,但是当您想要修改条件规则或添加/删除任何状态时,以后会变得很乏味。您还可以使用效用代理-AI定期基于当前统计信息(弹药,生命值,敌方数量和位置)对每个潜在目标(例如,交战,撤退,重新装填/加油,寻找掩护,维修等)执行效用检查,然后选择最可取的目标。与FSM相比,这需要花费更多的时间来实现,但是它在您需要添加或删除行为时无需更改决策流程方面更加灵活。它使AI看起来像是遵循一般规则,但并非总是可预测的。效用代理也更难调试和控制,因为当您的AI崩溃时,您没有任何像FSM那样可以追踪的严格的条件-行动规则。另一种流行的方法是行为树。动作序列被实现为树结构。它需要更多的代码来预先编写,但通常比FSM和效用代理在控制和灵活性之间提供更好的平衡。这些决策过程不是互斥的-您可以对顶级策略使用任何方法,对低级战术使用不同的方法。

无论您选择哪种决策过程,都需要一些输入来馈送给您的AI。您可以使用影响力图来帮助AI确定战场中哪些地方被认为是敌对的,哪些地方被认为是安全的。影响力图在团队之间共享,因此也可以帮助进行团队战术。当您的AI与多个敌人交战时,选择正确的目标很重要。如果您的AI选择的目标是大多数人类玩家不会选择的,那么即使有时选择的目标实际上是最好的,玩家也会觉得AI“愚蠢”。您可以对敌方单位运行距离检查,并使用视线,当前武器范围,威胁级别等来过滤/优先排序目标。某些测试比其他测试昂贵(视线检查通常是最严重的罪魁祸首之一),因此,如果您的射程内有很多敌方单位,则希望最后运行那些较慢的测试。

对于坦克的移动,请研究转向行为。它涵盖了许多车辆移动行为,但是追逐和躲避是您最需要的。如果您的坦克需要在复杂地形中导航,还请研究A*寻路。还有其他一些好的路径解决方案可以为您提供最短/最快的路径,但是在游戏中,最短/最快的路径并不总是最佳路径。如果您最短的路径是开放的,但离敌方线太近,则需要为坦克提供一些启发式方法来选择不同的路线。您可以使用A*轻松配置您的路径偏好。

需要研究的内容:有限状态机,基于效用的代理,行为树,转向行为,A*搜索算法,导航航点或导航网格,影响力图。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注