基于Android的塔防游戏应用开发设计报告Word格式.docx
- 文档编号:21757785
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:24
- 大小:981.92KB
基于Android的塔防游戏应用开发设计报告Word格式.docx
《基于Android的塔防游戏应用开发设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《基于Android的塔防游戏应用开发设计报告Word格式.docx(24页珍藏版)》请在冰豆网上搜索。
thefirst
trulyopen
andcompletemobile
software.
So
applicationdevelopment
hasavery
brightfuture.
The
project
turretdefensegame,
referringto
aclassonthemap
by
building
turrets
orsimilar
structures,
toprevent
theenemy
offensive
gamestrategyboardgame.
Designedanddeveloped
this
project,
intotheinnovation-baseddomesticAndroid
gameengine
LGame
developed.
Keywords:
TurrentDefenseGame;
第1章绪论
1.1概述
Android一词的本义指“机器人”,曾经是一家创立于旧金山的公司的名字,该公司于2005年8月份被Google收购,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件,并从此踏上了飞速发展的道路。
经过这几年的发展,它已经发展成了一个平台、一个生态体系。
现在Android在移动领域已经得到了广泛的应用。
根据Google于2011年6月份公布的数字,现在每天激活的Android设备高达50万台,比5月份的数据增加了10万台!
Google还透露目前已经与36家OEM厂商和215家运营商合作,共激活了超过1亿台Android设备。
由于Android的良好的发展前景与应用开发的刚起步,基于Android的应用开发,特别是游戏开发是一片新的热土。
本项目正是在Android平台上进行塔防游戏的开发,从Android做为受限设备的特点出发,塔防游戏对系统性能要求相对较低,也更适合与Android手机的触屏操作方式。
塔防游戏也适于当前手持设备游戏的休闲娱乐的特点,更利于用户适应和喜爱。
1.2行业发展现状
当前Android游戏开发行业并不成熟,当前适合Android平台上的游戏引擎很少,没有一个主流的底层平台。
Andriod手机游戏的开发呈现出百花齐放的态势,当前Android上的很多游戏都是从J2ME上移植过来的。
但是由于Android游戏开发的广阔前景,行业发展也十分迅速,出现了很多优秀的作品。
1.3研究的主要内容和前景
与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。
但其最震撼人心之处在于Android手机系统的开放性和服务免费。
Android是一个对第三方软件完全开放的平台,开发者在为其开发程序时拥有更大的自由度,突破了iPhone等只能添加为数不多的固定软件的枷锁;
同时与WindowsMobile、Symbian等厂商不同,Android操作系统免费向开发人员提供,这样可节省近三成成本。
本项目的是基于Android的塔防游戏的开发,由于行业的不成熟,所以项目初期对Android的各个游戏引擎进行的测试与比较。
其中包括的基于OpenGL以及2Dbox物理引擎的2D与3D支持的游戏引擎libGDX;
基于libGDX进行更加优化与方便地封装的游戏引擎rokon;
同样基于libGDX的游戏引擎LGame,相对之前的游戏引擎,这款引擎文档与样例丰富,在封装程度上也较为适合,所以本项目使用该引擎进行开发。
从前景上看来,由于Android的良好势头和刚起步的游戏应用市场的需求,Android游戏开发将有十分广阔的发展。
也随着智能手机,手持设备的普及,Android应用的开发将会有十分巨大的需求与广阔的市场。
第2章总体设计
2.1设计目的
由于Android火热的发展势头,以及Android游戏的相对缺乏,基于Android的游戏开发将会有很好的市场前景。
本设计的目标是在Android平台上设计出一款用户体验良好,性能稳定,充满休闲性和娱乐性的塔防游戏。
为了缩短开发周期,本项目没有采取基于OpenGL图形库比较底层的libGDX游戏引擎,也避免其强大的桌面与Android系统的可移植行,2D与3D支持的干扰。
本项目使用LGame游戏引擎,该引擎有更好的层次结构,有较丰富的文档资料。
2.2需求分析
2.2.1需求分析过程
问题识别:
就是从系统角度来理解软件,确定对所开发系统的综合要求,并提出这些需求的实现条件,以求需求应该达到的标准。
这些需求包括:
功能需求(做什么),性能需求(要)
3.2.1libGDX
本游戏采用经典的塔防游戏模式,主要模块有炮塔,入侵者,地图,菜单,记录,流程。
详见下面的思维导图:
图1-总体设计思维导图
其中炮塔分为子弹,跟踪,施毒,能量波四种类型,所有类型从父类Turret中继承。
炮塔类包含有其对应的攻击方式的内部类,所有攻击方式内部类从父类Bullet继承。
图2-Turrent思维导图
入侵者大体分为快速,强壮,小巧类型,所有类型从父类Enemy中继承。
图3-Enemy思维导图
关卡由文本中布局,程序运行时加载入游戏,一些例举部分关卡名称。
图4-Map思维导图
菜单中盛放选择炮塔的按钮,升级按钮,出售按钮。
图5-Menu思维导图
记录显示功能包括得分,入侵者的攻击波数,拥有的金钱数。
图6-Recorder思维导图
流畅控制包括整个游戏的运行流程,包括选择地图关卡,游戏,结束,返回等界面流程。
图7-Process思维导图
3章详细设计
3.1开发环境
IDE:
EclipseADT,三星android2.2真机测试
OS:
WinXP、Win7、Ubuntu11.04
3.2游戏引擎
Libgdx是一个跨平台的游戏开发库,用Java编写的,与有部分优化性能的JNI代码。
它抽象了书面方式桌面和基于OpenGLAndroid游戏之间的差异。
这使得原型和开发应用程序完全在桌面上,只需要6行代码,使其运行在Android。
下面是关于LibGDX的一些测试。
Color
mesh=newMesh(true,3,3,
newVertexAttribute(Usage.Position,3,"
a_position"
),
newVertexAttribute(Usage.ColorPacked,4,"
a_color"
));
mesh.setVertices(newfloat[]{-0.5f,-0.5f,0,Color.toFloatBits(255,0,0,255),
0.5f,-0.5f,0,Color.toFloatBits(0,255,0,255),
0,0.5f,0,Color.toFloatBits(0,0,255,255)});
mesh.setIndices(newshort[]{0,1,2});
在网格建设中,增加了一个颜色VertexAttribute。
它包含4个部分组成(R,G,B,alpha),添加颜色信息的float数组。
当我们运行应用程序时,它看起来应该像这样:
图9-ligGDXColor
Texture
要放在一个网格上的纹理,需要把我们的工作区中的图像文件,在我们的代码中引用该图像创建一个纹理对象,然后添加一个纹理VertexAttribute我们的网格。
图9-ligGDXTexture
privateMeshmesh;
privateTexturetexture;
@Override
publicvoidcreate(){
if(mesh==null){
mesh=newMesh(true,3,3,
newVertexAttribute(Usage.TextureCoordinates,2,"
a_texCoords"
mesh.setVertices(newfloat[]{-0.5f,-0.5f,0,Color.toFloatBits(255,0,0,255),0,1,
0.5f,-0.5f,0,Color.toFloatBits(0,255,0,255),1,1,
0,0.5f,0,Color.toFloatBits(0,0,255,255),0.5f,0});
mesh.setIndices(newshort[]{0,1,2});
FileHandleimageFileHandle=Gdx.files.internal("
data/badlogic.jpg"
);
texture=newTexture(imageFileHandle);
}
}
publicvoidrender(){
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
Gdx.graphics.getGL10().glEnable(GL10.GL_TEXTURE_2D);
texture.bind();
mesh.render(GL10.GL_TRIANGLES,0,3);
导入所需的类和运行MeshColorTextureDesktop应用程序。
结果应该是这样的:
图10-ligGDXTxture
3.2.2Rokon
Rokon是基于libGDX的Android游戏开发库,保留了桌面和Android平台的兼容性。
Rokon将游戏组建封装为Actor,Scense,并提供对Texture的缓存处理的Texture队列。
下面是Rokon实用Actor响应点击的例子:
图11-RokonSpirit
3.2.2LGame
LGame是一款国人开发的Java游戏引擎,有Android及PC(J2SE)两个开发版本。
其底层绘图器LGrpaphics封装有J2SE以及J2ME提供的全部GraphicsAPI(PC版采用Graphics2D封装,Android版采用Canvas模拟实现),所以能够将J2SE或J2ME开发经验直接套用其中,两版本间主要代码能够相互移植。
Android版内置有Admob接口,可以不必配置XML直接硬编码Admob广告信息。
该引擎除了基本的音效、图形、物理、精灵等常用组件以外,也内置有Ioc、xml、http等常用Java组件的封装,代价是jar体积较为庞大,PC版已突破1.2MB,Android版有所简化也在500KB左右。
此外,该引擎还内置有按照1:
1实现的J2ME精灵类及相关组件,可以将绝大多数J2ME游戏平移到Android或PC版中。
同时也是是一个高通用性的游戏框架,作为支持Java桌面游戏以及网页游戏开发的全功能引擎,LGame无论对画面绘制、精灵碰撞、特效渲染、窗体组件,还是XML操作,文本数据库操作,HTTP操作,日志操作等都提供有完善的内部解决方案,避免了多包配置的繁琐与不便,同时也降低了用户的学习曲线。
出于效率与程序体积两方面考虑,LGame中所有组件皆不依赖Swing,完全采取AWT绘制而成,因此它可以将自身的运行环境压缩到最小,一个压缩后不足4MB的精简JRE,已足够支持它的运行,也就是与RMXP或吉里吉里2的运行库大小相仿佛,但功能却更多。
LGame内置有视频解码器,支持mp4视频文件播放(在LGame-Simple-0.3.0中将支持flv,在0.6-0.7版本中将以可选组件方式引入jmc支持,以争取可播放视频种类的最大化),内置音频解码器支持mid、mod、mp3、ogg、wav、au、aiff等。
LGame结构分析
LGame同样是基于LibGDX,封装了更加便利高效的组件。
其中Activity是整个程序的入口,进行屏幕设置等基本操作。
Screen是控制整个游戏界面的类,其中包含了游戏的流程控制等函数。
Layer中封装了游戏场景,可以用于不知地图,菜单等。
Actor是对游戏中的活动元素的封装。
图12-LGame框架结构
3.3基于LGame的详细设计
在LGame的框架基础上,用Layer描述Map与Menu,由Actor继承生成Turrent与Enemy。
整体示意图如下:
图13-详细设计总览
其中TowerDefenseActivity用于程序进入与基本的初始化
图14-TowerDefenseActivity
TowerDefenseScreen由Screen继承,处理游戏场景信息
图15-TowerDefenseScreen
MapLayer除了地图场景的布置,还包括对点击的响应等。
图16-MapLayer
MenuLayer中包含有Turrent和升级卖出等按钮。
图17-MenuLayer
由Actor派生出了Enemy和Turrent类,其中Turrent类包含响应的Bullet内部类。
图18-Actor
第4章软件编程设计
4.1模板总体设计
图19工程目录结构图
图19-Actor
图20-包结构图
4.2主要模板功能实现
4.2.1地图选择界面布局代码
图21-地图选择界面布局代码
4.2.2游戏入口Activity关键代码
图21-游戏入口Activity关键代码
4.2.3Screen子类关键代码
Screen的派生类TD用于游戏场景控制。
图22-Screen子类关键代码
4.2.4Enemy类关键代码
Enemy是众多Enemy的父类。
图23-Enemy类关键代码
Enemy的addLayer方法,将Enemy添加到指定的layer中。
图24-Enemy的addLayer方法
4.2.5Turret类关键代码
Turret是众多Turret的父类。
图23-Turret类构造方法
Turret的显示攻击范围的绘图方法。
图23-Turret的drawAttackRange方法
4.2.6MapLayer类关键代码
MapLayer包含有地图布局代码。
图23-MapLayer类构造方法
MapLayer中的downClick方法响应按键,实现添加Turrent和选中等功能。
图23-MapLayer的downClick方法
总结
本项目的主要内容是基于Android的塔防游戏应用开发。
该游戏具有良好的用户体验,界面美观性能稳定。
这款游戏采用经典的塔防游戏模式,基于LGame,从设计到编码,实践了抽象与多态过程,总体框架完成后,进行了代码重构,优化。
同时对界面细节进行优化,对应用未定性进行了长时间的测试。
整个开发过程大体采用的是快速原型模型,尝试各种实现方法,摸索中前进。
开发过程不但是对编码能力的锻炼,更是对学习,资料收集,总结归纳能力的锻炼。
同时也是组员分工合作,锻炼了沟通与协作能力。
本次设计还存在很多不足之处,主要表现在游戏的灵活性上,算法上没有实现动态路径的更改,背景也较为单一,从用户体验考虑,以后可加入更多的布局与场景。
致谢
一个假期的实践过程中,得到了学校老师的指导,有良好的实验室环境,感谢学校项目的激励,让我们能按时保质完成项目。
感谢张克非老师,长期以来给予我们的学习方法的指导。
同时感谢开源项目libGDX,Rokon以及LGame的底层支持与文档帮助。
最后,感谢所有的老师和同学,在学习和生活中给我们支持和帮助。
参考文献
[1]
[2]
[3]
[4]
附录
TurrentDefense开始地图选择界面
TurrentDefense游戏界面
TurrentDefense游戏结束界面
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 游戏 应用 开发 设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)