




已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编 号: 审定成绩: 重庆邮电大学毕业设计(论文)设计(论文)题目:基于Android平台的跑酷游戏的设计与实现学 院 名 称 :通信与信息工程学 生 姓 名 :专 业 :通信工程班 级 :学 号 :指 导 教 师 :答辩组 负责人 :填表时间: 年 月重庆邮电大学教务处制重庆邮电大学本科毕业设计(论文)摘 要移动互联网的迅猛发展使得手机游戏越来越多地占据人们的休闲娱乐生活。对于手机用户来说,人们可以随时随地拿出手机玩游戏,方便又快捷。在众多受欢迎的手机游戏中,3D游戏占据绝大多数,其中跑酷游戏是风靡大街小巷的游戏之一。本文介绍了移动互联网的发展现状,描述了在此背景下手机游戏及其现状,重点列举出Android手机游戏平台的优势及发展趋势,以及Android操作系统组成和特性。在此基础上介绍了游戏设计中使用的相关技术,包括游戏声音处理技术、OpenGL ES开发3D效果技术、存储数据的Preferences等技术。本文给出了跑酷类游戏“Running The Ball”的总体方案设计,包括系统分析与架构、主要场景的绘制及实物运动、数据存储模块以及声音播放模块。为了简化设计,本游戏用一个小球来代替跑酷的主人公完成整个历险,采用OpenGL ES技术对小球进行纹理贴图,以便增加游戏的观赏性。同样采用此技术绘制出空心圆柱体作为小球运动的轨道。小球运动应用了姿态传感器技术,自动检测手机方向发生的变化,采用Preferences将玩家游戏的得分存储并进行排名。开发完成后,先后在模拟器和Android手机上进行测试,其中在智能手机上进行安装、运行、卸载等一系列测试。经测试,该游戏的基本功能都可以实现。【关键词】 手机跑酷游戏 Android平台 OpenGL ES 姿态传感器技术ABSTRACTWith the development of mobile Internet, mobile games play a more and more important role in peoples leisure and entertainment life.For mobile phone users, people can come up with mobile phone games anytime, conveniently and quickly. In many popular mobile phone games, 3D games occupy the vast majority, which Parkour game is one of the most popular games.This paper first introduces the mobile game development status quo as well as the futural development trend of Android game, focusing on the mobile game process and module. Then the paper explains the Android platform, including the operating system and the characteristics, and introduces the current popular game type features and technology.On this basis,the paper introduces the related key technologies involved in the design of the game, including the game sound processing technology, OpenGL ES standard development of 3D technology, data storage preferences.Then, this paper presents the Parkour game Running The Ball design and implementation, including system analysis and architecture, design and implementation of the game interface, main scene drawing and physical movement, data storage module and voice playing module. First of all, in order to simplify the design, this game uses a small ball instead of Parkour hero to complete the adventure. To enhance the viewing, the game use OpenGL ES technology to texture mapping of the small ball. The same technique is also used to draw the hollow cylinder as the track of the ball movement. The ball motion applies the attitude sensor technology, automatically detects the change of the mobile phone direction, using Preferences to store the players game and carring on the ranking.After the completion of the development, the first test of the game is on the simulator, and then the Android mobile phone was installed, running, unloading and a series of tests. After testing, the games basic functions can be achieved.【Key words】Mobile phone Parkour game Android platform OpenGL ES orientation sensor technology目 录前 言1第一章 绪论2第一节 移动互联网的发展现状2第二节 手机游戏2一、手机游戏概述3二、手机游戏现状3三、Android手机游戏平台4第三节 本文研究的主要工作及意义5第四节 本文组织结构5第二章 Android平台以及手机游戏开发相关技术7第一节 Android操作系统简介7第二节 Android操作系统框架结构7一、应用程序9二、应用层序框架9三、系统库9四、内核10第三节 Android手机游戏开发相关技术研究10一、游戏声音处理技术10二、存储简单数据的Preferences12三、OpenGL ES技术12四、Android中的静态图片访问14第四节 本章小结14第三章 游戏“Running The Ball”总体方案设计15第一节 “Running The Ball”需求分析15一、游戏功能需求15二、游戏通用性需求16第二节 “Running The Ball”的总体设计17一、“Running The Ball”的设计目的17二、“Running The Ball”游戏结构17第三节 游戏“Running The Ball”的功能模块18第四节 本章小结20第四章 手机游戏“Running The Ball”的详细设计与实现21第一节 游戏的主流程21一、游戏的主流程图21第二节 游戏“Running The Ball”的准备工作21一、游戏开发环境的搭建21二、Android平台下的准备工作23第三节 游戏功能类设计23第四节 游戏核心处理模块的实现24一、多线程技术和消息队列的应用25第五节 图形模块的实现26一、绘图模块26二、小球轨道的实现27第六节 角色模块的实现28一、纹理贴图球体的构建28二、小球运动姿态传感器的应用30三、障碍物的构建31第七节 数据存储模块的实现31一、游戏数据库的设计31二、游戏排名的实现31第八节 声音播放模块的实现32第九节 本章小结33第五章 游戏测试34第一节 游戏在模拟器上的测试34第二节 游戏测试过程35第三节 生成项目Running The Ball.apk文件36第四节 APK文件在智能手机上的测试37第五节 本章小结37结 论38致 谢39参考文献40附 录33一、英文原文33二、英文翻译39三、源程序:44 - 41 -前 言Android是基于Linux的操作系统,主要用于移动设备。自诞生以来,Android以其特有的开放性逐渐拥有很多“粉丝”,应用也日益丰富。对于消费者而言,大家可以通过Android获取各种各样的软件资源。在丰富的Android应用中,手机游戏是不得不提及的一类应用。首先,手机游戏用户数量庞大。目前,全世界手机用户已有数十亿之多。因其用户群体巨大,手机游戏自然有着无可限量的发展潜力。其次,方便快捷是手机游戏的又一大优点。人们可以随时随地拿出手机或移动设备玩游戏。随着手机游戏的发展,越来越多场景有趣,角色丰富的3D游戏出现在手机游戏的市场。一款优秀的手机游戏不仅仅是高超的技术手段,奇妙的创意,好看的界面也已经成为一款受欢迎的游戏的必备因素。Android游戏未来的发展趋势包含以下几个方面:第一,采用通用化的引擎开发模式。由于游戏引擎开发技术难度大,维护成本高,所以会有一部分公司专门从事通用手机游戏引擎的开发。而其他手机游戏开发公司可以更加专注游戏策划方面。使得手机游戏开发更加规范高效。第二,3D游戏引擎是未来的潮流。由于OpenGL技术的强大性,各个平台都陆续开启了对该技术的支持,在不久的未来,大型3D场景游戏的开发将成为可能。3D游戏具有更好的用户体验,而且硬件性能将会大幅度提升。第三,游戏引擎向着跨越PC机和手机移动平台方向发展。对于国内的手机游戏市场来说,3G网络发展与三网融合实施将大大促进跨平台手机游戏发展,支持Windows、Linux、iPhone、Android、Symbian和 Blackberry 的游戏引擎会成为未来的趋势。第一章 绪论第一节 移动互联网的发展现状移动互联网(Mobile Internet),就是把移动通信和互联网合为一体,是一种通过智能移动终端来获取服务的新兴业务。21世纪是信息爆炸的时代,人们渴望随时随地从互联网获取信息和服务,移动互联网应运而生并迅猛发展。在我国互联网的发展过程中,PC互联网已日趋饱和,移动互联网却呈现爆发趋势。4G时代的到来以及移动终端的设备成本越来越低势必将为移动互联网的发展注入更大的能量。移动互联网正逐渐渗透到人们的生活和工作中。图1.1显示了近些年移动互联网发展所处的阶段。当今新型的智能手机在满足通话和发送短信外,相比于之前,还包含了更多的多媒体娱乐功能,比如上网、社交、生活服务、游戏等等。图1.1 近些年移动互联网发展所处阶段据comScore对苹果应用软件店一份全面研究报告中显示,人们在相关设备上使用最多的软件是游戏,其中,游戏软件中7075%为3D游戏软件。第二节 手机游戏一、手机游戏概述手机游戏(Mobile Game)是指安装在手机等智能终端上,用户可以随时随地玩的游戏。经历了多年的发展,手机游戏从最早最简单的模式发展到可下载、联网、多人联网,直到现在的高级的跨平台联网游戏的发展路径1。手机游戏按照种类可分为:RPG(角色扮演游戏)、ACT(动作游戏)、AVG(冒险游戏)、SLG(策略游戏)、FTG(格斗游戏)、STG(射击类游戏)等多种类型2。图1.2所示即为百度移动应用搜索到的热门游戏。图1.2 百度移动应用搜索手机游戏作为十分受欢迎的应用程序,其具有如下特点: 用户数量十分巨大 全世界手机用户在不断增长中,我国已达到6亿,支持 Java 的手机正在快速的增加,Java 已经几乎成为行业的标准。手机游戏的市场潜力巨大。 方便快捷 人们可以随时随地拿出手机玩游戏,是放松心情和打发时间的首选。伴随着硬件设备的不断改良和技术的发展,手机游戏必将有着光明的发展前景和巨大的市场潜力。二、手机游戏现状近年来,游戏及其相关行业发展迅速。在韩国、日本等游戏发达国家,游戏产业已经成为国家的经济支柱产业之一,并且拥有很好的发展前景318。而手机游戏更因为其随时随地进行游戏的便利性成为游戏界中一匹黑马脱颖而出。手机游戏的开发至关重要,我们的目标是以最少的开发人员、开发经费开发出质量高并且受用户喜爱的游戏。游戏吸引玩家的数量越多,说明该款游戏开发的越成功。一款好游戏可以带给玩家非常好游戏体验,包括视觉体验、听觉体验和触觉体验,游戏商家也会因此获益。一款手机游戏的成功靠的并不完全是技术手段的高超,而是游戏自身的创意、综合体验使玩家审美和艺术修养的提高19。三、Android手机游戏平台Android是由著名的互联网公司Google在2007年发布的一个平台。此平台是以Linux内核为基础来构建的一个开源的手机操作系统平台。自从Google发布智能手机操作系统Android操作系统平台以来,Android平台一直以惊人速度挺进,支持Android的智能手机也迅速占领手机市场。游戏作为Android平台最主要的应用之一,随着Android手机用户数量的急速增长,基于Android平台的手机游戏在未来将有不可限量的市场发展潜力。这一切都与Android手机平台的优势密不可分。1.Android手机平台的优势目前市场上主流的智能手机平台有:Windows Mobile、Symbian、iPhone OS、Android等。Android平台的优势主要体现在以下几个方面:(1) 开放性Android平台是开放性的平台,允许任何移动终端厂商加入到Android联盟中。显著的开放性使其拥有越来越多的开发者,随着用户和应用的日益丰富,Android平台也逐渐走向成熟。(2) 丰富的硬件选择Android平台还具有丰富的硬件选择,这一点与Android平台的开放性密不可分。由于Android的开放性,众多厂商纷纷推出功能各异的产品。功能上的差异并不会影响数据同步和软件兼容。(3) 开发手机软件不受限制Android平台提供给第三方开发者一个宽泛、自由的环境,不会受到各种条条框框的限制。这给了开发者极大的自由,一些新颖别致的软件由此诞生。正因为Android平台有如此多的优越性,所以2014年末数据显示,仅仅推出几年的Android操作系统已经跃居全球最受欢迎的智能手机平台。2.Android手机未来发展趋势现如今,休闲类小型游戏占有了安卓游戏平台,此类游戏没有游戏引擎,虽然免费但是实用性不大,效率不高,所以还有很大的发展空间。 Android 游戏未来的发展趋势归纳起来主要有以下几点: (1) 采用通用化的引擎开发模式 由于游戏引擎开发技术难度大,维护成本高,所以会有一部公司专门从事通用手机游戏引擎的开发4。而其他手机游戏开发公司可以更加专注游戏策划方面。使得手机游戏开发更加规范高效。 (2) 3D 游戏引擎是未来潮流 3D 游戏由于有更好的用户体验,而且硬件性能的大幅度提升,3D 游戏引擎是未来的发展趋势。 (3) 游戏引擎向着跨越 PC机和手机移动平台方向发展 对于国内的手机游戏市场来说,3G 网络发展与三网融合实施将大大促进跨平台手机游戏发展,支持 Windows、Linux、Mac OSX、iPhone、Android、Symbian和 Blackberry 的游戏引擎会成为未来的趋势。 第三节 本文研究的主要工作本文首先阐述了移动互联网的发展现状,介绍了在此背景下手机游戏的特点,并描述了Android平台的优势和Android游戏发展趋势。接着,本文介绍了Android操作系统的特性和框架结构,然后重点分析了Android游戏开发中涉及的几个关键技术,包括声音处理技术、OpenGL ES 3D构建模型技术、Preferences数据库等等,并且提出了Android游戏开发的基本框架。本文重点设计开发了“Running The Ball”游戏,首先讲述设计该游戏的目的,给出了该游戏的游戏结构和功能模块。然后分别实现了游戏的图形界面模块、控制调度模块、逻辑计算模块、数据存储模块、声音播放模块。在完成了游戏的开发之后,首先对该游戏在模拟器上进行了测试,接着把APK文件放到智能手机上对游戏进行了各方面测试。第四节 本文组织结构本文主要由以下章节组成:第一章:本文首先介绍了手机游戏及其发展现状,接着给出了手机游戏的流程和一般包含的模块。 第二章:简要的介绍了Android系统架构,好让读者对Android系统整体有一个大体的印象和概念。接着介绍了Android手机游戏开发中的相关技术,包括手机游戏开发平台Android、游戏中的声音处理技术、Preferences数据库和用来开发3D效果的OpenGL ES基本技术。这些都是在本游戏的开发中涉及的到的技术。第三章:主要介绍了手机游戏Running The Ball的总体方案设计,本章首先对该游戏进行需求分析,接着给出游戏结构,最后给出游戏的功能模块并加以介绍。第四章:本章在第三章介绍总体方案的基础上给出该游戏每个模块的具体实现,包含游戏核心模块、图形模块、角色模块、数据存储模块和声音播放模块。第五章:主要介绍了对游戏运行的模拟效果测试以及打包生成APK文件之后在真实的Android智能手机上进行游戏测试的过程,包括游戏的安装、运行、卸载以及游戏功能的测试。最后是全文总结,包含已做的工作以及可以改进的地方。第二章 Android平台以及手机游戏开发相关技术第一节 Android操作系统简介Android 是谷歌公司在2007年宣布的手机操作系统512,号称首个为移动终端打造的真正开放和完整的移动软件。Android作为谷歌公司企业战略的重要组成,会进一步推进“随时随地为每个人提供信息”这一目标的实现,并最终能让移动设备不依赖于设备甚至平台6。第二节 Android操作系统框架结构Android软件层次结构自上而下分别是:应用程序(Application)、应用程序框架(Application Framework)、各种库(Libraries)和Android运行环境(RunTime)、Linux内核(Linux Kernel)。图2.1为Android操作系统的架构模型。图2.1 Android的架构模型Android 操作系统主要包括以下部分: 应用框架:用来开发可重用可替代的组件。 Dalvik虚拟机:该虚拟机在保证API兼容的同时针对移动手机进行了大幅优化,使其占用资源更小,从而运行效率更高7。 集成的浏览器:基于开源的引擎WebKit。 优化的图形:强大的自定义二维图形库。基于OpenGL ES 1.0标准的3D图形功能,在3D游戏开发中具有举足轻重的地位。 SQLite数据库:SQLite提供结构化的数据存储。它是一款轻量级数据库,能占用较小的内存进行较快的处理,还支持事务处理功能等优点。 多媒体支持:支持各种通用的音视频和静态图像格式(MPEG4、MP3、JPG、PNG、GIF、AAC、H.264、AMR)。 GSM 技术:(依赖硬件)全球移动通讯系统,俗称全球通,是当前应用最广泛的移动电话标准8。为了让全球各地共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。 蓝牙,EDGE,3G,and Wi-Fi:(依赖硬件)蓝牙和Wi-Fi都是一种短距离的无线连接技术,在短距离内可以实现话音和数据的无线传输。EDGE(Enhanced Data Rate for GSM Evolution),是增强型数据速率 GSM 演进技术。 Camera,GPS,Compass,and Accelerometer:(依赖硬件)GPS(Global Positioning System),即全球定位系统。它是一个覆盖全球的卫星系统,由24颗卫星组成。 Compass是一个Java搜索引擎框架,具有开放源代码的优点。 强大的开发环境:包含设备模拟器,调试的工具,内存和性能检测部分,Eclipse IDE的开发插件。Eclipse是个集成开发环境。一、应用程序所有的应用程序都是由Java语言完成的。应用程序没有界限,体现在我们可以在平等条件下创建,还可以轻松地嵌入Web,也可以并行运行。二、应用层序框架Android 应用程序通常都由各种组件构成,少则一个,多则很多个。APIs事实上是应用程序的框架,是由Android的应用程序框架为开发者提供。上层的应用程序都是由Java创建的,因此本层次提供的首先包含了UI程序中所需要的各种控件,例如:Views(视图组件)包括 lists(列表),grids(栅格),text boxes(文本框),buttons(按钮)等。甚至一个嵌入式的 Web 浏览器。 创建一个Android应用程序可以利用以下几个部分,以下几部分都属于应用程序的框架:Activity(活动) 、Broadcast Receiver(广播接收者)、Service(服务)和 Content Provider(内容提供者)15。三、系统库上面介绍的应用程序框架是接近应用程序的软件服务,与之区别的Android函数库是在更底层,支撑着应用程序的框架9,图2.2所示即为系统库。图2.2 系统库由图可知,系统库主要由以下部分构成: 媒体函数库:是在OpenCORE的基础上发展而成的,为我们播放、录制多种常见的影音格式提供了很多便利。 Surface Manager:是负责合成2D和3D绘图的软件10。 WebKit:是一种开源的软件引擎,属于一个网页浏览器。 OpenGL ES:Android依据OpenGL ES1.0API标准来实现3D绘图函数库。既可以通过软件执行,也可以用硬件加速方式执行。其在3D软件光栅处理方面进行了高度优化。 FreeType:这个库提供位图、向量字的绘图显示。 SSL(媒体框架):用来提供各种音频、视频支持。Android支持多种音频、视频等静态图像格式。 SQLite:是一套轻量级的数据库引擎。 Libc:提供一套C库。 SGL:用来提供Android在2D绘图方面的绘图引擎。四、内核Android使用Linux2.6版的内核来提供系统的核心服务,这是Android平台开放性的基础。它包含显示驱动(Display Driver)、Flash内存驱动(Flash Memory Driver)、摄像头驱动(Camera Driver)、音频驱动(Audio Driver)、Wi-Fi驱动(Camera Driver)、键盘驱动(KeyBoard Driver)、蓝牙驱动(Bluetooth Driver)、Binder IPC驱动。Linux内核是硬件与软件的桥梁。对于软件开发者来说,我们不必关心内核的底层实现,只需要投入到上层软件的开发中。底层的工作都要有Google和手机开发商完成,比如说更新驱动、编写新硬件的驱动等等工作。第三节 Android手机游戏开发相关技术研究本节主要介绍所设计的游戏中涉及到的相关技术,如游戏声音处理技术、Android的数据库管理系统Preferences以及OpenGL ES关键技术。一、游戏声音处理技术1.即时声音处理技术即时音效,从字面上看来就是比较短,比较快的音效。这一类的音效特性要求必须采用反应迅速的音效,不能采用播放较长时间音乐的播放技术,采用android.media.SoundPool类实现。SoundPool类是在SDK的android.media.SoundPool中,顾名思义就是声音池的意思。它主要用来播放短的声音片段,这些片段可以从程序资源或者文件系统中加载。占据较少的CPU资源以及较短的反应延迟,MediaPlayer类可以实现。考虑对性能的影响,我们一般只使用少于7秒的声音文件。SoundPool类相比于其他声音播放类来说具有自行设置声音品质、音量、播放比率参数的特点。它可以同时管理多个音频流,每个音频流有自己的ID,音频流的管理是由ID来进行。应用中的音频效果(语音提示,短信等)或密集的短的游戏声音(如许多物体同时爆炸)可以使用SoundPool类。在使用SoundPool类播放文件前首先要得到一个SoundPool类的对象。我们可以通过它的构造方法public SoundPool(int maxStreams,int streamType,int srcQuality)得到其对象,下面将介绍构造方法中各个参数的主要作用:maxStreams:该参数用于设定同时播放多少首音效,设置为3时表示最多可以同时播放3首音效;streamType:该参数用于设定音频类型,一般设STREAM_MUSIC;srcQuality:该参数用于音频质量设置,开始时默认为0。有了SoundPool类对象之后,就可以将音频文件加载到这个对象中。接着需要从资源或者文件中加载音频文件流,可以用public int load(Context context,int resId,int priority),下面将介绍加载方法中各个参数的作用:context:该参数是应用程序的上下文,就是当前的Activity,即为谁来调用这个方法;resId:该参数为给出资源的ID;priority:该参数代表优先级,目前还没有作用,设置为1,以便和未来的方法兼容。下面就可以播放声音了,可以通过public final int play(int soundID,float leftVolume,float rightVolume,int priority,int loop,float rate)方法播放音效,下面将介绍方法中各参数的作用:soundID:是播放的音乐ID;leftVolume:是用来控制左声道音量;rightVolume:用来控制右声道音量;priority:优先级,0为最低;loop:是循环次数,0为不循环,-1为永远循环;rate:回放音效的速度,一般来说处于0.5至2之间。播放时可以通过public final void pause(int streamID)方法暂停播放音乐,其中参数streamID代表音效ID。2.背景音乐播放技术背景音乐播放时间通常来说比较长,而且文件相对较大。这类资源如果存放在内存中会给本身就紧缺的硬件资源造成负担。放在内存中会使调用时的播放速度加快,但是时间长的音乐文件作为背景音乐播放时对速度并没有很高的要求。Android.media.MediaPlayer类是Android中用来控制音频以及视频的类。这个类的应用可以轻松实现音频处理。在Android手机上,我们也可以通过Android SDK管理界面来管理手机的声音模式的规模,调整声音设置,这是Android中的AudioManager,其位于android.Media包中,主要提供访问控制音量和铃声模式的操作。AudioManager设置声音模式、调整声音大小的主要方法有:getMode():返回当前音频模式;getRingerMode():返回当前的铃声模式;getStreamVolume(int streamType):获取当前手机音量,最大值为7,最小值为0,当为0时,手机自动将模式调整为“震动”;setRingerMode(int ringerMode):改变铃声的模式。 二、存储简单数据的Preferences最常见的数据库是轻量级数据库SQLite,其对于处理数据量较多的数据和存储较大的文件来说是很好的选择。但当我们需要存储简单的数据,比如字符串,这就需要另一种存储机制Preferences10。Preferences是一种轻量级的数据存储机制,对于boolen、int、float、long和string等数据,存储时以键值对的形式放在Preferences目录中,该目录位于(datadata包名shared_prefs)中。由于游戏中的得分数据量很小,使用Preferences可以带来很多好处,首先相比于SQLite这种数据库,Preferences系统开销会小很多,其次使用Preferences简单、便捷。三、OpenGL ES技术OpenGL是SGI公司开发的一套三维图形软件接口标准,具有结构简单合理,操作方便等优点。目前,它已成为三维图形接口标准,并在不同的平台上得以实现。OpenGL ES就是众多版本中的一个子集10。1.OpenGL ES技术的简介OpenGL ES(OpenGL for Embedded Systems的简称)是专门为内嵌和移动设备设计的一个2D/3D的轻量图形库,OpenGL是一种三维图形API的子集,是根据手持和移动平台的特点为OpenGL3D图形API标准定制的。OpenGL ES标准在渲染3D场景的同时也能起到降低功耗的效果。OpenGL ES基本上是OpenGL1.3的子集,同时加入了一些扩展元素。这使该API更加灵活。例如现在用不到的功能可以先暂时性删除,当内存硬件发展到一定水平之后,再将相应的功能添加进来。目前OpenGL ES主要包含了两个方面的基本内容:Common Profile支持全3D功能,以保证游戏可以正常运行;Safety Critical Profile是商业软件设计所需要的,在这里不考虑华丽的界面,安全性才是更重要的。2.OpenGL ES三角形Vertex是3D模型的最基本单位,代表三维空间中的一个点,称为顶点。通过vertex可以构建简单的二维图形,进而在二维图形的基础上搭建复杂的三维立体模型。由几何知识可知,多边形是由很多点构成的,而三维立体模型是由多个多边形组成的。尽管OpenGL支持多种多边形,但OpenGL ES目前只支持三角形。但是从性能上来讲,支持三角形的效果和支持其他多边形没有多大的区别,因为任何多边形都可以通过不同方式拆分成多个三角形。OpenGL ES采用三维笛卡尔坐标系,图2.3所示即为三维笛卡尔坐标系。开发的3D场景都要与这个坐标系相对应,场景内构建的所有或者部分物体的顶点的X、Y、Z坐标值以顶点数组的形式给出。当场景中有n个顶点时,坐标值有3n个,顶点数组的尺寸为3n。前面已经提到过,OpenGL ES中只允许使用三角形进行图形拆分。如图2.4给出的示意图,清楚地给出了用平面三角形搭建的立体模型的原理。 图2.3 三维笛卡尔坐标系 图2.4 长方体示意图 图2.4所示这是一个长方体,共有六个面,每个面被分割成两个三角形。在OpenGL ES中,一个长方体可以由12个三角形搭建而成。其他形状的立体模型都可以通过三角形来搭建。OpenGL ES中有一项功能是背面剪裁。当打开背面剪裁功能之后,视角在一个三角形背面时不渲染此三角形,就看不到这个三角形。这个功能可以大大提高渲染效率。因此,确定在既定的观察方向上渲染三角形十分重要,否则可能会看不到三角形的图像。那么如何确定三角形的正反面呢?当面对一个三角形时,若顶点的顺序时逆时针则位于三角形的正面,顶点的顺序是顺时针就是位于三角形的反面。图2.5所示即为确定三角形正面的方法。图2.5 三角形的卷绕四、Android中的静态图片访问Android 中静态图片的操作是通过使用Drawable类实现的。Drawable类有很多子类,如 BitmapDrawable用来操作位图;ColorDrawable 用来操作颜色;ShapeDrawable 用来操作各种形状。 实例化Drawable对象有以下方法:一是直接用保存在工程中的图片文件;二是使用XML文件定义Drawable属性。 最简单的方法是将图片保存在工程的资源文件,它会自动创建在R类的参考,然后可以通过R.drawable.my_image使用图片对象,还可以通过使用XML文件来定义属性,如图像的应用,可以在布局文件中定义图标。如下所示:android:icon=drawable/logo /logo便是游戏的图标。 第四节 本章小结本章介绍了目前市场上的主流手机平台Android平台。简要地介绍了Android操作系统特性、操作系统框架。通过对Android操作系统的大概介绍,好让读者对Android系统整体有一个大体的印象和概念,以便接下来更好的理解Android手机游戏开发中的关键技术。接着本章介绍了Android手机游戏开发中的一些关键技术,包括游戏中的声音处理技术、Preferences和用来开发3D效果的OpenGL ES基本技术。这些都是在本游戏开发中涉及到的技术。第三章 游戏“Running The Ball”总体设计第一节 “Running The Ball”的设计目的最近,神庙逃亡等依靠重力感应类的跑酷游戏风靡大街小巷。跑酷亦称作“城市疾走”,直译就是“到处跑”,此外它还有“超越障碍训练场”的意思。Parkour把整个城市当作一个大训练场,一切围墙、屋顶都成为可以攀爬、穿越的对象,特别是废弃的房屋这项街头疾走极限运动, 非常具有观赏性。自然,以跑酷为主题的游戏同时兼备观赏性和刺激性,往往会受到人们的普遍欢迎。因此,设计开发一款规则简单、有趣味的跑酷游戏的想法油然而生。在游戏设计之初,为了简化角色模块的设计,该游戏选择用小球代替跑酷的主角。因此游戏被命名为“Running The Ball”。第二节 游戏“Running The Ball”需求分析需求分析是软件工程中的一个关键过程。在这个过程中,系统分析员和软件工程师确定用户的需要。只有在确定了这些需要后才能开始分析和寻求新系统的解决办法。需求分析阶段的任务是确定软件系统功能。从本章节开始设计一款3D跑酷游戏“Running The Ball”,按照软件开发流程进行,开发游戏的步骤包括需求分析、总体设计和详细实现等。首先对游戏“Running The Ball”进行需求分析。一、游戏功能需求下面是游戏的一般功能需求:1.游戏界面游戏界面是指游戏展现给用户的所有可视化元素的集合,是游戏给用户的最直观的印象。游戏美工决定游戏界面的质量,是最重要的用户体验。而用户的游戏体验是约定一款游戏乃至一个应用软件成功与否的关键。此外,游戏的界面要能适应屏幕尺寸的变化,以适应各种不同类型手机的屏幕。对于3D跑酷类游戏,游戏界面要更加刺激和惊险,这样才能更加吸引玩家。2.操作方式操作方式决定了游戏以何种方式与玩家进行互动和信息交互。好的互动方式也是一款手机成功的关键,手机游戏的操作方式的复杂度要尽量小,尽量符合常规的操作方式。3.物理规则物理规则主要是指游戏中的角色移动规则和碰撞检测规则,包括游戏主角自身的跳跃、滑动与游戏场景的碰撞检测等。游戏是对现有世界的模拟,所以游戏里的各种运动也要符合真实世界的物理规则,不能出现违背物理常识的错误。二、游戏通用性需求游戏的通用性需求有以下几类:1.性能需求软件系统在满足基本功能需求的同时,也要满足移动的非功能性需求,比如用户对系统响应速度以及系统内存限制等的性能需要。同时美观的界面和良好的用户体验都是一个软件系统成功的必备特性。(1) 响应时间软件的响应时间主要是指用户点击按钮或者执行拖拽等操作的时候进行响应消耗的时间。如果响应时间过长会严重影响用户体验。响应时间过长也是软件系统性能低下的表现。Android界面设计系统是所见即所得的图形界面设计编辑软件,用户用拖拽的方式进行界面设计,这就要求用户所做的更新立刻要更新到界面,不能有延迟。(2) 资源使用对于手机游戏软件来说,资源主要是指内存的使用量,在游戏的运行过程当中占据一定量的内存,这就要求系统把内存利用降到最低。采用优良的垃圾回收策略进行系统资源回收。2.可靠性需求软件可靠性是指在给定时间内,特性环境下软件无错运行的概率。软件的可靠性是衡量软件质量的一个重要标准,也是一款游戏成功的关键决定因素。软件可靠性包含了以下三个要素:(1) 规定的时间软件的可靠性是针对运行时的软件而言的,所以衡量软件的可靠性就是看软件在规定的时间内是否能无故障运行。但是因为软件运行环境的差异,所以运行时间是随机变量。(2) 规定的环境条件软件是在一定的环境下运行的,这个环境包含多种要素,比如硬件、操作系统,输入参数、操作规程、拓扑结构等。不同的运行环境,软件的可靠性是不同的。(3) 规定的功能软件的功能对软件可靠性影响很大,要完成的功能不同,软件的要运行的过程也不同,比如不同的功能调用不同的子模块,这样就造成软件执行不同的逻辑处理流程的可靠性也大不相同。软件系统的可靠性是指软件可供用户正常使用的度量。软件系统可靠性是关于系统无失效的时间间隔的度量。对于Android界面设计系统来说,就是在用户进行界面设计过程中,界面设计系统能否按照预先设定的需求来运行,能否正常响应用户的拖拽请求等操作。3.可扩展性需求软件系统的可扩展性是指在进行软件系统工程的开发后,即使软件交付使用后还可以进行更新,插入新的代码,添加新的功能。如果软件系统可扩展性号,则后期的添加代码更容易,代价小,整个系统更加稳定。反之,则要修改大量的代码,这样带来的问题是使得系统更新非常困难。良好的可扩展性是软件设计的基本原则之一。Android界面设计系统的开发,考虑到未来可以增加新的功能来不断完善系统。所以在设计系统时,按照“高聚合、低耦合”的原则进行系统架构设计,方便日后的升级扩展。第三节 “Running The Ball”的方案设计在这款游戏设计之初,为了简化游戏设计,本游戏采用一只小球来代替跑酷主角,游戏的整体效果即为一只小球在轨道上遭遇许多障碍物的“跑酷”探险之旅。“Running The Ball”的游戏规则为:小球受重力作用,沿着轨道一直运动,在沿途的轨道上设置有木桩之类的障碍物。玩家需要通过改变手机方位使小球在运动的同时躲避障碍物。如果一旦与障碍物相撞,则玩家历险失败,游戏结束。系统会记录玩家得分,即小球经过的轨道长度,并对所有的游戏记录进行排名。该游戏的设计目标是可玩性强且上手容易。玩家需要在控制手机的同时巧妙躲避障碍物,不仅考验玩家的反应速度,而且对玩家的协调能力有比较高的要求。一、“Running The Ball”的游戏结构基于以上游戏的设计目的、内容与需求分析,设计了游戏“Running The Ball”的结构,图3.1所示为游戏“Running The Ball”的游戏结构。该游戏结构主要由游戏主菜单和游戏主体组成。游戏主菜单包含有“开始游戏”、“查看游戏记录”、“查看开发人员”、“背景音乐等设置”以及“退出游戏”这五个选项。游戏主体则包含游戏菜单和游戏内容。图3.1 “Running The Ball”游戏结构当玩家启动手机游戏后,首先进入游戏主菜单,主菜单里有几个游戏选项供玩家选择,比如开始游戏(Start The Game)、声音设置(Settings)、开发者显示(Developer)等。玩家点击“开始游戏”可以让用户开始新游戏;点击“声音设置”会出现背景音乐大小、重力灵敏度大小以及按键声音大小的设置界面,玩家可以根据个人喜好调节音量的大小;点击“退出游戏”可以直接退出游戏。二、“Running The Ball”的功能模块手机游戏按照功能可以分为不同的模块。系统被模块化以后,一个复杂的系统被划分为若干个比较简单的子系统,从而方便系统的设计和实现。下图所示为手机游戏“Running The Ball”的功能模块:游戏核心模块、角色模块、图形模块、数据存储模块、声音播放模块和游戏设置模块。图3.2为游戏“Running The Ball”的功能模块划分。图3.2 一般游戏功能模块划分其中核心处理模块是游戏后台逻辑处理的司令部,处理游戏的运转,维护游戏主循环的进行,是驱动手机游戏的关键模块。主要包含:游戏主循环模块、处理用户按键的子模块和载入资源的子模块。游戏主循环模块驱动游戏不断运行的关键。角色模块主要管理游戏中涉及到的所有角色的状态管理,包括依据一定的算法对角色请求行为进行合法性检测和更新。比如用户操作按键让角色行走的处理,角色模块要根据当前角色的状态判断新的状态,判断在当前的物理条件下是否可以继续行走。本游戏中的角色即
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 30692-2025提高在用自动扶梯和自动人行道安全性的规范
- 停车技术考试题及答案
- 田径考试试题及答案
- 第41个教师节校长讲话:三心育德润心田三志引领立师范三力汇聚启新篇
- 2025年高压电工复审考试及考试题库含答案
- 2025年高级维修电工理论知识复习题库及答案
- 2025年高级保安员模拟试题及答案
- 铁路船务知识题库及答案
- 财务审批流程管理办法
- 西藏特产仓储管理办法
- 康复科院感染管理制度
- 2025年民族宗教政策法规学习月知识竞赛试题库(含答案)
- 人工湖设计方案
- 人民币反假知识培训
- 夫妻吵架冷战协议书
- 《原发性肝癌诊疗指南(2024年版)》解读课件
- 私人诊所免责协议书
- 《湿地生态的保护与利用:课件》
- 《冠心病合并2型糖尿病患者的血糖管理专家共识(2024版)》解读
- 2025-2030羽毛球产业规划专项研究报告
- 酒店薪酬管理制度细则
评论
0/150
提交评论