已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于j 2 m e 平台的网络r p g 游戏引擎开发 摘要 手机游戏的蓬勃发展,要求手机游戏更加丰富多彩。各种类型的手机游戏层 出不穷,其中就包括r p g 游戏。同时无线网络技术的发展,使得多玩家的网络手 机游戏也应运而生。而另一方面,手机开发平台的限制使得开发逻辑复杂、画面 绚丽的游戏受到了极大的限制。因此如何在资源受限的j 2 m e 平台上开发出好的 r p g 游戏引擎成为了广大游戏开发者共同探讨的话题。 研究了游戏的引擎技术的发展,将游戏引擎分为底层游戏引擎和高层游戏引 擎。其中底层游戏引擎是对功能的封装,其中主要的功能包括游戏的渲染,音频 输出等。而高层游戏引是基于游戏逻辑的引擎,其主要目的是实现游戏的逻辑。 通过研究r p g 游戏的构成元素,分析j 2 m e 平台的特性及j 2 m e 平台对底层游 戏引擎的支持,设计了基于j 2 m e 平台的网络r p g 游戏引擎。该游戏引擎包括高 层引擎和底层引擎两个部分。在高层游戏引擎中实现了游戏逻辑,在底层游戏引 擎中补充了基于粒子系统的游戏特效。 在高层引擎设计中,讨论了适合户界面开发的m v c 模式,分析了该模式的缺 点和优点,并结合j 2 m e 平台的特性,对该模式作出了相应的变通,采用了 f v 模 式对游戏引擎进行了模块化的设计,将高层游戏引擎的划分为四个模块:即数据 模块、显示和控制模块以及网络模块和物品模块,并给出了每个部分的实现方法。 在对底层游戏引擎的功能补充中,引入了粒子系统,把在p c 机上实现的部 分粒子模拟特效因地制宜的移植到了手机平台上,提出了适合手机平台的粒子特 效的实现方案,补充了底层引擎中渲染功能。 关键词,底层游戏引擎高层游戏引擎m v c 粒子特效 基于j 2 m e 平台的网络r p g 游戏引擎开发 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fp o r t a b l ed e v i c e ss u c ha sc e l lp h o n e s a n dp d a s ,m o b i l eg a m e s ,e s p e c i a l l ym o b i l er p gg a m e s ,a r en o wb o o m i n gi n t h em a r k e t ,m e a n w h i l e ,c o m i n gl i pw i t ht h ew i r e l e s sn e t w o r kt e c h n o l o g i e s , m n l t ip l a y e ro n l i n e m o b i l eg a m e sh a v e b e e nd e v e l o p e d h o w e v e r ,t h e h a r d w a r el i m i to fp o r t a b l ed e v i c e sh a sr e s t r i c t e dt h ed e v e l o p m e n to f a d v a n c e do n l i n em o b i l eg a m e sw i t hc o m p l i c a t e dl o g i ca n dr i c hm u l t i m e d i a c o n t e n t t h e r e f o r e ,d e s i g n i n gh i g h l yc u s t o m i z e dr p gg a m i n ge n g i n eh a s b e c o m eac o m m o nc o n c e r no fm o b il eg a m ed e v e l o p e r s t h i st h e s i ss u m m a r i z e ss o m er e s e a r c ho nj 2 m e m o b i l eg a m ee n g i n ed e s i g n i nt h ep r o p o s e df r a m e w o r k ,g a m ee n g i n ei sd e c o m p o s e di n t ot w ol a y e r s : l o w l e v e la n dh i g hl e v e l t h ef o r m e ro n ei sr e s p o n s i b l ef o re n c a p s u l a t i n g l o wl e v e lf u n c t i o n a l i t i e ss u c ha sr e n d e r i n ga n da u d i oo u t p u t w h i l et h e l a t t e ro n ei sf o rg a m el o g i ca b s t r a c t i o n t h et o p i co fe x p l o i t i n gj 2 m e p l a t f o r mf u n c t i o n a l i t yi nt h ec o n t e x to fm o b i i eg a m ei sa l s oa d d r e s s e d i nt h ed e s i g no fh i g h l e v e lg a m ee n g i n e ,w ea d o p tam v cm o d e lf o ru s e r i n t e r f a c ed e s i g n w ea l s op r e s e n tt h ec o n sa n dp r o so fs u c ham o d e la n d m o d e la d a p t a t i o nt oj 2 m gp l a t f o r mi nt h i st h e s i s i nt h er e v i s e dm v cm o d e l , h i g h l e v e lg a m ee n g i n ei st h e nd i v i d e di n t of o u rm o d u l e s n a m e l yd a t a m o d u l e ,v i e wa n dc o n t r o l l e rm o d u l e ,c o m m u n i c a t i o nm o d u l ea n di t e mm o d u l e t h ei m d l e e n t a t i o no fe a c hm o d n l ei sa l s oa d d r e s s e d i nt h el o w l e v e l e n g i n e , w ei n t r o d u c ea p a r t i c l es y s t e m i m p l e m e n t a t i o nt a i l o r e df o rp o r t a b l ed e v i c e sw h i c hi sc a p a b l et or e n d e r p a r t i e l ee f f e c t si n1 i m i t e dr e s o u r c ed e v i c e ss u c ha sc e l lp h o n e s k e o r d s :g a m ee n g i n e ,l o w - l e v e le n g i n e ,h i g hl e v e lg a m ee n g i n e ,m v c , p a r t i c l ee f f e c t iv e i i 基于j 2 m e 平台的网络r p g 游戏引擎开发 1 1 研究的背景 第一章绪论 随着移动技术的发展,一些应用开发平台如j 2 m e ,b r e w ,s y m b i a n 的成熟, 手机游戏也成为i t 业发展的一个新亮点。在类型众多的手机游戏中,角色扮演 ( r p g ) 这一类游戏以其“让玩家有机会以不同的方式去获得自我的机会”这 一独特魅力在游戏市场中占有一席之地。随着手机技术的发展,以及无线网络技 术的提高,网络r p g 手机游戏也随之流行。要抢占游戏市场,获取商业利润,就 必须缩短开发周期,不断推出新游戏,因此网络r p g 游戏引擎的开发也是广大游 戏开发者共同探讨的话题。 随着技术的发展过程,游戏引擎也经历了一个漫长的发展阶段。最初对游戏 引擎的理解就是“对底层功能的简单封装4 1 。蝣戏引擎是指与游戏逻辑无关的, 可重用的模块化的代码“1 。在这种理解基础之上的游戏引擎主要包括平台a p i , 渲染a p i ,音频a p i 和流媒体a p i 这几个功能模块,其中渲染a p i 是最为重要的。 但是随着技术的发展,各种开发平台也不断完善,现在很多开发平台都或多或少 提供了以上一些功能模块,从而游戏引擎的开发已经不仅仅是局限于功能模块的 开发,更多的是基于逻辑的引擎开发。 根据上述介绍介绍可知,一个游戏引擎可以分为基于功能模块的游戏引擎和 基于逻辑的游戏引擎两个部分,分别称为底层游戏引擎和高层游戏引擎。开发的 游戏引擎的也是由两个部分组成:对开发平台的功能模块的补充和对基于逻辑的 游戏引擎的开发。 基于功能模块的游戏引擎的核心部分是图像渲染,而粒子系统作为一种流行 的图像技术广泛应用于各种p c 游戏中,这其中就包括著名的p c 游戏。采用粒子 系统可以很好地对各种自然景物和自然现象进行模拟,从两增强游戏画面的真实 感。但是受到手机平台的性能的限制,大多数手机的图像渲染功能模块中都没有 实现基于粒子系统的渲染。 目前基于逻辑的游戏引擎的设计主要是是在p c 平台上实现的,大多采用了 经典的基于用户图形界面,用户输入和逻辑的州c 模式”。例如在r a g e t 2 1 项目中 实现的游戏引擎,还有s e r g i oc a l t a g i r o n e 实现的角色扮演多人网络游戏引擎 等等。而针对手机平台的游戏逻辑引擎研究还不是很多。 基于j 2 m e 平台的网络r p g 游戏引擎开发 根据对游戏引擎的分析和认识,本文的主要工作是:一方面在j 2 m e 手机平 台上实现基于粒子系统的游戏特效,对底层引擎中的渲染模块进行补充;另一方 面,设计网络r p g 游戏的高层引擎。 1 2 课题研究意义及主要内容 j a v a 语言是跨平台运行的,这一特性免除了开发者在各个平台上分别开发相 应程序的麻烦,而j 2 m e 手机开发平台也继承了j a v a 语言的这一优点,逐步成为 主流的手机开发平台之一,所以在j 2 m e 平台上进行游戏开发也是顺应了时代的 潮流。与此同时,无线网络技术的发展也带动了手机网络游戏的发展。在各种网 络游戏中,角色扮演游戏( r p g ) 吸引了越来越多的玩家,使游戏开发商获得了 较好的商业利润。在j 2 m e 平台上开发网络r p g 游戏引擎可以大大缩短这类游戏 的开发周期,使商家盈利更多,因而具有广阔的市场前景。本论文的主要目标是 在j 2 m e 平台上实现网络r p g 游戏引擎,缩短同类游戏开发周期。 针对j 2 m e 手机平台的特性,主要研究工作集中在以f 几个方面: 1 介绍了游戏引擎的发展过程,研究了通用游戏引擎结构,分析了其优点 和缺点。对j 2 m e 平台所提供的游戏a p i 进行分析,归纳这些a p i 在游戏引擎中 所处的位置。 2 分析并提取了r p g 游戏的构成元素,根据j 2 把平台的特点,提出了基于 j 2 m e 平台的网络r p g 游戏引擎的设计方案。该游戏引擎的设计主要分为对底层 游戏引擎的补充和高层游戏引擎的设计。在高层游戏引擎设计中,讨论了常用的 m v c 设计模式的优点和缺点,采用了m v 设计模式。同时在游戏渲染中,增加了 基于粒子系统的游戏特效这一功能。 3 根据面向对象的设计方法,研究j a v a 模式,应用到高层游戏引擎的实现 中。 4 分析粒子系统的特性,提出了在j 2 m e 平台上实现粒子特效的方法。 1 3 本文的组织结构 本文的后续章节将这样安排: 第二章:介绍游戏的构成部件,按照游戏引擎的发展,将游戏引擎分为底 层引擎和高层引擎,分别给出底层引擎和高层引擎的定义,并提出高层游戏引 擎的通用结构。 2 基于j 2 m e 平台的网络r p g 游戏引擎开发 第三章,首先简要介绍j 2 胍平台的特性,分析j 2 她中已经实现了的底层 引擎功能,然后根据该平台的特性,提出基于j 2 m e 平台的网络r p g 游戏的设计 方案。 第四章,根据第三章中提出的设计方案,实现高层引擎。 第五章,介绍粒子特效在j 2 h 皿平台上的实现方案。 第六章,总结与展望。 基于j 2 m e 平台的网络r p g 游戏引擎开发 第二章游戏引擎的通用结构 2 1 游戏的组成部件 游戏是对客观世界的认识和理解,从最为抽象的角度来分解,可以将游戏分 解为四个部件。 一是远古以来就业已存在的世界:山水、森林诸如此类,他们有一个共 同的特点,是很少或几乎不会因为人类的精神活动而发生变化,基本上可以认为 在整个游戏期间很少或没有变化。这一部分用一个词语来描绘就是地图或地形。 一般在三维中都叫地形,二维中都叫地图。 二是这个世界的居住者以及他们所使用的各种工具:人、动物、汽车, 他们有一个共同特点是会发生强烈的相互影响相互制约的关系。由于变动明显, 这一部分的物体经常会发生变动。这一部分用一个词语来描绘就是物件。在另外 的分类中,往往也把地图和地形当作一种物件,但在犬部分游戏中,这两者属性 和方法都不同,因此在此将地图独立出来考虑。 第一二世界的组合就成了可以感知到的物质世界,而这个世界在心中的映 象,就叫做场景。换句话说,广义的场景就是地形和地形之上的物件的集合。从 一个简单的角度来考虑,可以把场景看作是舞台布景,舞台背景等等就是地形, 而舞台上的演员和一些杂物等等就是物件。 第三世界是相对静止状态的规律集合。例如“生命体失血过多会死亡”、“在 其他条件相同的前提下,有效率的入比没效率的人在单位时间内收益要大”,等 等等等。这一部分很大的可能会影响到“第一第二部分的世界”,用一个词语来 描述它就是规则或者规律。这一部分还有一个重要的内容就是人类精神领域的活 动,包括思维世界和情感世界,可以把这种活动认为成一种特殊的规则和规律。 游戏作为一种交互娱乐手段,就需要交互。交互中最重要的是通过玩家一切 可能的方式来向游戏系统输入,然后从游戏系统接收输出。因此i o 控制是一个 游戏系统所必须的系统。 另一方面,在游戏中,i o 系统除了键盘鼠标显示器这些基本的设备之外, 还有一个交互的重要组分就是g u i 界面,对于现在越来越复杂的游戏系统,一个 仅通过鼠标和键盘,靠输入命令来维持的i 0 是很难想象的。g u i 用它的强大功 能弥补了标准i o 设备的不足,因此g u i 也在被考虑范围之内。 4 基于j 2 m e 平台的网络r p g 游戏引擎开发 通过上面的论述可以得出的结论是:一个游戏可分解为地图、物件、规则、 i o 控制和g u i 的集合。棋牌类游戏可以考虑之为地图、物件、i o 和g u i 部分 退化而规则相对进化的游戏。近代出现的军事推演己经是一种有完整地图、物件 和规则的游戏系统了。 在大部分游戏引擎中,把第一部分映射为地形( 地图) 系统来处理,至少支 持地图文件的读取、导出、渲染等。 而第二部分,各个不同游戏的实现也不尽相同,一般引擎对物件的支持除了 渲染外,至少会提供如下支持:碰撞检测、物件运动和模型编辑等等。 第三部分,这有很大一部分是受游戏类型的限制,而且即便是在相同游戏类 型里面,由于程序员的个人划分不一样,也会出现不同的结果。基本的技术包括 状态机等。 第四部分,g u i 和控制则有很多参考,m f c 等都是很好的参考。 2 2 底层引擎 底层引擎是“对底层功能的简单封装”,这个底层功能包括平台a p i 、渲染 a p i 、音频a p i 、流媒体a p i 等,这样的引擎往往是一种c 语言时代的思路,其 划分是来自于各个不同部分之间的“功能”关系,而非“逻辑”关系。在这种概 念之下的游戏引擎在整个游戏开发中的逻辑位置如图2 1 所示: 重新 图2 1 底层游戏引擎中逻辑位置 其他 游戏 终端 这时的游戏引擎中包括:渲染核心、内存管理、骨骼动画、帧动画、文件操 作、物理库、网络库等等。这些功能块之间没有关联或很少关联,基本上没有什 么逻辑联系。它们一种平铺的结构,互相之间没有关联或很少关联。也就是说, 它基本什么逻辑都没有实现,每一个游戏可以重用这些底层功能,除此之外,开 基于j 2 m e 平台的列绍r p g 游戏引擎开蓑 通过e 面的论述可以得出的结论是:一个游戏可分解为地图、物件、规则、 i o 控制和g u i 的集合。棋牌类游戏可以考虑之为地图、物件、i o 和g u i 部分 退化而规则相对进化的游戏。近代m 现的军事推演已经是一种有完整地图、物件 和规则的游戏系统了。 在大部分游戏;i 擎中,把第一部分映射为地形( 地图) 系统来处理,至少支 持地图文件的读取、导出、渲染等。 而第二部分各个不同游戏的实现也不尽相同,一般引擎对物件的支持除r 渲染外,至少会提供如下支持:碰撞检测、物件运动和模型编辑等等。 第三部分,这有很大一部分是受游戏类型的限制,而且即便是在相同游戏类 型里面,由于程序员的个人划分不一样,也会山现不同的结果。基本的技术包括 状态机等。 第四部分,g u i 和控制则有很多参考,m f c 等都是很好的参考。 2 2 底层引擎 底层引擎是“对底层功能的简单封装”,这个底层功能包括平台a p i 、渲染 a p i 、音频a p i 、流媒体a p i 等,这样的引擎往往是一种c 语言时代的思路,其 划分是来自于各个不同部分之间的“功能”关系,而非“逻辑”关系。存这种概 念之下的游戏;1 擎在整个游戏开发中的逻辑位置如留2 1 所示: 重新 其他 游戏 终端 图2 1 底层游戏引擎中逻辑位置 这时的游戏引擎中包括;渲染核心、内存管理、骨髂动画、帧动画、文件操 作、物理库、网络库等等。这些功能块之间没有关联或很少关联,基本上没有什 么逻辑联系。它们一种平铺的结构,互相之间没有关联或很少关联。也就是说, 它基本什么逻辑都没有实现,每一个游戏可以重用这些底层功能,除此之外,开 它基本什么逻辑都没有实现,每一个游戏可以重用这些底层功能,除此之外,开 基于j 2 m e 平台的网络r p g 游戏引擎开发 发者需要重新写所有逻辑,即便两个游戏在基本逻辑上基本相同。国外的游戏引 擎已经可以让开发者脱离代码,只用脚本和编辑器就可以做游戏了( 这种开发手 段叫做m o d ) ,这种简单的平铺结构,没有纵深,根本无法实现游戏的逻辑。按 照这个思路建立的引擎,只是一个功能引擎,它的各个功能模块之间没有逻辑关 系。包括场景、地图、物件、规则等一系列游戏逻辑所直接相关的东西,它都没 法直接提供。拿2 d 地图来做一个例子,在这样的引擎思路下,地图只是诸多图 元的拼接、位图位块传输和互相遮挡。这个思路确实反映出来了地图的本质,但 是对于游戏逻辑来说,它太细了。因为游戏逻辑是不需要知道地图图元如何拼接、 位图位块的传输和遮挡的。 通过以上的介绍,了解引擎除了功能元素之外,同时包括一些逻辑意义的部 分,即部分开发者交流中所说的“游戏层引擎”或“高层引擎”,高层游戏引擎 是为了方便表达游戏的上层逻辑。底层游戏引擎所立足的都是平台a p i ,是与a p i 严格相关的。目的就是为了要让外界看不见平台a p i ,专心做外界的逻辑部分, 但底层引擎只完成了一个目的,就是通过封装a p i 来完成一定功能。因此人们又 提出了高层引擎的概念。 2 3 高层引擎 底层引擎层次的划分完全来自于平台和a p i 的限制,因为毕竟要做的游戏必 须跟某一个平台相关。而高层次的引擎结构则是跟需要达到的目的严格相关的, 通过高层引擎,最高层逻辑只需要写:在场景中放置几只飞鸟,按照s i n 函数路 线飞行。至于飞鸟飞行中是怎么振翅,怎么偏航,这是在物件系统的具体物件类 这里是飞鸟里可以决定的。 但是写底层引擎容易,写一个通用的高层引擎层却很复杂,因为底层引擎只 是跟变化缓慢的平台技术相关,但高层引擎层却是跟丰富多彩的游戏相关的。不 仅如此,高层引擎的存在同时受底层引擎的功能限制。 图2 2 给出了一个典型的高层游戏引擎的结构: 基于j 2 m e 平台的网络r p g 游戏引擎开发 图2 2 高层引擎的通用结构 这是一个基于o g r e 的高层游戏引擎,虽然这个游戏引擎也被证明非常适合 基于o g r e 游戏的开发,但是这个高层游戏引擎结构仍然不具有通用性。比如, 如果用这个结构来设计r p g 游戏,就至少还要补充技能、道具很多子系统。 2 4 本章小结 本章首先介绍了普通的手机游戏的组成部分,然后提出了底层游戏引擎和高 层游戏引擎的概念。其中,底层游戏引擎“对底层功能的简单封装”,这个底层 功能包括平台a p i 、渲染a p i 、音频a p i 、流媒体a p i 等。为了表达游戏的上层 逻辑,于是就有了游戏的高层引擎。最后分析r3 - 2 m e 平台中的g a m e 包所具有的 底层引擎功能。 基于j 2 i v l e 平台的嘲络r p g 游戏引擎开发 第三章基于j 2 m e 的r p g 手机游戏引擎的设计 3 1j 2 胍平台简介 j 2 滟,也就是j a v a2p l a t f o r mm i c r oe d i t i o n ,是在1 9 9 9 年6 月的j a v a o n e 大会上正式被提出,是s u n 公司专门为小型的、资源受限的消费性电子设备的应 用程序开发所提供的j a v a 版本。目前,j 2 m e 平台被认为是主流的手机游戏平台 之一,它为开发者、设备制造商、网络通信公司和消费者广泛接受。 3 1 1j 2 u r 的体系结构 为了使j 2 m e 平台可以良好的支持范围广泛的、品种诸多的消费性电子设备, 以及应对不断变化发展的设备技术,为未来的种种应用提供可扩展的空间,对 j 2 m e 平台进行模块化设计是必不可少的。因此j 2 m e 平台的设计师们提出了两个 新的概念,分别是:配置( c o n f i g u r a t i o n ) 和描述( p r o f i l e ) ,并以他们为核 心把j 2 肥进行了分层化,如图3 1 显示了j 2 娅的四层体系结构m : 曼竖:h j 厂面五五丽1 一一7 歹 。一l 。 图3 1j 2 m e 的体系结构 主机操作系统层( h o s to p e r a t i n gs y s t e ml a y e r ) :这一层为特定硬件设备的 操作系统层。 j a v a 虚拟机层( j a v av i r t u a lm a c h i n el a y e r ) :这一层是j a v a 虚拟机的一个 实现,它是为特定设备的主机操作系统定制的,支持一个特定的j 2 m e 配置。 配置层( c o n f i g u r a t i o nl a y e r ) :配置层定义了j a v a 虚拟机的功能和特定类 别设备上可用的j ”a 类库的最小集。从某种程度上说,一个配置定义了j a v a 平台 的功能部件和库的共同性,开发者可以假设这些功能部件和库在属于某一特定类 ! 活l n动 一 旧 一 基于j 2 m e 平台的网络r p g 游戏引擎开拉 别的所有设备上都是可用的。这一层对用户是透明的,但它对描述的实现者非常 重要。 j 2 m e 中的配置州( c o n f i g u r a t i o n ) 包括两种:连接设备配置c d c 和连接受限设 备配置c l d c 。针对具备间断网络通讯能力的个人移动信息设备,比如手机,p d a 等的c o n f i g u r a t i o n 称为c l d c ( c o n n e c t e d ,l i m i t e d d e v i c ec o n f i g u r a t i o n ) ,针 对有固定的不问断网络连接的共享连接信息设备,如机顶盒( s e tt o p b o x e s ) ,w e b t v ,支持i n t e r n e t 的有屏幕电话,汽车娱乐导航系统等等的 c o n f i g u r a t i o n ,称为c d c ( c o n n e c t e dd e v i c ec o n f i g u r a t i o n ) 。 描述层9 1 ( p r o f i l el a y e r ) :描述层定义了特定类别设备上可用的应用程序编 程接口的最小集。描述在一个特定的配置上实现。应用程序是针对特定的描述编 写的,因此可以移植到支持该描述的任何设备上。一个设备可以支持多个描述。 用户和应用程序开发者看到最多的就是这一层。 s u n 公司推出了两种可用的j 2 m e 描述:基础描述( f o u n d a t i o np r o f i l e ) 和移 动信息设备描述( m i d p ,m o b i l ei n f o n n a t i o nd e v i c ep r o f i l e ) 。 基础描述主要用于c d c 配置,因而其虚拟机几乎等同于标准的虚拟机。这意 味着,使用基础描述的开发人员可以访问完整实现的j 2 s e 特性集。m i d p 连同功能 较少的c l d c 配置一道为开发移动设备应用程序提供了j a y a 平台。m i d p 支持j 2 s e 类库的有限子集干g c l d c 配置上定制的用户接口和输入输出类。 j a v a 虚拟机层、配置层和描述层一起为j 2 m e 应用程序提供了一个标准的运行 时环境,这个环境允许新的应用程序和服务动态地被安装到各种终端用户设备 e 。 3 1 2j 2 皿的软件体系结构 j 2 m e 平台主要分为两大体系:一是基于c d c 的c v m c d c f o u n d a t i o np r o f i l e 体系,该架构这对于内存需求相对较大( 相对c l d c 相比) ,一般大于等于2 m b , 处理器能力较强的设备如机顶盒等;另一种是基于c l d c 的k v m c l d c n m i d p 体协 结构,针对于内存较小( 1 6 0 - - 5 1 2 k b ) ,资源受限的小型设备如手机、p d a 等。 目前j 2 m e 发展较为成熟的是c l d c m i d p 的软件体系,就是通常所说的“k j a v a ”。 j 2 m 的c l d c m i d p 的软件体系结构“唧如图3 2 所示: 9 基于j 2 m e 平台的网络r p g 游戏引擎开发 图3 2j 2 m e 的软件体系结构 图3 2 展示了c l d c m i d p 的软件体系结构和m i d p 在软件体系中的逻辑位置。 在m i d p 的上层的应用程序被称为m i d l e t 。 众所周知,m i d l e t 在底层c l d c 的支持下,通过m i d p 中提供的包获得更多 的功能( 其中包括u i 网络、永续性存储等) 。m i d l e t 可以直接使用m i d p 本身提 供的类库以及m i d p 从c l d c 中继承的那部分a p i ,m i d l e t 本身并不能直接访问其 底层设备的操作系统,而且也不可能做到这一点。 o e m ( o r i g i n a le q u i p m e n tm a n u f a c t u r e r ) 专用应用程序( 也可以称其为 o e m 特有的m i d l e t ) 可以通过某设备厂商提供的专用的类库来获得更多的额外的 功能。例如m o t o r o l a 和s e e m a n s 其无线开发包都有其附加的库,以提供其设备 特有的一些功能,其中有些可能访问了底层设备的操作系统。o e m 专用应用程序 依赖于一些不属于m i d p 规范的类。这些应用程序不可移植。 同时因为k v m 不支持j n i ( j a v an a t i v ei n t e r f a c e ) ,所以要使m i d l e t 访 问本地平台功能的唯一的方法是把本地代码连接到一个客户自定义的虚拟机上, 可以支持c l d c m i d p 的v m 并不是只有k v m 一种,只不过k v m 是s u n 对m i d p 的 个参考而已。 3 1 3 手机平台上的j 2 皿 集成在手机中的j 2 m e 通常采用c l d c m i d p 结构”l ,这是j 2 m e 层次结构的实 例之一。其中c l d c 包括k v m 以及j 2 慨的核心的a p i ,m i d p 包括用户接口( u i ) 和h t t p 连接等j 2 m e 的扩展h p i 。c l d c 提供了对基本7 a v a 语言的支持,总的来 说是与j a v a 语言完全兼容的。但也存在以下几个方面的缺陷【2 1 1 : 1 不支持浮点数据类型,即没有f l o a t 这种数据类型,类库中也没有包含 j a v a 1 a n g f l o a t 这个类。之所以这样做,主要是出于埘c l d c 所面向的设备的 硬件功能方面的考虑,如设备内存有限,大部分硬件不支持浮点等。 1 0 基于j 2 m e 平台的网络r p g 游戏引擎开发 2 不支持类实例( c l a s si n s t a n c e ) 的终结( f i a n a l i z a t i o n ) ,即不存在 o b j e c t f i n a l i z e0 方法。 3 有限的错误处理( e r r o rh a n d l i n g ) ,即大部分j a v a 1 a n g e r r o r 的子类 都未被支持,这主要是由于设备的内存限制。 4 不支持线程组( t h r e a dg r o u p s ) 或守护线程( d a e m o nt h r e a d s ) 。 在手机上,k w ,c l d c ,m i d p 分别实现了j 2 m e 体系结构中的j a v a 虚拟机层、 配置层和描述层。 在m i d p 中,基本的执行单元是m i d p i e t 类。m i d l e t 类是继承自 j a v a x m i e r o e d i t i o n m i d l e t 的类。在m i d p 应用中,系统只条用m i d l e t 类的一 个公共的、无参数的构造函数来实例化这个m i d l e t 类。 一个在p c 机开发环境中已经开发好的j 2 m e 应用程序,用j a v & c 程序对它们 进行编译。当程序的源程序被编译后,必须被预审核器预审核,然后才能生成可 以被下载到目标设备上运行的类文件。之所以有这一步骤主要是c l d c 要求其底 层的虚拟机能够辨别并拒绝非法的c l a s s 文件。但由于c l d c 本身面向小内存消 耗的小型设备这一前提,其类文件检测机制与j 2 s e 中定义的标准类文件审核机 制有所不同。同时c l d c 为了减轻目标设备上虚拟机中审核器的负担,加快其审 核速度,所以把一部分的审核任务放在预审核器中完成。中有一步其特有的预审 核( p r e v e r i f i c a t i o n ) 过程,这是c l d c 区别于通常的类文件审核过程的关键。 通过前置审核的文件就可以打包到m i d l e t 套件中,下载到目标设备中去了。类 文件下载到目标设备后,使用k v m 的审核器进行剩下的审核工作,然后通过k v m 的解释器( i n t e r p r e t e r ) 来运行应用程序。图3 3 显示了j 2 m e 应用开发以后加 载到目标设备的过程: 开发环境目标设备 图3 3j 2 舾应用开发以及加载到安装有k v m 的目标设备的流程 基于j 2 m e 平台的网络r p g 游戏引擎开发 3 1 4m i d p 中的底层引擎 如前所述,底层引擎是“对底层功能的简单封装”,这个底层功能包括平台 a p i 、渲染a p i 、音频a p i 、流媒体a p i 等。在j 2 m e 中已经实现了渲染a p i 和音 频a p i 。 渲染a p i 在j 2 m e 中有一个j a v a x m i c r o e d i t i o n 1 c d u i g a m e 的包,这个包内包含了 g a m e c a n v a s 。l a y e r ,l a y e r m a n a g e r ,s p r i t e ,t i l e d l a y e r 这几个类。按照底层 引擎的定义,可以认为这个包实际上已经实现了部分底层引擎中的渲染功能。在 j 2 艇中,对图像的渲染主要采用分层渲染口3 “1 。其中l a y e r 类表示了游戏中一个 基本的视觉元素,每个视觉元素都必须有位置信息,宽度和高度以及是否可见。 t i l e d l a y e r 类表示一个可以由很多单元格组成的视觉元素,在游戏中主要用来 构成地图背景。s p r i t e 类表示了一个可以用图像的帧序列渲染的视觉元素,它 是j 2 m e 中实现动画的最基本方法。他们之间的类层次结构图如下: 在游戏中,一个图像界面可以由多个t i l e d l a y e r 层和多个s p r i t e 层构成”“, 为了对这些些渲染层进行有效的管理,m i d p 提供了l a y e r m a n a g e r 类。当要显示 某个层时,仅仅只需要将该层添加到l a y e r m a n a g e r 类中,l a y e r m a n a g e r 根据这 些层被添加的顺序一次将各层绘制到c a n v a s 上。 图3 4 基于l a y e r 的s p r i t e 和 f i l e d l a y e r 音频a p i m i d p 提供了一个j a v a x m i e r o e d i t i o n m e i d i a 包,这个包的主要功能是为 在游戏中播放音效和音乐提供接口。 3 2 网络r p g 游戏的构成元素 r p g 是r o l ep l a yg a m e ( 角色扮演游戏) 的缩写,是深受广大游戏迷们喜爱 的一种游戏,它以独特的互动性和故事性吸引了无数的玩家。它向入们提供了超 出现实生活的广阔的虚拟世界,使人们能够尝试扮演不同的角色,去经历和体验 基于j 2 m e 平台的网络r p g 游戏引擎开发 各种不同的人生旅程或奇幻经历,而这些体验都是在现实生活中无法实现的。所 以有越来越多的人热爱r p g 游戏,同时也使得r p g 游戏的开发呈现一派繁荣景象。 而客户端的应用程序主要根据上一章中介绍的“一个游戏可分解为地图、物 件、规则、i 0 控制和g u i 的集合”,结合r p g 游戏的特点和设计的需要,将r p g 游戏的基本组成元素归纳为几个: ( 1 ) 游戏中的角色 游戏中的角色是游戏物件中的部分。游戏中的角色有两大类:一类是指游 戏中的人物。人物有两种,一种是玩家正在控制的人物,称之为主角;另一种是 不可控制的角色,称之为n p c ,它分为行走角色和站立角色。行走角色是指角色 可以在你指定的几个点上按照路线不停的行动的角色,也包括一些动物( 小猫、 小狗之类的) 。而站立角色相对来说就简单一些。第二类是指游戏中带有动画属 性的物体,比如燃烧的火,喷水的喷泉等等。 主角可以是一个,也可以是多个:同时主角可以有很多方面的属性,如进攻 能力、防御能力、佩戴的武器样式、在某,1 方面有很强的知识等等。玩家可以根 据自己的喜好选择角色的个性,使其成为某一类型的人,比如巫师、魔法师、或 者军事家等等。 ( 2 ) 游戏场景 游戏场景是由物件和地图组成的。游戏场景是运行在游戏中的主要角色可以 到达的场地,也就是整个游戏的大背景。也就是说,如果没有游戏的角色,游戏 本身就是由很多单独的场景组成的。 ( 3 ) 音效与音乐 音效在一款成功游戏中是极其重要的。一般的来说,音效在游戏中,以三种 形态出现:1 ) 背景音效:与背景音乐同时,不间断的播放,如工匠铺里,叮叮 当当的打铁声:2 ) 随机音效:在一个场景中,随机播放出来:3 ) 特制音效;随 玩家的操作而播放的音效,如用剑砍敌人时“刷”的一声。总之在游戏中灵活机 动的加入音效会使游戏更丰富多彩。 通常游戏中的音乐是指一段连续的旋律,就像电影中的背景音乐一样,可以 渲染游戏的气氛,增加可玩性。 ( 4 ) 操作界面 操作界面在一+ 款游戏中也是必不可少的,方便快捷的菜单界面,可以使玩家迅 基于j 2 m e 平台的网络r p g 游戏引擎开发 捷地进行功能选择,从一个场景切换到另一个场景,可以控制人物的状态和发展 状态;另一方面,及时的信息提示界面,可以帮助玩家发现问题,或者了解玩家 目前的状态和配置以及了解其他玩家的信息。在游戏中,界面是玩家与游戏之间 的相互交互的重要途径之一。 ( 5 ) 网络交流 由于网络的高速发展和终端机的硬件设施不断升级,网络游戏已势不可挡,过 去的单机版游戏已经逐渐被网络游戏所取代,r p g 游戏也必然溶入了浩浩荡荡的 互联网大潮之中了。通过网络,多个玩家可以相互交流,可以聊天,甚至可以在 某一个游戏场景中进行比赛。 3 3 基于j 2 脏的网络r n i 游戏引擎的设计 3 3 1m - v - c 设计模式的应用 r p g 游戏是以屏幕为中心的应用程序,界面在游戏中至关重要。游戏的界面 包括的范围很广,包括片头片尾以及过场动画、注册、进入游戏等主界面,另外 还包括游戏中所有可能出现的场景以及操作界面。在界面中还包括对全部的键盘 等输入设备的操作。如何将这些界面有效的组织起来,采用何种模式进行游戏引 擎的设计,这是最关键的。 而m o d e lv i e w c o n t r o l 对于g u i 程序设计而言非常有用,它可以提供菜种 程度的模块性,使得程序可以利用已有的图形输出设备实现。根据j a v a 的开发 模式和实际的游戏的特点,在设计时,最适合采用m v c 模式。下图显示了m v c 模 式0 1 的结构图。 1 4 基于j 2 m e 平台的网络r p g 游戏引擎开发 图3 5m v c 模式图 虽然m v c 模式可以有效的分离不同的功能模块,虽然在上一节中已经按照 m v c 的模式设计出了基于j 2 m e 的网络r p g 游戏引擎的结构,但是m v c 模式也有 缺点】。首先利用m v c 模式( 也包括近代的其他一些模式) 需要通过多产生一些 类,来提高程序的可读性与健壮性。附带来的缺点就是类的数量的膨胀。同时 m v c 虽然定义了m v c 个个部件的含义,但并不具体,而且没有非常明确的固定 三者之间的联系。所以一直以来除了v i e w 没有争论外,其他方面都有很多争论, 大家都想把自己的理解作为正解。尤其是“m o d e l 到底是屏幕数据的集合还是实 体数据”、“控制器的作用”是两个经常争论的问题。最后m v c 的实现成本偏高。 一般而言项目越大,越可以看出其优势。鉴于以上原因,在实际的手机游戏引擎 实现中,由于手机开发平台的性能和内存等各方面资源的限制,不能完全按照 m v c 的模式来设计,通常使用m v c 的变通的模式。 在3 2 m e 平台上,最具有实践意义的模式是拊模式。精炼的说这种方法是以 屏幕为组织单位的,一个屏幕及其控制被抽象成一个v c 类,而这个类中有一个 私有的m o d e l 对象来代表屏幕上要用到的数据元素。屏幕对象并不保存任何的实 体数据,这些数据被组织在了m o d e l 对象中。因为屏幕对象很直观,控制器的作 用也不明晰( 它绝大部分的功能被v i e w 或是m o d e l 取代,这主要取决于实现的 需要) ,所以也常常称呼为m o d e l v i e w 模式。 m v 模型,这是一种以屏幕为核心的分离。m o d e l 组织起屏幕的数据,v i e w 向m o d e l 索要其希望显示的数据,注意这1 一操作一定要通过预先协商好的接口访 基于j 2 m e 平台的网络r p g 游戏引擎开发 问,而不是直接操作。如果出现复杂的事务逻辑( 用户选择的某种操作) ,有人 将其放在m o d e l 端,也有人放在v i e w 端。但根据r p g 游戏的特点和j 2 m e 中的游 戏a p i 的特点,将事务逻辑放入v i e w 一端更为恰当。 这种形式的优点是非常的直观,也有限的分离了显示和数据。这种模式的缺 点是它与鼓励开发者从屏幕开始思考问题,这往往让人陷入陷阱不先考虑事 务的流程,而是从用户接口直接下手去分析问题,这往往扼杀了开发者的全局构 思。 3 3 2 游戏引擎的设计 在上一章中,曾经阐述了底层游戏引擎和高层游戏引擎的设计目标,同时指 出了在m i d p 2 0 中,其实已经包含了相当多的底层游戏引擎。所以基于j 2 m e 的 网络r p g 游戏引擎的设计主要是进行高层游戏引擎的设计,也就是为了表达游戏 的上层逻辑,同时对底层引擎也做了补充和完善。 根据图2 2 的设计思路,结合r p g 游戏的构成元素,按照m v c 模型的模块化 设计方法,网络r p g 游戏的高层引擎主要由四个模块组成: 模块1 ,描述了场景的构成,该模块的主要设计目标是管理有关场景的数据 模型,对场景中的各个组成部分建立模型,包括人物、怪物。该模块可以对应于 m v c 模型中的m ( m o d u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 演出补充协议合同范本
- 直播基地建设合同范本
- 直播公会转让合同范本
- 酒店保安聘请合同范本
- 礼品木盒采购合同范本
- 酒店劳动试用合同范本
- 酒店品牌宣传合同范本
- 祠堂木材加工合同范本
- 潍坊租赁土地合同范本
- 租房改造锯床合同范本
- 水下砌砖墙封堵施工方案
- 大学生心理健康教育知到智慧树章节测试课后答案2024年秋石家庄工程职业学院
- 严重精神障碍患者管理课件
- 水箱清洗与保养方案
- 赏延素心-中国书画的样式、内容与情感表达 课件-2024-2025学年高二上学期美术人美版(2019)选择性必修2 中国书画
- 胆囊炎的中医辨证治疗
- 2024年我国医疗改革政策解读
- 智算中心技术架构设计
- 衣食住行见证改革开放时代变迁-(修订)
- 期中测试卷-2024-2025学年统编版语文五年级上册
- TQGCML 3946-2024 柴油发电机组维护保养规范
评论
0/150
提交评论