已阅读5页,还剩56页未读, 继续免费阅读
(计算机软件与理论专业论文)角色扮演游戏框架设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
重庆大学硕士学位论文 中文摘要 摘要 计算机游戏作为人们的一个重要娱乐手段从开创至今已有上十年的历史,这是 一个新兴和快速发展的产业。随着软件规模的不断扩大,计算机游戏,作为一类 特殊的软件,无论规模,分类,都变得庞大和细化。同时,游戏软件的开发方法 论也不断得到发展和改进。许多传统的软件开发方式将不完全适应快速、大型的 游戏软件开发。 计算机游戏是基于计算机游戏引擎的基础得以构建,即计算机游戏逻辑本身与 游戏引擎的耦合程度较高。但随着面向对象技术以及面向组件技术的发展,同时 由于计算机硬件本身的性能提高,使得游戏逻辑框架本身可以脱离游戏引擎而存 在。 本文介绍了计算机游戏的原理以及社会影响,并以构件一个大型规模的角色扮 演游戏( r o l e - p i a y i n g - g a m e , r p g ) 框架为目的,采用面向对象的设计与分析思想,对 r p g 的框架迸行c h 类设计与实现。 本论文完成了以面向对象为基础的r p g 逻辑框架,并重点实现了包括游戏世 界框架、游戏对象类层次、游戏战斗系统、物品系统、技能系统、地图系统在内 的多个功能模块,在此基础上完成了地图编辑器等客户端引擎重要模块。 游戏框架采用常用的设计模式进行规范,其中以范型程序设计( g e n e r a l p r o g r a m m i n g , g p ) 方法提高游戏框架本身的效率以及代码的优雅度,以复用的思 想进行游戏框架设计,以延长该游戏框架的生命周期。与传统游戏框架相比,该 游戏框架具有较高的可复用性、完整性、可读性和可扩展性。 为使采用通用的游戏设计方法论进行游戏逻辑开发成为可能,引擎框架必须降 低与游戏本身的耦合度。本论文通过对游戏引擎框架接口的最小化封装和在游戏 逻辑中增加中闻接口层的办法尽量降低游戏与引擎框架的耦合度在游戏开发过程 中,此方法无论对于游戏开发实现更细致的分工还是提高游戏引擎的复用度和游 戏本身的开发效率、节约大量的资源,都具有重要的意义。 关键词:r p g ,设计模式川,对象类层次,游戏引擎,g p 重庆大学硕士学位论文英文摘要 a b s t r a c t e n t e r t a i n m e n tc o m p u t e rg a m ea sa l li m p o r t a n tm e a n sf o rp e o p l ef r o m1 0y e a r so f h i s t o r yh a sb e e nc r e a t e d t h i si san 哪a n dr a p i d l yd e v e l o p i n gi n d u s t r y w i t ht h e c o n t i n u e de x p a n s i o no ft h es c a l eo fs o f t w a r e ,c o m p u t e rg a m e s ,a sas p e c i a lk i n do f s o f t w a r e ,r e g a r d l e s s o fs i z e , c l a s s i f i c a t i o n ,h a v eb e c o m em a s s i v ea n dr e f i n e d m e a n w h i l e ,g a m es o f t w a r ed e v e l o p m e n tm e t h o d o l o g yh a sb e e nc o n t i n u o u s l yd e v e l o p e d a n di m p r o v e d m a n yt r a d i t i o n a ls o f t w a r ed e v e l o p m e n tm e t h o d sw i l ln o tf u l l ym e e tt h e r a p i d ,l a r g e - s c a l es o f t w a r ed e v e l o p m e n t c o m p u t e rg a m e sa r eb a s e do nt h ec o m p u t e rg a m ee n g i n et ob u i l d c o m p u t e r g a m e sa n dg a m ee n g i n el o g i c a r eo ft h eh i g h e rd e g r e eo fc o u p l i n g b u tw i t l l o b j e c t - o r i e n t e dt e c h n o l o g ya n dt h ed e v e l o p m e n to fc o m p o n e n tt e c h n o l o g y , a n di m p r o v e t h ep e r f o r m a n c eo f c o m p u t e rh a r d w a r ei t s e l f , 1 0 9 i c a lf r a m e w o r km a k e st h eg a l n ee n g i n e i t s e l f o u to f t h eg a m ee x i s t sp o s s i b l y t h i sp a p e ri n t r o d u c e st h ep r i n c i p l ea n ds o c i a li m p a c to fc o m p u t e rg a m 髓a n dt h er p g e l e m e n t so f af r a m e w o r kf o rl a r g e - s c a l e ,o b j e c t - o r i e n t e dd e s i g na n da n a l y s i so f t h i l f l d n g , r p gg a m e sf o rt h er e a l i z a t i o no fl a r g e s c a l em o d e l i n g , w h i c hw i l lb eu s e dt od e s i g n m o d eu s i n gt h eg a m e , f a n - b a s e dp r o g r a md e s i g n ,t h eo v e r a l lf r a m e w o r ko f t h ec o m p l e x g a m eo ft h ei d e o l o g i c a lf r a m e w o r kd e s i g n e dt oe x t e n dt h el i f ec y c l eo ft h eg a m e c o n s t r u c tt h ef i n a lc o m p l e t i o no ft h eb a s i cf r a m e w o r ko f t h er e a l i z a t i o no fs u c hg a m e s i s t h e g o a l c o u p l e dw i t ht h eg a m ee n g i n et or e d u c et h ed e g r e ew i l le n a b l eac o m m o n f r a m e w o r kf o rg a l n ed e s i g na n dg a m ee n g i n ed e s i g na n dd e v e l o p m e n tm e t h o d o l o g y b e c o m ei s o l a t e dp o s s i b l e ,s oa st or e a l i z eab e t t e rd i v i s i o no fl a b o r , a sw e l la se n h a n c e d g a m ee n g i n ef o rt h er e s u m p t i o no fc o n s u m p t i o na n de f f i c i e n c yo ft h ed e v e l o p m e n to f t h eg a m ei t s e l f s a v eal o to fr 锚o u r c e 8t ot h ed e s i g na n dd e v e l o p m e n to ft h eg a m ei n t h i si n d u s t r yi so f g r e a ts i g n i f i c a n c e k e y w o r d s :r p g ( r o l ep l a y i n gg a m e ) ,d e s i g np a t t e r n , o b j e c t sl a y e r , g a m e e n g i n e ,g p ( g e n e r a lp r o g r a m m i n ) n 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取 得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文 中不包含其他人已经发表或撰写过的研究成果,也不包含为获得重庆太堂 或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本 研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:刺签字吼纠月多日 学位论文版权使用授权书 本学位论文作者完全了解重庆太堂有关保留、使用学位论文的 规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许 论文被查阅和借阅。本人授权重麽太堂可以将学位论文的全部或部 分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段 保存、汇编学位论文。 保密() ,在年解密后适用本授权书。 本学位论文属于 不保密( x ) 。 ( 请只在上述一个括号内打“”) 学位论文作者签名:二檄 签字日期:弘沟7 年f 月5 日 导师签名:磊铣 签字日期:刎7 年6 月5 日 重庆大学硕士学位论文1 引言 1 引言 1 1 计算机游戏定义 按照竞争方式进行分类,规则游戏可以分为个人与规则的竞争( 如华容道) 、 个人与个人的竞争( 如象棋、拳击) 、多人与规则的竞争( 如大型多米诺骨牌游 戏) 、多人与多人的竞争( 如桥牌、足球) 以及个人与多人的竞争( 如斗地主) 五类,计算机游戏即是以计算机为媒介对上述五种竞争形式的再现。 1 1 1 计算机游戏的特点 与传统游戏相比,计算机游戏主要有以下四个特点:首先,它大大拓展了游 戏的外延,而不只是对传统游戏的数字化克隆。例如个人与规则竞争的解谜游戏, 个人与个人竞争的射击游戏,即便是计算机游戏中的一些比较简单的内容,也是 传统游戏所难以表现的;而大型网络游戏( m m o g ) 阻1 更是借助互联网技术的支 持,把游戏的五种竞争形式有机地融合在一起,将成千上万的玩者聚集一处,这 在传统游戏中是难以想象的。外延的拓展与计算机游戏所具有的虚拟环境的特性 有关,计算机游戏通过计算机技术为传统意义上的道具和规则拓展出了一个全新 的维度,下文将具体论及。 其次,玩者并不能直接参与游戏,而是必须借助人机界面对游戏进行操控, 并且很多情况下这种操控须借助替身( 即玩者在游戏中所扮演的角色) 以实现, 这一特点往往使玩者产生”控制”游戏而非传统意义上的”玩”游戏的感觉。”上帝游 戏”的缔造者彼得莫里纽克斯曾经说过:”我的目标是实现这样一种模式一玩家只 能影响游戏而不能控制游戏,没有玩家的参与游戏依然能继续下去。”尽管这一 说法有抹煞游戏的互动性之嫌,但也说明了这种”控制”的思想对参与者的影响之 大。 第三,计算机不仅为计算机游戏创造了虚拟环境,创造了道具和规则,还创 造了游戏中的竞争与合作。在上述五种竞争形式中,除玩者以外的个人,无论是 竞争者还是合作者,均可由计算机担任。由于目前的人工智能技术尚无法达到令 人信服的水准,人机之间的这种竞争与合作往往显得过于呆板,也正是由于计算 机游戏是建立在一种虚拟环境之中,这种呆板才变得能够接受。 第四,计算机游戏强调对脚本的应用,传统游戏的进程大多数情况下是由参 与者、规则、机遇三方共同作用的结果,从”龙与地下城”设立专门负责讲述故事 的地下城主开始,才出现了”脚本”的概念;而许多计算机游戏,从早期的文字冒 险游戏开始,包括由”龙与地下城”衍生出的计算机角色扮演游戏以及此后的动作 射击游戏,都非常注重脚本的编写,也就是说,这些计算机游戏的进程是预先受 重庆丈学硕士学位论文1 引言 到限制的,是由参与者、规则、机遇和脚本四方共同作用的结果,其中前三个元 素必须围绕脚本这一基础进行变化,同时它们又会反作用于脚本。 在这四个特点当中,前两个特点与虚拟环境相关,是所有计算机游戏的共性, 而后两个特点则并非必需。从上面的介绍我们也可以看出,人机互动对游戏的影 响有利有弊,应具体情况具体分析。 1 2r p g 框架研究现状 r p g 框架是一个r p g 游戏的骨架并为r p g 游戏提供共同功能的实现机制以 及规则约束。从实现上研究,r p g 框架是针对一类r p g 所作的具有扩展功能的 r p g 原型,商业的r p g 通常是从这个r p g 原型上扩展产生。 1 2 1r p g 游戏 游戏是人为制定出的一些规则。只有遵守游戏规则的生物才有资格成为这个 游戏的玩家。这些规则使得玩家的操作受到一定的限制。游戏不一定会终结,一 般的终结就是游戏的规则定义出的类似任务的完成,也可以因为其它的原因而终 结,如玩家控制的游戏人物的死亡或玩家退出游戏。而常见的r p g 游戏一般没 有终结,除非玩家退出。 角色扮演游戏( r o l e - p l a y i n gg a m e ) ,提供虚拟的计算机游戏世界,该游戏世界 提供虚拟的游戏角色供游戏者选择并操作,以最终使得玩家在该世界实现自己的 第二人生为目标的计算机娱乐交互式软件 1 。 娱乐和教育是r p g 游戏的主要目的好的r p g 游戏为玩家提供乐趣的同时灌输良 好的价值和世界观。 人们需要有虚拟世界的娱乐,所以出现以游戏为主的r r 游戏软件市场,r p g 游 戏作为一种重要的计算机游戏形式,已经有了5 年以上的发展史。 r p g 游戏是一种虚拟世界的表现。r p g 游戏的研究和发展为虚拟社会的研究提供 了比较有价值的参考。 r p g 框架的设计和研究自r p g 诞生以来不断进步,至今已从完全面向过程 的设计方式到面向结构的方式到现在的面向对象的方式。但是由于游戏软件本身 的特殊性,游戏逻辑本身与游戏引擎之间的联系始终不能完全得以独立。 1 2 2 常规r p g 表现方式 剧情是r p g 游戏的核心,与电影世界不同的是,游戏玩家与宏大的剧情是 交互和部分可控制的。 玩家与游戏世界的交互是游戏乐趣的体现。 玩家在游戏世界中获得的体验,虚拟成就和感悟是结果。 一个r p g 游戏应该围绕这3 点进行设计。 2 重庆大学硕士学位论文1 引言 1 2 3r p g 游戏技术核心 游戏作为一个软件其本质上就是程序,同时是实时交互程序,在效率上要求 较高。游戏开发中需要有对虚拟世界需求进行软件建模的方法,一般是采用基于 对象和面向对象以及结合面向过程h 1 的设计进行游戏开发。 传统r p g 游戏的逻辑系统主要由以下几个方面组成。 属性系统:这是游戏中最简单的系统,包括主角、物品、n p c 、技能等各 自的属性。属性系统的详细部分游戏策划应该给出,程序只需要给其保存的结构 就行了。这里的属性,自然不只包括事物的基本性状,也包括它应该引发的脚本 代号。 人物状态机系统:这个系统十分复杂,也是所有系统得以运行的基础。 这个系统标志着人物目前处于一个什么样的情况中。相对于动作而言,人物 是站立中? 还是跑动中? 还是对人对持中? 还是在施放魔法中? 还是在施展技能 中? 当然,有些状态是可以同时拥有的,比如说站立和施法,有些是不能同时拥 有的,比如说站立和走动,这在程序中需要用不同的变量来区分。相对于剧情而 言,人物现在是接受了这个任务吗? 没有接受任务吗? 或是完成了吗? 如果任务 不止一步,人物进行到哪一步了? 每个任务都要用不同的状态机来保存。相对于 属性而言,人物现在是中毒吗? 没有中毒吗? 人物现在可以移动吗? 可以以正常 速度移动吗? 人物现在可以施展技能吗? 可以施展哪些技能? 主角目前身上有什 么物品( 任务,或是非任务物品) ,身上有什么装备,曾经去过哪些地方,杀死过 哪些怪物,和哪些人对过话,这些东西都是需要状态机来表示的,因为脚本系统 需要这些状态机来进行判断。 所有状态机中某些状态机不需要事先设定,而是等需要的时候才计算。如物 品状态机,在需要的时候给定一个物品的代号,然后状态机系统就可以给出角色 是否拥有这个物品,拥有多少个之类。 在这里有一点关键性的东西,游戏程序中的状态机和游戏设计中的状态不是 一一对应的,如游戏设计中有“麻痹”这一状态,但是状态机中却不一定有,而 是用“移动:否”、“动作:否”这两个状态机来表示。 此外还有许多的状态机情况,游戏的规则越复杂,所需要的状态机就越多, 状态机系统也越复杂。各个状态之间也是相互关联的。状态机系统之所以重要, 是因为周围世界中所发生的一切行为都是以人物处于何种状态而决定。 行为系统:这个系统决定了游戏的表演方式,也与图形引擎和声音引擎挂 钩。当人物( 或是怪物) 发出一个动作之后,这个动作要怎么表示? 攻击,虽然 在角色发动攻击的一瞬间,攻击是否命中,目标会受到多少伤害,这个已经被计 算好了,此外,存在许多不是在动作启动时即做出计算的行为,而是在碰撞检测 重庆大学硕士学位论文1 引言 之后才决定的( 可以是物理,或是非物理的) 。弓箭、飞弹类型的魔法、攻击范围 会渐渐变化的魔法,追尾型的飞弹之类,此类十五的进行方式都是行为系统来控 制,而非脚本系统进行控制。以火环为例,它从发动到结束共有多少帧? 每帧会 产生什么样的变化? 它影响的区域会怎么样变化? 不同的事物可以使用不同的行为系统,但也可以共用同一个行为系统,比如 说冰环和火环,虽然他们的渲染和伤害计算是不同的,但是其行为是一致的。以 死亡动作为例,如死亡只有一种表现形式,则关于死亡的行为系统也不复杂。在 有多种动作的情况下,比如向前倒下、向后倒下、软倒( 直立着跪下) ,如是从正 面受到攻击,则向后倒下才符合情况,而用先前倒不真实。或是向后倒之后,再 加上一定程度的移动,就可以造成“吹飞”( 被人打出去很远) 的效果。判断何时 使用哪种动作,就是行为系统的部份。 人物行为所造成的影响的计算也是这个系统的功能。分析人物目前的状态, 决定使用哪一个公式来计算影响,动作是否成功( 例如命中之类) ,人物怪物受到 影响之后会产生什么样的动作( 当然不是指怪物的决策行为的这种关于a i 的部份, 是指如果生命降到0 就要执行死亡动作这一类) 也是行为系统的部份。 交互操作系统:操作系统相对而言简单的接受用户的输入,并判断这个输 入将要产生什么样的影响,执行何种操作,也需要决策是否能够执行操作。判断 的准则需要同时分析角色和目标的状态。如用户将一个n p c 设为目标时,这个目 标是友好或者敌对? 如是友好,则执行对话的行为,如为敌对,则执行攻击行为。 或无论目标怎样,现主角处于“麻痹”状态,固无论攻击或对话的行为都无法执 行,该用户的这一操作便被忽略,不予执行。游戏的各种菜单也是这个系统的一 部份。包括剧情对话框、物品购买界面以及各色各样的特有对话系统。 本质上该对话系统为一种对话框,它提供给用户一些信息,而用户执行的操 作将对角色产生影响,或是触发某个事件,脚本。比如说购买界面,在上面执行的 操作就能够给用户增加一项或多项物品( 从地上捡拾物品也是一样) 。炼剑系统则 是改变主角的剑的性质。 交互系统的逻辑层面并不复杂,它的难点主要在于烦琐的细节,所以这也是 游戏中b u g 多出的地方。( 例如暗黑中著名的物品复制b u g ,诸如此类,就是因 为操作系统有缺陷才造成的。) 脚本系统:脚本系统是构成精彩世界的重要组成部份。完善的脚本系统可 以操作游戏世界中的一切。在以剧情为重的r p g 中,脚本系统将是十分复杂的。 脚本系统由三个基本的部份组成。 第一,脚本执行的先决条件。这个脚本执行各种各样的条件。如领取任务, 杀死某个单位,或是到过某个地方等为条件。 4 重庆大学硕士学位论文1 引言 第二,脚本执行的动作。脚本执行的动作是多种多样的,这取决于脚本系统 的能做到什么样的事情。最基本最常见的展开一段剧情对话,或者是由一系列人 物表演一系列动作,当然,只要游戏能做到的一切,都可以作为脚本的动作。 第三,脚本产生的影响。脚本执行之后,给人物,给这个世界造成什么影响 呢如增加人物的力量或是直接导致角色死亡或接受到一个新任务或完成一个任务 等行为或者结果,也有可能触发另一个脚本。 脚本分为游戏脚本和地图脚本,游戏脚本是在任何情况下,只要触发并且条 件满足就可以执行的脚本,而地图脚本则是在指定的地图上才可以执行。通常它 需要指定的单位和指定的环境,游戏中的大部份表演都是基于地图的脚本。 地图环境系统:地图系统则是游戏的血肉。地图系统包含了地形状况、怪 物、n p c 、建筑等一切与世界相关的单位。它是玩家活动的空间,一切元素的容 器,也是脚本系统的容器,它决定什么地方拥有什么样的事件。地图上拥有什么 样的人物、什么样的脚本,决定了地图上会发生什么样有趣的事情。可以说,地 图决定了整个游戏的面貌。 但是,地图分为地图和世界,世界包含整个游戏部份,在上面脚本系统中所 说的游戏脚本也是属于地图,环境系统的实现部份。这一个系统没有什么可说的, 想必大家都十分了解。 a i 系统:a i 系统也是很关键的一个系统。虽然这也是一个影响行为的系 统,但是它的大部份功能在于怪物如何与角色战斗。复杂的行为模式是脚本系统 要实现的,这个系统只实现简单的决策:战斗还是不战斗、行进路线、用什么样 的技能魔法战斗等。 主控制系统:这个系统由一系列菜单和调用组成。游戏的存储、读取功能 也是由这一个系统负责。它掌管整个游戏的进行过程。 1 2 4 实现大型r p g 游戏框架的意义 面向对象的技术需要不断的经验积累和技术革新,最终目的是通过计算机语言 模拟真实的事物,而使用面向对象的技术来构建游戏世界是对软件模拟真实世界的 一个基础和尝试。 传统r p g 游戏在核心逻辑上一般包括游戏世界框架,游戏对象框架,游戏物 品技能系统,地图系统等模块。而由于游戏开发的特殊性,一般不会有将类的抽 象上升到逻辑层,这就造成了同类型的不同r p g ,即使在游戏逻辑上几乎完全一 样,但其逻辑对象的描述有可能却是不同的版本,这在软件开发中就造成了重复 开发资源浪费,延长了开发时间,同时使得游戏开发人员以过多的精力花费在雷 同模块的开发和调试上。 完善的r p g 游戏框架为具体类型的r p g 提供了一套现成的逻辑框架模型,甚 重庆大学硕士学位论文1 引言 至包括世界框架,对象层次的部分逻辑实现,可以大大简化游戏的开发,为创造更 精彩的游戏提供上层直接支持,节约开发成本,使游戏设计人员以更多的精力集中 于游戏逻辑本身的开发。 在目前流行的休闲游戏中,如q q 平台,先锋平台等大都采用游戏平台+ 游 戏框架+ 游戏逻辑的方式进行游戏的运作,大大提高游戏的开发速度以及同类型 游戏的稳定程度。 大型商业r p g 游戏在目前并没有成型的游戏虽然都有成熟的游戏引擎,但仍 然缺乏能够支持快速游戏开发的游戏层框架。 1 2 5 实现大型r p g 游戏框架的难度和必要性 游戏的需求变动性是实现游戏框架的最大困难,不能以传统的标准软件工程方 法对游戏进行建模。但游戏的框架具有某种程度上的模式可以借鉴。游戏的框架 应该是一类游戏的框架而不是所有游戏喳1 ,在软家领域企图达到“万能”类的想 法最终必然失败。 采用面向对象的游戏设计方法可以建立大型r p g 游戏的框架,并提供大多数 同类型游戏的部分逻辑功能,方便实现更高级的游戏功能。 对于一个类型的游戏的开发,其最好的方式是只改动必要的逻辑,使之运行 在给定的游戏框架上。 传统r p g 游戏在目前还不具有一套成熟稳定的游戏框架,而多采用引擎+ 游 戏开发形成一款游戏。随着游戏规模的逐渐扩大,这种开发方式的弊病开始显露: 开发+ 调试时间过长,无法满足游戏市场对游戏开发速度的要求。 对于商业级的m m o r p g ,游戏逻辑层框架不仅带来速度快的好处,同时由于 对同类型的m m o r p g 的逻辑扩展的支持,游戏逻辑层框架的复用度将会越来越 高,功能性也会越来越完善。 1 2 6 新技术的应用:设计模式。泛型编程,组件技术,b o o s i t 5 1 , l o k i t ”,s t l 【习 采用新的编程技术和软件设计技术可以提高游戏及游戏框架开发的效率及稳 定性。设计模式可以使得游戏的框架组织更为合理和高效。泛型编程可以使得局 部模块更加高效和优雅。组件编程技术将增加游戏模块的复用性,节约开发周期 和成本,使得将r p g 规模不断扩大成为现实。b o o s t ,l o k i ,s t lc + + 库的使用 将大大加强代码的效率于安全,并方便开发过程。 采用这些技术可以使得游戏框架开发最终的游戏适用性大大提高。 1 3 游戏逻辑世界的构成 游戏游戏逻辑世界的描述以及实现由于需求的持续不完善的问题,所以不能 6 重庆大学硕士学位论文1 引言 完全采用常规的软件工程方法。 对于框架类不可能作出所有游戏细节功能的需求,作出详细的u m l 图,最后进 行编码。游戏的设计师同样不可能一开始就将一个游戏勾勒得完美无暇项目开发 前进的同时往往会有需求的变动,甚至是不小的变动。 需求的不稳定性决定了游戏逻辑世界框架实现的特殊。 1 3 1r p g 世界全局框架 r p g 世界全局框架是整个r p g 游戏对象的生存空间,该框架主要是由游戏世 界框架和地图系统构成。游戏世界框架是整个游戏的承载体,各种游戏相关系统 都是在此框架下运作。地图系统是客户端与服务器公用的模块,为游戏世界提供 完整的场景。 游戏世界f r a m e 构建在主程序框架之下所有游戏逻辑上的对象都是在此 f r a m e 中运行同时,游戏世界f r a m e 的外界接口层担当与程序外围通讯的中介。 一个r p g 虚拟世界中存在很多的游戏地图,处理和地图相关的功能由地图系 统完成。同时,游戏世界中的对象与游戏地图有着很大的联系而地图的创建可以有 两种方式。直接写配置文件:通过编写x m l 或者i n i 文件描述游戏地图属性;由 地图编辑器生成地图数据:地图编辑器是一个强大的基于u i 的编辑工具,由程序 员提供,策划或者设计师使用。最终生成的地图数据交由游戏使用。 地图编辑器生成地图的做法是目前大多数r p g 游戏地图制作的标准方法。 1 3 。2r p g 世界逻辑框架 r p g 逻辑框架是r p g 游戏世冕的逻辑功能体现,该框架的完善程度将直接对 游戏逻辑体系的开发效率具有重要影响。该逻辑框架主要包括游戏对象层次、任 务系统、脚本系统,物品系统和技能系统。 游戏对象是游戏世界中的抽象物体,包括活动的和非活动。游戏对象层次是 游戏框架的重要核心,游戏所有对象的表现以及行为都是建立在完善的对象层次 之中。虚拟游戏中的各种对象以及父对象组成了游戏的对象层次。这其中至少包 括了非玩家扮演角色游戏( n p c ) 、游戏妖怪( m o n s t e r ) 、战斗属性对象( f i g h t o b j e e t ) 和游戏玩家( p l a y e r ) 这四种游戏具体对象以及在此之上的父类抽象对象。游戏对象 层次的划分不能按照现实世界中的对象标准进行划分,而采用混合了对象功能性 质以及游戏对象类别进行更细致的划分;同时必须考虑划分的合理性以及程序实 现的可行性。 任务系统承担了游戏虚拟角色与游戏世界交互的重要角色。无论多人在线网 络游戏还是普通单机角色扮演游戏的任务系统,其实质是一样的。要求对游戏事件, 游戏剧情与游戏玩家的交互进行建模,并用程序语言建立相关的模块描述。这形成 了最基本的任务体系。任务系统只作用于游戏世界的主角,即p l a y e r 。在未来 重庆大学硕士学位论文1 引言 的r p g 游戏中,可能会出现更多的具体对象并绑定更多的扩展游戏任务系统。 脚本系统1 6 1 可以为游戏提供灵活的脚本编辑功能。 任务系统是可以和脚本系统相结合:脚本系统完成任务的细节描述,而以硬编 码的任务系统提供任务框架。 任务的具体设计和实现由脚本程序负责完成,9 0 以上的商业游戏都是采用 这种方式进行r p g 游戏任务的设计和开发。 道具系统1 6 1 是对游戏世界中一类特殊对象进行管理。对于m m o r p g 游戏的 虚拟成就感的获得在很大程度上是通过得到物品的奖励而获得。物品的管理,物 品属性的设计和实现,物品的多样性和平衡性都必须通过道具系统支持。 道具的功能定义可以与脚本系统进行结合。 技能是对游戏对象的属性的一部分,是游戏对象使用法术的综合体现。技能 系统1 6 1 在r p g 游戏中战斗的一个重要表现支持。在回合制的战斗系统中,对技 能使用的状态机的设计与实现是技能系统的难点。技能的抽象定义需要游戏设计 师的参与。 1 3 3 游戏a i 框架 游戏框架中人工智能( a i ) 与数学模块往往是紧密联系在一起的,这里的游戏 a i 框架包括了基本a i 系统以及数学库。 游戏中的人工智能系统1 6 1 只需要使用到计算机人工智能很少的部分。r p g 游 戏的核心是在于剧情和交互,通过简单的手段可以提供基本的具有a i 的游戏对象 行为。游戏框架需要提供基本的游戏对象寻路等a i 模块。 数学库是游戏不可缺少的部分。游戏中介于数学库和游戏逻辑之间的模块, 其核心是由游戏需要而提供的随机数系统。 1 3 4 游戏控制系统框架 游戏控制系统决定了游戏框架对外层或者系统输入的处理方式,这里主要由 游戏对象抽象输入协议以及接口层提供的功能接口完成。 全面实现游戏对象的消息机制需要对游戏对象的消息接收提供抽象的游戏对 象输入定义。该协议必须可以不断扩充以满足游戏对象行为功能的需要。游戏框 架需要提供这种机制。 游戏框架中与外界的通讯层。各种同外界打交道的操作都是封装在这一层。该 层以接口隔离游戏框架与外层应用程序框架。 1 4r p g 框架研究现状小结 本章主要对r p g 游戏框架的现状作出了说明和分心,并对游戏逻辑世界的构 成作出分析和模块划分,并就游戏逻辑模块的实现方式作出了简要说明,为第5 重庆大学硕士学位论文1 引言 章的模块具体实现奠定了基础。 本文主要集中于r p g 游戏逻辑框架设计与实现,在对传统i 心g 提炼的基础 上实现了基本的r p g 游戏逻辑框架,以c + + 模版实现了游戏框架设计中常用的设 计模式。 完成了对r p g 逻辑层的对象层次,地图系统,物品系统,战斗系统等较为 通用的r p g 模块的抽象描述与大部分具体功能的编码实现;同时简单实现了r p g 游戏事件机制。在搭建游戏逻辑框架的基础上,本文讨论了游戏客户端需要的引 擎以及地图编辑器的设计以及实现。 本文较好地结合设计模式及范型编程技术完成了r p g 游戏逻辑框架。该套框 架将可以满足大部分已经公开测试甚至运营的m m o r p g ( 大型多人在线网络游 戏) 类型游戏的快速开发需要,可提高游戏开发效。 9 重庆大学硕士学位论文2 设计模式运用 2 设计模式运用 2 1 总则 框架的各个模块是由多个类组成,尽量降低类与类之间的耦合性是一个重要 的设计原则。类应该保持一定级别的粒度是重要的原则之一。独立功能,避免设 计一个万能类。合理利用设计模式。在完成游戏框架功能之前不进行优化。 合理采用设计模式可以很大成都上提高代码的规范性以及当软件规模增加 时降低其复杂性,减少开发以及维护成本,加大增量开发的效率。 2 。2 游戏设计模式的体现 r p g 游戏框架采用到常用的的单件,对象工厂1 7 l 、v i s i t o r l 7 i 、c o m m a n d l 7 l 等模式。这些模式主要体现在游戏框架层次接口规范、对象创建、对象管理以及 相关功能调用上。 早期的r p g 游戏采用面向过程的方法为主要设计和实现办法。当游戏规模 达到一定级别后,游戏框架的各个模块就会出现命名重复、接口功能难于管理、 全局对象过多等致命的问题。采用面向对象的设计方法并辅助采用部分简单的设 计模式可以基本解决这类问题。 2 2 1 单件模式图 图2 i 单件u m l 图:s m # e w n 模式的类图 f i g2 1s i n g l e t o nu m l 对于整个游戏中只有一个实例的存在,使用单件模式,管理者就是这种模式 的产物。该单件模式图描述了单件类( s i i l 西e i o n ) 的组成,其中包括实例接口 i n s t a n c e o ,单件操作接口s i n g l e t o n o p e r a t i o n 0 和单件,数据提取接口 g e t s i n g l e t o n d a t a ,实例句柄存储u n i q u e i n s t a n c e 和单件的数据集合s i n g l e t o n d a t a 。 任何对单件的应用都是先通过i n s t a n c e 0 获取实例后再进行类本身的方法调 用。s i n g l e t o n 模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。 t 0 重庆大学硕士学位论文2 设计模式运用 这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有 一个实例? 客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实 例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。 从另一个角度来说,s i n g l e t o n 模式其实也是一种职责型模式。因为创建了一 个对象,这个对象扮演了独一无二的角色,在这个单独的对象实例中,它集中了 它所属类的所有权力,同时它也肩负了行使这种权力的职责1 2 2 2 对象工厂模式 图2 2 对象工厂u m l 图:对象工厂与被产生对象的协作方式基本描述 f i g2 2o b j c c tf a c t o r yu m l 对象工厂用于灵活的对象层次的实例创建。d o c u m e n t 是想要创建的对象类 型,它包含了自己的操作,m y d o c u m o a t 是从d o c u m e n t 中派生的类型, m y a p p l i c a t i o n 是用户自己的对象创建器,而a p p l i c a t i o n 则负有创建d o c u m e n t 的责任,它便是对象工厂,通过对c r e a t e d o c u m e n t 的调用,它创建了m y d o c u m e n t 的实例,而每一个m y a p p l i c a t i o n 必须注册自己的对象类型的创建函数到 a p p l i c a t i o n 中去。 在游戏系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由 于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化? 如何 绕过常规的对象的创建方法( n e w ) ,提供一种“封装机制”来避免客户程序和这 种“多系列具体对象创建工作”的紧耦合? 这就是上图所示的对象工厂模式。 在以下情况下应当考虑使用对象工厂模式:游戏系统不应当依赖于产品类实 例如何被创建、组合和表达的细节,这对于所有形态的工厂模式都是重要的。游 戏系统有多于一个的产品族,而游戏系统只消费其中某一产品族。同属于同一 个产品族的产品是在一起使用的,这一约束必须在系统的设计中体现出来。游戏 系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖 于实。 2 2 3 观察者模式( v i s i t o r ) 重庆大学硕士学位论文2 设计模式运用 臣三变量圣三三亟塑苎臣三曼巫五匝曼量妻骂 图2 3 观察者u m l 图:描述观察者模式的基本框架及观察者与被观察对象之间的交互方式 f i g2 3 v i s i t o ru m l 观测者模式用于对象之间的信息通知i s l 。n o d e 是需要被观察的对象模块, a s s i g n m e n t n o d e 和v a r i a b l e r e f n o d e 是从n o d e 派生出的类型,它们重载a c c e p t 方法,该方法负责注册不同类型的n o d e v i s i t o r ,n o d e v i s i t o r 本身派生出不同的 v i s i t o r , p r o g r a m 引用n o d e ,同时为n o d e 加载v i s i t o r 。 在逻辑游戏世界构建过程中,需要为某些对象建立一种“通知依赖关系”一 个对象( 目标对象) 的状态发生改变,所有的依赖对象( 观察者对象) 都将 得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用 观察者模式,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现 软件体系结构的松耦合。 适用性:当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二 者封装在独立的对象中以使它们可以各自独立地改变和复用。当对一个对象的改 变需要同时改变其它对象,而不知道具体有多少对象有待改变。当一个对象必须 通知其它对象,而它又不能假定其它对象是谁。换言之,不希望这些对象是紧密 耦合的。 通过o b s e r v e r 模式,把一对多对象之间的通知依赖关系的变得更为松散,大 大地提高了程序的可维护性和可扩展性,也很好的符合了开放一封闭原则。 2 2 4 命令模式( c o m m a n d ) c o m m a n d 模式提供很好的过程框架。c o m m a n d 定义一个e x c u t e 的方法框架, 派生自c o m m a n d 的具体的p a s t e c o m m a n d 实现e x e u t e 方法,实际的执行是通过 对c o m m a n d 的e x e u t e 方法进行动态绑定而执行p a s t e c o m m a n d 的方法。在主程 序中,是通过c o m m a n d 的对象指针调用e x e c u t e ,所以p a s t e c o m m a n d 无法绕过这 t 2 重庆大学硕士学位论文2 设计模式运用 一限制,这就体现了过程框架8 i 的意义。 图2 4c o m m a n du m l 图c o m m a n d 模式的基本结构,描述命令框架与执行对象之间的交互 f i g2 4c o m m a n du m l 在游戏软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦 合”。但在某些场合,比如要对行为进行“记录、撤销重做、事务”等处理,这 种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与 “行为实现者”解耦? 将一组行为抽象为对象,可以实现二者之间的松耦合,这 就需要命令模式。 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化;对请 求排队或记录请求日志,以及支持可撤消的操作。 效果及实现要点:c o m m a n d 模式的根本目的在于将“行为请求者”与“行 为实现者”解耦,在面向对象语言中,常见的实现手段是“将行为抽象为对象”。 实现c o m m a n d 接口的具体命令对象c o n c r e t e c o m m a n d 有时候根据需要可能会保 存一些额外的状态信息。 通过使用c o m p m o s i t e 模式,可以将多个命令封装为一个“复合命令” ( m a c r o c o m m a n d ) 。c o m m a n d 模式与c 岸中的d e l e g a t e 有些类似。但两者定义行 为接口的规范有所区别:c o m m a n d 以面向对象中的“接口实现”来定义行为接 口规范,更严格,更符合抽象原则;d e l e g a t e 以函数签名来定义行为接口规范, 更灵活,但抽象能力比较弱。 使用命令模式会导致某些系统有过多的具体命令类。某些系统可能需要几十 个,几百个甚至几千个具体命令类,这会使命令模式在这样的系统里变得不实际。 适用性:使用命令模式作为”c a l l b a c k ”在面向对象系统中的替代。”c a l l b a c k ” 讲的便是先将一个函数登记上,然后在以后调用此函数。需要在不同的时间指定 请求、将请求排队。一个命令对象和原先的请求发出者可以有不同的生命期。换 言之,原先的请求发出者可能已经不在了,而命令对象本身仍然是活动的。这时 命令的接收者可以是在本地,也可以在网络的另外一个地址。命令对象可以在串 重庆大学硕士学位论文2 设计模式运用 形化之后传送到另外一台机器上去。系统需要支持命令的撤消( u n d o ) 。命令对象 可以把状态存储起来,等到客户端需要撤销命令所产生的效果时,可以调用u n d 0 0 方法,把命令所产生的效果撤销掉。命令对象还可以提供r e d 0 0 方法,以供客户 端在需要时,再重新实施命令效果。如果一个系统要将系统中所有的数据更新到 日志里,以便在系统崩溃时,可以根据日志里读回所有的数据更新命令,重新调 用e x e c u t e 0 方法一条一条执行这些命令,从而恢复系统在崩溃前所做的数据更 新。 2 2 5 模版方法( t e m p l a t em e t h o d ) t e m p l a t em e t h o d 模式是比较简单的设计模式之一,但它却是代码复用的一项 基本的技术,在类库中尤其重要。定义一个操作中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公交车辆火灾应急演练脚本
- 会务管理模拟试题及答案
- 交通信号灯维修触电应急演练脚本
- 子宫内膜癌根治术后化疗护理个案
- 物流分拣员行为准则
- 一例急性应激障碍患者的护理个案
- 寒潮灾害应急处置
- 交通安全应急处置
- 骨折术后护理查房
- 交通安全成果共享
- 2026届高考地理三轮培优复习 海水性质与海水运动
- 2025年上海市公安机关辅警招聘(面试)复习题及答案
- 2026年及未来5年市场数据中国动物模型行业发展运行现状及投资潜力预测报告
- 电网检修工程预算定额(2020年版)全5册excel版
- 儿童自闭症康复机构运营方案
- 2025年新疆克拉玛依市初中学业水平模拟测试道德与法治、历史试卷卷-初中道德与法治
- 2026年广东省佛山市顺德区中考语文一模试卷
- 足疗店内部劳动保障制度
- 2026年公安联考行测试卷
- 2025-2030中国水工金属结构行业投资建议及重点企业竞争力分析研究报告
- 基因治疗产品生产工艺清洁验证残留限度
评论
0/150
提交评论