TileMap制作:Tiled Tiles在电脑游戏中往往用来生成连续图像列,比如地图。在V3中,用来显示入侵的吸血鬼和障碍物。Tiled地图编辑器(可在 http://www.mapeditor.org/处下载)是免费的,使用Qt跨平台库编写而成,可以在Windows、Linux和Mac OS X系统上运行。图2.3显示Tiled在tile地图编辑期间的模样。 图2.3 Tiled地图编辑器(from gamecareergudie) TrueType字体制作和编辑:FontStruct Android支持使用TrueType字体,我们在游戏中使用的就是这种字体。现在有许多工具可以用来制作和编辑TrueType字体,当然还可 以使用许多其他的字体(游戏邦注:有些字体是免费的,有些字体需要购买)。很显然,FontShop制作的基于网络的FontStruct是个不错的工 具,你可以在开放社区中分享你已经制作出的字体。字体可以下载,每种字体都有其相关授权。 自行制作字体需要大量的工作。我不推荐这么做,除非你实在找不到适合的字体或者你喜欢制作字体。图2.4为FontStructor网站窗口,你可以在这里制作和编辑字体。 图2.4 FontStruct字体编辑器(from gamecareergudie) 音频工具 V3游戏包含两种类型的音频资产,我们需要工具来制作和编辑这两种音频。音效指持续时间较短的声音(游戏邦注:最多5秒,通常情况下少于3秒),随游戏中某些事件的发生而播放。音乐是持续时间较长的声音,通常在场景呈现时作为背景播放。 音效:Audacity 如果游戏没有音效会怎么样呢?你想要为自己的游戏制作令人惊奇的音效,Audacity(网址为 http://audacity.sourceforge.net/)是个世界级的音效编辑工具,可免费在Windows、Mac OS X和Linux系统上运行。Audacity支持开发者可以输入或捕捉音效文件,编辑文件并将它们输出成各种不同的音频格式。Android偏好AAC、 MP3、MIDI、Ogg Vorbis和WAV文件,这些格式的文件都可以用Audacity来处理。图2.5显示Audacity正在编辑音效。 图2.5 Audacity声音编辑器(from gamecareergudie) 背景音乐:MuseScore 你的游戏还需要背景音乐,格式可以是MP3、OGG或MIDI文件。当然,你可以用许多种方法来制作所需的音乐。比如,你或许有足够的才能自行用乐器弹奏出音乐,然后用设备录下。或者,你可以在网络上寻找可免费用于商业化用途的音乐文件。 我的音乐才能有限,所以我选择使用开源音乐制作工具MuseScore(网址为http://www.musescore.org/)来为V3游戏 制作音乐。这个软件让你可以使用电脑键盘或配套的MIDI键盘来制作或编辑音乐。图2.6显示正在编辑音乐片段的MuseScore主界面。 图2.6 MuseScore(from gamecareerguide) 完成音乐制作后,使用MuseScore可以将音乐保存为MIDI、MP3、OGG或WAV文件,这些格式都能为Android所识别。 实践:开场画面 我们花了这么长的篇幅来阐述游戏概念和工具,现在是时候开始编写代码,进入开发循环。我们采用的模型是,先在这里创建某Android项目的基础,然后在以下章节中不断添加新内容,直至形成完整的游戏。 我们先来看看该程序的开场画面(如图2.7所示)。屏幕在显示这个画面5秒钟后转变成空白屏幕。 图2.7 V3游戏中的启动画面(from gamecareerguide) 创建游戏项目 在本书中,我们使用的是Android SDK。要使用SDK来制作V3游戏,我们先要创建一个新的Android项目。“新建”——“Android项目”对话框需要你输入下列信息: 1、项目名称:V3 2、选择“在工作区创建新项目” 3、选择默认的工作区存储位置(游戏邦注:设计师亦可根据自己的需要变更存储位置) 实践:开场画面27 4、在Build Target中选择“Android 1.6” 5、应用名称:V3 6、安装包名称:com.pearson.lagp.v3 7、Create Activity:StartActivity 8、Min SDK Version:4 通过这些步骤就可以为范例游戏创建新项目,项目包括StartActivity,不过现在它的内容只是简单的“Hello, World”。在本章节后面的版块中,我们将在开始添加代码时修改它的内容。 添加AndEngine库 如果你还未从AndEngine网站下载AndEngine库,先完成这个步骤。获得AndEngine的.jar文件的最佳地方是谷歌上的 AndEngineExamples库,网址为http://code.google.com/p/andengineexamples/。 在源代码标签下,你可以在库文件夹中浏览查找.jar文件,也可以直接将整个树形源代码克隆至本地计算机。推荐使用第2种方法,这样你就已经为访问 范例代码做好准备。AndEngine使用Mercurial源代码控制系统。如果你还未安装Mercurial,网站上的指导会告诉你如何实现。你 将.jar文件添加到机器上之后,接下来就需要输入源代码: 1、在Eclipse Package Explorer中,扩展V3项目。右键点击V3项目,选择“新建文件夹”,在对话框中输入相关信息,这样便创建了库文件夹。 2、右键点击库文件夹,从弹出菜单中选择“输入…” 3、在下个对话框中选择“常规”——“文件系统”,使用“浏览”按钮导向你已下载的AndEngine .jar文件的存放地址。点击地址名称。 4、现在,输入对话框显示的应当是复选框无内容的地址。右侧窗口显示地址中的文件,应该有andengine.jar。点击文件名旁边的复选框,然后点击“完成”。 5、要将.jar文件包含在你的构建路径中,可以在Eclipse Project Explorer窗口中右键点击.jar文件,然后选择“构建路径”——“添加至构建路径”。这样,.jar文件也会直接显示在项目文件夹下。 添加开场画面代码 我们需要修改自动生成的StartActivity.java文件,这样才能在游戏组件加载时呈现开场画面。最终,在所有内容加载完毕之后,我们要 让画面跳转到游戏菜单上。但现在,我们要实现的是保持开场画面一直可见,直到用户回到主界面。列表2.1就是StartActivity.java修改后 的版本。 列表2.1 StartActivity.java 01 | package com.pearson.lagp.v3; |
03 | import org.anddev.andengine.engine.Engine; |
05 | import org.anddev.andengine.engine.camera.Camera; |
07 | import org.anddev.andengine.engine.options.EngineOptions; |
09 | import org.anddev.andengine.engine.options.EngineOptions. |
13 | import org.anddev.andengine.engine.options.resolutionpolicy. |
17 | import org.anddev.andengine.entity.scene.Scene; |
19 | import org.anddev.andengine.entity.sprite.Sprite; |
21 | import org.anddev.andengine.entity.util.FPSLogger; |
23 | import org.anddev.andengine.opengl.texture.Texture; |
25 | import org.anddev.andengine.opengl.texture.TextureOptions; |
27 | import org.anddev.andengine.opengl.texture.region.TextureRegion; |
29 | import org.anddev.andengine.opengl.texture.region.TextureRegionFactory; |
31 | import org.anddev.andengine.ui.activity.BaseGameActivity; |
33 | public class StartActivity extends BaseGameActivity { |
37 | private static final int CAMERA_WIDTH = 480 ; |
38 | private static final int CAMERA_HEIGHT = 320 ; |
42 | private Camera mCamera; |
43 | private Texture mTexture; |
44 | private TextureRegion mSplashTextureRegion; |
49 | public Engine onLoadEngine() { |
50 | this .mCamera = new Camera( 0 , 0 , CAMERA_WIDTH, |
52 | return new Engine( new EngineOptions( true , |
53 | ScreenOrientation.LANDSCAPE, |
54 | new RatioResolutionPolicy(CAMERA_WIDTH, |
59 | public void onLoadResources() { |
60 | this .mTexture = new Texture( 512 , 512 , |
61 | TextureOptions.BILINEAR_PREMULTIPLYALPHA); |
62 | this .mSplashTextureRegion = TextureRegionFactory |
63 | .createFromAsset( this .mTexture, |
64 | this , “gfx/Splashscreen.png”, 0 , 0 ); |
65 | this .mEngine.getTextureManager().loadTexture( this .mTexture); |
68 | public Scene onLoadScene() { |
69 | this .mEngine.registerUpdateHandler( new FPSLogger()); |
70 | final Scene scene = new Scene( 1 ); |
78 | final Sprite splash = new Sprite(centerX, |
79 | centerY, this .mSplashTextureRegion); |
80 | scene.getLastChild().attachChild(splash); |
84 | public void onLoadComplete() { |
这样看上去代码似乎很多,但是在AndEngine中,开场画面只是普通的精灵。因而,我们在上述代码中实现的只是对整款游戏的初始化。下面,让我们解析代码的各个部分: 1、在输入完成后,我们的类就成为BaseGameActivity的子集。这种类可以实现所有的一般AndEngine初始化,为我们提供些许随后将会用到的方法。 2、随后,我们设定了镜头视图的尺寸。因为这是个开场画面,所以我们希望它能够占有整个屏幕。开场画面图片Splashscreen.png的像素大小为480×320,与默认Android显示尺寸相一致。 3、接下来,我们确定了镜头领域、我们将要使用的质感和质感区域。 4、现在,我们从超类BaseGameActivity处重写3个方法。每个方法对应加载过程中的一个点: (1)onLoadEngine()方法在为这种活动加载游戏引擎时调用。我们在此处初始化镜头和引擎。关于引擎的初始化,有两点需要注意。首先, 我们设定屏幕方向为横向。多数手机游戏使用的都是横向屏幕。其次,我们请求称为“RatioResolutionPolicy”的分辨率协议。在这个协议 下,引擎会通过缩放功能自行调整适应不同的屏幕几何尺寸,同时保持画面纵横比不变。 (2)onLoadResources()方法在加载所需资源时调用。在上述代码中,我们创建了我们将要使用的纹理,并从开场动画图片 Splashscreen.png处加载这种纹理。这个文件应当位于我们的项目工作区中名为“assets/gfx”的文件夹中,否则应用就无法运行。现 在还无需担心TextureOptions设置,我们将在第5章的绘图和精灵中进行更细节化的阐述。最后,我们将纹理加载入引擎的 TextureManager中。 (3)onLoadScene()方法在引擎准备呈现场景时调用。我们初始化每秒帧数记录器,创建场景,将镜头置于场景中,为开场画面制作精灵,将 其依附在场景上,然后将结果反馈给引擎。AndEngine提供为开场画面提供了一种较为特别的场景(即SplashScene),但我们的这种方法也可 以实现目标。 填写完StartActivity.java所需的代码后,我们需要导入图像文件。这需要以下数个步骤: 1、右键点击Project Explorer中V3项目下的资产文件夹。选择“新建”——“文件夹”,创建子文件夹gfx。 2、右键点击新建子文件夹gfx,导入文件Splashscreen.png。将这个图片放入资产文件夹中,使得我们可以使用create-FromAsset()方法来将其加载进纹理中。 在模拟器中运行游戏 在Android模拟器中运行游戏很简单,选择“运行”——“从Eclipse菜单运行”即可。如果你想要立即选择AVD,可以这么做,随后你应当 可以看到开场画面呈现在模拟器窗口中。如果你需要旋转模拟器至横向,按Ctrl+F12这个键位组合即可。如果应用在强制关闭时崩溃,你可能会失去某些所 需的资产。LogCat会告诉你哪些资产已丢失。 在Android设备上运行游戏 你需要访问设备制造商的开发者网站,查看Android开发工作的相关信息。只需要确保设备上运行的Android版本至少同你在创建项目时选择的版本号(游戏邦注:范例中选择的是等级4的API,相当于Android 1.6)一样新。 现在,当你选择“运行”——“从Eclipse菜单运行”时,应当可以看到在设备上运行的选项。Android SDK将会在设备上安装应用,随后开始运行该应用。我们可以使用后退或Home键返回主菜单,但是同所有的Android应用一样,你的游戏将继续在后台 运行。Android智能设备不会显示游戏运行画面,虽然设备不会耗费内存周期来更新不可见的屏幕画面,但游戏的运行仍需要消耗些许内存周期。要停止或卸 载应用,使用设备上的“设置”——“应用程序”——“管理应用程序”功能即可。 总结 本章涵盖了诸多内容。我们浅析了Android SDK,介绍了Android和游戏组件:镜头;场景;层次;精灵;实体;修改器;纹理;质感区域;引擎;BaseGameActivity;物理连接器。 我们介绍了许多可以用来生成手机游戏组件的工具,包括:Inkscape:用于可缩放矢量图像;GIMP:用于位图图像;AnimGet:用于动画捕捉;Tiled:用于编辑tile地图;Audacity:用于音频编辑;MuseScore:用于制作音乐。 最后,我们开始制作V3游戏。我们使用Android SDK Wizard创建Android项目,添加AndEngine库,添加代码恰当地执行AndEngine初始化,为游戏制作出开场画面。 转载自:游戏邦,原文链接 |