人工智能在游戏开发中的应用2.docx
《人工智能在游戏开发中的应用2.docx》由会员分享,可在线阅读,更多相关《人工智能在游戏开发中的应用2.docx(11页珍藏版)》请在冰豆网上搜索。
人工智能在游戏开发中的应用2
《人工智能》
课程论文
题目人工智能与游戏开发
院(系)中印计算机软件学院专业计算机科学与技术
学号************
学生姓名惠智慧
任课教师籍成章
时间
摘要
本文介绍了常用游戏AI技术,总结了游戏AI的设计原则,并提出了游戏AI的发展趋势,对游戏设计和开发人员具有一定的指导意义,也有助于玩家从设计角度认识电脑游戏。
游戏人工智能是人工智能科学技术领域一个新兴的、活跃的学科分支,是计算机游戏和人工智能相结合的产物。
人工智能是近几年游戏业界的焦点所在,随着人工智能理论研究的进展,许多现代游戏都具有了很多的智能成分。
他们想要探索新的理念,使AI技术进入下一代,到那时,AI不仅是要创造有趣的游戏对手,而且还要使这个对手能够与玩家交谈,能和众多的在线冒险家周旋,能在一个一个的游戏中不断学习,使它在下一轮的游戏中变得更加聪明机智。
目前,游戏开发中的人工智能正处于一场革命之中,人工智能的迅速发展必将推动整个游戏产业的飞速发展。
关键词:
游戏AI游戏AI技术游戏角色
Abstract
ThispaperintroducesthegameAItechniques,summedupthegameAIdesignprinciples,andproposedthedevelopmentofgameAItrendsforgamedesignersanddevelopersareofsignificance,alsohelpedtheplayersknowcomputergamesfromadesignperspective.GameAIisartificialintelligenceanew,activeinthefieldofscienceandTechnologyBranch,istheresultofcombiningcomputergamingandartificialintelligence.Artificialintelligenceisthefocusofthegameindustryinrecentyears,withprogressinartificialintelligenceresearch,manymoderngameshavealotofintelligentcomponents.Theywantedtoexplorenewideas,thatAItechnologyintothenextgeneration,untilthen,AIisnotonlytocreatefungamesopponents,butalsotoenabletheoppositiontotalkwithplayers,andnumerousonlineadventureworld,canlearninonegameandmakeitbecomemorecleverinthenextroundofgames.Atpresent,thegame'sartificialintelligenceisinthemidstofarevolutioninthedevelopmentandtherapiddevelopmentofartificialintelligencewillpromotetherapiddevelopmentofthegamingindustryasawhole.
Keywords:
gameAIAItechnologycharacter
引言
人工智能(简称AI)是一门综合性学科,旨在研究如何利用计算机等现代化工具种系统来模仿人类的智能行为。
游戏中的人工智能(简称游戏AI)可以理解为所有由计算机在游戏中所做的“思考”,它使得游戏表现出与人的智能行为、活动相类似,或者与玩家的思维、感知相符合的特性。
在电脑游戏的设计和开发中应用人工智能技术,可以提高游戏的可玩性,改善游戏开发的过程,甚至会改变游戏的制作方式。
游戏人工智能是人工智能科学技术领域一个新兴的、活跃的学科分支,是计算机游戏和人工智能相结合的产物。
人工智能是近几年游戏业界的焦点所在,随着人工智能理论研究的进展,许多现代游戏都具有了很多的智能成分。
而采用大量的游戏人工智能显然是使你的游戏鹤立鸡群的重要手段之一,高质量的游戏AI已经不再是为提高游戏运行速度才予以考虑的东西,它现在已是和图形或声音一样,成为游戏设计过程的极为重要的一个部分,它是促进还是阻碍游戏产品畅销的一个决定性因素[1]。
目前,越来越多的游戏公司宣称他们的游戏开发项目中包括至少一名专业AI程序员,而越来越多的游戏开发者正竭尽所能研究新的AI技术,以藉此构筑更好、更聪明的游戏AI。
他们想要探索新的理念,使AI技术进入下一代,到那时,AI不仅是要创造有趣的游戏对手,而且还要使这个对手能够与玩家交谈,能和众多的在线冒险家周旋,能在一个一个的游戏中不断学习,使它在下一轮的游戏中变得更加聪明机智。
目前,游戏开发中的人工智能正处于一场革命之中,人工智能的迅速发展必将推动整个游戏产业的飞速发展。
一、电脑游戏和游戏AI
电脑游戏中的人工智能从功能上可分为个体智能系统和群体智能系统。
个体智能系统主要控制游戏世界中虚拟人物的活动,它们在游戏中充当非玩家的各种角色,包括玩家的敌人、合作伙伴和其它人物角色等。
对于这些类型的实体,要想比较真实地对它们进行模拟,必须通过人工智能控制它们的行为符合它们各自特定的身份。
群体智能系统则主要为某个系统的多个个体或者环境活动提供控制和辅助决策。
例如,战略游戏中的战斗形势判断、整个战斗策略推理、各个战斗部队调动等。
目前,大部分电脑游戏都使用了人工智能,作为游戏的核心,人工智能能提供更多、更为真实的游戏挑战,激发玩家的兴趣。
另外,人工智能在游戏可玩性方面往往也起着决定性因素,把人工智能应用于游戏中,会使玩家感觉到游戏中的人物行为具有令人信服的合理性,从而吸引玩家,并有效促进游戏开发的成功。
二、游戏智能的系统结构
一个游戏AI系统可以分为以下几个部分[2],如图1所示:
图1游戏AI系统结构示意图
感知输入子系统:
它是游戏AI系统的最基本部分。
所有AI系统都必须能感知它们周围的世界,才能使用这些信息作进一步的推理和分析。
周围世界中哪些信息在何种程度和范围内被感知,取决于正
在开发的游戏类型。
记忆存储子系统:
它负责将所有感知的信息、数据和知识等,以合适的方式在计算机内表达和存储。
游戏中感知数据和知识的存储是一个较为复杂的过程,很多数据并不是按一种直接的方式存储。
分析推理子系统:
它使游戏AI系统的核心。
它通过感知到的数据和存储记忆体中的知识分析当前的状况,并做出一个合理的决策。
做出决策的快慢取决于可选择的决策数目的多少,以及所需要考虑的感知信息的多少。
决策行为子系统:
它主要负责把计算机做出的各种决策和行为,作用到游戏世界中的人物角色上。
在游戏开发中,人工智能最终都要通过各种动作、行为和反应表现出来,这样玩家在游戏中才能实实在在地感受真实的智能。
三、游戏AI技术
人工智能是多种智能技术的组合体,在电脑游戏中,每一种技术在游戏中都有较固定的应用。
常见的游戏AI技术包括以下几种:
1.有限状态机
有限状态机(FiniteStateMachine,i.e.FSM)也是计算机游戏中应用普遍的人工智能模型。
通常,这类系统描述了一个事件驱动系统模型,易于规则表达。
一般的,状态机可以用状态转移图的方式描绘。
其中的节点表示不同的状态,不同状态之问由于触发条件而发生转换,用弧线表示。
状态转换的条件写在弧线上方,旁边是当转换发生时的可能输出。
图2为吃豆游戏《Pac.Man》中Ghost的有限状态机实例。
图2Pac·Man中Ghost的有限状态机框图
有限状态机在游戏中可以构成管理游戏世界(Gameworld)的基础,模拟NPC的情绪状态[3],维持游戏的状态,分析玩家的输入,或者管理对象的状态。
就有限状态机的实现上,文献[4]给出了一个有限状态机的C++类实现。
此外,由于状态机的滥用,可能导致程序可读性差,调试困难,性能下降。
针对这个问题,SteveRabin[5]提出一种以简单语言来组织有限状态机的鲁棒方法。
继而,文献[6]将该方法拓展,用消息机制考虑了人工智能对象间通信的问题,包括状态机之间的切换、同步等。
作为一般有限状态机的扩展,模糊状态机(FuzzyStateMachine,i.e.FuSM)也是较为常用的模型[7]。
这种模型可以实现不可预测的行为,即游戏每次都有可能产生不同的行为结果,从而为玩家提供更多乐趣,也具有更大的重玩可能性。
这也是智能行为的一种表现。
模糊状态机的典型运用包含NPC或玩家角色的生命值定义,赛车游戏中汽车的加速与制动[8],NPC情绪的模糊状态等。
文献[9]给出了一个通用的C++模糊状态机设计。
与一般状态机类似,模糊状态机也存在模糊状态增加而导致的组合爆炸。
文献[10]提出了Combs方法用于解决组合爆炸问题。
传统系统中的规则通常考虑输入集合的组合同输出之间的关系,而Combs则考虑各个集合同输出之间的关系,每次为一个变量创建规则。
2.脚本语言
脚本语言是一种解释性语言,通常用于控制游戏中的AI模式。
它在游戏中可以驱动事件、为非玩家角色的智能行为建模、实现某些任务的自动化等功能。
3.模糊逻辑
该方法采用实数值来表示对象属于集合的程度。
与传统逻辑相比,模糊逻辑的表达能力更为丰富和细致,因而能够进行更好的推理.它常用游戏中的战略决策,输入输出信息的过滤,非玩家角色的健康状态计算以及情绪的状态变化等。
4.决策树
决策树一般都是自上而下的来生成的。
每个决策或事件(即自然状态)都可能引出两个或多个事件,导致不同的结果,把这种决策分支画成图形很像一棵树的枝干,故称决策树。
树决策树类似于一系列IF-THEN形式的条件判断。
这种技术在游戏中可用于分类、预测和学习。
5.神经网络
神经网络是一种模范动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。
这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
神经网络具有初步的自适应与自组织能力。
在学习或训练过程中改变突触权重值,以适应周围环境的要求。
同一网络因学习方式及内容不同可具有不同的功能。
人工神经网络是一个具有学习能力的系统,可以发展知识,以致超过设计者原有的知识水平。
通常,它的学习训练方式可分为两种,一种是有监督或称有导师的学习,这时利用给定的样本标准进行分类或模仿;另一种是无监督学习或称无为导师学习,这时,只规定学习方式或某些规则,则具体的学习内容随系统所处环境(即输入信号情况)而异,系统可以自动发现环境特征和规律性,具有更近似人脑的功能。
在游戏中,神经网络可用于分类、预测、学习、模式识别、行为控制等。
6.遗传算法
遗传算法是近年来发展起来的一种崭新的全局优化算法。
它借用了仿真生物遗传学和自然选择机理,通过自然选择、遗传、变异等机制,实现各个个体的适应性的提高。
从某种程度上说遗传算法是对生物进化过程进行的数学方式仿真。
遗传算法对求解问题的本身一无所知,它所需要的仅是对算法所产生的每个染色体进行评价。
把问题的解表示成染色体,并基于适应值来选择染色体,使适应性好的染色体有更多的繁殖机会。
在执行遗传算法之前,给出一群染色体,也即是假设解,然后,把这些假设解置于问题的“环境”中,也即一个适应度函数中来评价。
并按适者生存的原则,从中选择出较适应的染色体进行复制,淘汰低适应度的个体。
再通过交叉,变异过程产生更适应环境的新一代染色群体,再对这个新种群进行下一轮进化,直到最适合环境的值。
遗传算法通用实现过程:
(1)对待解决问题进行编码;
(2)随机初始化群体;
(3)计算群体上每个个体的适应度值:
(4)评估适度,对当前群体中每个个体计算其适应度:
(5)按预定的选择算子产生后代;
(6)对后代进行交叉操作;
(7)对后代进行变异操作;
(8)判断是否满足停止条件,满足转第3步,否则进入9;
(9)输出种群中适应度值最优的个体。
这种技术试图直接模拟生物进化过程,在一系列的程序、算法和参数之间作出选择,杂交以及随机的变异和交叉。
在游戏中,可用于优化、学习、策略形成,行为进化等方面。
另外,其它的AI技术还有基于范例的推理、搜索方法、情景演算、机器学习等。
在智能游戏中,或多或少地都采用上述的技术,所获得的效果也各不相同。
其中脚本语言、A*路径搜索、模糊逻辑等技术已较成熟,而神经网络和机器学习等高级技术尚处于尝试中。
实践证明,有限状态机、决策树、产生式系统这类简单技术在游戏中最有效并得到了广泛的应用。
四、游戏引擎与人工智能
随着软硬件的发展,现今的计算机游戏的复杂度已经达到了一个难以想象的高度。
这不仅表现在游戏程序设计上,更表现在够整合大量的不同的人力资源和数据资源的一套完整的系统上。
例如,先进的3D图形技术提高了游戏世界的细节的表现力,导致游戏项目中美术工作者所占全部开发者的比重和游戏中在程序逻辑之外的数据部分的显著增加。
这就造成了数据整合工作的困难和游戏复杂度的相应提升。
于是游戏引擎的概念应运而生:
为了减少重复开发工作以降低开发成本,不同的游戏可以共用相同的游戏引擎。
游戏引擎不但提供数据整合、关卡设计的工具,更为编程人员提供了统一的接口,使底层的实现得到封装和重用。
这为游戏AI的设计提供了基础,提供了游戏中的角色所能进行的行为的一个层次描述。
这里分层次的的系统设计起着重要的作用。
例如,一个只支持游戏中角色的位置变动层次的游戏引擎,显然不需要为其角色的肢体行为设计人工智能。
而即使是提供了低层细节(例如程序中对角色肢体的控制)的游戏引擎,也应该可以限定人工智能模块工作在较高的层次之上(例如仅仅用AI程序处理角色的位置移动),这降低了问题的复杂度。
所以在设计与实现游戏中的人工智能之前,首先应该完成基本的游戏引擎系统的设计,明确游戏引擎提供的接口的层次结构和人工智能设计的最小粒度。
这相当于明确人工智能所要处理的问题的定义。
由于具有相似的应用环境,游戏程序可以采用与机器人的三层软件体系结构相似的体系结构[11]。
在机器人学中,机器人的软件体系结构必须决定如何将反映式控制和基于模型的思考模式相结合。
反应式控制是传感器驱动的,适合于实时地制定低层次决策,而思考式控制适用于依赖于在进行决策的时候不能感受到的信息的全局控制决策。
混合体系结构将反应与事先思考相结合。
而最为流行的混合体系结构是三层体系结构,它由一个反应层、一个执行层和一个思考层组成。
反应层为机器人提供低层次的控制,具有紧密的传感器一行动循环。
执行层接受思考层发出的指令,序列化以后传送给反应层,起着反应层和思考层之间的粘合剂的作用。
思考层利用规划生成复杂问题的全局解。
相应于机器人的三层体系结构,整个游戏引擎中实现的接口可以划分为低层接口、中层接口和高层接口三层。
除了像在机器人软件体系中,区分不同控制和决策层次的作用外,三层接口的引擎结构可以带来如下好处:
首先,起到了抽象和封装程序接口的所用。
上层接口对下层接口的调用是透明的。
其次,促进项目组内承担不同开发任务的开发者明确分工和协同工作。
图像和音效等的底层实现、人工智能算法的实现、动画数据的整合、高层游戏逻辑的编写等等,每一项工作都明确的位于一个唯一的层次中。
这在常常包含上百人的大型项目中,对于开发工作的组织和管理是非常必要的,因为不仅设计者、美术工作者、程序员等需要明确分工,程序员内部更是如此。
(1).低层接口
低层接口主要提供基本的3D渲染、物理计算、角色的运动控制和角色动画系统,这其中与人工智能密切相关的是角色的运动控制和角色动画系统。
低层接口的运动控制,是最基本的操作,它仅是对角色的位置和朝向的控制,与角色的属性没有关系。
而与角色的属性相关的运动,如速度、加速度的实现,甚至是一些高层的运动行为(例如,一辆汽车,它的速度的方向必须与其朝向一致,而速度方向的改变,只能依靠侧向的转向力)的实现,是中层接口实现的任务。
而这个实现正是通过对低层接口的调用来实现的。
角色动画控制提供对动画序列的调用与混合,完成逼真可信的角色动画。
同样底层接口的动画控制是对单个动画序列的操纵,不应包含任何逻辑上的动画序列的组织,那是中层接口的任务。
(2).中层接口
中层接口通过利用低层接口提供的运动和动画控制功能,实现角色更高层次行为的接口功能。
例如用户可以通过中层接口的调用来控制角色从一个地点行走到另一个地点,而行走过程中的角色动画,正是调用低层接口实现的,而其实现对于低层接口的用户(即中层接口的实现代码),是透明的。
(3).高层接口
可以规定只有高层接口包含人工智能算法的实现,即AI程序员只能调用中层以上的接口。
例如一个高层接口的调用,可以控制角色向敌人攻击,而攻击过程中的行动、战术(是从正面进攻,还是从侧面包抄?
使用步枪,还是使用手雷?
)等,正是通过具体的人工智能算法,调用中层接口提供的功能来实现的。
高层接口可以提供给关卡设计师,来完成游戏实际内容的创建。
这些接口往往包含较少的程序逻辑控制,可以供非程序员的设计人员使用,这通常需要实现某种简单的,或接近自然语言的脚本语言。
有些游戏引擎甚至提供图形化的工具来方便这一工作,这样,项目中的非编程人员(如游戏设计者),也可以参与游戏的具体开发,以减少工作流程。
五、游戏AI的设计原则
游戏AI设计主要解决游戏中具有挑战性的问题,如模拟某个角色的行为、军队找路、进攻和防御、建筑布置、危险估计、地形分析等。
这些行为具有人类的特征,在设计时,应遵循以下原则。
1.基于个人体验进行渐进式的设计
在设计游戏AI时,应根据自己玩游戏的想法去初步设计出游戏人物的各种决策和行为,并实现一个大致可以运行的系统,然后让游戏角色和玩家对抗,并通过不断重复以下步骤完善游戏AI:
游戏角色做了什么“蠢事”?
如果是人会怎样做?
是哪些信息使电脑角色做了这些“蠢事”?
重新设计游戏AI。
通过这样不断尝试和反复修改,使游戏AI具有相当的真实性和自然性。
2.使游戏AI具有灵活性和开放性
如在战略游戏中,当游戏角色进攻敌人时,会采用以下规则:
若只有一名可以攻击到的敌人,则目标就是它;
若有数名可以攻击到的敌人,那么选择最弱的一种;
攻击后,考虑到会陷入多少敌人的攻击范围中;
游戏AI能根据不同游戏角色的个性对上述规则排序,确定决策行为。
如游戏角色的攻击力很强,那么四条规则的排序为:
B>A>D;如果为了避免遭到敌人的围攻,则规则就成为:
D>B>A。
因为如果攻击后即使将敌人击毙,也会在下一回合被其他的敌人围攻,这样应不会作出进攻的决定。
3.平衡性
平衡性包括真实性和娱乐性之间的平衡、挑战性和娱乐性之间的平衡。
首先,游戏AI需要真实,玩家在游戏中的一举一动都希望尽可能地贴近现实生活。
例如,篮球运动中如果进攻队员受到严密的防守,可能会由于生气而出现进攻动作较大甚至进攻范规。
只要“真实”比赛有的,就必须在游戏中出现。
另外,游戏AI需要在挑战性和娱乐性之间找到平衡,因为有相当一部分玩家是为了放松而玩游戏。
玩家在玩游戏时,也希望面对的AI行为也会像人一样犯错误,如把武器掉在地上,射击时没有打中目标等,从而降低这类游戏的挑战性,使玩家得到更多的乐趣。
如果游戏角色具有很强的AI而不会出现任何失误,就会使玩家失去玩游戏的兴趣。
4、区分个体智能和群体智能
游戏AI应能合理地区分个体智能和群体智能。
如在足球游戏中,当球队进攻时,对于有球队员来说,它在每一瞬间是带球突破,还是射门,还是传球,都会受到游戏AI的控制。
如果游戏开发时只注重个体AI,则队员不会传球,则在一定程度上会失去群体运动的意义。
而合理的情况应是每个球员能较为聪明合理地分析球场上瞬息万变的赛况,通过不断分析,并迅速地调整它的行为而得以使比赛向更有利的方向发展。
群体运动游戏更注重群体智能的开发,它赋于游戏人物在不同场景和不同群体的情况下的总体思考能力。
5.简洁性
游戏AI的简洁性是指用尽量少的资源去造成游戏智力水平高超的假象。
游戏AI在实现时,算法越复杂,计算越多,处理器的压力就会越大,从而会降低游戏中动画帧的刷新频率,并拖累AI的活力和整个游戏的吸引力。
因此,在游戏的设计和实现上,可针对不同类型的游戏人物,分别采用不同的技术路线模拟。
对于行为简单的游戏角色,可使用简单的确定性AI技术;对于需要一点智能行为的次要角色,可以对其设定几种模式,并加上一点随机的因素扰动即可,对于比较重要的角色,可以使用有限状态机技术,并借助条件逻辑、概率、以及状态回溯等技术控制状态的迁移;只有对最重要的游戏人物,才需要利用一切可以利用的AI技术。
六、游戏AI的未来
游戏AI的下一件大事就是“学习”。
游戏上市后,所有非玩家角色的行为,不再事先安排,游戏玩得愈久,游戏就会更多地演化和学习,更具适应性。
这样的游戏会跟玩家一起成长,玩家也难以预测游戏行为,因此就能扩展游戏的生命周期。
游戏会学习并演化,造就了本身无法预测的本质,很显然,这让AI开发者带着相当大的惶恐去探索“学习”技术。
“学习”与“角色行为反应”技术,属于非定性AI的范围,这种技术要花费很长时间开发和测试。
再者,要了解AI究竟会做什么也很困难,这就使得调试更加困难。
已经证实这些因素是“学习”AI技术得以广泛应用的巨大障碍。
不过这一切都在悄然地发生改变。
目前,电脑游戏作为一个产业在我国已初步形成,它必将带动人工智能技术的研究。
鉴于人工智能的复杂性,它的研究和发展需要一个长期的过程。
参考文献:
[1]2007年度中国游戏年产业年会.2007年中国游戏产业调夯报告摘要[EB/OL].
/2008-01.16/00A6/09676640.html,2008-0l—15.
[2]徐菲云.3D场景中的路径搜索:
[电子科技大学硕士学位论文].成都:
电子科技大学计算机学院,2007,2.10
[3]D.J.Funge,ArtificialIntelligenceforComputerGames.Washington:
AKPeters,Ltd.,2004,81—94
[4]E.Dybsand.AGeneticFuzzyStateMachineinC++.GameProgrammingGems2,M.DeLoura,Ed.:
CharlesRiverMedia,Ine.,2001:
337-341
[5]S.Rabin.EnhancingaStateMachineLanguagethroughMessaging.AIGameProgrammingWisdoml,S.Rabin,Ed.:
CharlesRiverMedia,2002:
221-330
[6]M.McCuskey.FuzzyLogicforVideoGames.GameProgrammingGems1,M.Deloura,Ed.:
CharlesRiverMedia,2000:
319-329
[7]M.Zarozinski.ExplosioninaFuzzySystem.GameProgrammingGems2,M.DeLoura,Ed.:
CharlesRiverMe