成为“非完美”的AI战斗员应该采取哪些行为?


19

当成为一名NPC战斗员时,通过优化战斗策略,时机和攻击类型很容易 获得机器人死亡机器,这很容易,但是要争取到一个特质的,不可预测的敌人就更难了(在战斗中更有趣)。哪些行为(算法?)对创建更加有机的,非常规的敌人有用?

编辑:我的特定用例是针对MMO类的敌人,例如《魔兽世界》,尽管涉及的图形较少。请注意,这意味着人类和非人类的敌人(动物,怪物等)

Answers:


14

关于Gamasutra的一件事,Mick West 撰写了一篇非常有趣的文章:智能错误:如何将愚蠢性纳入您的AI代码中

本文讨论台球游戏AI。实施这样的AI时,很容易在每次射击时都投一个球。正如其他答案所建议的那样,使AI减少“智能”的一种简单方法是在计算中添加一个随机因素,使AI错失更多。

但是这种方法存在两个主要缺陷。首先,这是不可预测的。对于在“轻松”模式下玩的玩家,AI变得“幸运”是不可接受的。如果您的随机因素使AI做得更好,打出更有价值的球或进行连击该怎么办?您不知道会发生什么,而在简单模式下AI也不应该选择幸运。

另一个缺陷是玩家将尝试识别AI行为中的模式。有了简单的随机因素,就没有模式。但这并不意味着玩家看不到任何图案,实际上恰恰相反。一旦AI幸运,玩家将看到其行为的策略。在文章中,玩家抱怨AI在发挥位置策略。当角度精度中只有一个随机因素时

从我的角度来看,阅读这篇令人大开眼界的文章后,一个不完美的AI绝不应该将随机化作为简化因素。相反。更简单的AI应该更聪明,但要努力帮助玩家。

在文章“泳池游戏”示例中,实现“简易模式” AI的最佳选择实际上是删除所有随机因素,并添加定位策略。AI会尝试击球,为球员准备一个简单而出色的投篮。

这样,玩家会认为自己很幸运。这就是您在轻松玩游戏时所期望的。


1
对于AI而言,记住玩家能够利用的优势也将非常有用。开发人员可能会认为他有一个“简易底池”,但是如果他不能加底池,那么AI应该减少案例策略。这也是有益的,因为您可以训练玩家,记住他不能做的事情,并经常地有目的地利用它直到他可以为止,这样玩家既不会感到无聊,也不会感到沮丧。
乔纳森·康奈尔

虽然我同意不使用随机分配,但我不同意“帮助玩家”:这就像作弊,只会更糟,因为您会向玩家撒谎
o0'。

@ Lo'oris:好吧,我不认为这是谎言。当玩家告诉游戏让他轻松时,他期望游戏会变得温和。当您在玩游戏时,您真的会和一个刚发现它的朋友很擅长,我觉得给他机会是完全可以的。它使每个人的游戏更加有趣。
Tyn

1
肖恩·哈格里夫斯Shawn Hargreaves)撰写了一篇不错的博客文章,内容涉及随机性,以及人类发现随机模式的能力。在这种情况下,这可能会转化为玩家错误地判断AI玩家的战术。
乔纳森·康奈尔

1
实际上,我认为准确性随机化是一个不错的方法。在一个没有那么出色的真正球员的情况下,有时他会犯一个错误并打进一个更好的球
。– AttackingHobo

10

关键概念是避免给全国人大带来“完美的知识”。

  • 涉及计算的任何决策或动作的随机误差幅度。瞄准的明显例子(即突击队狙击手)。如果他们不总是打你,那会更现实。
  • 视线...如果他们看不到你,它可以做成有趣的猫和老鼠游戏。
  • 团队战术,根据您的游戏类型,适应情况的敌人可能会更有趣。例如,如果您被开枪,就不会盲目冲锋,直到隐身的火势扑灭之前,您都可以掩护。或者,如果附近有队友,您会更愿意冲进去……您可以模拟这些行为,使NPC表现得好像还活着。

我敢肯定还会提供更多示例,也许您可​​以向我们介绍您的游戏,并且我们可以提供更具体的信息:-)


4

使完美的AI可战斗的一种快速方法是,通过在输入或输出中添加一些“噪声”来做出不完美的决策。噪声是指一些随机因素。

这是一个输出的小示例:

  • 完美算法可产生三个可能的动作,并用得分进行排名。
  • 为每个分数添加一个随机值。
  • 选择最佳成绩。

以下是一些输入建议:

  • 如果行动是基于对手的健康状况,则将一个随机因素(例如,对于0-100的健康状态栏为+/- 10)添加到AI感知状态。
  • 对于动作评级也是如此,如果AI知道某些攻击比其他攻击更强大,则在其中随机添加/减去一些值。

要考虑的一件显而易见的事情是AI的速度。在大多数游戏中,认可机构可反应MUCH快于人类(尤其是在战斗),做明显的多任务处理(在RTS游戏非常明显)。因此,您必须对此进行操作,方法是使AI保持缓慢(可能是自适应的),并限制AI在确定的时间范围内可以执行的操作数量(即每半秒执行一次操作)。

希望这会有所帮助,并祝你好运!


3

如果不知道您到底想做什么,就很难给出直接有用的答案。

关于这个问题,我有两点要说的可能对您有所帮助。

第一件事(这是迄今为止最重要的事情),如果您想让敌人感到更有趣和更人性化,那么您的战斗策略就无关紧要了。使玩家“相信”敌人还活着的诀窍是使用动画,声音和很少的细节来暗示人类的行为。完美的AI可能会走到拐角处,与玩家见面并射击。人类的AI可能会走到拐角处,看到玩家,对他的脸有惊讶的表情,然后大声喊叫并射击。第一个似乎是机器人。第二个似乎是人类。除了在拍摄前插入动画(或拍摄过程中保持战术行为相同)以外,两者在每种方式上都使用相同的AI 。

第二,避免随机化。玩家并没有像设计师想的那样欣赏它。玩家看不到“计算机在100中产生1,然后在5、3和4中产生,因此最后四次射击的错误系数仅为1%,5%,3%和4%,这就是为什么你在这一回合中死了半秒钟?” 玩家只会看到有时疯狂地错过的敌人,有时却无缘无故地反复钉住他们,这令人难以置信。好的游戏设计主要是建立人类玩家的模式可以观察,学习和击败,并根据自己的判断力,技能和直觉来使玩家取得成功,而不是根据玩家是否幸运来进行判断。随机化的冲动来自台式游戏和赌博游戏的经验,两者都是与视频游戏截然不同的媒体(在一种媒体中有效的做法在另一种媒体中通常没有意义)。


1

我记得在我们大学的AI课程中,有一个关于使AI更“人性化”而又不那么完美的话题。那是很多年前的事,所以我只是想起了一些要点。

  • 使用“移动库”。如果您正在与兽人战斗,请给他说3个战斗例程,这些例程会不时重复。这使战斗变得更容易预测,这似乎与您想要的相反,但是仍然使AI不再是“完美的机器”,而是更多的“菜鸟一次又一次地重复相同的动作”。
  • 如果可能,进行次优化。如您所说,如果您的AI基于计算最佳移动,则对此计算设置一个人为限制。缩小搜索范围,或限制步数。AI不会选择有史以来的最佳举措,而只会选择一个好的举措。这可能会给您的敌人行为增加很多变化,因为有很多比最好的方法更好的方法。
  • 故意犯错误。最好不要选择第二或第三。甚至选择效用不好的举动。这可以解决您的“不可预测性”点。

当然,这些只是应针对每种情况进行研究和测试的一般建议,并且确实可能​​使您的AI看起来比预期的更加虚假。但是,我认为它们是一个很好的起点。


0

我只是看到了这个弹出窗口,想分享我过去使用过的想法。

假设角色有三个动作,并且每个动作都得分,得分越高越好。(其他答案是关于增加噪音以创建此分数。)

  • 用剑攻击(30分)
  • 火系法术(50分)
  • 冰拼(20分)

总分(100)

将角色的智力统计从该统计的最大可能值中取出(假设100中有60)。

生成介于0(或其他某个楼层)与智能比(0.6)之间的随机数,再乘以总点数(100)。在我们的示例中,假设结果为45。

现在,您开始从该值中减去不良动作,直到达到零。(按顺序减去。)

首先,我们考虑得分为20的Ice咒语。45-20 =25。该值高于零,因此我们将Ice咒语排除在外。

第二,用价值30点的剑看进攻。25-30 = -5。我们达到了阈值,所以我们选择了用剑动作进行攻击。

在此系统中,智力低下的角色不会采取最佳行动。具有高智商的角色通常会采取最佳行动。(在此示例中,具有完美智能的角色在50%的时间内选择了最佳动作。)

在随机数上添加下限机制会增加选择更好的动作的机会。

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.