十六、下一步是什么?

我们在这本书里谈了很多东西,但是关于开发 Android 游戏还有很多东西需要学习。如果你对本书中的所有内容都感到满意,你可能会想深入了解。这简短的一章为你的旅程提供了一些思路和方向。

位置感知

我们只是在第一章第一章和第四章第三章中简单地提到了这一点,我们没有在任何游戏中利用它。所有 Android 设备都带有某种类型的传感器,可以让你确定它们的位置。这本身是一个足够有趣的特性,在游戏中使用它可以产生一些创新的和前所未见的游戏机制。大多数安卓游戏几乎不使用这个功能。你能想出在游戏中使用 GPS 传感器的有趣方式吗?

多人游戏功能

这是一本初学者的书,我们还没有谈到如何创建多人游戏。可以说 Android 为你提供了这样的 API。根据游戏类型的不同,实现多人游戏功能的难度也不同。回合制游戏,如国际象棋或纸牌游戏,实现起来非常简单。快节奏的动作游戏或即时战略游戏完全是另一回事。在这两种情况下,你都需要对网络编程有所了解,这个主题在网上有很多资料。

OpenGL ES 2.0/3.0 及更多

到目前为止,可以说你只看到了 OpenGL ES 的一半。我们专门使用了 OpenGL ES 1.0,因为这是目前 Android 上支持最广泛的版本。它的固定功能特性非常适合 3D 图形编程。然而,有一个更新、更好的 OpenGL ES 版本可以让你直接在 GPU 上编码。它与您在本书中看到的非常不同,因为您负责所有的本质细节,例如从纹理中获取单个纹理元素或手动转换顶点的坐标,所有这些都直接在 GPU 上进行。

与 OpenGL ES 1.0 和 1.1 的固定功能管道相反,OpenGL ES 2.0 具有所谓的“基于着色器”或可编程的管道。较新的 OpenGL ES 规范,如 3.0,遵循相同的模型并向后兼容 2.0,所以我们只是将它们统称为 2.0。对于许多 3D(和 2D)游戏来说,OpenGL ES 1.x 已经足够了。但是,如果你想变得更有趣,你可以考虑看看 OpenGL ES 2.0!不要害怕——您在本书中学到的所有概念都可以很容易地转移到可编程管道中。

有一个谷歌支持的 Android 库,名为 Renderscript,这是一个高级接口,用于构建基于 OpenGL ES 2.0 的华丽效果,而没有使用其乏味的 API 实现它们的所有痛苦。不要误解我们——OpenGL ES 2.0 很棒,我们在这方面有丰富的经验——但是 Renderscript 无疑提供了一种创建许多图形效果的更简单的方法,并且它是 Android 股票版本附带的许多默认动态壁纸的核心。

我们还没有触及动画 3D 模型和一些更高级的 OpenGL ES 1.x 概念,如顶点缓冲对象。和 OpenGL ES 2.0 一样,你可以在网上找到很多资源,也可以在书里找到。Smithmick 和 Vernma 的Pro OpenGL ES for Android(a press,2012)有更深入的信息和关于 2.0 的一章。你知道最基本的。现在是时候学习更多知识了!

框架和引擎

如果你在购买这本书时对游戏开发知识知之甚少,你可能会想为什么我们不选择使用 Android 游戏开发中现有的框架。重新发明轮子不好,对吧?如果你想彻底理解其中的原理就不会。虽然学习它们有时可能会很乏味,但最终会有回报的。当你用你在这里获得的知识武装起来时,在那里获得任何预先设定的解决方案会容易得多,我们希望你能认识到给你带来的优势。

对于 Android,存在几种商业和非商业的开源框架和引擎。框架和引擎有什么区别?

  • 框架让你可以控制游戏开发环境的方方面面。这是以不得不找出自己的做事方式为代价的(例如,你如何组织你的游戏世界,你如何处理屏幕和过渡,等等)。在这本书里,我们开发了一个非常简单的框架,在这个框架上我们可以构建我们的游戏。
  • 对于特定的任务,引擎更加精简。它规定了你应该如何做事情,为你的游戏提供了简单易用的模块和通用架构。不利的一面是你的游戏可能不适合引擎提供给你的解决方案。通常,您必须修改引擎本身来实现您的目标,这取决于源代码是否可用。引擎可以大大加快最初的开发时间,但是如果您遇到一个问题,而该引擎并不是为这个问题而制造的,那么它们可能会使开发速度变慢,甚至停滞不前。

最后,这是个人品味、预算和目标的问题。作为独立开发人员,我们更喜欢框架,因为它们通常更容易理解,因为它们让我们按照我们希望的方式做事。

也就是说,选择你的毒药。这里有一个可以加速你开发过程的框架和引擎列表:

  • 虚幻开发套件 ( www.udk.com)::) 一个运行在众多平台上的商业游戏引擎,由 Epic Games 开发。史诗制作游戏,如虚幻锦标赛,所以这个引擎是优质的东西。它使用自己的脚本语言。
  • Unity(http://Unity 3d . com)::)又一个工具和功能都很棒的商业游戏引擎。它也可以在多种平台上运行,包括 iOS 和 Android,或者在浏览器中运行。它很容易学习,并允许一对夫妇的游戏逻辑编码语言;Java 不在其中。
  • jPCT-AE(www . jPCT . net/jPCT-AE/)::)Android 基于 Java 的 jPCT 引擎的一个端口。它在 3D 编程方面有一些很棒的特性。它可以在桌面和安卓系统上运行。闭源。
  • ardor 3D(www . ardor 3D . com)::)一个非常强大的基于 Java 的 3D 引擎。它可以在 Android 和桌面上运行,并且是开源的,有很好的文档。
  • libGDX(http://libGDX . badlogicgames . com)::)Mario zech ner 为 2D 和 3D 游戏开发的基于 Java 的开源游戏开发框架。它可以在 Windows、Linux、Mac OS X、HTLM5、iOS 和 Android 上运行,无需任何代码修改。您可以在桌面上开发和测试,而不需要连接设备和上传您的 APK 文件(或者必须使用缓慢的模拟器)。读完这本书后,你可能会有宾至如归的感觉——这都是我们邪恶计划的一部分。你有没有注意到这个点只是比其他的点稍微大一点?
  • Slick-AE(http://Slick . coke and code . com)::)基于 Java 的 Slick 框架到 Android 的一个移植,构建在 libgdx 之上。它有大量的功能和一个易于使用的 2D 游戏开发 API。当然是跨平台和开源。
  • and engine(www . and engine . org)::)一个不错的基于 Java 的,只支持 Android 的 2D 引擎,部分基于 libgdx 代码(开源为赢)。它在概念上类似于著名的 iOS 版 cocos2d 游戏开发引擎。
  • battery tech SDK(www . batterypoweredgames . com/battery tech)::)c++ 开源商业库,支持跨平台游戏代码,正式支持 Android、iOS、Windows、Mac OS X 作为构建目标。
  • Moai(http://get Moai . com)::)c++ 中的又一个开源商业库,以跨平台的游戏代码针对 Android 和 iOS。
  • 木瓜的社交游戏引擎(http://papayamobile . com/developer/Engine)::)免费的安卓专属 2D 游戏引擎,包括物理 API、OpenGL 支持、粒子特效等等。

越来越多的中间件、框架和引擎一直在出现,所以这个列表并不详尽。我们建议在某个时候尝试这些选项。他们可以帮助你加快游戏开发的速度。

网络资源

网络上充满了游戏开发资源。总的来说,谷歌将是你最好的朋友,但是有一些特别的地方你应该去看看,包括这些:

  • www.gamedev.net: 网络上最古老的游戏开发网站之一,拥有大量关于各种游戏开发主题的文章。
  • www.gamasutra.com: 游戏开发的又一个老巨人。更面向行业,有很多事后分析和对专业游戏开发世界的洞察。
  • 一个关于游戏开发的大型 wiki,里面充满了关于不同平台、语言等游戏编程的文章。
  • www.flipcode.com/archives/:现已不复存在的 flipcode 遗址的档案。这里可以找到一些珍珠。虽然有时有点过时,但它仍然是一个非常好的资源。
  • www . Java-gaming . org:Java 游戏开发者的头号去处。众所周知,像 T2《我的世界》的马库斯·佩尔森这样的名人经常光顾这个地方。

结束语

写这本书的时候,我们经历了许多不眠之夜,接着是几天布满血丝的眼睛。我们可以说,虽然生活中很少有什么事情比制作视频游戏和向他人传播我们的知识更让我们享受,但能坚持到这个项目的最后几段肯定是很棒的。

写这本书是一种乐趣(早上,没有那么多),我们希望我们给了你你来这里的目的。有太多的东西有待发现,太多的技术、算法和想法有待探索。这对你来说只是个开始。前面还有更多要学的。

我们相信,有了我们分析和讨论的材质,你就有了一个坚实的基础,这将使你更快地掌握新的思想和概念。再也不用陷入复制粘贴代码的陷阱了。更好的是,我们讨论的几乎所有东西都可以很好地移植到任何其他平台上(给予或接受一些语言或 API 差异)。我们希望你能看到全局,这将使你能够开始构建你梦想中的游戏。