零、前言

做游戏会上瘾,也很有收获,一旦你开始做,就很难停下来。当我们遇到绊脚石时,问题就来了,因为我们不知道如何实现一个功能,或者也许将它集成到我们的游戏中。这本书是一个旋风之旅,尽可能多的安卓 2D 游戏功能,可以压缩成 11 章。

用于构建难度不断增加的三个游戏的每一行代码都显示在书的正文中,并以简单明了的方式进行了解释。

稳步建立,以实现一个灵活和先进的游戏引擎,使用 OpenGL ES 2 快速流畅的帧速率。这是通过从一个简单的游戏开始,逐步增加一步一步构建的三个完整游戏的复杂性来实现的。

实现酷功能,如雪碧表角色动画和滚动视差背景。设计和实现真正具有挑战性和可玩性的平台游戏级别。

学习编写基本和高级碰撞检测代码。让 2D 旋转、速度和碰撞背后的数学变得简单。以每秒 60 帧或更高的速度运行您的游戏设计。

处理多点触摸屏输入。实现许多其他游戏功能,如皮卡,发射武器,平视显示器,生成和播放声音 FX,风景,水平过渡,高分,等等。

这本书涵盖了什么

第 1 章玩家 1 UP ,是对我们将要打造的三款酷玩游戏的介绍。我们还将建立开发环境。

第二章TappyDefender–第一步,是关于规划游戏项目和获取我们第一个游戏引擎的代码并运行。我们将实现一个主游戏循环,控制帧率,并绘制到屏幕上。

第三章TappyDefender–乘坐飞行,教我们在背景中加入很多新的物体和一些功能,比如玩家控制、敌人和滚动的星星。在碰撞检测部分,我们将讨论我们的碰撞检测选项,并为这款游戏实现一个高效的解决方案。

第四章TappyDefender–回家,完成游戏,包括添加高分、胜利条件、音效 FX 等。

第 5 章Platformer–升级游戏引擎,很好地理解了一个简单的游戏引擎需要什么。我们可以快速了解并构建一个更先进、更灵活的引擎,适合一款真正强悍、复古的 2D 平台游戏。

第 6 章Platformer–Bob、哔哔声和 Bumps ,使用我们新的游戏引擎添加了一个管理声音 FX 的类和一个实现这类游戏所需的更复杂玩家控件的类。然后我们可以让鲍勃,我们的可玩角色,成为一个动画的奔跑跳跃英雄。

第 7 章平台-枪、生命、金钱和敌人,继续前两章的主题;我们在这个中添加了大量的特性。我们将增加可收集的皮卡和电源,一个致命的归巢敌人,和一个巡逻警卫。当然,有了这些,鲍勃将需要一把机关枪来保护自己,他得到了一把!

第八章Platformer——综合,是我们平台游戏起死回生的地方。我们将添加许多新的平台图块类型和场景对象、多个滚动视差背景、碰撞检测和传送系统,以便鲍勃可以在游戏的各个级别之间移动。使用我们的瓷砖类型,风景物体和背景的范围,我们将实现四个可玩的水平通过传送系统连接在一起。

第九章小行星以 60 FPS 的速度用 OpenGL ES 2 完成,包含了本书的最终项目,这是一个用超快的 OpenGL 图形库介绍 2D 游戏。在这一章中,我们将快速学习如何使用 OpenGL ES 2 进行绘制,并将绘制系统集成到我们的游戏引擎中。在这一章的最后,我们将有一个工作引擎,将小行星风格的宇宙飞船绘制到屏幕上。

第 10 章用 OpenGL ES 2 移动和绘制,是我们将从上一个项目中快速集成我们的声音和控制系统的地方。然后,我们可以添加一个游戏边界,闪烁的恒星系统,旋转的小行星,一个整洁的平视显示器,难度递增的关卡,以及玩家飞船的速射炮。

第十一章去撞的东西–第二部分,通过增加碰撞检测完成小行星游戏。检测与不规则形状的旋转小行星碰撞所需的数学变得简单,并在游戏引擎中实现。到本章结束时,你将拥有第三个也是最后一个完全可玩的游戏。

这本书你需要什么

运行在任何主要操作系统上的 Eclipse 或 Android Studio 的任何最新免费版本都可以使用本书中的代码。

Android Studio 是推荐的开发工具,在发布时,最低系统要求是:

对于窗口:

  • 微软视窗 8/7/Vista/2003 (32 或 64 位)
  • 最小 2 GB 内存,推荐 4 GB 内存
  • 400 兆硬盘空间
  • 安卓软件开发工具包、模拟器系统映像和缓存至少 1 GB
  • 1280 x 800 最小屏幕分辨率
  • Java 开发工具包(JDK) 7
  • 加速仿真器可选:支持英特尔 VT-x、英特尔 EM64T(英特尔 64)和执行禁用(XD)位功能的英特尔处理器

对于麦克·OS X:

  • Mac OS X 10.8.5 或更高,最高 10.9(小牛)
  • 最小 2 GB 内存,推荐 4 GB 内存
  • 400 兆硬盘空间
  • 安卓软件开发工具包、模拟器系统映像和缓存至少 1 GB
  • 1280 x 800 最小屏幕分辨率
  • Java 运行时环境(JRE) 6
  • Java 开发工具包(JDK) 7
  • 加速仿真器可选:支持英特尔 VT-x、英特尔 EM64T(英特尔 64)和执行禁用(XD)位功能的英特尔处理器

在 Mac OS 上,运行搭载 Java 运行时环境(JRE) 6 的 Android Studio,实现优化的字体渲染。然后,您可以将项目配置为使用 JDK 6 或 JDK 7。

对于 Linux:

  • GNOME 或 KDE 桌面
  • GNU C 库(glibc) 2.15 或更高版本
  • 最小 2 GB 内存,推荐 4 GB 内存
  • 400 兆硬盘空间
  • 安卓软件开发工具包、模拟器系统映像和缓存至少 1 GB
  • 1280 x 800 最小屏幕分辨率
  • 甲骨文 Java 开发套件(JDK) 7

在 Ubuntu 14.04、Trusty Tahr(能够运行 32 位应用程序的 64 位发行版)上进行了测试。

这本书是给谁的

这本书最适合现有的安卓或 Java 程序员,他们希望调整自己的技能来制作令人兴奋的安卓游戏。

这本书也是为那些可能没有安卓、游戏编程甚至 Java 经验,但是对面向对象编程有很好理解的读者准备的。

此外,一个坚定的编程初学者,至少有一些面向对象的经验,可以遵循和建立所有的项目,因为这本书的一步一步的方法。这本书也非常适合已经完成通过构建安卓游戏学习 Java 的读者。

惯例

在这本书里,你会发现许多区分不同种类信息的文本样式。以下是这些风格的一些例子和对它们的意义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:“我们将首先添加所有类,然后在通常的三个地方更新LevelManager

代码块设置如下:

if (lm.isPlaying()) {
  // Reset the players location as 
  // the world centre of the viewport
  //if game is playing
  vp.setWorldCentre(lm.gameObjects.get(lm.playerIndex)
    .getWorldLocation().x,
    lm.gameObjects.get(lm.playerIndex)
    .getWorldLocation().y);

当我们希望将您的注意力吸引到代码块的特定部分时,相关的行或项目以粗体显示:

 //Has player fallen out of the map?
 if (lm.player.getWorldLocation().x < 0 ||
 lm.player.getWorldLocation().x > lm.mapWidth ||
 lm.player.getWorldLocation().y > lm.mapHeight) {

新名词重要词语以粗体显示。你在屏幕上看到的单词,例如,在菜单或对话框中,出现在文本中,如下所示:“在接下来显示的创建新项目窗口中,我们需要输入一些关于我们的应用程序的基本信息。”

警告或重要提示会出现在这样的框中。

类型

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。

要给我们发送一般反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>,并在您的邮件主题中提及书名。

如果你对某个主题有专业知识,并且对写作或投稿感兴趣,请参见我们位于www.packtpub.com/authors的作者指南。

客户支持

现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

您可以从您在http://www.packtpub.com的账户下载您购买的所有 Packt Publishing 书籍的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。

下载本书的彩色图片

我们还为您提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。彩色图像将帮助您更好地理解输出中的变化。您可以从以下网址下载此文件:https://www . packtpub . com/sites/default/files/downloads/0122 OS _ coloredimages . pdf

勘误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现了错误——可能是文本或代码中的错误——如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表 提交 表格链接,并输入您的勘误表详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

盗版

互联网上版权材质的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。

请通过<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,获取疑似盗版资料的链接。

我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以在<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们将尽最大努力解决问题。