• 新闻热点
  • 文化视野
  • 主题活动
  • 文件资料
  • 百姓关注
  • 民间风俗
  • 文化艺术
  • 教育科研
  • 古都名人
  • 旅游出行
  • 范文大全
  • 文档下载
  • 当前位置: myyuju个人图书馆 > 文化视野 > 正文

    游戏设计综合实验报告

    时间:2020-06-30 07:46:06 来源:myyuju个人图书馆 本文已影响 myyuju个人图书馆手机站

     游戏设计

     Supper jumper

     学 校:

     学 院:计算机学院

     班 级:

     指导老师:

     小组成员:

     2014年05月30日

     目录

      TOC \o "1-5" \h \z \o "Current Document" 第一章引言 3

      \o "Current Document" 第二章需求分析 4

      \o "Current Document" 2.1系统开发目标 4

      \o "Current Document" 2.2系统需求分析 4

     2.2.1业务需求分析 4

     222用户需求分析 4

     2.2.3功能需求分析 4

      \o "Current Document" 第三章系统概要设计 5

      \o "Current Document" 3.1背景故事 5

      \o "Current Document" 3.2游戏程序流程设计 6

     图3.2游戏程序流程图 6

      \o "Current Document" 第四章系统详细设计 6

      \o "Current Document" 4.1画面和切换 6

      \o "Current Document" 4.2定义游戏世界 7

      \o "Current Document" 4.3系统功能模块 8

      \o "Current Document" 4.4储存素材 9

      \o "Current Document" 4.5游戏界面 10

      \o "Current Document" 4.6分数榜设定 11

      \o "Current Document" 4.7游戏总控制 12

      \o "Current Document" 4.8游戏设置 12

      \o "Current Document" 第五章软件运行与测试 13

      \o "Current Document" 5.1系统测试 13

     5.1.1游戏页面显示 13

     5.1.2移动主角测试 13

     5.1.3主角碰到金币测试 13

     5.1.4判定结束测试 13

     5.1.5暂停测试 13

     5.1.6恢复测试 13

     5.1.7压力测试 13

      \o "Current Document" 5.2结果分析 13

      \o "Current Document" 第六章结 论 14

     第一章引言

     安卓游戏是运行在安卓系统平台的游戏, 随着移动终端设备的发展,安卓游 戏不但可以运行于智能手机,也可以运行在平板电脑上。安卓游戏的系统架构和 其它操作系统一样,采用了分层的架构。从架构图看, an droid分为四个层,从

     高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

     An droid是以Li nux为核心的手机操作平台,作为一款开放式的操作系统, 随着An droid的快速发展,如今已允许开发者使用多种编程语言来开发 An droid

     应用程序,而不再是以前只能使用Java开发An droid应用程序的单一局面,因而 受到众多开发者的欢迎,成为真正意义上的开放式操作系统。 An droid开放的平

     台允许任何移动终端厂商加入到 An droid联盟中来。显著的开放性可以使其拥有 更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。

     开发性对于An droid的发展而言,有利于积累人气,这里的人气包括消费者和厂 商,而对于消费者来讲,最大的受益正是丰富的软件资源。 开放的平台也会带来

     更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。

     SDK ( software development kit )软件开发工具包。被软件开发工程师用于 为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的 集合。An droid SDK指的是An droid专属的软件开发工具包。

     libgdx是一个跨平台的2D/3D的游戏开发框架,它由Java/C/C+语言编写而 成o ibgdx兼容大多数微机平台(标准JavaSE实现,能运行在Mac、Linux、Windows 等系统,最近加入了对 html5的支持)与An droid平台(An droid1.5以上即可使 用,Android2.1以上可满功率发挥)。Libgdx以native方式自带图像解码器,通 过其提供的Pixmap可以对指定图像进行像素级渲染操作,从而不依赖 An droid

     的Bitmap加载处理图像,可以支持 png、jpg、bmp,最近的两个版本中加入了 对gif 图片的支持.Libgdx 由 audio、files、graphics math、physics scenes utils 这些主要类库所组成,它们分别对应了 Libgdx中的音频操作,文件读取,2D/3D

     渲染,Libgdx绘图相关运算,Box2D封装,2D/3D游戏组件(3D部分目前无组件), 以及Libgdx内置工具类。

     Gdx是Libgdx类库运行的核心所在,不单运行Graphics In put、Files、Audio、 AndroidApplication等Libgdx关键部分,所必需的实例会在 Libgdx初始化时注入

     Gdx 中对应的 graphics、input、files、audio、app 等静态变量里面,就连 Libgdx 对OpenGL接口(或OpenGLES视Libgdx运行平台而定,以下统称 OpenGL)的 GL10 GL11、GL20 GLCommon等封装类也会在 Graphics实例化时分别注入到 gl10、gl11、gl20、gl这四个同样位于 Gdx的静态变量当中。

     第二章需求分析

     这是一款跳跃型的游戏,主人物会一直往上跳,我们只需控制左右移动让其 踩在适当的跳台上即可继续的往上跳,最终加到的金币越多,同时要避开飞在空 中的蜜蜂,直到到达最顶部的城堡,才进入下一关。

     2.1系统开发目标

     采用基于An droid的Java编程技术,以及用Libgdx框架的相关技术开发出界 面简洁清新,易操作,细节精致,设置齐全的 Supperjumper游戏。

     2.2系统需求分析

     2.2.1业务需求分析

     总所周知,SupperJumper是一款经典不过时的游戏,它无论在电脑,小霸 王,手机都有它的身影,即使现在市场上各种游戏百花齐放,各种各样,但是 SupperJumper依然能够占有一席之地,其市场还是很大的.这是由于它的特殊在 于它能吸引人更深入,简单上手,该游戏的优势在于它的简单易行,不论是小游戏 机还是手机,都能很快顺利的运行.

     2.2.2用户需求分析

     游戏设计出来后,其质量还是要由用户来评判的,在游戏为用户所用时,用 户也对游戏有自己的期望和要求。

     简单易学

     每个人的时间都是宝贵的,用户不愿意花一大堆时间去学习如何玩意个游 戏,因此游戏必须很容易上手,要求界面简洁明了,否则太复杂难懂的话会让很 多客户离去。

     运行稳定

     一个游戏如果设计出来却不能保证其稳定性,那么就可能使游戏无法正常运 行。如果用户正在游戏突然软件崩溃了, 无疑会让用户感到烦躁,从而把软件给 卸载了,这样也会失去很多用户。

     操作简便

     用户之所以选择 SupperJumper,就是由于其快捷简便性,所以我们要让用 户玩的舒心则必然要设计出一套操作简便的系统。

     2.2.3功能需求分析

     本项目是一个运行在安卓手机上的游戏,我们初步设定本游戏具有以下几个 功能。

     ?游戏的主角不断向上跳跃,从一个平台跳到另一平台。游戏世界在垂直方

     向跨了多个画面。

     ?通过左右倾斜屏幕来控制水平移动。

     ?当游戏主角离开水平屏幕边界时,它将从屏幕相反的一边重新进入。

     ?平台可以静止或者水平移动。

     ?有些平台在主角撞上时会随机地变得粉碎。

     ?在向上的路上,主角可以收集物品来获得分数。

     ?除了钱币,在一些平台上会有弹簧,它们可以使主角跳得更高。

     ?邪恶的力量充满了游戏世界,它们水平移动。当碰上它们时,主角将死亡 并且游戏结束。

     ?当主角掉落到屏幕的底部边缘时,游戏也将结束。

     ?在关卡的顶部会有一些目标,当主角碰上目标,新的关卡将开始。

     ?当游戏结束后,显示玩家在游戏中所获得的分数。

     第三章系统概要设计

     3.1背景故事

     游戏的主角得了慢性跳跃症。他每次接触到地面都必须进行跳跃。更糟的是, 他深爱的公主(不给她取名字了)被会飞行的松鼠杀手组成的邪恶军队绑架,关在 天上的一个城堡中。在这种情况下,主角的病症反而对拯救公主有所帮助。

     他开 始寻觅心爱的人,与邪恶的松鼠军队战斗。

     图3.1初始的游戏机制实物模型,显示了主角、平台、钱币、邪恶势力和关卡顶部的目标

     3.2游戏程序流程设计

     本游戏程序流程图如图3.2所示

     护人懈戏画面

     1

     f

     排行榜

     游戏卄始

     游戏帮助

     游戒过程

     廿戏廷■子 到达目的地 磁到障碍物

     游戏恢艮 游戏结束

     图3.2游戏程序流程图

     第四章系统详细设计

     4.1画面和切换

     ?有一个带标识的主画面;有 PLAY HIGHSCORE和HELP菜单项;并有一个 按键来控制声音的开启和关闭。

     ?有一个游戏画面来询问玩家是否准备好控制运行、暂停、结束游戏和下一 关卡的状态。比起Mr. Nom,这里只是新增了画面的下一关卡状态,它将在主角 碰到城堡时触发。这时新的关卡生成,并且主角将重新从世界的底部开始并保持 他的分数。

     ?有一个高分画面用来显示玩家最高的 5个分数。

     ?有一个帮助画面来说明游戏机制和玩家的目标,此处省略了玩家如何进行 控制的描述。

     ffl.0VJIIf[1[ii.fMOTHEH" wian EF图4.1 Super Jumper

     ffl.

     0

     VJ

     II

     f

     [1

     [ii.

     fMOTHEH" wian EF

     图4.1 Super Jumper的所有画面和切换

     rum

     jiimrrp

     4.2定义游戏世界

     在世界空间中按物理规律定义了对象,其边界形状和位置的度量单位是米, 速度的度量单位是米/秒。但对象的图像表示使用像素定义,因此不得不做一些 映射。解决这个问题的方法是首先针对图像资源定义目标分辨率。 与Mr. Nom 一

     样,此处使用的目标分辨率是 320X480像素(纵横比是1.5)。之所以使用这个目 标分辨率,是因为这是最低的可行的分辨率,但是如果游戏专门针对平板电脑, 则可以使用800X 1 280像素这样的分辨率,或者这两种分辨率之间的一种分辨 率,例如480X 800像素(典型的An droid手机)。不管目标分辨率如何,其原理是 相同的。

     接下来在像素和世界空间中的米之间建立对应关系。 图3.1中的实物模型显

     示了不同对象使用的画面空间的大小以及它们间的相对比例。对于 2D游戏,此

     处推荐将32像素映射为1米。那么现在在实物模型上覆盖一个网格,网格的尺 寸是320 X 380像素,每个单元格大小是32 X 32像素。在世界空间中,单元格映 射为1 X 1米的大小。图4.2显示的是实物模型和网格。

     图4.2 覆盖网格的实物模型。每个单元格是 32 X32像素,对应游戏世界的 1X 1米

     ? Bob是0.8 X 0.8米;它并不完全占用一个单元格。

     ?平台是2X 0.5米,水平占据两个单元格,垂直占据半个单元格。

     ?钱币是0.8 X 0.5米。它几乎垂直占据一个单元格,水平占据半个单元格。

     ?弹簧是0.5 X 0.5米,在两个方向上各占据半个单元格。实际上弹簧垂直方 向比水平方向要稍长一点。它的边界形状是正方形,因此碰撞测试不是十分 严格。

     ? 松鼠是1 X 0.8米。

     ? 城堡是0.8 X 0.8米。

     由这些尺寸可以得到用于碰撞检测的对象的边界矩形的尺寸。 它们的大小可以根

     据游戏对这些值的使用方式进行调整。

     由于当主角出了屏幕底部边缘时将死亡, 这样照相机也将在游戏机制中扮演 角色。虽然我们使用照相机进行渲染并且当主角跳起时也向上移动它, 但在世界

     的模拟类中并不使用它,而记录到目前为止主角的最高 y坐标。如果他低于这个 值与视锥体一半高度的差值,那么就认为它离开了屏幕。由于需要根据视锥的高 度来决定主角的生死,因此并不能够使模型(世界模拟类)和视图之间完全独立, 对此是可以容忍的。

     4.3系统功能模块

     本系统一共有23个类文件,java源文件及其功能如表4-1所示:

     表4-1 java源文件及其功能图

     序号

     文件名

     主要功能

     1

     SuperJumper

     启动入口

     2

     Sett ings

     记录声音开启关闭

     3

     Assets

     各种资源的读取

     4

     Mai nMen uScree n

     主菜单界面

     5

     OverlapTester

     检测各种碰撞

     6

     Ani matio n

     动画的两种状态,循环和不循环(不循环则动画 播放完毕后停留在最后一张图片上)

     7

     GameObject

     所有的游戏物体都会在一个平面内绘制(或者说 在屏幕大小内绘制),那么所有的物体都应该包 含一个位置

     8

     Helpscree n

     显示游戏的帮助画面

     9

     HighscoreScree n

     显示游戏的分数榜画面

     10

     GameScree n

     显示游戏的不同状态的画面

     11

     World

     实现控制运行等总体要求,如放置金币,主角移 动速度,主角是否存活等。

     12

     WorldRe nderer

     用来把每个对象关联相应的图片资源,同时控制 相机,实现动画。

     13

     Dyn amicGameObject

     x, y 轴方向相关的运动信息

     14

     Bob

     主角

     15

     Castle

     城堡

     16

     Coi n

     金币

     17

     Platform

     平台

     18

     Spri ng

     弹簧

     19

     Squirrel

     空中飞行的松鼠

     4.4储存素材

     在本游戏会用到一些图片和音效素材,如图 4.2所示,Assets类的实际作用

     就是用静态变量把这些个要用到的图片,音效文件保存下来,放到内存中(从Asset 文件夹中加载的资料文件).之后就可以在代码中方便的使用到这些资源文件 ,比

     如 game.getGraphics().drawPixmap(Assets.background, 0,)0。

     b^ckgrcmnd.pn9dickoggcoinogg fcrt,fnt h@lp.pngTr?*Ti?"rmh?i|p2ipngfcm^pngh&lp4upr>gIh^lpLpngimrrp ItlMPFChelp3-pngjump.cgg? ?items..pnglibgdx.png图4.2图片音效素材hdp5>prigmiUsiz.mpSpublics daLSS Asset-s {

     b^ckgrcmnd.pn

     9

     dickogg

     coinogg fcrt,fnt

      h@lp.png

     Tr?*Ti?"rm

     h?i|p2ipng

     fcm^png

     h&lp4upr>g

     Ih^lpLpngi

     mrrp ItlMPFC

     help3-png

     jump.cgg

     ? ?

     items..png

     libgdx.png

     图4.2图片音效素材

     hdp5>prig

     miUsiz.mpS

     publia statia Texture background;

     pablic stati a T^scr.nr^R&grork H良亡立才上门垃蛊曲兰才‘二豐: ,?背景

     pabliG publiapdbliastatic r&sct-tir^R&arQripui>Li a stati aTex匸;it■巳氏已甲丄口二so Lind ;static Texture items; f/ ——

     pabliG publia

     pdblia

     static r&sct-tir^R&arQri

     pui>Li a stati a

     Tex匸;it■巳氏已甲丄口二

     so Lind ;

     public statia

     4.5游戏界面

     背景图片不仅使用在主菜单画面, 也使用在所有的画面上。 它与目标分辨率大小一样, 都是

     320X 480像素。主菜单项记录是 300 X 110像素。在图5显示的背景是黑色的,这是因为白 底白字是看不清的。在实际的图片中,背景使用的是透明像素。 logo是274X 142像素,在

     其4个角上使用了透明像素。

     再接下来是帮助画面的图片。此处使用了一个 320X 480像素的全屏图片,而不是使用一组

     元素组合。这样做将减少绘制代码的数量, 因此不会增加程序的大小。 图2中显示了所有的帮助画面,唯一组合这些图片的是箭头按钮。

     对于高分画面,将重用主菜单项中显示“ HIGHSCORES的图片部分。实际的分数将使用本

     章稍后将介绍的特殊技术进行渲染。画面剩下的部分再次使用背景图片和按钮组成。

     MySuiperJumpef 刃 ^VoNiu

     MySuiperJumpef 刃 ^VoNiu

     图4.3游戏主界面

     "涛戏界面界面

     匚iRLlEE = new Texc口I:皂貸皂寸:lon (壬上芒血営” 64, 64, 64, C4);

     psuseMsru = new TextureRegiOTi 224r 22er 192^ 9€) J

     rsady = new “耳匸口“Rugi匚八(丄七翎:片 32Q^ 22^f 32};

     gam-Ov^r ■ new TexrureReqion (itM:5r 352, 256, 160? 96);

     highSce^esRe-? 1 on = new TexcureEt已口丄口口(Asse匸日-丄七三西占* 0* 257, 300, 1J

     4.6分数榜设定

     很多游戏都有个高分榜这个设置, Supperjumper也不例外,也有自己的"英雄榜”,上

     面按递减顺序排列了 5个分数,每个玩家结束游戏后都会有得到一个分数, 如果超过分数榜

     上最低一个,那么这个分数就可以进入分数榜,如图 4.4所示。

     ? M0j|wr>umptr b> Wohw ■ °

     HTGHSCORE3

      TOC \o "1-5" \h \z AOO

     &O

     5 0

     30

     图4.4

     图4.4游戏高分榜

     public class HighscoreScree n exte nds Scree n {

     Stri ng lin es[] = new Stri ng[5];

     public HighscoreScree n( Game game) { super(game);public HighscoreScree n( Game game) { super(game);

     for (int i = 0; i < 5; i++) {

     li nes[i] = "" + (i + 1) + ". " + Setti ngs.highscores[i];

     4.7游戏总控制

     ? 重力加速度向量是(0,-13)米/秒2,它比现实中和炮示例中使用的重力加速度要稍 大。

     ? Bob的初始跳跃速度向量是(0,11)米/秒。注意,跳跃速度只影响在 y轴上的移动。

     水平移动则由加速度的当前读数定义。

     ? 当碰到弹簧时,Bob的跳跃速度是他正常跳跃速度的 1.5倍,即(0,16.5)米/秒。同

     样,这个值也是纯粹通过实验得到。

     ? Bob的水平移动速度是20米/秒。注意,这是一个无方向的速率,不是向量。稍后将 讲解它是如何与加速计共同工作的。

     ? 松鼠不断地左右来回巡逻,它们的移动速度恒定为 3米/秒。表示成向量则是,当松

     鼠向左移动时是(-3,0)米/秒,当它向右移动时是(3,0)米/秒。

     由于游戏是运行在纵向模式的,因此将使用加速计在X轴方向的值。当手机没有 发生倾斜时,x轴的加速度读数是0米/秒2。当完全向左倾斜至手机处于横向时, x轴的加速计读数是-10米/秒2。当完全向右倾斜时,x轴的加速计读数为10 米/秒2。把加速计读数除以最大绝对速度(10)使其规范化,然后乘以 Bob最大 的水平速率,就得到了 Bob的速度。这样当手机完全倾斜到一边时,Bob将以20 米/秒从左向右运动,并且速度随手机倾斜变小而变小。 当手机完全倾斜时,Bob

     的速度能达到两倍于平时的速度。

     4.8游戏设置

     这里的游戏游戏设置主要是指游戏运行的音效音乐的播放控制, 同时还设

     置了分数榜数据的储存位置。

     //定义了音效的开关

     public class Sett ings {

     public static boolea n soundEn abled = true;

     try {

     //设置了音效高分榜等数据存储的位置

     in = new BufferedReader( new In putStreamReader( files.readFile(".mrnom")));

     至此,SupperJumper游戏各个类与功能设计完毕。

     第五章软件运行与测试

     5.1系统测试

     5.1.1游戏页面显示

     (1) 运行程序,出现游戏界面。

     (2) 游戏界面显示是否正常,游戏边框,主角以及金币是否全部显示。

     5.1.2移动主角测试

     分别按方向键左、右,主角按所指示方向移动。

     5.1.3主角碰到金币测试

     (1) 主角碰到金币后,金币会消失,无异常。

     (2) 主角碰到金币后,分数增加10分,无异常。

     5.1.4判定结束测试

     (1) 移动主角,分别左、右两个方向移动,直至到达城堡。此时,游戏会结 束。

     (2) 移动主角,到一定高度后,撞击到松鼠。此时,游戏会结束。

     5.1.5暂停测试

     游戏中途按暂停键,会暂停游戏。

     5.1.6恢复测试

     暂停后,按恢复键,会继续游戏。

     5.1.7压力测试

     (1) 主角每次开始后直接向上跳,测试 50次,游戏不会报任何BUG

     (2) 主角到达城堡,游戏不会报任何 BUG

     5.2结果分析

     程序运行正常,本人完成的测试工作包括本章介绍的几个方面。具体通过了 以下测试。游戏页面显示、移动主角测试,主角碰到金币测试,判定结束测试, 结束后重新开始暂停测试,恢复测试,压力测试。在测试中,过程比较枯燥,但 是还是认真的抱着严谨的态度地完成了测试。

     系统经过测试以后已经基本上排除 了可能出现的错误,最初设想的功能基本上得到了实现。

     第六章结论

     Supperjumper是一款仿涂鸦跳跃的动作类游戏,其简单的画面和易操作性 使玩家容易上手,适合不同年龄段的玩家娱乐。然后这款游戏也存在有不足的地 方,有些功能目前还没有得到实现。该游戏算法不多,主要都是依赖框架的应用, 在本游戏的编写过程中,只要javase学得比较深入,都可以比较轻松的写出该 游戏,之后进行移植。通过这次的设计,提高了我在程序设计和调试方面的技巧, 认识了自己的不足。同时也认识到,任何事情都需要脚踏实地的去做,一步一个 脚印的完成,认真严谨,有了好的态度才能做好一件事情, 经过长时间的努力和

     积累,经过不断地查找资料和总结,很好的完成了,这种收获的喜悦相信每个人 都能够体会到。这是一个毅力的磨练,是对我实际能力的一个提升,相信对我未 来的学习和工作都有很大的帮助。

     由于框架优良,游戏非常容易实现。纹理图集和 SpriteBatcher的使用使性能 得到提高。本文也讨论了如何渲染固定宽度的 ASCII点阵字体。游戏机制的良好

     设计和世界单位与像素单位之间关系的清晰定义使得游戏开发非常容易。 设想一

     下,如果所有的东西都是以像素为单位进行操作,这简直就是个噩梦。所有的计 算都进行了分类一一这并不利于低性能的An droid设备。同时也把游戏逻辑和游 戏展现相互独立开。总而言之,Super Jumper是非常成功的。

    • 新闻热点
    • 文化视野
    • 主题活动
    • 文件
    • 关注
    • 风俗
    • 文化艺术