资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,国家示范性软件学院 本科毕业设计,(,论文,),演示文稿,手机,2D RPG,游戏引擎设计与开发,实习基地:北京金山软件,学 号:,姓 名:,指导教师:,要讨论的内容,手机,RPG,游戏引擎,开发环境及需求,设计方案,系统的实现,性能优化方案,引擎效果展示,要讨论的内容,手机,RPG,游戏引擎,开发环境及需求,设计方案,系统的实现,性能优化方案,引擎效果展示,What?,游戏引擎,RPG,Why?,Why,引擎?,Why RPG,?,游戏引擎的选择,对比益智类游戏和,ACT,及,RPG,游戏,对比,RPG,和,ACT,游戏,RPG,的特点,How?,How,开发?,引擎 游戏 游戏 引擎,How,工作?,引擎 游戏,1,游戏,2,游戏,n,Nokia S40,Nokia S60,Sony Ericsson K700,Moto,E398,Nokia S40,Nokia S60,Sony Ericsson K700,Moto,E398,Nokia S40,Nokia S60,Sony Ericsson K700,Moto,E398,要讨论的内容,游戏引擎,开发环境及需求,设计方案,系统的实现,性能优化方案,引擎效果展示,开发环境及需求,存储容量小,手机型号 限制,JAR,文件的最大容量,Nokia S60 200 K,Nokia S40 59 K,Ericsson K700 200 K,Motorola E398 120 K,处理速度慢,堆内存使用受限,Nokia,旧,s40/Nokia,新,s40 200K,以下,Nokia 6600/Nokia 7610/Nokia,新,S604M,以下,终端平台差异性大,引擎的功能需求,通用引擎的基础需求,RPG,游戏的特殊需求,引擎的性能需求,良好的游戏运行效果,规范的程序语法,良好的程序架构,功能实用性,扩展性需求,接口易用性,优化代码提高性能,大量的函数说明和示例,足够强大和易用的配套工具,要讨论的内容,游戏引擎,开发环境及需求,设计方案,系统的实现,性能优化方案,引擎效果展示,总体设计方案,针对游戏通用引擎进行的设计,低级用户界面的绘制,自动存储用户设定,声音处理,UI,设计,针对,RPG,游戏特点进行的设计,地图结构:地表层和精灵层,场景绘制:,(,1,)地表层 根据当前世界坐标依次绘制地表图素;针对低端设备为提高处理速度,采取双缓冲机制。,(,2,)精灵层 玩家人物也属于精灵;当前屏幕精灵,Y,轴排序,处理精灵之间遮挡关系,针对,RPG,游戏特点进行的设计,阻挡、遮挡、及碰撞检测,垂直,-,俯视效果,-,事件处理方式:,NPC,绑定,任务系统:无分支,针对,RPG,游戏特点进行的设计,道具系统,装备,物品,消耗品,战斗系统,隐式遇敌,回合式战斗,针对基础工具实现进行的设计,规范的地图、脚本格式,资源整合器,要讨论的内容,游戏引擎,开发环境及需求,设计方案,系统的实现,性能优化方案,引擎效果展示,系统实现,游戏的实现,MIDlet,类、,Canvas,类、精灵类、道具类、声音处理模块、脚本处理模块、图片资源管理模块,工厂化生产的实现,DEMO,版,版,版,测试版,startApp,(),pauseApp,(),destroyApp,(),开始,中断,恢复,结束,游戏的多平台移植解决办法,传统的开发新游戏并进行游戏移植的过程:,(,1,)进行,NokiaS40,版本的编写并调试通过;,(,2,)为每个版本复制一份代码,进行相应的局部修改;,(,3,)每次重新打包需要手动为每个项目进行,Rebuild,;,(,4,)当需要修改某块共有的代码时,需要将全部版本的代码全部修改一遍再重新编译生成(最艰难也是最易出错的步骤);,应用,CommentProcessor,开发移植过程:,(,1,)进行,NokiaS40,版本的编写并调试通过;,(,2,)当需要进行另一个版本的编写时,新建一个预编译定义文件,并仅针对需要修改的部分进行预编译定义的包装(如用,/#,ifdefine,和,/#,endif,包装)并重新预编译生成各版本的代码;,(,3,)建立项目组共享一套预编译之前的代码,根据不同项目生成不同的预编译源代码,实现,One Key Rebuild,;,(,4,)当需要修改某块共有的代码时,仅修改唯一一套预编译之前的源代码,重新生成项目组即可预编译成不同版本的更新版;,要讨论的内容,游戏引擎,开发环境及需求,设计方案,系统的实现,性能优化方案,引擎效果展示,性能优化方案,1.,针对运行速度的优化(地图铺设处理),普通地图铺设速度比较慢,究其原因,是与地图的铺设次数相关。建立双缓冲能有效解决这个问题。即在游戏时内存中有两块画布,在屏幕上显示一个,而在后台绘制里绘制另一个。绘制完成后直接在屏幕上绘制这张图片。与此同时要尽量使用厂商,API(getPixels,drawPixels,),,这样才能更好的达到效果。比如在,NokiasS40,上,使用,Nokia,自己提供的,getPixels,和,drawPixels,在游戏的响应速度上可以明显地看到很好的效果。,2.,地图元素存取格式的优化:,使用,byte,类型数据格式来进行地图块的信息存储。地图元素信息包括遮挡、翻转、图素,id,。在最初的引擎制作中,由于图片比较少(,28,张),所以使用正负来区分阻挡信息,在图素,id,前加,100,来代表垂直翻转信息。在第二版的改进中,增加了图素的数量,依然使用正负来区分阻挡信息,在图素,id,前加,50,来代表垂直翻转信息,这样虽然在原有的基础上进行了优化,但是基本原理没有太大的区别。在第三次优化的过程中,采用了二进制数来表示地图元素信息。,3.,线程的控制的优化:,要使线程能够在足够短的间隔时间内正常刷新,有时候经常出现一些比较诡异的现象,明明应该这样却不这样,这个时候一般解决方法是设一些监听点,用,symstem.out.println,(),打印一下状态或输出一些标志符号。深海探秘就是用这个方法找到了许多运行时出现的小问题。在实际应用中一般习惯于逻辑(主线程),渲染(系统线程)分开的编程方式。这样的话为避免临界区被同时访问,就需要使用对象锁或系统方法强制渲染线程同步,然而由于各种平台下这两种方法的实现千奇百怪,再加上加锁和解锁过程开销不菲,所以使用以上两种同步方法并非最好的选择。如果非要将逻辑线程和渲染线程分开的话,建议手动加锁。,性能优化方案,4.,关于容量和内存的使用优化,尽量减少最终打包后文件数量,可节省许多空间开销。以下方式比较常用:,(,1,)减少类的数量,尽量整合资源,不用的变量或者方法,尽量去掉,把无用的对象设置为,NULL,。使用资源整合工具打包,可以使资源文件减少,1k,左右,每去掉一个多余的类,可以使目标文件减小,0.2-0.3k,。,(,2,)资源文件打包,整合资源,(,3,)对于图片,使用一些图片出来工具对图片进行处理。网上有相关资料说在手机加载图片时计算图片占用的内存方法是:图片长,宽,图片颜色数,2,。没有验证,不过感觉图片的内存占用确实和图片的面积有直接的关系。我总结出来的规律是常用的角色动作图片用单幅的小图,每一关的怪兽之类的图片,就要做在一张图片里,运行时再,切割,开。这一点在我们辅助移植的拯救女神这款游戏里就很好用。,(,4,)如果文字比较多,替换成,String,数组,减少,Graphics.drawString,(),的个数。避免字符串串联,字符串串联不仅使得性能降低,!,而且会增加应用程序的内存峰值占用量。,(,5,)对于,System.gc,(),,虽说在无线程阻塞的情况下可以有效的缓解内存压力,但是经常在这里出现问题,所以基本不用它。,(,6,)尽量优化代码,代码也是内存杀手,(,7,)使用外部文件减少内存负担,(,8,)使用局部变量,访问局部变量比访问类成员快,(,9,)最后就是一定要混淆,,60k,的文件混淆以后就,40k,左右了,而且还可以有效的保护代码。,性能优化方案,5.,良好的编程风格和习惯,多写注释,完备的注释不管是对自己,还是对别人,都是很有好处的,在调试中也会起很大的帮助。在开发过程中不要写太多的技术文档,技术文档主要的目的是利于开发人员交流,可在一个小团队里每个项目基本上就一个程序员,所以没必要把技术文档写得太繁琐。尽可能把技术文档作为注释体现在程序中,这样既节省时间又有利于程序的阅读。,在重要流程的各个环节设置一些监听点,其实很简单,就是用,symstem.out.println,(),来输出一些标志符号就可以了,这样可以监听的程序在运行的时候,走到哪一步。,要讨论的内容,游戏引擎,开发环境及需求,设计方案,系统的实现,性能优化方案,引擎效果展示,效果展示,总 结,本文研究的游戏的开发引擎,特点在于用一款引擎可以更简单地派生出多款,RPG,游戏,而每款,RPG,游戏又可以更简单地派生出多个机型的适配版本。从已实现的部分来看,引擎的基本功能完善,并达到了投入生产的需求。目前已经由这个引擎完成了两个系列三款游戏(,金庸神雕侠侣,1,古墓情缘,、,金庸神雕侠侣,2,笑泯恩仇,、,剑侠情缘,1,江湖,)的开发。引擎功能灵活,可扩展性强。从游戏上线百宝箱后玩家的反应来看,游戏引擎的性能过关;从游戏引擎开发出以后游戏的开发周期(由原来的,55,个工作日缩短到现在的,20,个工作日)情况来看,游戏引擎的功能正确,效果良好。,本文在,J2ME,平台上,在不到,20K,的程序空间内,实现了手机终端设备上的,RPG,游戏引擎开发,并总结出一套系统的解决内存问题和优化游戏性能的方法。通过对阻挡和遮挡算法的巧妙设计,使,2D,垂直和,2D,俯视两种视角类型游戏的实现成为可能;通过对地图块的数据存储格式的巧妙设计充分地利用了有限的空间来存储了大量的地图图片信息。通过资源整合器对资源文件的处理,将图片、脚本、地图信息进行压缩和整合,不仅缩小了文件的大小,又有效地达到了保护资源文件的目的。通过对工具,CommentProcessor,的巧妙使用,解决了以往开发过程中针对不同机型维护多个代码的问题,在开发过程中达到了维护一套代码,适应多种机型的目的。游戏建立了便捷的开发流程,有效地缩短了开发周期,减少了游戏中的问题,达到了良好的商业效果。与此同时,游戏引擎封装了基本的功能,为后续的,ACT,类游戏引擎的开发奠定了基础。,在,3G,时代即将到来的今天,手机游戏的网络化是必然的趋势,手机终端的性能也将日趋强大,所以在今后,还将继续讨论在此基础上向网络方向的功能扩展。针对手机网络游戏、手机蓝牙对战、手机游戏与网络游戏的互联进行进一步的研究。,鸣 谢,感谢软件学院所有给与我帮助的老师同学,!,感谢金山公司所有给与我帮助的同事们!,感谢答辩组的老师们耐心的听我的讲解,!,Q&A,
展开阅读全文