AI作为时下计算机算法的****,在例如CV、NLP、语音、机器人等诸多领域都有广泛的应用。而在游戏领域,AI的应用往往被认为只是把游戏角拟人化,算法的**印象也通常是强化学习。但实际当中,AI在游戏中的应用却不止于此。本文就来介绍一下游戏领域的AI应用与算法。
首先摆在我们面前的是,为什么要研究游戏AI呢?
游戏可以看做现实问题的折射,研究它可以为解决现实问题提供有价值的样本;同时,游戏的算法永远不会被单单的几种算法所束缚,多种形式的AI方法可以分别或结合在不同的游戏中。更重要的,当然是因为它很有趣~!!!!:P
引用《AI与游戏》 中的话:
自 AI 的想法诞生以来,游戏一直为 AI 的研究过程提供助力。游戏不仅提出有趣且复杂的问题来供AI解决————例如去精通一个游戏;它们也为(人类,甚至机器)用户能够体验到的创意以及表达提供了一个画布。因此可以说,游戏是罕见的,是科学(解决问题)与艺术相碰撞并相互作用的领域,而这些因素也让游戏对于AI的研究来说成为一个**并且**的环境。然而不仅是AI在游戏中提升,游戏也在AI研究中得到了发展。——《Artificial Intelligence and Games》
在游戏领域中,AI的应用其实并不仅仅是人们印象中的玩家型战斗AI。如果我们将一款游戏拆开来看他的各个环节,这些AI的应用就变得直观起来。
1.1 游戏画面
来满足使用者在游戏内视觉上的需求,但是聚焦到游戏内角们的表情与动作这些细节上时,动画的设计通常变得吃力不讨好起来,应用视觉AI可以将人们的动作投影到角身上,生成相应的动作表情;而在环境的设计中,AI也可以起到相似的效果,通过输入现实的图片来得到相应的游戏画面。在这个问题上,CV中的机器学习方法例如姿态识别,表情识别,GAN等起到了关键的作用。下面几个例子带你一窥AI是如何创造游戏画面的。
1.2 玩家型AI
该类型应该是最被大众所*知的游戏AI类型,2017年AlphaGo击败世界围棋冠军李世石,2019年OpenAI Five击败DOTA2世界冠军OG证明了AI在游戏上的表现可以超越人类。而此类AI问题本质上可以看成是路径规划问题,典型的以强化学习、深度强化学习为代表的游戏AI目前在国内的游戏工业界已被大量研究,在某些游戏类型例如**类、回合制策略游戏中,蒙特卡洛搜索树(行为树)、演化算法、A*等**学习算法也具有一定优势。
1.3 游戏内容
在这一方面的AI应用常常不为人所知,通常被称为Procedural Content Generation(PCG)。在游戏内容(地图)的产出上,以魔兽争霸3为例,而社区玩家内容又更是由玩家数量所决定,丰富且可行的游戏内容是吸引玩家入坑的重要保障。利用AI去生成可行的游戏内容是非常值得研究的方向。目前该方向的主流算法包括演化算法、GAN等。
▲ GAN的应用
1.4 游戏初始化平衡
目前在卡牌类游戏中,为了初始化得到的卡牌或是环境相对平衡,在PVE游戏中体现为玩家可以战胜Bot,PVP游戏例如炉石传说、***,防止出现双方卡牌差距过大导致输掉,可以利用AI来设计发牌的策略。该方向的主要算法为演化算法。
▲ 炉石中的演化算法平衡牌组
1.5 游戏测试
开发者们需要测试游戏内存在的bug,这毫无疑问是重要的,如果一款游戏存在大量的bug,对该游戏的评价和收益都会造成巨大的影响。而测试游戏需要大量的时间,在这一方面,测试专用的agent可以被设计来面对这一挑战,目前这一块的算法主要为蒙特卡洛搜索树、强化学习、深度强化学习等。
▲ 深度强化学习自动测试agent
1.6 用户画像
在游戏的运营过程中,这些信息可以用作促进游戏更新更多玩家喜欢的内容,预测玩家的行为和喜好,检测作弊**等。利用合理的机器学习算法可以**提升玩家的游戏体验。
AI在游戏中的具体应用可以大致划分为三个方向:
1 利用AI玩游戏
在游戏中建立bot。
a.可以与玩家共同匹配或作为PVE的NPC等提高玩家体验水平,由此引申的功能可以有动态难度调节,游戏自动平衡。
b.游戏bug测试在投入运行前,可以通过投入大量的有测试行为的agent进入游戏,或是通过bot间的对战,
c.例如阵型识别,
d.一系列基础的agent可以通过参数演化或者agent间对抗的方法来催生能更好的agent。
e.寻路(Pathfinding)寻路规划可以被视为AI动作序列输出的一种特例。在某些游戏例如马里奥中,寻路算法本身就构成了AI player。
a.Model based(基于模型的agent)
Planning-based:**优先搜索(例如 ),蒙特卡洛树搜索,演化规划基于模型的强化学习b.Model Free(无模型方法)
静态类方法:状态机,行为树,基于效用(启发式)函数的AI方法planning-based:STRIPS(符号化表示规划)c.学习类方法
强化学习:需要高度表格化表示。深度强化学习:基于游戏图像,但需要有游戏实时的奖励设置。演化算法:通过演化算法来更新神经结构和权重来达到最优化。基于游戏图像,2.
就是PCG(Procedural content generation),利用AI的方法去协助设计游戏系统,可玩,新奇)。具体的应用方法需要进一步查阅资料。
a.(辅助)生成游戏中的内容(影响规则):关卡、地图、物品、武器、任务、人物、规则等。
b.(辅助)生成游戏中的外观(不影响规则):人物外观,表情,武器外观,音效等。
c.辅助设计
d.修复地图bug:对无法抵达的死角做检测与替换等。
a.可用于热量、雨水、液体流动、压力**等环境系统建模,也可以生成洞窟等小型地图,但无法保证可控。
b.基于文法方法定义一系列文法规则来生成内容。
c.基于搜索方法(通常为Evolutionary Algorithms,EA):相较于机器学习的方法,关键问题有例如需要确定较好的内容表示形式,需要有一种较好的评估手段。有以下几种分类:
EA类算法:遗传算法,演化策略,演化编程EA like 算法:粒子群演算法,差分进化算法content representation评估方法直接评估是通过某种函数去约束评估生成的内容,包括Theory-driven和Data-driven,区别在于评估函数是基于理论还是经验模型的。基于**是利用bot AI去进行游戏来评估游戏的内容。包括静态评估和动态评估,区别是评估函数是否会随着时间改变。通过人类玩家的体验进行评价。以及显式评估- 玩家直接评分d.机器学习方法PCG研究的一个新方向是在现有内容上训练***,以便能够产生更多相同类型和风格的内容。这是受最近的深度神经研究结果的启发,其中生成式对抗和变异自动编码器等架构在学习生成卧室、猫或人脸等图像方面取得了很好的效果,同时也受到了早期研究结果的启发,其中较简单的学习机制如马尔科夫链和较复杂的架构如递归神经都在一些语料库的训练后学习生成文本和音乐。
神经,包括GAN,AutoEncoder和NeuroEvolution等等。概率模型,PCGML训练方法:- Backpropagation: 利用反向传播作为训练NN的方法来- Evolution: 使用演化计算方法来训练NN或是直接生成结果- Frequency Count:使用统计学与马尔科夫链变种来计算概率- Expectation Maximization: 利用EA算法来训练无监督学习模型- Matrix Factorization:矩阵因子化是一种数学方法来将输入的矩阵分解到更低维度的方法
e.将游戏生成内容与玩家体验结合(EDPCG,Expierience-driven PCG),它包括了三个核心方面:情绪激发、情绪检测和情绪表达。
情绪激发: 游戏为激感提供了出的背景构件,因为是变化的,如图像、声音、故事等等。情绪检测: 游戏用户(玩家)通常更愿意提供更多的多模态质的输入(通过传感器),只要这将导致体验的增强。从某种意义上说,玩家是情感计算和多模态交互研究的**用户。情绪表达: 用户在游戏中自愿经历一系列的体验:这些体验从非常积*的到非常消*的都有。同时,游戏中的情感体验是受玩家影响的! 因此,玩家习惯于并在很大程度上对基于情感的表达持开放态度!2.3 利用AI为玩家建模
以潜行**游戏《Hello Neighbor》中的玩家建模例子。在这款游戏中,AI打造的领居会一直跟踪玩家,并从过去的错误中吸取教训,致力于打败玩家。
a.理解玩家在游戏中的体验。b.理解玩家在游戏中的行为。
a.经验VS行为(Experience vs Behavior)
Experience: 玩家在游戏过程中的感受,包括:一系列(合成的)感受、认知、行为状态,或是其他的用户状态,情绪和认知等Behavior:玩家在游戏过程中的行为。b.高级概念分类
model-based(理论驱动):从一些列玩家心理学、认知学的研究中得到一些玩家对应游戏的模型,其中包括可视化,例如热力图来衡量玩家的活动频率。c.监督学习玩家建模包括寻找一个函数,将玩家的一组可测量的属映射到特定的玩家状态。按照监督学习的方法,这是通过机器学习或自动调整模型的参数来实现的,每个样本与目标输出配对。输入样本对应于可测量的属(或特征)列表,而目标输出对应于我们有兴趣学习预测的每个输入样本的玩家状态的注释。如前所述,注释可以从行为特征,到玩家经验的估计,如玩家的挫折感等。
d.无监督学习很多时候,在这种情况下,玩家的建模必须依靠无监督学习。无监督学习的重点是通过发现输入的关联,在没有获得目标输出的情况下,将模型与观察结果相匹配。输入通常被视为一组随机变量,通过观察输入向量之间的关联来建立模型。应用于玩家建模的无监督学习包括聚类和关联挖掘等任务。

参考






发表评论