第10章 Android游戏开发实例

  • 格式:ppt
  • 大小:465.50 KB
  • 文档页数:1

下载文档原格式

  / 1
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


游戏策划

在明确了目标客户之后,需要考虑游戏的类型。从 大的方面说,游戏是单机的还是联网的,是单人的 还是多人的,是动作类型的还是角色扮演类型的等 等。在确定了游戏的类型之后,还需要考虑游戏的 可玩性,总不可能说游戏玩家十多分钟就通关了, 这就需要包括游戏的难度设臵、关卡控制以及后期 的版本控制。


到这里我们基本完成了一个游戏的整体框架, 后面的所有视图类界面显示都只需要继承自我 们自定义的抽象类GameView,然后在 MainGame中判断和更改当前的游戏状态,程 序便自动找到我们需要更新和释放的视图类进 行操作 下面通过该游戏的菜单显示界面来熟悉该框架 的使用


首先创建一个MainMenu类 继承自GameView类。然后 实现GameView类中定义的 抽象方法(onDraw, onKeyUp等) 完成界面绘制和按键处理后 ,只需要在MainGame中判 断当前状态。如果是菜单界 面,就将GameView对象构 建为MainMenu类对象, ThreadCanvas便可以通过 getMainView取得该对象并 进行刷新。

游戏策划

现在我们就可以根据上面的目标客户和游戏类型来 定义游戏的风格了,如想以三国为题材做一个即时 战略游戏,就不可能定义为现代风格,游戏中就不 会出现坦克、飞机的道具。同时这也体现了游戏的 真实性,但是游戏本身是一个虚幻的东西,玩家就 是需要将自己放到虚拟的世界中,所以也不能过度 真实,让玩家觉得枯燥乏味。风格确定之后,还可 以根据游戏的风格来配臵游戏音效。

主角对话

它是通过一个浮动的对话框来显示对话内容,这个对话框 只是一个矩形框,然后在右边绘制出对应NPC的头像即可 。 (GameScreen.java中的dialog方法)这里的对话内容 可以通过TextUtil类来实现自动换行。 当主角和怪物发生碰撞,就会发生战斗。需要一个界面来 展示战斗效果。战斗界面非常简单,就是分别显示玩家和 怪物的头像以及属性,包括生命、攻击、防御。( FightScreen.java中的onDraw方法)

主角设计


游戏中的主角称为“精灵”,当然精灵包括的 范围很广,不仅仅是主角,还有NPC、道具等 既然是精灵,必然有很多动画,如主角在向4 个方向移动时分别对应4个不同的动画,动画 本身就是将图片一帧一帧地连接起来,循环地 播放每一帧形成的。在一些大的游戏中同样可 以使用自己写的精灵编辑器去编辑精灵,将精 灵拆成很多部分,然后再组合起来,这样可以 节省大量的空问。



有了视图类显示界面,还要控制当前屏幕显示 哪一个界面,对界面进行一些逻辑处理。因此 需要构建一个控制整个游戏逻辑的MainGame 类。该类根据不同的游戏状态设臵屏幕要显示 的视图(controlView函数——相当于一个有穷 状态自动机) 通过GameView的getMainView方法获得当前 要显示的视图对象 通过开启一个线程实现实时刷新视图。在线程 中通过getMainView方法取得当前显示的视图 界面,根据不同界面进行游戏更新( ThreadCanvas类的onDraw方法)

游戏策划

解决了上述问题,就可以准备写策划案了。在写策 划案的同时还需要考虑到美工和程序在技术上的实 现以及硬件的支持,不能设计技术达不到的效果。 了解了这些问题,开始编写策划案。

美工

美工在拿到策划文档之后,需要根据策划文档的描 述来发挥自己的想象力,在保持和策划文档一致的 情况下,进行创新。同样,为了保证美工的图片适 合程序的要求,还需要多和程序员进行交流,以确 保程序员能够很清楚地理解自己的设计,使游戏效 果达到最好。
12.1 手机游戏开发简介

同时也不要就因为这些就认为开发一款游戏很 简单,一款完整的游戏需要多方面的知识,如 游戏的创意、背景、故事情节、游戏音效、游 戏风格、游戏类型、运行速度、适配机型等。 而且,游戏开发是需要策划、美工、程序、测 试的协同工作和默契配合完成的口下面我们将 详细地介绍游戏开发的流程。

设臵Sprite属性


进行碰撞检测



精灵旋转与镜像



在做游戏时,都需要使用旋转和镜像。如,在做一个飞机 游戏时,飞机有几个方向的图片,这样会增加游戏开发出 来的包的大小,所以可以制作一个方向的图片,然后通过 精灵的旋转方法来将图片在各个方向进行旋转 这里我们只实现了90度倍数的旋转,分别是我们在Sprite 类中定义的常量:TRANS_NONE、TRANS_90、 TRANS_189等 我们可以通过,setTansforrn方法来传输上面这些常量, 设臵Sprit的旋转和镜像

编辑好地图后,可以得到一个保存了地图数据 的二维数组,如GameMap.java文件中的 floolAarray数组。数组中的数字代表不同的图 块,我们只需要将这些数据所对应的图块绘制 到屏幕上即可

绘制步骤

首先创建一个TiledLayer对——表示要显示的地图

TiledLayer(int columns, int rows, Bitmap image,

Sprite类使用

构建Sprite对象

Sprite(Bitmap image) Sprite(Bitmap image, int frameWidth, int frameHeight) Sprite(Sprite s) setRefPixelPosition(int x, int y) collidesWith(TiledLayer t, boolean pixelLevel) collidesWith(Sprite s, boolean pixelLevel) colidesWith(Bitmap image, int x , int y, boolean pixelLevel)

在Android中要显示一个视图类就必须继承 View类,View类中包括一个最主要的绘制方 法onDraw和一些事件处理,如onKeyDown、 onKeyUp等。在构建这个视图类时,还可以加 入一些自己的抽象方法,如资源回收、刷新等 。有了这些内容,下面构建一个拥有显示游戏 界面的视图类GameView。该游戏由多个界面 构成,所以GameView是一个抽象类,可以被 各个界面使用(GameView.java文件)
12.1 手机游戏开发简介

游戏策划 美工 程序
wk.baidu.com
12.1 手机游戏开发简介

游戏策划

一款游戏的策划是最重要的,它将直接决定该游戏 的后期制作和玩家的喜好程度。在早期的游戏开发 过程中,或许只是一个或者多个代码工作者将自己 封闭起来狂写一段时间的代码就可以产生一款很不 错的游戏,但现在如果还是这样,写出来的游戏多 半不会受到用户的欢迎。目前游戏行业飞速发展, 市面上各种各样的游戏数不胜数,如何才能开发一 款受广人用厂’喜爱的游戏呢?这就需要我们在策 划之前确定市场的需求,如将很有中国特色的棋牌 游戏“斗地主”拿到美国去销售,就算你做得很好 ,也许美国人根本就不玩这种游戏。所以首先要确 定目标客户。

程序


程序员在得到文档和资源后并不能马上写代码,而 是要仔细查看文档和资源,根据这些来确定所要使 用的知识和所要实现的功能,然后构建一个整体的 框架。 这个整体的框架很重要,一个优秀的程序员会在框 架的设计上花很多时间,因为一个好的框架可以使 后面的开发、调试等更加简单,同时一个好的框架 还能提高游戏的运行效率口为了保证质量,每个程 序员写的程序都有bug所以我们需要不断地测试、 修改,再测试、再修改,从而给玩家一个最好的体 验,希望大家都能养成这个很好的习惯。

这里先实现了Game包中的几个重要的类,包 括Layer, TiledLayer, Sprite, LayerManager。 这样就可以使用这个包来轻松地完成以后的游 戏开发了。
地图设计


地图的设计在游戏中非常重要,我们不可能让 美工做出一张完整的大地图,然后在程序中直 接使用,这样做出来的游戏将会很大,一般的 手机不一定能成功地装载这么大的图片 通常游戏中的地图是多个小块组成的一个完整 的大地图,而组成这些小块的数据一般可以使 用个二维数组来存储,然后通过程序以最快的 方式将这些地图数据对应的小块映射到屏幕上 组成一幅完整的地图
int tileWidth, int tileHeight)

设臵地图数据——将floorArray中的一维数组转换为 二维的floorMap

setCell(int col, int row, int tileIndex) floorMap.paint(canvas)

绘制地图——将二维的floorMap绘制到屏幕上

这里使用我们实现的Sprite类来完成《魔塔》 中的主角,sprite是个用来显示图像的类,该 类和TiledLayer的区别是:Sprite是由一个图 像(可以有几帧,但是一次只有一个显示)组 成的(当然Sprite还有其他的特性,每次只能 使用一个图像而不是多个图像来填充屏幕是它 的最主要特征),因而Sprite被用来定义一些 小的有动作的游戏对象(如飞船和小行星对撞 ),TiledLayer更常被用来构造生动的背景。 下面我们看看如何使用这个Sprite类


完成了这些模块后,需要通知一个Activity显示界 面,通过setContentView方法显示一个 ThreadCanvas类对象即可(MagicTower.java) 按键事件的处理可以调用ThreadCanvas类处理 ThreadCanvas类和MainGame类一起配合找到指 定的界面

这些数据当然不是我们从键盘上一个一个地输 入进去的,一般情况下先由程序员做一个地图 编辑器,在这个地图编辑器中用鼠标点击再保 存,或者是从网络上卜载一些成熟的编辑器, 如用mappy这样的工具生成地图,再用脚本语 言为mappy写一个应该保存成什么格式的程序 。通常地图分为45度角、侧视角和俯视角等
第12章 Android游戏 开发实例
本章学习目标:

了解手机游戏开发的基本流程 掌握Android手机游戏开发的设计框架

12.1 手机游戏开发简介

首先要说的是大家不要认为开发游戏很难,开 发游戏其实比开发一些应用更简单。因为游戏 的本质就是在屏幕上不断地显示和更新图片, 只不过不是胡乱地更新,而是根据程序逻辑来 控制,如要实现一个主角在地图上移动,那么 只需要将编辑好的地图先绘制到屏幕上去,然 后再将主角绘制上去,剩下的便是逻辑判断了。 再如,要让主角移动,当我们按下了前进键时, 只需要将主角绘制的位臵向前移动就可以达到 目的了„在碰撞检测之后主角能够移动的情况 下)。


前面己经介绍了框架在游戏开发中的重要地位 ,如何才能实现一个适合该游戏的框架呢? 首先我们需要了解游戏的内容,游戏中包括了 地图、主角、整个屏幕界面,显示了地图和主 角的属性,地图上还有道具。至少需要一个视 图显示,并且需要更新界面的显示和一个控制 游戏逻辑及事件的类。下面我们来构建该游戏 的整体框架。

当我们选择一个菜单项后,应用程序界面将跳 转到另一个界面。如选择了“关于”界面,将 跳转到“关于”界面。通过在MainMenu类的 dealItem方法中调用MainGame类的 controlView(yarin.GAME_ABOUT)方法实现


一个好的游戏框架需要根据具体的游戏类型和 内容来进行设计,以方便开发,提高发效率, 使得开发的游戏运行效果更好。现在我们可以 点击菜单界面上的“新游戏”来进入游戏的主 题开发了 大家可能知道,J2ME,在MDIP2.0后面的版 本多出了一个专门为开发游戏提供的Game包 ,本章我们将通过在Android中实现并使用这 个包来完成《魔塔》

本章我们将通过在Android平台完成一个游戏 《魔塔》的开发来学习Android游戏开发。该 游戏包括了游戏开发中的大部分技术,包括地 图、精灵、图层、音效、存档等。下面是游戏 《魔塔》在Android上的运行的主要界面。
魔塔游戏主要界面
魔塔游戏主要界面
魔塔游戏主要界面
12.2 游戏框架设计

相关主题