下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Android 游戏设计教程:游戏元素和工具

作者:课课家教育     来源: http://www.kokojia.com点击数:905发布时间: 2019-04-09 09:12:41

标签: 矢量图像位图图像动画捕捉

  软件开发工具

  我们需要软件开发工具来编写软件。幸运的是,有些绝妙的工具可以用来编写手机游戏等程序。更为幸运的是,许多此类工具可以免费下载和使用,即便我们是出于商业目的而开发游戏。

  Android软件开发工具包(游戏邦注:下文简称“SDK”)

  如果你对AndroidSDK还不熟悉,先别看下面的内容,花些时间来熟悉这个工具。可以先浏览http://developer.android.com/上的下载和安装说明。

  AndroidSDK使用Eclipse来塑造集成开发环境(游戏邦注:下文简称“IDE”)和带有Oraclejava开发工具包(游戏邦注:下文简称“JDK”)的工具。Android网站上的安装说明会指导你如何安装AndroidSDK。你在本书中看到的范例和图像都是使用以下版本的组件构建而成的:AndroidSDK;AndroidSDK平台组件4.0;AndroidSDK工具,r14;用于Eclipse14.0.0的ADT插件;EclipseHelios;Oracle或SunJDK(游戏邦注:即JDK6,也称为JDK1.6)。

  你可能使用的是比上述工具更新的版本,无需为此担心,范例代码与工具版本并无很大的关联。如果确实出现了问题,访问本书的合作网站https://github.com/portmobile/LAGP-Example-Code,看看是否有针对较新版本发布的更新内容。在这本书编写之时,当前Android版本为4.0,也就是IceCreamSandwich。

  你还应当为自己计划支持的每种设备制作Android虚拟设备(游戏邦注:下文简称“AVD”),可以使用AndroidSDK和附属于SDK的AVD管理器。针对这本书中展示的范例,我们制作出很像HTC的EVO智能手机的AVD,相关数据如下:

  名称:EVO

  目标:Android2.2(API等级8)

  皮肤:HVGA

  SD卡:128M

  加速计:有

  LCD密度:160

  音频输出:有

  摄像头:无(游戏邦注:该版本模拟器不支持,而且游戏不需要摄像头)

  电池:有。

  你还应当浏览下SDK教程,熟悉下整个过程,包括:创建Android项目;编写代码;构建项目;于Android模拟器上运行项目;使用Eclipsedebugger、LogCat及SDK提供的其他工具来解决项目中的漏洞。如果你计划将游戏发布到AndroidMarket上,你还需要确保它确实能够在真正的手机上良好运行,所以你还应当拥有在Android手机上加载和运行.apk文件的经验。

  Android开发者站点上的指导文件很全面。如果你需要其他的指导或更多范例,还有许多优秀的Android编程书籍可供选择,包括由LaurenDarcey和ShaneConder编写的《Sam’sTeachYourselfAndroidApplicationDevelopmentin24Hours》。

  AndEngine游戏引擎库

  AndEngine是个游戏引擎库,使得针对Android设备编写二维游戏更加容易。NicolasGramlich费尽心思创造了AndEngine,并编写了大量项目代码。它是开源项目,所以你可以前往项目网站加入AndEngine的开发计划。

  当然,我们也可以用Java来自行编写例行程序,使用AndroidAPI来执行游戏各组件。然而,利用已经编写完成的游戏引擎有诸多好处:

  1、我们可以使用其他人的工作成果。当然,如果我们真想这么做的话,也可以针对Android编写自己的IDE,但是除非我们需要某些特别功能,否则这完全是毫无意义的举动。

  2、以AndEngine中使用的此类开源代码为基础,我们可以根据自己的需要来扩展引擎功能。如果扩展对其他人同样有用,我们可以将这些调整内容放回开源引擎库,助其他使用者改善引擎。

  3、当我们遇到问题时,我们可以向使用相同技术的开发者社区寻求帮助。有可能其他人已经解决了我们所面临的问题,可以提供问题的解决方案。

  4、我们可以借用许多开发者的最优化方案。游戏需要使用相当数量的计算资源来绘制图像、计算客观物理效果、演奏音效和掌握用户输入方式。如果使用游戏引擎,我们便可以使用已经得出的最优化方案。

  其他针对Android的游戏引擎目前正在开发中,本书主要阐述使用AndEngine的方法。有关AndEngine的重要网站如下:

  1、AndEngine源代码库:http://code.google.com/p/andengine/

  2、范例源代码库:http://code.google.com/p/andengineexamples/

  3、AndEngine社区论坛:http://www.andengine.org/forums/

  4、AndEngine维基页面:http://wiki.andengine.org/AndEngine

  如果以上网站内容无效,只需要用浏览器搜索“AndEngineAndroid”,应当就可以找到当前可用的内容。

  AndEngine是个.jar文件,也就是Java文档。在本章节随后的内容中,当我们开始进行游戏代码编写时,你就会知道如何配合使用这些文档和你的AndroidSDK项目。该引擎采用GNULesserGPLLicense,你可以出于几乎所有合理的目标来使用源代码(当然要注意这里所涉及的授权问题)。

  AndEngine游戏概念

  我们之前提到的电影类比法是AndEngine的理想入门方法。你的游戏就像是电影,游戏引擎包含了类似于电影制作所涉内容的诸多概念。

  镜头

  游戏中的“镜头”决定了游戏呈现给玩家的景象。这很像二维空间中的电影镜头。镜头可以在场景中移动,改变所呈现的景象。镜头的移动既可以由玩家来控制,也可以由程序驱动。

  场景

  同电影一样,游戏也是由一系列发生动作的场景构成。在电影中,场景以固定的方式编辑拼接起来。在游戏中,场景呈现顺序由游戏过程决定。游戏就像是匆忙编辑完成的电影。

  层次

  场景由多个图像层次组成。各层次按一定顺序叠加,很像早期用来制作卡通的动画纸。层次还可以用来创造2.5D效果,随着镜头的移动,较近的层次移动得比较远层次快。

  精灵

  精灵指电影中表演者的视觉呈现,无论这些表演者是人还是物品。精灵可能是动画形式,也可能不是,但它们往往在游戏过程中随场景移动。精灵质感往往从由许多精灵图片组成的大图片加载而得。

  实体

  在AndEngine中,实体指所有屏幕上绘制的东西。精灵是实体,显示在屏幕上的瓦片、集合形状和线条都是实体。所有的实体都拥有可以用调节器来改变的资产,比如颜色、角度、范围和位置。

  调节器

  调节器可以改变实体的资产,在AndEngine中它们有强大的力量。它们可以用在任何实体上,它们造成的改变既可以马上呈现也可以在规定的间隔时间内逐渐呈现。在我们的游戏中,我们频繁使用调节器来创造精灵和其他实体的效果。

  纹理

  2D纹理,我们通常可以利用位图图像赋予物体纹理。纹理决定实体的视觉效果,许多OpenGL图像环境是围绕纹理的使用构建而成。

  纹理区域

  纹理定义完整的位图图像,纹理区域定义的是区域子集。随后我们会频繁提及2D图像表现最优化,而使用纹理区域来绘制大型组合型位图中的小区域是执行这些最优化方案的关键技巧。

  引擎

  场景运行通过引擎来是实现。它负责让动画和调节器知道何时更新呈现的图像,协调绘图,处理用户输入事件(游戏邦注:如触点、按键和传感器事件),通常还管理游戏的进程。引擎很像是电影的制作人或导演,告诉所有人应尽的职责。

  BaseGameActivity

  这个类扩展了AndroidActivity类,将是我们所设计游戏中所有场景的基础。BaseGameActivity负责所有场景都需要做的事情,设立游戏引擎,满足AndroidActivityLifecycle要求并使传感器可用。我们将在第3章中更深入地探讨这个类。

  物理连接器

  AndEngine的基础引擎中包含了基本物理能力,但Box2D物理引擎大幅扩展了这些能力。我们通过物理连接器将AndEngine物体同Box2D连接起来。如果你的游戏不使用Box2D物理引擎,那么你就无需有物理连接器。

  Box2D物理引擎

  AndEngine包含了Box2D物理引擎的开源JBox2D端口。它可以用来逼真地模拟物理物体的以下互动形式:刚体的物理效果;稳定的物体堆积;重力效果;自定义单位;碰撞和接触;滑动摩擦;正方形、圆形和多边形;多种连接类型;睡眠状态。

  图像工具

  任何电子游戏的开发都离不开大量的图像元素。我们需要绘制背景,还需要制作某些精灵的动画。许多工具可以用来管理电脑图像,专业化工具也相当高端精良。如果你是个图像设计师,而且知道如何使用AdobeIllustrator或其他专业工具,你可以无需阅读这个部分的内容。

  相反,如果你跟我一样,缺乏足够的图像制作经验或才能,而且开发资金较少,那么可以看看这个部分的内容。本部分将主要描述我为V3这款游戏创作图像的工具(游戏邦注:下文所阐述的工具多数是免费的)。这些工具都很不错,广被专业人士所用。

  你可能会试图直接从网络上获取游戏图像。如果你这么做的话,就要确保你拥有使用这些图像的权利,你可以下载图像并不等同于你有权利使用图像。如果你计划靠该游戏盈利,那么“商业化”使用其他人的图像将带来很棘手的问题。

  你或许也知道,绘制图片的图像程序分为两大类别:可于用来绘制和控制图像化物体的程序(游戏邦注:也称为“绘图程序”),以及可以在画布上创建颜色位图的程序(游戏邦注:也称为“上色程序”)。每种类别都有自己的用途,两种程序在V3的创作中都会用到。

  矢量图像:Inkscape

  我发现用矢量图像来绘画很方便,主要有以下两个原因:

  1、图画中的每个组件都被视为一个物体。在你创作最终图画时,物体可以被独自移位、缩放、旋转和编辑。

  2、组件和整个图画可以在不影响分辨率的前提下轻易缩放。这种能力对精灵来说特别重要,因为其最终形态通常很小。缩放矢量图像也可能遇到问题,所以你在绘制组件时应当尽可能贴近其最终版本的大小,但在必要的时候可以灵活地缩放总是件很棒的事情。

  Inkscape(游戏邦注:网址为http://www.inkscape.org/)是个非常流行的矢量绘图程序包。

  许多Linux系统中会自带这个软件,它也可以在各版本Windows和MacOSX系统中运行。其下载安装包中包含大量的“帮助”内容和教程。如果你已经精于图像制作,那么很快便可以熟练使用这个工具。如果你跟我差不多,在图像制作方面缺乏经验和才能,可能需要花长一点的时间来熟悉这个工具,但比起学习AdobeIllustrator来说依然要快得多。而且,这个工具是免费的。图2.1显示Inkscape打开一张蝙蝠图片的效果。

                                       Android 游戏设计教程:游戏元素_工具_矢量图像_位图图像_动画捕捉_课课家教育

  图2.1inkscape(fromgamecareerguide)

  基础AndEngine游戏引擎难以呈现矢量图像,但是我们可以开发能够实现上述目标的扩展。在V3中,我的做法是使用Inkscape来创作图像,将它们编辑入核心内容中,缩放至合适的像素,保存成矢量版本(即.svg),以.png(即便携式网络图形)文件格式导出,如果必要的话,使用GIMP来制作透明背景。得到的位图图片(仍是.png格式)就是基础AndEngine能够识别的图片文件。

  位图图像:GIMP

  GIMP(游戏邦注:即GNU图像操作程序,网址为http://www.gimp.org/)是个使用者遍布全球的跨平台位图涂色程序。多数Linux系统自带该工具,该工具也是免费的。GIMP小组本身并不为Windows和MacOSX提供支持,但现在已经出现了能够在这两个操作系统中运行的可下载版本。

                                             

  图2.2GIMP位图编辑器(fromgamecareerguide)

  图2.2显示的是与图2.1相同的蝙蝠图片。这里的蝙蝠图片以位图的形式呈现(在Inkscape中将矢量绘图保存为.png文件便可以得到)。正如你所看到的那样,结果显示图片在此等大小下更具颗粒感,带有透明的背景,这正是我们制作精灵动画手绘所需的东西。在我们呈现精灵的时候,背景将通过透明区域展示出来。

  动画捕捉:AnimGet

  生成动画是个乏味且颇耗时间的工作。你需要为游戏中用到的每个动画手绘、每个角度和每个姿态创作绘图。

  制作3D动画是个捷径,目前可使用的3D工具很多(游戏邦注:Blender是个被设计师广泛使用的开源工具,3DsMax、Poser和Maya也是较为流行的商业化工具)。随后,你可以根据自己需要的视角来播放2D动画。你最终会得到AVI或动画GIF文件,随后你需要将其分解成独立的帧(这样才能将它们重新整合进精灵层中)。MichaelMenne创造了称为“AnimGet”的工具,可以为你完成分解工作。该工具可以在网络上的许多地方下载到(用Google搜索“AnimGet”即可),它只能在Windows系统下运行。

  AnimGet背后的概念是很精巧的。该工具的原理并不复杂,只是监视你屏幕上的某个固定区域。它先复制下最初像素,然后每10毫秒查看1次。如果该区域内的像素发生改变,AnimGet会复制下该区域的新状态,以新文件的形式保存。整个过程在内存中完成,所需时间并不长,但是你需要细心地选择工具查看的区域,这样它就只会关注你感兴趣位置的动画。当你告诉AnimGet停止捕捉动画时,之前复制的图片会以独立文件的形式保存。

  TileMap制作:Tiled

  Tiles在电脑游戏中往往用来生成连续图像列,比如地图。在V3中,用来显示入侵的吸血鬼和障碍物。Tiled地图编辑器(可在http://www.mapeditor.org/处下载)是免费的,使用Qt跨平台库编写而成,可以在Windows、Linux和MacOSX系统上运行。图2.3显示Tiled在tile地图编辑期间的模样。

                                                 

  图2.3Tiled地图编辑器(fromgamecareergudie)

  TrueType字体制作和编辑:FontStruct

  Android支持使用TrueType字体,我们在游戏中使用的就是这种字体。现在有许多工具可以用来制作和编辑TrueType字体,当然还可以使用许多其他的字体(游戏邦注:有些字体是免费的,有些字体需要购买)。很显然,FontShop制作的基于网络的FontStruct是个不错的工具,你可以在开放社区中分享你已经制作出的字体。字体可以下载,每种字体都有其相关授权。

  自行制作字体需要大量的工作。我不推荐这么做,除非你实在找不到适合的字体或者你喜欢制作字体。图2.4为FontStructor网站窗口,你可以在这里制作和编辑字体。

                                          

  图2.4FontStruct字体编辑器(fromgamecareergudie)

  音频工具

  V3游戏包含两种类型的音频资产,我们需要工具来制作和编辑这两种音频。音效指持续时间较短的声音(游戏邦注:最多5秒,通常情况下少于3秒),随游戏中某些事件的发生而播放。音乐是持续时间较长的声音,通常在场景呈现时作为背景播放。

  音效:Audacity

  如果游戏没有音效会怎么样呢?你想要为自己的游戏制作令人惊奇的音效,Audacity(网址为http://audacity.sourceforge.net/)是个世界级的音效编辑工具,可免费在Windows、MacOSX和Linux系统上运行。Audacity支持开发者可以输入或捕捉音效文件,编辑文件并将它们输出成各种不同的音频格式。Android偏好AAC、MP3、MIDI、OggVorbis和WAV文件,这些格式的文件都可以用Audacity来处理。图2.5显示Audacity正在编辑音效。

                                            

  图2.5Audacity声音编辑器(fromgamecareergudie)

  背景音乐:MuseScore

  你的游戏还需要背景音乐,格式可以是MP3、OGG或MIDI文件。当然,你可以用许多种方法来制作所需的音乐。比如,你或许有足够的才能自行用乐器弹奏出音乐,然后用设备录下。或者,你可以在网络上寻找可免费用于商业化用途的音乐文件。

  我的音乐才能有限,所以我选择使用开源音乐制作工具MuseScore(网址为http://www.musescore.org/)来为V3游戏制作音乐。这个软件让你可以使用电脑键盘或配套的MIDI键盘来制作或编辑音乐。图2.6显示正在编辑音乐片段的MuseScore主界面。

                                         

  图2.6MuseScore(fromgamecareerguide)

  完成音乐制作后,使用MuseScore可以将音乐保存为MIDI、MP3、OGG或WAV文件,这些格式都能为Android所识别。

  实践:开场画面

  我们花了这么长的篇幅来阐述游戏概念和工具,现在是时候开始编写代码,进入开发循环。我们采用的模型是,先在这里创建某Android项目的基础,然后在以下章节中不断添加新内容,直至形成完整的游戏。

  我们先来看看该程序的开场画面(如图2.7所示)。屏幕在显示这个画面5秒钟后转变成空白屏幕。

                                          

  图2.7V3游戏中的启动画面(fromgamecareerguide)

  创建游戏项目

  在本书中,我们使用的是AndroidSDK。要使用SDK来制作V3游戏,我们先要创建一个新的Android项目。“新建”——“Android项目”对话框需要你输入下列信息:

  1、项目名称:V3

  2、选择“在工作区创建新项目”

  3、选择默认的工作区存储位置(游戏邦注:设计师亦可根据自己的需要变更存储位置)

  实践:开场画面27

  4、在BuildTarget中选择“Android1.6”

  5、应用名称:V3

  6、安装包名称:com.pearson.lagp.v3

  7、CreateActivity:StartActivity

  8、MinSDKVersion:4

  通过这些步骤就可以为范例游戏创建新项目,项目包括StartActivity,不过现在它的内容只是简单的“Hello,World”。在本章节后面的版块中,我们将在开始添加代码时修改它的内容。

  添加AndEngine库

  如果你还未从AndEngine网站下载AndEngine库,先完成这个步骤。获得AndEngine的.jar文件的最佳地方是谷歌上的AndEngineExamples库,网址为http://code.google.com/p/andengineexamples/。

  在源代码标签下,你可以在库文件夹中浏览查找.jar文件,也可以直接将整个树形源代码克隆至本地计算机。推荐使用第2种方法,这样你就已经为访问范例代码做好准备。AndEngine使用Mercurial源代码控制系统。如果你还未安装Mercurial,网站上的指导会告诉你如何实现。你将.jar文件添加到机器上之后,接下来就需要输入源代码:

  1、在EclipsePackageExplorer中,扩展V3项目。右键点击V3项目,选择“新建文件夹”,在对话框中输入相关信息,这样便创建了库文件夹。

  2、右键点击库文件夹,从弹出菜单中选择“输入…”

  3、在下个对话框中选择“常规”——“文件系统”,使用“浏览”按钮导向你已下载的AndEngine.jar文件的存放地址。点击地址名称。

  4、现在,输入对话框显示的应当是复选框无内容的地址。右侧窗口显示地址中的文件,应该有andengine.jar。点击文件名旁边的复选框,然后点击“完成”。

  5、要将.jar文件包含在你的构建路径中,可以在EclipseProjectExplorer窗口中右键点击.jar文件,然后选择“构建路径”——“添加至构建路径”。这样,.jar文件也会直接显示在项目文件夹下。

  添加开场画面代码

  我们需要修改自动生成的StartActivity.java文件,这样才能在游戏组件加载时呈现开场画面。最终,在所有内容加载完毕之后,我们要让画面跳转到游戏菜单上。但现在,我们要实现的是保持开场画面一直可见,直到用户回到主界面。列表2.1就是StartActivity.java修改后的版本。

  列表2.1StartActivity.java

  幕画面,但游戏的运行仍需要消耗些许内存周期。要停止或卸载应用,使用设备上的“设置”——“应用程序”——“管理应用程序”功能即可。

  

赞(14)
踩(2)
分享到:
华为认证网络工程师 HCIE直播课视频教程