游戏AI中的机器学习
在过去的游戏时代,我确信简单的开关/案例陈述(从某种意义上说)对于大部分游戏“AI”来说都可以做得很好。 然而,随着游戏变得越来越复杂,特别是在3D飞跃中,需要更复杂的算法。 我的问题是,此时游戏AI中使用的实际机器学习算法(如强化学习)? 或者,这仍然主要仅限于大学的研究项目(我曾接触过)?
如果不是真正的机器学习算法,那么推动商业游戏AI的前沿是什么? 它是简单高度复杂的,但是能够覆盖大多数可能性的静态(非ML)算法? 如果是这样,那么使用哪种实际类型的算法?
我一直对此感到好奇,谢谢!
编辑:思考一下后,我可以进一步澄清一点。 游戏中的代理人如何做出决定? 如果他们没有实时使用实际的学习算法,那么可能是在开发阶段用来产生模型(静态算法)的学习算法,然后使用该模型在游戏中做出决策? 或者是某种意义上的手动编码决策的静态算法?
编辑 :请注意,这个答案已经过去了五十年 - 现在机器学习已经取得了很大进展,游戏中使用的内容很可能也发生了变化。 原始答案如下。
我认为你高估了大多数现代游戏AI的能力; 这很棒,因为这正是现代游戏开发者所期盼的。 他们投入时间让系统看起来更加智能化,比如让AI角色谈论他们将要做什么,或者偶尔遵循执行复杂系列任务的预设脚本。
如果不是真正的机器学习算法,那么驱动商业游戏AI的前沿是什么? 它是简单高度复杂的,但是能够覆盖大多数可能性的静态(非ML)算法?
实际上通常有很少的可能性。 正如在另一个答案中提到的,通常有一个有限状态机在工作。 例如。 射击游戏中的典型敌人可能处于以下状态之一:闲置,警觉(他们知道附近有麻烦),狩猎(他们正在寻找敌人),攻击(他们可以看到敌人并参与攻击),以及逃跑(他们试图逃离敌人)。 各州之间的转换可以是简单的事件,例如听到的噪音,看到的对手,低于某个阈值的健康值等等。非常微不足道,真的。
通常可以将每个状态的实现分解为少量简单的操作,例如。 移动位置,观察方向,瞄准目标等。这些低水平的活动有充分的记录和广泛使用。 (例如,A *搜索寻路,矢量数学用于转向和定向)。大多数情况下,所有这些构建模块在3D中的工作方式与2D中的相同。
此外,看起来更复杂的AI往往是脚本化的,也就是说,这种行为是用一种简单的编程语言预先编程的,以便在特定的游戏环境中工作。 针对特定情况的脚本可以对环境做出假设(例如,隐藏在隐藏物后面的位置,盟友和敌人的接近程度等),并且可以相应地提供非常具体的目标。 一些预先确定的事件类型(例如,敌人见过,盟军死亡,未知噪音听见)以及在每种情况下写入的非常简单的反应(例如,如果self.health> 75%THEN attackNearestEnemy ELSE fleeToSafety)都可触发更多通用脚本。
...是一种学习算法,可能在开发阶段用于生成模型(静态算法),然后使用该模型在游戏中做出决策?
在模拟车辆(比如赛车游戏)的情况下,这种情况非常普遍 - 您可以将赛道算法作为基于这些点的一系列点和输入来提供,并获得一种学习算法来制定完成最好的时间。 最终你可以通过游戏发货。 但是,这是从少量输入(前方道路,障碍物接近度,当前速度)到少量输出(期望速度,期望转向)的简单映射,这非常适合机器学习。 模拟人类行为的游戏很少会回归到这些简单的函数逼近上,所以我们倾向于依靠手动模拟不同的行为状态。
有时候可能会出现一种混合方法,其中有限状态机转换可能会被训练得更加优化,但这在实践中不太可能出现在很多游戏中,因为对于设计人员来说,实际转换通常是微不足道的。
大量的游戏只使用有限状态机
在网上有一些非常好的资源:
在游戏中玩ML没有任何意义,至少大多数消费者游戏都是如此,因为人工智能很容易变得非常难以击败,因此对玩家来说并不愉快。 游戏AI中的很多努力分为三部分:第一部分是允许计算机作弊。 即人工智能通常知道玩家在哪里,并且事先知道周围环境的最佳路线。 这是必要的,否则AI会一直在摸索死胡同,这并不是很好。 AI工作中的另一个主要努力是让NPC哑得足以让玩家击败。 人工智能很容易被写入来殴打玩家(想想你面对海军陆战队时的半条命),但最难的部分是平衡人工智能的外观和可玩性。 最后一部分是确保AI仅占用有限的资源 - 无论是CPU时间还是内存使用量。
使用ML的另一个缺点是AI的状态需要在会话之间存储,否则AI每次都必须从头开始。 在个人电脑上这不是问题,但是控制台过去常常有非常有限的长期存储空间,无法保存状态信息。
AI'作弊'的一个例子:在运输大亨中,AI公司从未被指控修改地形的高度。 我知道这是因为我多年前将它移植到Mac上。
我做的第一个FPS,AI总是朝着玩家前进,但是方向会使用正态分布的随机样本进行加权,所以大部分时间的方向都是朝向玩家,但是偶尔会有方向偏离 - 它帮助AI走出了死胡同。 这是在有足够的CPU咕噜声进行A *搜索之前的几天。
链接地址: http://www.djcxy.com/p/56365.html上一篇: Machine Learning in Game AI
下一篇: beta in Connect Four