Answers:
关于Gamasutra的一件事,Mick West 撰写了一篇非常有趣的文章:智能错误:如何将愚蠢性纳入您的AI代码中。
本文讨论台球游戏AI。实施这样的AI时,很容易在每次射击时都投一个球。正如其他答案所建议的那样,使AI减少“智能”的一种简单方法是在计算中添加一个随机因素,使AI错失更多。
但是这种方法存在两个主要缺陷。首先,这是不可预测的。对于在“轻松”模式下玩的玩家,AI变得“幸运”是不可接受的。如果您的随机因素使AI做得更好,打出更有价值的球或进行连击该怎么办?您不知道会发生什么,而在简单模式下AI也不应该选择幸运。
另一个缺陷是玩家将尝试识别AI行为中的模式。有了简单的随机因素,就没有模式。但这并不意味着玩家看不到任何图案,实际上恰恰相反。一旦AI幸运,玩家将看到其行为的策略。在文章中,玩家抱怨AI在发挥位置策略。当角度精度中只有一个随机因素时。
从我的角度来看,阅读这篇令人大开眼界的文章后,一个不完美的AI绝不应该将随机化作为简化因素。相反。更简单的AI应该更聪明,但要努力帮助玩家。
在文章“泳池游戏”示例中,实现“简易模式” AI的最佳选择实际上是删除所有随机因素,并添加定位策略。AI会尝试击球,为球员准备一个简单而出色的投篮。
这样,玩家会认为自己很幸运。这就是您在轻松玩游戏时所期望的。
关键概念是避免给全国人大带来“完美的知识”。
我敢肯定还会提供更多示例,也许您可以向我们介绍您的游戏,并且我们可以提供更具体的信息:-)
使完美的AI可战斗的一种快速方法是,通过在输入或输出中添加一些“噪声”来做出不完美的决策。噪声是指一些随机因素。
这是一个输出的小示例:
以下是一些输入建议:
要考虑的一件显而易见的事情是AI的速度。在大多数游戏中,认可机构可反应MUCH快于人类(尤其是在战斗),做明显的多任务处理(在RTS游戏非常明显)。因此,您必须对此进行操作,方法是使AI保持缓慢(可能是自适应的),并限制AI在确定的时间范围内可以执行的操作数量(即每半秒执行一次操作)。
希望这会有所帮助,并祝你好运!
如果不知道您到底想做什么,就很难给出直接有用的答案。
关于这个问题,我有两点要说的可能对您有所帮助。
第一件事(这是迄今为止最重要的事情),如果您想让敌人感到更有趣和更人性化,那么您的战斗策略就无关紧要了。使玩家“相信”敌人还活着的诀窍是使用动画,声音和很少的细节来暗示人类的行为。完美的AI可能会走到拐角处,与玩家见面并射击。人类的AI可能会走到拐角处,看到玩家,对他的脸有惊讶的表情,然后大声喊叫并射击。第一个似乎是机器人。第二个似乎是人类。除了在拍摄前插入动画(或在拍摄过程中保持战术行为相同)以外,两者在每种方式上都使用相同的AI 。
第二,避免随机化。玩家并没有像设计师想的那样欣赏它。玩家看不到“计算机在100中产生1,然后在5、3和4中产生,因此最后四次射击的错误系数仅为1%,5%,3%和4%,这就是为什么你在这一回合中死了半秒钟?” 玩家只会看到有时疯狂地错过的敌人,有时却无缘无故地反复钉住他们,这令人难以置信。好的游戏设计主要是建立人类玩家的模式可以观察,学习和击败,并根据自己的判断力,技能和直觉来使玩家取得成功,而不是根据玩家是否幸运来进行判断。随机化的冲动来自台式游戏和赌博游戏的经验,两者都是与视频游戏截然不同的媒体(在一种媒体中有效的做法在另一种媒体中通常没有意义)。
我记得在我们大学的AI课程中,有一个关于使AI更“人性化”而又不那么完美的话题。那是很多年前的事,所以我只是想起了一些要点。
当然,这些只是应针对每种情况进行研究和测试的一般建议,并且确实可能使您的AI看起来比预期的更加虚假。但是,我认为它们是一个很好的起点。
我只是看到了这个弹出窗口,想分享我过去使用过的想法。
假设角色有三个动作,并且每个动作都得分,得分越高越好。(其他答案是关于增加噪音以创建此分数。)
总分(100)
将角色的智力统计从该统计的最大可能值中取出(假设100中有60)。
生成介于0(或其他某个楼层)与智能比(0.6)之间的随机数,再乘以总点数(100)。在我们的示例中,假设结果为45。
现在,您开始从该值中减去不良动作,直到达到零。(按顺序减去。)
首先,我们考虑得分为20的Ice咒语。45-20 =25。该值高于零,因此我们将Ice咒语排除在外。
第二,用价值30点的剑看进攻。25-30 = -5。我们达到了阈值,所以我们选择了用剑动作进行攻击。
在此系统中,智力低下的角色不会采取最佳行动。具有高智商的角色通常会采取最佳行动。(在此示例中,具有完美智能的角色在50%的时间内选择了最佳动作。)
在随机数上添加下限机制会增加选择更好的动作的机会。