为基于英特尔®架构的安卓*平板电脑开发移动游戏图形,第一部分





5.00/5 (1投票)
本第一部分介绍了游戏引擎和中间件的基本概念和类别,以帮助缩小您的选择范围,包括SDK与安卓原生开发套件(NDK)的开发。
引言
移动设备游戏和其他图形密集型应用市场正在爆炸式增长,重要的最新发展正在加速这一趋势。随着更好的硬件、软件和生态系统,安卓*游戏开发者的机会从未如此之好。但您应该从哪里开始呢?在本两部分系列的第一个部分中,我将探讨游戏引擎、图形软件开发工具包(SDK)和其他中间件的最新发展,这些将帮助您在安卓上快速启动您的游戏或图形密集型应用,并利用平板电脑上所有这些新的像素提供更丰富、更引人入胜的用户体验。
本第一部分介绍了游戏引擎和中间件的基本概念和类别,以帮助缩小您的选择范围,包括SDK与安卓原生开发套件(NDK)的开发。第二部分将详细介绍特定游戏引擎和中间件的优缺点,这些是安卓平板电脑2D和3D图形开发的良好选择,其中一些您可能从未听说过。游戏开发方面有大量令人难以置信的软件可用,但我将重点关注适用于安卓平板电脑的解决方案。
更好的硬件
新一代搭载英特尔®凌动™处理器的安卓平板电脑正在改变游戏规则。凭借更长的电池续航时间和大尺寸、高分辨率显示屏,很容易理解为什么这些设备正在取代许多用户和应用运行Windows*的笔记本电脑。当然,推动一百万或更多像素需要强大的图形处理单元(GPU),而英特尔平台(代号Clovertrail)上集成的SGX544MP2 GPU足以胜任。在英特尔代号Bay Trail的新平台上,提供了最新的英特尔HD显卡GPU,支持高达OpenGL ES 3.1。您可能会惊讶地发现,目前所有安卓设备中超过99%都内置了OpenGL ES* 2.0应用程序编程接口(API)的GPU加速。但是软件呢?安卓仍然有一个为手机设计的图形用户界面(GUI),大多数移动游戏仍然看起来像10-15年前的掌机游戏。充分利用所有这些新像素的游戏将脱颖而出。这就是机遇,但也是挑战。成功将需要利用最新的软件中间件和工具。
更好的软件
大尺寸、高分辨率显示屏需要更好的图形。以前在4英寸手机上看起来很酷的东西,在8英寸平板电脑上如果没有改进的软件,看起来会非常过时。您需要利用所有这些可用像素来提供更具视觉吸引力的用户体验。例如,简单地用带有动画或光照效果渲染的图像替换纯色和渐变,可以显著改善用户界面的外观。幸运的是,许多最近移植到安卓的图形SDK、游戏引擎和其他中间件可以提供帮助,但有几种选择可供选择,并且做出决定并非易事。这是一个关键的决定,因为任何中间件都可能需要投入大量时间学习,并且会直接影响您应用的外观和性能。因此,在本文中,我希望帮助您缩小选择范围——或者至少详细介绍一些您可能尚未考虑过的更好的选择。但首先,让我们定义一些重要的术语和中间件类别。
安卓*图形API
安卓内置了目前大多数应用使用的两个图形API:Canvas API和OpenGL ES。Canvas API是原始安卓框架的一部分,仅限于2D(尽管可以实现一些3D效果)和Java*技术。对OpenGL ES的支持也从一开始就存在于安卓中,但自Froyo发布以来,随着OpenGL ES 2.0的加入以及对C/C++与安卓NDK的支持,它得到了显著改进。Ice Cream Sandwich发布带来了安卓内部图形系统的重大重新设计,现在它严重依赖OpenGL ES 2.0,因为目前所有安卓设备中超过99%都内置了加速它的GPU。Canvas API也得到了改进,以使用OpenGL ES加速。开发人员现在可以选择从Java、原生C/C++或两者同时使用OpenGL ES 1.1或2.0,以及Canvas API。
SDK与安卓NDK
安卓框架SDK要求应用开发使用Java,但C/C++的NDK也可用。当然,您可以通过Java原生接口一起使用Java和C/C++。由于大多数安卓平台的功能只能通过SDK获得,谷歌建议您尽可能多地用Java实现代码,但开发人员有趋势在安卓上部分使用NDK的C/C++实现图形密集型应用。这种混合设计可能不是最优雅或最容易实现的,但如果您想使用一些最好的中间件并获得最佳性能,这是必要的。一些中间件选项仅在C/C++中可用,这就是为什么谷歌决定向应用开发人员开放NDK:利用大量现有的OpenGL*软件,这些软件通常是用C/C++编写的。好的纯Java选项也正在变得可用。其中一些试图提供原生代码性能,同时允许您的开发完全在Java中进行。
英特尔®凌动™处理器
英特尔凌动处理器在安卓上为Canvas和OpenGL ES API提供了出色的支持,具有OpenGL ES加速和比其他处理器类型更快的浮点运算。英特尔的软件支持包括用于安卓虚拟设备仿真的x86系统镜像、英特尔®硬件加速执行管理器和英特尔®图形性能分析器。这些工具使基于英特尔凌动处理器的安卓平板电脑应用开发更快、更容易,而且您甚至不需要基于英特尔凌动处理器的硬件就可以开始。
创作工具
如果您使用过OpenGL,您会看到书籍和网络教程展示如何绘制三角形或带纹理的立方体。但是更复杂的形状呢?以编程方式构建复杂的几何图形是乏味的;幸运的是,有一个更好的方法:创作工具。专业游戏开发人员使用Autodesk 3ds Max*、Autodesk Maya*或Blender等工具来构建带有纹理贴图、物理动画和光照效果的3D几何图形。
一些游戏引擎和SDK提供特定的创作工具或集成开发环境(IDE),它们紧密集成,特别是针对2D开发。通常,3D引擎支持主要的独立工具,并带有用于更紧密集成的插件,因为这是游戏开发人员所期望的。对创作工具的完整描述超出了本文的范围,但了解现代图形内容创建从这里开始至关重要,而且这些工具比以往任何时候都更容易访问、更容易学习和更广泛使用。这些工具的成本差异很大。例如,Blender是开源且免费的;网上有数百个视频教程可以帮助您学习如何使用它。您使用这些工具创建的内容可以导出为游戏引擎用于在安卓设备上渲染图形的一系列文件格式。
大多数游戏引擎和其他中间件都假设您正在使用创作工具来创建带有动画和光照效果的3D场景中的几何图形。这些工具在工作站上运行,以生成将复制到安卓设备并由游戏引擎或其他中间件渲染的内容。因此,您选择的创作工具可以决定哪些游戏引擎或中间件可供您使用(尽管大多数中间件支持多种创作工具)。
您可能认为如果您的几何图形很简单,就不需要创作工具或游戏引擎。比如说您只是想在屏幕上动画一些矩形。这很容易完全用代码完成,对吧?那么,您希望它们以模拟惯性移动吗?摩擦或重力效应呢?检测它们何时发生碰撞?创作工具创建旋转和缩放的关键帧动画,并为您应用这些物理效果。那些矩形上的一些2D图像呢,带有反射和镜面高光效果?创作工具还自动化生成OpenGL ES渲染带有光照效果的几何图形所需的纹理坐标和表面法线数据。游戏引擎从创作工具导入这些数据并进行渲染,以及检测碰撞并处理音频、触摸输入事件等等。这就是为什么使用创作工具对现代应用开发变得如此重要。
2D游戏引擎
当2D Canvas API内置于安卓中时,为什么还要使用2D游戏引擎呢?……因为游戏引擎提供更好的图形性能,大多数都直接基于OpenGL ES构建并绕过安卓Canvas API。尽管Canvas API也使用OpenGL ES,但其性能无法与可用的直接加速游戏引擎相比。安卓上的许多2D引擎已经相当成熟。事实上,许多已发布的游戏和集成功能可以为您节省大量开发时间,包括3D音频、网络和物理。有些引擎具有紧密集成的创作工具或IDE和模拟器,可以在安卓上测试之前在工作站上测试和调试您的游戏,这也加速了开发周期。最后,游戏引擎提供平台抽象,因此您也可以轻松地将您的游戏移植并发布到其他平台。
游戏引擎的许可和定价差异很大。一些2D引擎是开源且完全免费的,例如Cocos2D和AndEngine,但支持仅限于在线论坛。其他引擎提供分层定价模型,因此您可以免费开始开发,然后当您需要更多技术援助、高级功能或准备发布游戏时,支付订阅费或版税。有些允许免费发布,如果您能容忍它们的标志启动画面或有限的功能。通常,订阅费用随着您想要发布的平台数量和所需技术援助的数量而增加。表1显示了流行的2D游戏引擎和可用的SDK。
表1. 2D游戏引擎和SDK
名称 | 语言 | 源代码 | 成本 | 英特尔®x86支持 | 示例 |
---|---|---|---|---|---|
Cocos2D | C++ | 是 | 免费 | 可移植 | 牛与外星人 |
Corona SDK | C++ 和 Lua* | 否 | 分层 | 可移植 | 漫步 |
GameMaker:Studio* | Delphi 和 GML | 否 | 分层 | 原生 | 懒惰鼠标 |
AndEngine | C++ 和 Java* | 是 | 免费 | 原生 | 兔子射手 |
Gideros Studio | Lua | 否 | 分层 | 否 | Mashballs |
App Game Kit | BASIC 和 C++ | 否 | 分层 | 否 | 黑洞 |
Orx | C/C++ | 是 | 免费 | 可移植 | 重力 |
PlayN | Java | 是 | 免费 | 否 | Tupsu |
结论
新一代搭载英特尔凌动处理器、大尺寸、高分辨率显示屏以及OpenGL ES 2.0加速的安卓平板电脑,为应用开发人员创造了一个绝佳的机会,通过利用最近可用的丰富2D和3D游戏引擎、创作工具和中间件,在安卓上提供更具视觉吸引力的用户体验。针对这一新硬件的游戏和其他应用可以通过充分利用这些新的中间件和创作工具解决方案而脱颖而出。
本系列的第二部分将详细介绍适用于安卓平板电脑的最佳3D游戏引擎和中间件解决方案,包括免费、开源和专有软件。您还将发现哪些对x86英特尔处理器有原生支持。
更多信息
- 获取有关安卓设备上使用的屏幕尺寸和OpenGL ES版本的信息。
- 了解更多关于将OpenGL*游戏移植到英特尔®凌动™处理器上的安卓*系统。
- 使用OpenGL ES显示图形,一个谷歌教程。
- 查看Nathan Totura撰写的安卓游戏引擎。
- 查看Jerry Makare撰写的英特尔®展示移动图形新进展。
- 查看Clay D. Montgomery撰写的面向安卓*开发者的英特尔学习系列#11:英特尔®凌动™处理器上安卓的OpenGL ES*支持、性能和功能
关于作者
Clay D. Montgomery是嵌入式系统上OpenGL驱动程序和应用领域的领先开发人员。他的经验包括在STB Systems、VLSI Technology、Philips Semiconductors、Nokia、Texas Instruments、AMX以及作为独立顾问,在多个平台上设计图形加速器硬件、图形驱动程序、API和OpenGL应用程序。他在开发第一批用于Freescale i.MX和TI OMAP*平台以及Vivante、AMD和PowerVR*图形核心的OpenGL ES、OpenVG*和SVG驱动程序和应用程序方面发挥了关键作用。他开发并教授了关于嵌入式Linux*上OpenGL ES开发的研讨会,并代表多家公司参加了Khronos Group。