RPG游戏AI与自由性_第1页
RPG游戏AI与自由性_第2页
RPG游戏AI与自由性_第3页
RPG游戏AI与自由性_第4页
RPG游戏AI与自由性_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

RPG游戏AI与自由性中南财经政法大学计算机信息管理专业06级游戏软件开发吴乔摘要:RPG游戏是最早期、最受欢迎和影响力最广的游戏类型之一。在现今非online游戏主要追求视觉等感官效果的大环境下,RPG游戏缺乏创造性和剧情感染力,影响力逐渐被FPS、AVG等超越,现在的RPG类型游戏主要集中在MMORPG这种大型多人在线角色扮演,互动性在MMORPG类网游中的成功应用,证明了游戏自由度、角色交流能力是未来RPG游戏,以及所有的电子游戏的主要发展方向。本题将在剧本策划、脚本编写、市场适应性、AI和剧情自由化创新等方面对RPG类游戏的创新模式和技术进行论述。关键词:RPG游戏,人工智能应用,游戏自由性目录摘要第1章RPG游戏发展历程 …………………1RPG游戏 ……………1复合类型游戏 …………………1第2章策划与市场研究22.1市场调查与适应性预2判2.2策划与剧本选择 …………………3第3章游戏开发 ………4自由的玩家 ………4程序开发 ………4结论…………………………9参考文献……………………10RPG游戏AI与自由性吴乔第1章RPG游戏发展历程RPG指的是角色扮演类游戏的英文全称Role-playingGame的缩写,这是最为古老的一种游戏类型。在游戏中,玩家扮演虚拟世界中的一个或者几个队员角色在特定场景下进行游戏。角色根据不同的游戏情节和统计数据(例如生命值、法力、力量、灵敏度、智力等等)具有不同的能力,而这些属性会根据游戏规则做对应的改变。从GaryGygax在1972年退出世界上第一个真正意义上的RPG电子游戏《龙与地下城》(Dungeons&Dragons)到现在,RPG游戏已经经历了30多年的发展,目前RPG游戏,以游戏方式分类,可分为:桌上角色扮演游戏(TRPG)、单人角色扮演游戏、多人角色扮演游戏、大型多人在线角色扮演游戏(MMORPG)、网络文字角色扮演游戏(OTBRPG)等。其中按照游戏进行方式可以分为回合制和即时制两大类。复合型游戏RPG游戏经历了80年代末期到90年代近15年的辉煌,在这段时间里,RPG作为一种游戏类型,占领了从电视平台游戏到PC平台游戏市场的一半以上份额。但是到了90年代末、21世纪之后,电子技术的高速发展,游戏硬件性能快速提高,游戏操作性和复杂程度也随之得到很大增强,再加上RPG游戏剧本创作、游戏创新陷入低潮,FPS、STG、FTG、ACT等注重视觉体验、操作性和对抗性的游戏全面赶超。RPG游戏在21世纪以后在传统路线上找不到出路,于是各种与其他游戏类型相结合的复合型游戏随之出现。这种复合型游戏即能够保留G游戏在剧情和游戏代入感上的优势,又能表现出其他类型游戏所具有的特点。所以目前的RPG游戏主要以复合型RPG的形式出现。第2章策划与市场从取自中国互联网消费调研中心的数据:2009年12月份中国游戏市场游戏类型关注比例(图2-1)、中国游戏市场游戏平台关注比例(图2-2),以及来自日本游戏媒体“电击在线”的2009年游戏市场调查结果:一个月内购入游戏(图2-3)显示,RPG游戏特别是非online类依然是现在游戏类型的主流。不过由于市场环境等外部因素所产生的盈利矛盾,中国游戏市场依然是注重网络游戏,而单机市场低迷。图2-1图2-2图2-3从上面的3个图表的数据可以看出,游戏玩家依然对单机RPG游戏有着绝对优势的关注度。中国游戏市场的单机游戏低迷,绝大部分游戏厂商、运营商等游戏产业源头注重方向与产业的终端—一游戏玩家的关注度产生这种不符合市场规则的矛盾是由于中国游戏市场所特有的环境而产生的特例。中国游戏市场由于盗版问题以及市场监管,社会以及政府的市场支持问题,产业源头无法获得足够的利益,所以导致了上述的矛盾。相信随着市场的发展,以上问题能够得到解决后,这个矛盾能够获得解决。2.2策划和剧本选择作为产业源头的游戏开发商,获取利润是开发商开发游戏的首要考虑因素,而利润的赋予者则是作为市场终端的游戏购买者一一游戏玩家。所以在不考虑外部因素的情况下,开发出受游戏玩家欢迎的游戏就是获取利润的根本。游戏策划就是一个游戏成功的先决条件也是最根本的条件。首先,游戏策划需要一个比较好的创意,但是创意在游戏策划中并不占有很大的比重。因为创意是人人都有的东西,只需要一个良好的团队进行一个完善的头脑风暴过程,就能够产生有价值的创意。假设创意的评分满分为10,即使是找到了一个达到满分是10分的创意,但是如果不能够与其他因素完美结合,游戏最终产品不能被市场所接受,那么它依然不如一个7-8分的创意好。所以在游戏策划过程中,首先要做的就是市场调查分析和完善的游戏开发计划,在决定好游戏类型后,分析游戏面向对象后,做好市场调查,分析游戏生命周期以及游戏面向对象的喜好、要求。然后做好游戏开发计划、调配开发人员以及技术实用性协调,否则做好了一个完美的策划,结果由于技术方面无法达到要求或者玩家硬件平台无法运行游戏,而导致最终失败,这是得不偿失的。第3章游戏开发自由的玩家RPG游戏被FPS、STG、FTG、ACT等其他类型游戏赶超,其主要原因从游戏玩家的角度来说主要是因为游戏的对抗性差、NPC的AI能力低下、游戏剧情固定单一等。所以未来的RPG游戏想要重新获得成功,就必须从以上几点出发解决根本的弊端问题。而以上3点从总的根源来说,其解决途径依然是提高人工智能在游戏中的应用,当游戏AI越来越接近人脑了,那么对抗性和游戏自由性也必然随之获得提高。假设当人工智能无限接近人脑,那么这种高智商的AI在游戏中得到运用的时候,玩家在游戏过程中与AI对抗就像是在与另一个玩家对抗一样,而玩家与游戏中的NPC对话的时候,NPC也能像一个真正的人一样对玩家的动作、对话作出不同的反应。甚至是对AI加入感情因素,那么同一个玩家在同一个场景中与同一个NPC进行几次相同的对话,这个NPC会由于当时的感情环境而作出截然不同的反应,其产生的结果可能就是另一个完全不一样的剧情发展,就像Lorenz提出的蝴蝶效应对世界的影响一样。这就会使得游戏的可玩性得到飞跃性的提高。程序开发游戏的程序开发就是用代码将游戏策划中构建的世界表现出来的过程,这也是整个游戏开发中最重要也是最根本的一个环节,甚至是可以说游戏开发基本就是程序开发,其他开发环节只是为其服务而已。游戏程序开发包涵有非常多的方面,本文中所要论述的主要就是游戏AI应用相关的程序开发。在游戏中,AI并不一定要包括神经网络,学习系统和复杂的数学结构,游戏AI只是游戏中一个重要部分,它是活动的,并不是科学性质的。建立一个游戏AI,最主要的就是要明白你想在游戏中实现什么效果,就是你想让玩家看见什么;如果游戏中什么也没有发生,那你的游戏AI什么都没有做。在角色扮演游戏中,程序员与企划人员需要精确地在电脑上将一个个所谓的“怪物”在战门过程中栩栩如生地制作出来;所以半兽人受了重伤懂得逃跑,法师懂得施展攻性法术。导向式思考AI最容易制作的的方式,同时也是早期游戏AI发展的主要方向就是规则导向或称之为假设导向。在一些比较简单的电脑游戏中,程序员可以好不困难地将游戏中的规则与设定转化成一条条的规则,然后将它们写成电脑程序。让我们以角色扮演游戏为例。决大多数的企画在设定所谓电脑怪物时,所设定的属性通常有以下几种:生命值、击力、防御力、法力属性。最后一个“属性”是我在设定时喜欢增加的项目之一。透过这项属性的设定,我可以把怪物设定成“贪生怕死的”,也可以把战士设定为“视死如归”。以目前我们所掌握的资料,在战门系统中的大纲如是诞生了:规则一if(生命值<10)//边临死亡了吗{if(属性==贪生怕死)结果=试图逃跑if(有任何恢复生命值的物品或法术可用)结果=使用或施展相关物品或法术}规则二if(可施攻击性法术&&有足够法力){结果=施展攻攻击性法术}由以上一连串的“如果一一就一一”规则设定,建立了最基本的AI。说这样的制方式只能建立基本AI其实并不当然正确。只要建立足够及精确的规则,这样的方式仍然有一定水准的表现。规则导向的最大优点就是易学易用。在没有深奥的理论概念的前提下,仍有广大的使用群。所以很多老道的玩家常常没两下就摸清楚敌人的攻击策略,移动方式等等。推论式思考相信曾经接触过电脑语言课程,或是自习过相关书籍的朋友们,都曾曾经听过一个著名的程序,那就是井字游戏。用井字游戏作为讨论AI的入门教材,我个人觉得是最适当的例子。或许有人还不知道井字游戏怎么玩。只要任何一方在三乘三的方格中先先成一线便胜利了。我们在前面谈过的规则导向,在这里也可以派得上用场。if任何一线已有我方两子&&另外一格仍空//我方即将成一线吗结果=该空格if任何一线已有敌方两子&&另外一格仍空//防止敌方作成一线结果=该空格if任何一线已有我方一子&&另外两格仍空〃作成两子结果=该空格大多数的AI程序中,为了提高AI的智能程度,基本上都是采用的多重规则开实现的,但是也可以不用这么多规则来制作的。这种单规则AI程序的用法是在计算机AI课程中重要的概念:极大极小法。这种法则的概念是:以井字游戏为例,电脑先在某处下子,接着会以假设的方式,替对方下子,当然,必须假设对方下的是最佳位置,否则一切则毫无意义。在假设对方下子的过程中,自然又需要假设我方的下一步回应,如此一来一往,直到下完整局游戏为止。在游戏AI中,AI主要是以下几种类型AI的实际应用。单位活动AI(UnitBehavioralAI)游戏AI不总是标准含义上的AI。单位游戏AI是为设计出具有提供某种挑战或某种真实体现的生命特征的一次真正的尝试。在游戏中,只站在一处、从不移动的警卫会显得非常不真实。不过,如果开游戏AI中创建一个例行程序(routine),使他不时的朝四周张望,或变换他的姿势,他会看起来更具活力。通过创建一个在预设的路径上行走的警卫偶然停在站岗的警卫前,并好像与他谈话这样的情景,真实的体现能被极大地提高。在单位AI中,动作分为反应性(reactionary)与自发性(spontaneous)两类。在反应性的方式下,单位随时会对自身环境中的变化做出响应。如果一个敌人发现了玩家,开始向玩家跑来,并朝玩家射击,那么他们已经做出了看到玩家的反应。在自发性的方式下,单位做出行动时并不依赖于自身环境中的任何变化。一个单位决定从其所站立的岗哨移向基地周围的某个游动岗哨,则这个单位已经做出了一次自发性的行动。通过在游戏中使用这两种类型的单位活动,就能创造出游戏中拥有自主“聪明”的单位的假象,而不一定是简单的机器。反应性AI(ReactionaryAI)反应性输入应当总是基于单位的感觉。当依照人类的特征对AI建模时,你需要考虑单位的视线范围与距离,他们的听觉,如果适用还有嗅觉。制定警报级别是处理不同感觉输入的一种有效方法。如果一个单位在其视野中直接看到了敌人,那么单位应切换到与如何对抗敌人相符合的警告模式。如果单位没有看到敌人,而是听到了脚步声或枪声,那么单位应转到适用于与间接情景相一致的警报级别。这里有一个警卫单位的例子。听到枪声时,会使其采取行动去调查枪响的区域;听到脚步声时,可能会使其守候着去伏击移动的单位。所有这些不同类别的活动和警报都能被一个基于规则的(ruled-based)或模糊逻辑的fuzzylogic)系统所建立,以便你能对每个单位产生的每次声响或目击做出解释,并使他们采取适当的方式做出反应。一个具有普遍意义的警报也是游戏中真实与智力体现的一个重要因素。假如玩家一直东奔西跑的朝充满敌人的基地开火,并不断的遭遇新的敌人,而这些敌人对过去持续10分钟的炮火这个事实竟然一无所知,这会显得非常不合适。通过为所有的单位建立一个警报系统(alertsystem),或一个警报方案(alertplan),能够在游戏世界中增强真实的体现。一个警报方案应该由有警报时各单位应共同遵循的规则组成,而非由无警报情况下的规则构成。例如,如果出现警报,你要能使所有处在安全区域内的单位快速移向基地入口以加强防御。自发性AI(SpontaneousAI)在的游戏世界中,自发性AI对于创建生命的感觉(senseoflife)极为重要。如果玩家遇见的每个人只是站在那里等着玩家与他们交谈或杀死他们,抑或更糟,毫无目标的漫游,这将不会使玩家非常信服。解决上述问题(standingaroundproblem)的方法之一是为每个单位设置一组非警报状态时的目标。这些目标可能包括预设移动路径,随机移动到预设区域,当路过其他单位以及与其他单位移动到预设目的地时,偶然停在其他单位旁。在所有的这些情景中,总是说预设(pre-set),因为除非你提出一个很好的设置目的地与路径的算法,否则游戏中的单位看起来会像是在毫无目的地漫游。单位行动(UnitActions)真正让一个游戏单位看起来很聪明的是他们的行动。如果他们以玩家可能的方式移动,或在玩家可能的情景下做如闪避这样的动作,那么单位看起来会很聪明。不一定需要很多的动作来创建聪明动作的假象,只需要包含足够的与这个单位相关联的任何基本情景。如果处理的恰当,且包含的范围越广,玩家相信游戏中的单位在“聪明地”行动的机会就越大。把自己放在游戏中的单位的位置上,在他们的情景中玩家会怎么做?玩家将怎样回应各种各样的攻击或遭遇敌人?如果什么事都根本没发生,玩家又将会做些什么?这些问题的答案都是游戏开发中AI所有做的,并针对这些单位将遇到的每种情景正确的实施了它们,将把你拥有看似聪明的单位的机会最大化,这也是创建一个优秀的、稳健的游戏AI的第一步。要在游戏中实现一些动作行为,必须考虑很多方面,比如你就不能从你自身的角度来考虑问题,你就得从玩家的角度来考虑,玩家他到底要在游戏中干什么?要想达到玩家的想法,你就不得不在游戏中反复测试,以便于达到玩家想要的效果。在游戏AI编程中,一般AI程序用到的是状态机数学模型,有限状态机(FSM)是一个只有有限的几个状态的系统。在一个实际的例子当中,状态的触发是通过一个拥有开或关状态的开关,或通过一个闹钟来调用时间决定的。通过有限状态机,我们可以在游戏中定义一些事件,然后由玩家在游戏中游动时,通过触发来实现某些事件。有限状态机是游戏中最常用的游戏AI。比如,当一个NPC受到攻击时,它应该怎么办,当发现敌人时,它应该实行哪些行为,当敌多我寡时,应该实行哪些行为,等等。都可以用有限状态机来解决。在一个实际的游戏当中,一般存在两种状态机:第一种状态机主要就是完成游戏界面的转换,比如,玩家在游戏中暂停,应该显示什么界面,游戏中哪些UI应该让玩家可见,哪些又应该隐藏。第二个状态机主要就是改变当前运行时的环境,比如当前玩家处于哪个游戏地图,关卡中NPC的出现,玩家任务完成的状态:成功或失败。还有就是我们可能在游戏中要引导玩家的一些参数或变量。假设需要一个描述NPC的系统,这个系统主要就是用于判断如果玩家点击NPC或者向NPC开火,NPC应该怎么办,那么完全可以用下面的结构来表示:structGameLevelState{intalert//NPC的当前状态structPositionshot;〃玩家向NPC开火的位置intshotTime;//子弹发射出去后的游戏循环inthostage;//谁需要帮助intexplosives;//子弹是否爆炸inttank;//自身是否受到破坏intdialogue;//对话参数intcompete;//任务是否完成}在游戏中,游戏AI的作用就是为了让游戏中的绝色(NPC)能够更像人,使得游戏世界更为真实。在游戏中,NPC主要有的动作是:移动、对玩家动作作出反应以及一部分需要战斗的NPC在战斗中所做的动作反应。那么首先就需要解析这些动作的基本本质。首先要让AI实现移动的目的,这最简单的一种形式就是,在某一段时间之内从一个点到达另一个点。这个很容易实现,你能通过找一个距离向量,然后乘以这个部队移动的速度和所用的时间,就可以得到移动的位置。因为大多数的PC游戏是通过鼠标来驱动的,所以,我们并不能期望用户通过游戏杆之内的东西来驱动游戏人物前进时绕开障碍物,那么应该怎样做呢?比如,玩家在一棵大树旁点击了鼠标,我们首先必须建立一个动作队列保存这个角色行动的路径,但是当角色到达大树时,他不可能穿墙而过吧。这个时候,我们就必须为角色添加一个动作,以便于角色绕过大树。某些NPC需要在地图上进行巡逻的动作,实质上巡逻也是一种特殊的移动动作,它的实质就是让NPC在一系列坐标上进行循环移动,它与移动的区别只是在于移动到达目的地坐标点后就停止了,而巡逻则是当NPC通过移动到达一个坐标点后,随机抽取另一个巡逻区域的坐标再次进行移动。对玩家动作作出反应,例如当玩家进入某个敌对NPC的巡逻区域后,敌对NPC是对玩家视而不见还是对玩家进行攻击,加入没有特殊情况的话,敌对NPC还是继续巡逻,那么玩家就会觉得这NPC好傻,游戏没玩头。但是如果巡逻的NPC背对着玩家,在玩家接近的时候突然发现了玩家的话,那么玩家又会对游戏产生“假”的质疑。在这种情况下就需要进行合理的AI设置了。我们可以将这个NPC角色所站在的坐标上,将它的四周分为8个部分,这8个部分分别代表了角色的8个视域,当然你也可以设置这些视域的距离,也就是角色所能看到的距离。然后就循环监测这些视域中是否有敌人。当然,也有一种特殊情况,比如,敌人和障碍物同时出现在你的视域中,障碍物在前,敌人在后,你总不可能也看见敌人了吧!那么就需要对视域内的障碍物进行判别。当一个敌人发现了一个角色,也就是它自身的视域中出现了一个角色,这时候,它就要判断,这个角色是不是友方?如果是,就不干什么。如果是敌人,就要检测它是否在视域内,如果是,就进行攻击。如果在敌人进入视域后又脱离了,那么就需要追踪它。那将如何实现呢?首先,需要保存猎物最后的一个坐标,然后将这个坐标设置成你的第一个移动目标,到达目标后,你就需要检测猎物是否还在视域范围内,如果在,就攻击。如果不在,就按照猎物的方向随机移动一个距离,然后继续检测。在这个例子当中,我们假设角色能够在第一次移动过后找到猎物。但如果他移动后没有发现猎物,那么我们就将他的状态设置成巡逻状态,然后朝我们第一次得到的猎物的方向移动一个随机的距离。现在的游戏主流开始向3D方向发展,在3D游戏中,游戏引擎是现代游戏开发中的核心内容,通过游戏引擎,可以使得游戏开发过程更加模块化。下面将要论述游戏引擎中的AI应用。在游戏引擎的AI应用中,碰撞AI(CollisionAI)是一种应用最为广泛的AI算法。Collision的实现非常简单,Collision检测目前资料众多,算法也很成熟。往往在游戏运行中,Collision都有个和它对应的AI系统,我简称CollisionAI。因为碰撞可以机械化的检测,并且准确率很高。在碰撞检测的下一步,就是发生对应的处理。因为我在制作一部实时引擎,目前正处于碰撞流程的制作过程,这一步直接涉及到很多物理计算,很多错综复发的逻辑处理。为了下一步开发能够更好的进行,所以把这一步直接规划到AI模块中。碰撞流程主要依靠事件触发为主。碰撞检测部分应该放在刷帧时实现,否则来一个快速运动的object,那是很容易检测丢的。而刷帧部分,应该做一个专用的刷帧器,逻辑贞按每秒固定刷30FPS或则更好,而物理贞可以任意。因为检测运动object必须要保证检测频率是集中式的,而不是离散的。每秒的固定刷帧技术可以在刷帧器中用deltaTime的减法实现。这样就可以准确无误的检测碰撞了。你可以根据喜好制定检测的方式,比如先在地图系统中实现区域检测,然后再进一步执行外围的碰撞盒检测,最后再进行精确的Tri检测。不过目前都用接近的几何体来代替Tri检测。然后就是最关键的碰撞AI处理了。在制作这一部分时,首先要有很完善的数据来源,可以很方便的计算。比如2个object发生碰撞时,obj1位于obj2的什么方向?obj1要向何处去?obj2要向何处去?是obj1让obj2先过,还是obj2让obj1先过?如果要让obj2过去,obj2应该怎么绕过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论