当前位置:文档之家› 基于JAVA的手机RPG游戏图形引擎的实现

基于JAVA的手机RPG游戏图形引擎的实现

第34卷第4期2008年12月延边大学学报(自然科学版)Journal of Yanbian University (Natural Science )Vol.34No.4Dec.2008收稿日期:2008203214作者简介:臧晓强(1977—),男,讲师,研究方向为智能信息处理.文章编号:100424353(2008)0420287203基于JAVA 的手机RPG 游戏图形引擎的实现臧晓强, 崔荣一, 金小峰, 蔡京哲, 张振国(延边大学工学院计算机科学与技术系,吉林延吉133002)摘要:手机游戏引擎中的图形引擎非常重要,它的好坏关系到手机游戏界面流畅情况以及对手机的硬件要求程度.本文基于J 2M E 的MIDP2.0,讨论了手机RP G 游戏引擎中图形引擎的设计与实现,包括地图数据文件设计到读取、分析、加载和渲染.关键词:游戏引擎;手机游戏;RP G 游戏;图形引擎中图分类号:TP391 文献标识码:AImplementation on Java RPG Mobile G ame G raphic E ngineZAN G Xiao 2qiang ,CU I Rong 2yi ,J IN Xiao 2feng ,CA I Jing 2zhe ,ZHAN G Zhen 2guo(De partment of Com puter Science and Technology ,College of Engineering ,Yanbian Universit y ,Yanj i 133002,China )Abstract :The graphic engine is very important in mobile game engine which effects the game ’s scene and the mobile ’s hardware.A MIDP 2.0based on RP G engine is presented in this paper ,including how to design ,read ,analysis ,load and render the map 2data 2file.K ey w ords :game engine ;mobile game ;RP G game ;graphic engine0 引言随着移动技术的快速发展和一些应用开发平台如J 2M E 、BREW 的成熟,手机游戏变得越来越成熟[1].游戏引擎是控制某一类游戏运行的程序,在后台指挥游戏中的所有元素,包括图像、声音、动画、事件等协调有序地工作.游戏引擎能给开发带来方便,并对今后的修改升级、游戏的开发提供基础[2].目前,市面上的手机游戏绝大部分由游戏开发商提供,普通大众由于缺乏专业的程序开发技能而难以参与手机游戏的开发,只能被动地接受开发商、运营商所提供的应用[325],因此建立一个能够让一般的游戏设计人员使用、便于操作的游戏引擎变得更为迫切.限于篇幅,本文重点探讨地图的读取及渲染的实现.1 MIDP 中重要的API 简介M IDP (Mo bile Information Device Profile ,M IDP )提供了对手机设备的屏幕和硬件键的细粒度控制.其中主要的API 类如下:1)Screen 类是高级小构件如Alert 、List 、Form 的基础,MIDP 2.0允许同一个Form 上混合文本和图像;2)Canvas 类是低级M IDP U I 的基础,提供对整个屏幕的像素级绘画的访问,以及游戏动作、按键事件的处理方法;3)Game Canvas 类继承于Canvas 类,可以直接从get 2Grap hics ()方法中得到Grap hics 对象并且在该对象上绘图,并可以调用flush Grap hics ()方法更新屏幕的一部分.M IDP 2.0的game 包为游戏应用程序定义了一套完整的A PI.MIDP 2.0除了Game Canvas 类之外,还提供了支持平铺或延边大学学报(自然科学版)第34卷 动画游戏背景图片的Layer 类,并提供了处理动画图片的Sp rite 类.2 手机RPG 游戏引擎的设计通用性是游戏引擎的首要任务,并且为了适应大多数RP G 游戏,游戏引擎还要具有很强的扩充性.根据这一原则,本文将手机RP G 游戏引擎分为以下几种:1)网络引擎:负责网络通讯消息处理,服务器和手机客户端通过TCP/IP 协议链接,服务器接收消息,按照游戏世界更新逻辑处理消息,并把消息发送到手机客户端,手机客户端处理消息显示游戏元素状态.2)声音引擎:为游戏开发者提供接口,使得不同的游戏状态可以播放不同的声音.3)图形引擎:把通过资源管理器和地图编辑器处理的图形按照地图文件格式读取出来,使得地图处理对于游戏开发人员来说透明化.4)地图编辑器和资源管理器:将原始图像根据地图文件格式和精灵动作文件格式编辑,使得编辑后的图像能够被图形引擎正确读取.5)A I 引擎:处理非玩家控制角色(N PC )的运动,包括巡逻、躲闪、进攻、死亡等.文中图形引擎中类图如图1所示.地图、精灵图像渲染由load (),draw ()方法实现,用load ()方法读取场景信息,用draw ()完成渲染.图1 地图、精灵类图3 手机RPG 游戏引擎渲染技术的实现数据文件是用来让手机读取并用来渲染场景的文件,它是由地图编辑器生成的.3.1 地图数据文件的设计设计思想 地图的读取关键在于地图文件格式的设定.地图数据文件对于游戏开发人员来说是透明的,考虑到文件的可读性和安全性,文件采用类XML 文件形式.地图数据文件的设计目的是为了把图片形式的地图利用字符和数字表示出来.游戏开始前通过读取地图文件格式,游戏自动加载相应的图片资源,并且一次性加载,直到游戏场景再次切换时为止.具体实现步骤如下:1)〈map 2filename 〉maptest.txt 〈/map 2filename 〉map 2filename 为图文件的名称,本例中名称为maptest.t xt ;2)〈map 2size 〉〈widt h 〉480〈/widt h 〉〈height 〉256〈/height 〉〈/map 2size 〉map 2size 表示地图文件的大小,widt h 表示宽度,height 表示高度,本例中宽度为480象素,高度为256象素;3)〈map 2layerNum 〉4〈/map 2layerNum 〉map 2layerNum 表示地图文件的层数,本例中地图文件为4层;4)〈layer1〉……882 第4期臧晓强,等:基于J AVA的手机RP G游戏图形引擎的实现3.2 精灵动作数据文件的设计设计思想 精灵动作数据文件的设计目的是为了读取精灵的动作,包括精灵动作的类型、帧数、各种便捷边界、原始体力、魔法值等等.具体实现步骤如下:1)〈po seNum〉5〈/poseNum〉表示精灵动作共分为5种类型;2)〈11〉第一种类型开始标记;3)〈1〉0〈/1〉…3.3 数据文件的读取、分析与加载1)数据文件的读取 数据文件的读取关键点是读取速度,读取速度慢将导致游戏加载时间过长.基于这方面的考虑,数据文件的读取利用J AV A 对流文件的处理来加快速度.简略的代码如下: StringBuffer st ringBuffer;Inp ut St ream inputStream=this.getClass(). get ResourceAsStream(resource);st ringBuffer=new St ringBuffer();String str File;int inp ut;while((input=inputStream.read())!=-1) { if(inp ut!=′\n′){ stringBuffer.append((char)inp ut); } }st r File=st ringBuffer.to St ring();inp ut St ream.close();ret urn st r File;2)数据文件的分析和加载 数据文件的分析通过自定义类XMLparse实现,主要是找到数据前缀、后缀,然后去掉前后缀,并把有效数据通过sp rite的load方法加载到sprite类中,其具体代码略.3)图像的渲染 手机处理速度一般较慢,而手机游戏引擎为了画面的流畅,至少每66ms需要更新一下场景.为了加快运行速度和节省手机运行时需要的内存空间,图片渲染过程中采用只渲染略大于手机屏幕大小的地图空间给用户,这样做明显加快了手机加载地图的处理速度.3.4 实验结果通过测试发现通过以上的读取和渲染方法可以在手机模拟器上流畅地显示画面.图像层与层之间紧密耦合,成像清晰.4 结束语本文讨论了手机RP G游戏图形引擎的实现,测试结果表明,该引擎能够很好地渲染手机图像场景,并且速度较快、画面流畅.同时该引擎也有不足的地方,例如还需要解决与地图编辑器紧密耦合等问题.参考文献:[1] 陈林锋,张海祥,陈纯.手机游戏的渲染引擎研究[J].计算机工程与设计,2006,27(14):260622607.[2] 张卫山,刘伟.基于J2M E的手机网络RP G游戏引擎[J].计算机工程与应用,2005(33):1152117. [3] 丁月华,刘佳,杨沛.J2M E手机游戏开发平台的设计与实现[J].计算机工程,2007,33(5):2612263. [4] Overmars M.Learning Object2oriented Design byCreating G ames[J].Potentials,2005,23(5):11. [5] 王森.Java手机/PDA程式设计入门[M].北京:电子工业出版社,2004.982。

相关主题