J2ME手机游戏开发引擎的分析与设计

来源:互联网 发布:jsp和js的区别 编辑:程序博客网 时间:2024/04/25 13:11

 

随着手机性能的不断提升和人们生活水平质量的不断提高,J2ME手机游戏的市场需求越来越高,从事J2ME手机游戏研究和开发的人员也越来越多。怎样在保证游戏质量的同时尽力提高开发速度,怎样合理重复利用已经编写好的游戏代码,是每一个从事J2ME手机游戏开发的程序员正在考虑的问题。开发一个可以生成良好格式代码的游戏引擎是解决这些问题的一个好选择。

J2ME游戏引擎的主要作用就是根据用户的设定辅助生成一些J2ME代码框架,用户只需要去实现对应的处理函数就可以完成自己设计的游戏。本文简单描述了我设计的J2ME手机游戏引擎的基本功能,同时对“WeRun 俱乐部来开发这样一个引擎的可行性做了技术和市场方面的分析。在这些分析和设计的基础上,对整个开发流程做了初步的计划,归纳了可能用到的设计模式和基本类结构。通过本文,让读者对J2ME手机游戏引擎这个项目有一个概念上较为清楚的认识,同时也对于项目组的开发工作具有积极的导向作用。

 

关键词 J2ME;手机游戏;游戏引擎


Abstract

With the improvement of mobile phone’s performance and the advancement of people’s level of living, the market need of the mobile game made by J2ME becomes greater and greater. At the same time, the researchers and programmers of J2ME is more and more. How to program quickly as well as make sure the high quality and how to reasonably reuse the codes which have been written are problems that each J2ME programmer is considering. It must be a good solution to develop a J2ME mobile game engine which can generate well formatted codes.

The main function of this J2ME mobile game engine is assisting the programmers to generate some J2ME game’s frameworks according to the parameters that they set. The only thing that users have to do is accomplishing the handling functions to finish their games. The paper mainly describes the basic functions of a common J2ME mobile game engine. And finish the feasibility analysis for the WeRun club to develop this engine. On the basis of the analysis and the design, I make a primary plan of the develop process, conclude the design pattern and class structure that will be used in the project. Through this paper, I want to make the reader have a clear awareness of the J2ME mobile game engine. To the programmers, it can guide they to develop the engine.

 

Keywords  J2MEMobile phone gamesThe game engine


目录

  ... I

Abstract II

1 绪论... 1

1.1 开发的目的和意义... 1

1.2 与课题相关的国内外研究综述... 1

1.3 本文的主要工作内容... 2

2 相关技术和可行性分析... 2

2.1 游戏引擎相关技术... 2

2.1.1 编程语言技术要求... 2

2.1.2 开发环境技术要求... 3

2.1.3 J2ME游戏技术要求... 3

2.1.4 其他要求... 3

2.2 游戏引擎的可行性分析... 3

2.2.1 技术可行性... 4

2.2.2 市场可行性... 4

2.3 本章小结... 5

3 J2ME手机游戏引擎设计... 5

3.1 引擎功能和用户使用流程设计... 5

3.1.1 引擎运行环境需求... 5

3.1.2 基本功能划分... 5

3.1.3 用户使用流程... 7

3.2 生成代码结构设计... 7

3.2.1 模式结构设计... 8

3.2.2 类结构设计... 8

3.3 本章小结... 9

4 J2ME手机游戏引擎开发计划... 9

4.1 资金申请计划... 9

4.2 引擎开发计划... 9

4.3 本章小结... 10

结论... 11

参考文献... 11

致谢... 12


1 绪论

1.1 开发的目的和意义

J2ME作为SUN公司推出的面向嵌入式的JAVA版本,可是说是JAVA语言对于嵌入式方面的一种回归。从1999年正式推出到现在,已经经历了8年时间的发展而不断壮大。从最为基本简单的MIDP 1.0到现在可以满足用户大部分要求的MIDP 2.0J2ME能够为用户提供的功能越来越丰富和复杂。随着各大手机生产商对J2ME标准的支持,利用J2ME开发的手机应用程序也越来越多。其中,基于J2ME开发的手机游戏,由于其可移植性和快速开发的优势而在手机游戏市场占据了很大的份额。

SUN公司为J2ME的使用者提供了一套封装得很好的API接口,它方便而且丰富。但是,由于这套API并不是完全是针对手机游戏开发而设计的,因此对于游戏开发来说,有些地方它并不完美。而且从我们做游戏开发的经验来看,一个小型的手机游戏中有很多地方代码结构是相同的,比如开始动画、游戏菜单等。于是,开发一套可以为我们编写代码框架的J2ME手机游戏开发引擎对于提高游戏的开发速度是很有帮助的。

期望通过这套引擎,让用户可以通过配置一些参数就可以完成开始动画、游戏菜单的自动生成等工作,同时辅助一些像重力系统这样的游戏环境搭建功能,使代码可以重复使用,并让开发人员把更多的精力和时间放到游戏算法和逻辑的设计开发上。这样,一个简单的小游戏,便可以在一周左右的时间内完成,并投入使用。

最终,利用本引擎可以更快更好地开发J2ME手机游戏,同时也根据新的游戏需要,为本引擎添加新的功能,使本引擎在辅助开发的同时自身也不断优化丰富。

1.2 与课题相关的国内外研究综述

J2ME在国内的发展远远不如国外,对于游戏引擎的相关开发也仅仅查到一点不很完全的资料,真正在做的人也很少。在这种程度上说,国内的J2ME游戏引擎的开发仍是一个空白。

国外方面这方面的资料相对多一些,但并不系统,仅仅有一些关于游戏引擎程序结构简述,涉及的也是MIDlet这个类和显示类这两个部分的类结构。有些论坛说在开发类似的东西,但看不到具体的设计和进度。

总体来说,从现有的资料来看,J2ME手机游戏引擎的开发或者研究在国内外都没有太大进展,这对于我们来说是一个挑战,也是一种机遇。

1.3 本文的主要工作内容

本文主要论述开发一个J2ME手机游戏引擎的可行性、所需相关技术,并对这样一个游戏引擎做较为详细的功能定义。

2 相关技术和可行性分析

2.1 游戏引擎相关技术

       开发这样一个J2ME手机游戏引擎需要的技术要求很多,下面从编程语言技术要求、开发环境要求、J2ME游戏技术要求和其他方面来分析所需技术。

2.1.1 编程语言技术要求

       JAVA这门面向对象的编程语言,由于它和J2ME的紧密相关性而被选择来作为J2ME手机游戏引擎的开发语言。因此,开发者应当对JAVA语言的语法和图形界面开发足够熟悉并要有一定的项目经验,对面向对象的分析、设计和编程有足够的认识和了解。可以合理地利用设计模式来增加引擎程序和生成代码程序的可扩展性,利用JAVA的某些特性来解决遇到的一些实际问题。

2.1.2 开发环境技术要求

本引擎计划采用SUN公司的NetBeans 5.5或者更高版本来开发,因此开发人员应当对这个IDE开发环境足够熟悉,最好有一些项目经验。在开发最后阶段有可能将这个引擎做成基于NetBeans的插件形式发布,需要开发人员对开发NetBeans的插件的基本方法有所了解。

2.1.3 J2ME游戏技术要求

本引擎的基本功能就是编写一个能够为用户自动生成J2ME代码的应用程序,因此,引擎开发者应当对J2ME手机游戏的基本结构有比较深的认识,必须有至少一个J2ME手机游戏的开发经验。这样才能保证引擎自动生成的代码的正确性和简洁性。

2.1.4 其他要求

这样一个引擎的开发需要具有创新性,即可以想到利于用户使用的功能和操作方式,同时方便产生J2ME应用程序的代码。这样开发出来的产品既方便我们使用,同时也更具有销售市场。

由于这个项目比较大,因此开发人员需要具有一些项目的开发经验和软件工程的基本知识,同时对于文档的编写也要认真详细。项目负责人应该有管理项目的经验,可以合理把握项目进度,预测隐藏的危机和风险。

团队合作对于一个项目组来说也很重要,组员应当具有团队合作的意识、互相交流的能力。

2.2 游戏引擎的可行性分析

游戏引擎的可行性分析主要从技术可行性和市场可行性这样两个方面来论述。

2.2.1 技术可行性

上文已经分析了开发这样一个J2ME手机游戏引擎所需要的各种技术,那么对于“WeRun”俱乐部中现在的J2ME手机游戏开发小组来说,开发这样一个引擎技术上是可行的。

首先,JAVA语言是软件学院的教学课程之一,组员中大二和大三的同学都学习并使用过;其次,至今为止,小组的成员已经开发了7个成品的J2ME手机游戏,大家对于J2ME手机游戏的结构和可以重复使用的代码模块都有清楚的认识;再次,开发中所需的某些设计模式和技术在已完成的游戏和平常其他项目的开发中都有所使用,因此比较熟悉;最后,经历过游戏项目的磨练,组员的团队合作意识和交流能力都有很大提高,对于一个项目的文档和管理工作负责人也很清楚。

综上可见,在技术方面,我们已经具备了开发这样一个手机游戏引擎的成熟条件。对于比如NetBeans插件的开发这样比较生疏的技术问题,相信凭借大家共同的努力和互联网丰富的资料,都是可以解决的。

2.2.2 市场可行性

这样一个项目首先的主要用途是辅助小组开发手机游戏,因此商业用途不是首先要考虑的问题,市场可行性也就显得不如技术可行性那么重要。

但是,作为一个项目,如果能够将产品成功推入市场,对于我们来说也是一个挑战。由于NetBeans是一个使用最为普遍的J2ME游戏开发IDE环境,因此提出了最后把引擎制作成基于NetBeans的插件形式的想法。这样,利用NetBeansIDE环境,把游戏引擎做成收费插件的形式,对于下载插件的用户进行收费,是一个获取商业利益的合理方法。

另外一个问题是市场是否需要这样的J2ME手机游戏引擎。由于时间和能力有限,我没有对这一问题做详细的市场调查,但是,从现在的情况来看,J2ME手机游戏的开发者越来越多,而国内外还没有类似的产品推出,这在市场上是一个空白。可以推测,如果本引擎能够为用户提供方便的操作,生成高效的代码,它的市场前景是广阔而乐观的。

2.3 本章小结

本章首先对开发J2ME手机游戏引擎所需要的相关技术从多个方面进行了论述,然后基于这些所需的技术结合俱乐部现今的具体情况对其可行性进行了技术和市场两个方面的分析,得出开发这样一个游戏引擎是可行的结论。

3 J2ME手机游戏引擎设计

3.1 引擎功能和用户使用流程设计

引擎功能及用户使用流程可划分为软件运行环境需求、基本功能设计、用户使用流程等方面来进行描述。

3.1.1 引擎运行环境需求

本引擎开发使用JAVA语言,因此,可以运行在安装了JAVA虚拟机的任何机器上运行,对操作系统没有限制。硬件方面当今主流的PC机的配置运行本引擎完全没有问题。

但是鉴于J2ME的主流开发是NetBeans,因此等技术成熟之后,会计划开发以NetBeans插件形式的版本。这样就需要安装NetBeans 5.0以上的版本才可以安装使用个人开发的插件。

3.1.2 基本功能划分

引擎最初始的版本计划界面基于J2SEswing窗体,主要操作部分有:

l        一个玩家可以拖放图片的手机屏幕模拟窗口;

l        功能菜单,具有打开项目、打开文件、关闭项目、关闭文件等功能;

l        属性窗口,可以查看各控件(主要是图片)的属性,并做修改;

l        文件和资源列表,可以让用户打开查看各个文件;

l        工具栏,提供给用户快速操作的工具按钮。

最初版本计划具有的基本功能如下:

1.        自动生成开始结束动画:

用户只需要建立项目后在指定文件夹下放置自己做好的开始画面图片,然后设置各张图片的顺序和间隔时间以及放置位置,便可以为用户自动生成一段简单的开始动画代码。

2.        自动生成用户菜单:

用户需要在建立项目后在指定文件夹下放置所用图片,然后选择设计用户菜单功能,将加载的菜单图片拖放到想要的位置,输入各个菜单对应的函数入口名称,就可以生成用户菜单代码。

3.        构架游戏环境:

用户建立项目后可以为游戏选择一个游戏环境,它包括基本的无重力环境和重力环境两种。前者不会为程序添加任何代码,后者会生成一个可以让用户设置重力方向、重力加速度g的大小等的类。这样,用户不要编写任何代码就可以编写具有重力效果的游戏。

4.        辅助游戏背景的铺设

这个功能主要是为一些飞机游戏提供移动的背景铺设,譬如星空、沙漠等。可以使用引擎自带的图片,也可以使用自己制作的图片。引擎可以为用户生成一段开辟一个线程来绘制和控制背景图片的代码。

5.        记录型数据库的操作

J2ME提供一种小型的数据库来使程序可以永久地保存数据信息,由于它是记录型的,因此被称为记录型的数据录(RMS)。一般游戏对于它的使用都是相同的,用于记录最高分等。于是,用户可以选择要存储的数据类型和相应的存取函数名,便可以生成操作RMS数据库的代码。

用户在建立项目后会自动生成继承自MIDlet主类GameMIDlet和一个继承自Canvas的画布类。在GameMIDlet中的游戏整个生命周期的各个函数都会被添加相应的内容。然后用户可以通过菜单选择添加以上功能中的各个部分,相应的代码会在不同的位置进行自动添加,以实现用户设定的功能。

3.1.3 用户使用流程

引擎用户主要的使用流程如下图2-1所示:

用户流程图

2-1

3.2 生成代码结构设计

根据以上功能的定义,从模式结构和类结构两个方面对引擎将要生成的代码进行设计。

3.2.1 模式结构设计

为了方便代码的添加和功能的扩展,游戏代码主体的各种状态转变采用状态模式来管理和控制。于是,开始动画、菜单选择、游戏进行、游戏结束等都是游戏中的一个个不同状态,用不同的状态类对应它们,并由这些状态来控制它们之间的转换。这样,用户只需要添加相应的游戏状态,然后实现它的构造函数、paint绘制函数、按键事件处理函数、命令控制函数等就可以做到添加新的状态而不需要改变原来的代码。由用户设定后经引擎添加的代码添加到相应处理函数的位置即可。

状态模式的标准类图如图3-1

3-1

3.2.2 类结构设计

J2ME需要的主体类有继承自MIDlet的主类和继承自GameCanvas的画布类,它们分别主要实现一个游戏整个生命周期的控制和画面显示、游戏逻辑流程的控制。

由于使用状态模式,所以项目建立时即生成一个State类,定义所有需要的函数,其他由引擎用户添加的状态类继承自它,并以用户输入的状态名加字符串“State”作为类名。

3.3 本章小结

本章描述了引擎的运行环境,并对引擎功能进行了基本的概略定义,同时给出了用户使用时的基本流程图。根据这些功能,对游戏引擎将为用户生成的J2ME游戏代码进行了模式和类两方面的设计,对于游戏引擎的开发具有指导意义。

4 J2ME手机游戏引擎开发计划

4.1 资金申请计划

本引擎的开发主要由哈尔滨工业大学(威海) 软件学院提供资金支持。根据具体需要,资金主要用于一些电子资料的购买、真实手机测试花费、网络模块测试花费和开发人员酬金等部分,计划申请资金2000元。

4.2 引擎开发计划

整个开发阶段主要依据软件工程中一个项目开发的九个阶段来管理,在此不做详述。其主体的开发过程设计如下:

第一阶段:拓展需求分析和细化功能定义。

通过组员的讨论,希望对引擎具有的功能进行进一步的扩展和更为详细的定义,同时对于实现上的难点进行分析,并提出初步解决方案。

第二阶段:开发各种功能的类,研究图形界面处理。

这一阶段可以将小组分为两个部分,一个部分组员可以去编写功能定义中的各个基本固定的类,另外一部分组员去设计和研究JAVA的图形界面。

第三阶段:整合界面和功能,实现基本的引擎。

这是一个整合阶段,将前面完成的功能进行合并,将前台设计的用户操作界面和后台生成代码程序结合起来,实现用户通过界面操作设置不同的参数属性可以生成不同代码的引擎功能。

第四阶段:对生成代码进行优化,调试

这个阶段主要是对生成代码的结构和格式进行优化,去除其中不适合的部分,并尽力提高代码运行效率。

4.3 本章小结

本章主要描述引擎开发需要的资金和它的开发计划主题部分的四个阶段。通过这些描述,对引擎的开发花费进行粗略的估计,让开发者对开发流程有一个基本的概念,以利于项目的进展。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

结论

本文首先对J2ME手机游戏引擎这个项目的意义和目的做了较为详细的描述,并对国内外的情况进行了概略的说明。然后,结合俱乐部现在的真实情况,通过技术和市场两个方面进行可行性分析,得出开发这样一个系统,J2ME小组已经具备了技术等各个方面的条件的结论。

接着,从功能定义和用户使用流程两个方面对游戏引擎进行了设计,得出了基本功能描述和用户使用流程图。对于引擎中将使用的设计模式也给出了一个简单的说明和分析,并由此得出各个类的基本层次结构。最后,给出了引擎开发的计划,对开发流程进行了说明。

通过本文,对J2ME手机游戏引擎的开发有了一个简单的分析和设计,对下一步要做的工作订立了明确的目标。

 

 

 

 

参考文献

1  詹建飞. J2ME开发精解. 电子工业出版社. 2006-1-1

2  李振鹏, 龚剑. J2ME手机游戏开发详解. 清华大学出版社. 2006-3-1

3  ()米川英树. J2ME MIDP手机游戏程序设计.中国铁道出版社. 2005-1-1

4  () MARTIN J.WELLS. J2ME游戏编程. 清华大学出版社. 2005-11-1

 

 

 

致谢

值此论文完成之际,谨向给予我无私帮助的老师和俱乐部的同学们致以最诚挚的谢意!

感谢“WeRun”俱乐部的负责人杜宇老师和朱东杰老师。在我学习J2ME和设计这样一个J2ME手机游戏引擎系统的时候,他们都给了我很大帮助和宝贵的建议,而且在生活上也关怀备至。

感谢我的04级学长张中原同学。是他最初提出这样一个创意,并编写了最早的可行性分析文档,虽然现在那份文档因为种种原因无法找到,但是他给了我这样一个想法并付诸实施。张中原学长对项目的严谨态度和无尽的激情永远是我学习的榜样。

在本论文的完成过程当中,同样感谢软件学院“WeRun”俱乐部的同学们,是他们给予我很多建议和意见,并通过讨论让我对设计的引擎功能有了更为清楚的认识,改正了设计上存在的一些问题。

还有许许多多在我完成这篇论文期间曾给予我帮助、支持的人们,在此我真诚地道一声:谢谢!