您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 游戏引擎中智能角色的研究
游戏引擎中智能角色的研究【摘要】本文对游戏引擎的产生做了简要的介绍,并分析引擎发展史上人们对智能的外在表现形式的界定,通过分析得出了智能是以感觉器官为基础、以真实可信为原则的结论。通过分析角色,得到分析游戏中的智能主要集中为分析游戏中单个角色的智能的结论。再研究了现有的普遍智能技术的实现方法,逐步深入,又分析了已有的研究成果和不足之处,在此基础上,提出了改进方法,构造了非玩家角色的结构,并分析了该结构的优缺点。【关键词】游戏引擎,智能,角色引言游戏古来有之,一些简单的规则,哪怕是普通的追逐,都可视之为游戏。运动类游戏,比如跳皮筋、踢毽子、打球、放风筝;智力游戏,比如猜谜语、下棋;娱乐游戏,比如玩风车、斗蟋蟀、捉迷藏;角色扮演游戏,比如过家家。我们在游戏中成长,学会了生活技能,锻炼了身体素质,训练了四肢五官,建立了健康的心理,而不仅仅作为娱乐消遣的手段,不再是消磨时间和浪费精力。随着社会的发展,人们正视了游戏,游戏已成为儿童教育的重要手段。随着计算机和网络的普及,虚拟社会与现实社会的界限越来越模糊,游戏,特别是网络游戏的应用越来越广,如企业培训、社会教育、军事虚拟、现实仿真等等。游戏已然成为一个行业、商业和领域。无数有志之士已投身网络游戏的行列。1游戏引擎的介绍1.1引擎的定义不管用什么语言编什么样的游戏,初始化,游戏循环,渲染画面,输入处理等等,都有这样的类似过程。刚开始的游戏简单粗糙,开发周期短,重复的过程和代码构不成多大的不便。随着技术的进步,人们对游戏质量和内容需求上的增高,游戏开始复杂化,精细化,由之前的几个月的开发周期,变成几乎要好几年的时间。每款游戏都要从头编码造成了重复劳动。于是代码复用的思想产生了。为了将前一款游戏的代码复用到之后的游戏中,将通用性的部分抽出重新利用,这样大大缩短了之后的开发周期和开发成本,引擎的概念也从此产生。“引擎”一词来源于机器工业,它表示其在整个系统中的核心地位,相当于游戏的框架。无论是2D游戏还是3D游戏,无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个小游戏,都有这样一段起控制作用的代码。框架打好后,管卡设计师、建模师、动画师只要往里填充游戏相关内容就可以了。经过不断的进化,如今的游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节。1.2引擎的发展方向一款游戏要吸引玩家,情节、趣味性、真实性以及画片表现力等许多方面需要考虑。目前游戏引擎发展有几个方向:图象渲染、网络通信和人工智能(ArtificialIntelligence,AI)。随着游戏画面的表现力逐渐增强和诸多渲染技术的完善,还有人工智能技术的不断进步,更加真实可信的人工智能是大势所趋。1.3引擎的发展史及智能的表现形式游戏引擎发展史上,代表性的有Quake、Unreal[10]。Quake是第一款真正意义上的三维游戏引擎,支持射击类游戏,Unreal有强大的画面表现力,是使用最广的一款引擎。从人工智能上来说,Valve公司在Quake的基础上改进了智能部分,开发了《半条命》游戏,使敌人的行动与以往相比有了更多的狡诈,不再是单纯地扑向枪口,再加上情节元素,使得这款游戏经久不衰。人工智能方面真正取得突破的是LookingGlass工作室的《神偷:暗黑计划》,这款Dark引擎使游戏中的敌人可以根据声音辨认方位,能分辨出不同地面的脚步声,在不同的光照环境下有不同的目力,发现同伴的尸体会进入警戒状态等等。之后的引擎发展依旧追求着真实的画面和真实的内容,比如Geo-Mod引擎,这是第一款可任意改变几何体形状的3D引擎,可以使用武器在墙壁、建筑物或任何坚固的物体上炸开一个缺口,穿墙而过,或者在平地上炸出一个弹坑躲进去。值得注意的是,Geo-Mod引擎的另一个特点就是高超的人工智能,敌人不仅仅是在看见同伴的尸体或听见爆炸声后才会做出反应,当发现留在周围物体上的痕迹如弹孔时也会警觉起来,他们懂得远离那些可能对自己造成伤害而自己又无法做出还击的场合,比如受伤的时候他们会没命地逃跑,而不会冒着生命危险继续作战。2.智能角色分析2.1游戏中智能的真实性与感官能力从游戏引擎的发展历程来看,人工智能主要体现在射击类游戏中,并且是以真实性为评价标准的。《半条命》是典型的第一人称射击类游戏,《神偷》虽不是射击类游戏,但射击类游戏是发现敌人并消灭,偷窃类游戏是发现敌人但躲避,只是行为反应不一样,本质上还是一样的,Geo-Mod引擎的应用《红色兵团》也是射击类游戏。从这些含智能成分的游戏来分析智能的内容,敌人的智能就是能听到并辨别声音、能不同环境有不同的目力、能分辨子弹和尸体甚至弹孔、能进而攻击、退而逃跑、掩护的障碍物被炸掉后能找下一个掩护场所、受了伤能去捂伤口,甚至能与同伴协作采取战术和策略等等。这些智能成分都是以真实性为依据和出发点的。对于这种射击类游戏,智能通常分为行为、机动、动作和战斗4部分。行为,决定了角色的现有目标,并负责与其他角色通信来共同完成目标,比如闲逛、警戒、战斗、逃跑。机动,控制角色如何在游戏中移动,比如避开障碍物、跟随别的角色、如何在复杂的环境中找到通向目的地的路径,它不决定去向为何处,而负责如何到达目的地。动作,指角色的身体动作。战斗,控制角色当前的战术状态和选择,比如瞄准、开火以及武器选择。而这些都是以视觉、听觉、触觉等感知能力为前提的。对于其他类型的游戏,比如实时战略类游戏,更需要的智能是如何合理分配资源、地形勘测、人员调配、作战策略、团队协作。某种程度上而言,实时战略类游戏的智能水平要求更高,如果射击类游戏偏向于个人,实时战略就偏向于团队化、社会化。其他类型的游戏,人工智能方面要求相对较低,比如角色扮演类游戏,游戏逻辑、华美的界面和玩家间的互动所占比例更重,而在智能方面,实现技术以相对较简单但且形式灵活的脚本来执行已经足够。2.2游戏中角色的生命力角色在游戏中是指有生命的虚构的人物、动物或者其他生物[11],乃至于机器人或是物体。以游戏Quake为例,游戏包括静态对象和动态实体。静态对象比如墙、地板、水、天空等,其形态位置是固定不变的。动态实体比如玩家、怪物、窗户、桶、物品、开枪后的火花,这些在Quake2世界中的形态是可以改变的,怪物可以移动,窗户可以被打碎,桶可以爆炸、物品可以被捡起、火花是可以瞬间产生并发展消亡。这些动态实体都可以产生、消亡,都有自己的游戏生命,但这与角色定义中的“生命”是不同的。角色中的“生命”是指生命力,是指有思想,只有玩家和怪物是符合角色定义的。同理,窗户如果加入思想成分,比如能自我决定是开还是关,能思考,也可以成为角色,只是外部形态不属于动物范畴而已。只要有思想,游戏中的角色可以以任何外形形态出现。2.3游戏智能体现为单个角色的智能以上分析可以看出游戏中的智能成分几乎都是体现在游戏的角色身上的,要研究开发游戏中的人工智能,主要研究的内容就是游戏中角色的智能水平,特别是单个角色的智能。射击类游戏是以个体角色智能为主,实时战略类游戏以团队智能为主,其实本质一样,团队由个体组成,都可以化为单个智能。比如,可以在团队进行角色分工,有领导者和被领导者,就算他们的思考能力和智力水平不一样,但他们之间可以以消息的方式发命令或请求进行协调。或可以将之前作宏观调控的“司令部”作为一个智能角色。3.游戏智能技术的分类技术3.1定性和非定性[10]从表现结果来看,游戏智能技术通常分为2类,定性和非定性。定性行为或表现是特定的,而且可预测,没有不确定性。与定性行为相反,非定性行为有某种程度的不确定性,有点不可预测。比如,让非玩家角色学习适应玩家角色的作战战术,可以通过神经网络或遗传算法得到学习能力,而具体的学习结果是不可预料的。定性技术由于结果可预测、效率高、容易实现且方便调试,但要明确写出所有的行为,都要靠开发者完成,且行为有限。非定性技术能促进学习,开发者只需让角色自行学习,不用明确指出所有行为反应,角色的生命力更强,更智能化,但由于不可控,不方便调试和开发。3.2工程学方式与拟人化方式[10]从实现手段上来看,也有2种方式。一种是采用传统的编程技术,使系统呈现智能效果,也叫工程学方法,比如有限状态机和规则式方法,采用大量的if…then控制语句。另一种是拟人化方法,不仅要求效果上智能,还要求实现方法也和人类或动物机体所用的方法相同或行类似,比如遗传算法和神经网络,遗传算法模拟生物的遗传-进化机制,神经网络模拟人类或动物大脑中神经细胞的活动方式。工程学方法需要认为规定详细的程序逻辑,随着游戏逻辑的复杂,程序控制也越来越复杂,后一种方法只需要为角色设置一个智能系统来控制,在游戏过程中,这个智能系统可以自行学习,应对变化的世界和复杂的情况。根据心理学的研究,人的行为产生过程是一个感知-决策-行动的循环,智能角色可以感知所处环境的变化、并结合自身状态和已有知识做出决策,采取适当的反应行动来应对环境变化。所以,拟人化角色的自主、可信的智能行为是由对虚拟环境的感知和行动所支持的。4.现有引擎中智能角色的实现方法4.1普遍的方式4.1.1世界导航移动能力是角色的基本能力。但让角色从世界一点走到另一点的行为看起来非常信服是一件非常困难的事情,需要有局部世界的地理知识,也需要世界中的对象的知识,尤其是其他人的位置。世界导航通常被分为两个领域,全局导航和局部导航。导航寻路的算法也有很多种,比如追踪算法、障碍物躲避算法、面包屑寻路法、A*算法等等。全局导航一般采用A*算法,在世界地图中标示出一些路点,以图论为基础抽象出节点,以遍历图的方式找出2个节点之间的最优路径。计算出全局的最优路径后,还要根据路途中动态出现的障碍物,或是根据真实可信的原则修改优化路径。这些优化方法又有多种方式,比如空间划分、导航网格、路径的平滑修饰等等。这些是以全局知识为基础的,是程序员根据全局数据帮助非玩家角色在行为上看上去真实,属于工程学方式。4.1.2有限状态机与基于规则系统[8]普遍使用的智能技术一般离不开有限状态机和基于规则的系统。有限状态机是将问题分解成有限个状态,在某一时刻总是处于其一种状态,在输入条件刺激下,可以转移到新的状态。比如在巡逻状态听到子弹的声音就进入警戒状态,看到敌人就进入战斗状态。每个状态都有用于执行状态相关的行动。有限状态机原理简单,使用面广,易于实现、理解和调试,接近人类的正常思维习惯,甚至有些脚本语言在语法上都支持有限状态机,所以应用非常广泛。基于规则的系统实质上是一组if…then语句,按照规则编码。基于规则的系统有3个组成部分:工作存储器、规则库及解释程序。工作存储器是一组关于环境的事实,包含一些符号。规则库就是if…then规则。解释程序是从当前条件得出结论的过程,可以根据条件使用规则直到出现结果,为前向推理,也可以根据一组假设开始推理返回到当前状态,为后向推理。通常规则都不太复杂,也比较利于调试。这类智能技术结果比较能够预测,属于定性的人工智能技术。4.1.3不足在紧张的开发期限和有限资源的压力下,很多开发人员都倾向于采用基于规则的系统、有限状态机、决策树、产生式系统这类最容易编写、理解和调试的智能技术。这种传统的方法多采用定性的技术和工程学方式。程序员写智能代码时,会在游戏中统筹思考智能的实现,然后编写代码,不断的运行调试,发现角色表现的比较傻时,会想办法改进代码,使角色看起来更聪明一些,智能的实现就是不断的修改代码。然而这些不是游戏角色的思考,而是程序员的思考,聪明的角色也只是程序员聪明想法的体现。授人以鱼不如授人以渔,教游戏角色如何做,不如给角色一个大脑,教角色自己思考,也就是采用拟人化的方式。虽然“渔”比“鱼”更复杂,但可以一劳永逸,解决根本性办法。现在虽然“渔”的方法不成熟,但也有许多人工智能和游戏开发之志士致力于此。4.2专项智能技术的研究[9]为了使角色有更强的生命力和适应力,有许多开发人员已经着手研究更深层次的智能技术,比如学习能力
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:游戏引擎中智能角色的研究
链接地址:https://www.777doc.com/doc-2288267 .html