我正在创建一个游戏,游戏中屏幕上的单位需要根据团队和每个团队指定的敌人进行战斗。玩家不控制任何坦克或团队。
问题在于,单位(目前是坦克)之间的战斗应该足够有趣,以至于玩家可以观看并享受乐趣,而无需做任何事情。
我目前让坦克完全随机地移动,并在射程内互相射击,但我正在寻找更智能的东西。
我应该研究哪些类型的AI和AI算法?欢迎所有想法,我只想让每场战斗都变得有趣。
回答:
对于策略和战术,你的AI可能需要进行一些理性的决策,使其看起来更智能。有很多方法可以做到这一点,最简单的方法是为你的坦克写下几个条件-行动规则,并将它们实现为有限状态机。FSM易于实现且易于调试,但是当您想要修改条件规则或添加/删除任何状态时,以后会变得很乏味。您还可以使用效用代理-AI定期基于当前统计信息(弹药,生命值,敌方数量和位置)对每个潜在目标(例如,交战,撤退,重新装填/加油,寻找掩护,维修等)执行效用检查,然后选择最可取的目标。与FSM相比,这需要花费更多的时间来实现,但是它在您需要添加或删除行为时无需更改决策流程方面更加灵活。它使AI看起来像是遵循一般规则,但并非总是可预测的。效用代理也更难调试和控制,因为当您的AI崩溃时,您没有任何像FSM那样可以追踪的严格的条件-行动规则。另一种流行的方法是行为树。动作序列被实现为树结构。它需要更多的代码来预先编写,但通常比FSM和效用代理在控制和灵活性之间提供更好的平衡。这些决策过程不是互斥的-您可以对顶级策略使用任何方法,对低级战术使用不同的方法。
无论您选择哪种决策过程,都需要一些输入来馈送给您的AI。您可以使用影响力图来帮助AI确定战场中哪些地方被认为是敌对的,哪些地方被认为是安全的。影响力图在团队之间共享,因此也可以帮助进行团队战术。当您的AI与多个敌人交战时,选择正确的目标很重要。如果您的AI选择的目标是大多数人类玩家不会选择的,那么即使有时选择的目标实际上是最好的,玩家也会觉得AI“愚蠢”。您可以对敌方单位运行距离检查,并使用视线,当前武器范围,威胁级别等来过滤/优先排序目标。某些测试比其他测试昂贵(视线检查通常是最严重的罪魁祸首之一),因此,如果您的射程内有很多敌方单位,则希望最后运行那些较慢的测试。
对于坦克的移动,请研究转向行为。它涵盖了许多车辆移动行为,但是追逐和躲避是您最需要的。如果您的坦克需要在复杂地形中导航,还请研究A*寻路。还有其他一些好的路径解决方案可以为您提供最短/最快的路径,但是在游戏中,最短/最快的路径并不总是最佳路径。如果您最短的路径是开放的,但离敌方线太近,则需要为坦克提供一些启发式方法来选择不同的路线。您可以使用A*轻松配置您的路径偏好。
需要研究的内容:有限状态机,基于效用的代理,行为树,转向行为,A*搜索算法,导航航点或导航网格,影响力图。