作者: Clay Montgomery
本系列的第二部分将具体介绍最适合 Android 平板电脑的 3D 游戏引擎和中间件解决方案,包括免费软件、开源软件和专有选项。 此外,我还将指出哪些解决方案拥有适用于 x86 英特尔® 处理器的本地支持。
本系列的第一部分介绍了使用软件开发套件 (SDK) 和 Android 原生开发套件进行开发的游戏引擎、创作工具和中间件的基本概念和种类,并列出了适用于 2D 游戏开发的最佳解决方案。
3D 游戏引擎
3D 游戏引擎在 Android 设备上运行,通过创作工具解析内容,并通过 OpenGL ES* 来渲染图形。 除了 OpenGL ES 以外,它们还可提供其他基本服务,如渲染文本字体、检查触摸输入和提供音频和视频集成。 多数游戏引擎来源于 Windows* 平台,很晚才移动到 Android 平台。 一些引擎较为全面和成熟(如 Unity* 3D),但是尺寸更大且更昂贵;另一些引擎则为完全开源和免费(如轻型 Java* 游戏库 [LWJGL] 和 jMonkeyEngine)
最全面的解决方案甚至支持您将游戏从 OpenGL ES 移植到游戏控制台、Apple iOS* 设备、Linux* 和 Windows,这能够让您的应用更快地发布到更广泛的市场中,但是需要一定支付一定的费用。 通常,该费用根据所需的功能、针对的平台数量、开发团队规模和从游戏销售中的收入而划分为不同的级别。 当然,如果支付许可费或订阅费,将可获得更高的支持,但是如果要获取免费软件,可从用户论坛上在线获取。
一些游戏引擎与专有创作工具紧密集成,您需要支付许可费才能使用工具或引擎并发布游戏。 但是开源游戏引擎通常从多种创作工具(免费或付费)工具中导入内容,并使用多种工具标准的文件格式,以便交换 3D 资产,如 Autodesk 3ds Max* 对象文件或 Collada。
最后,一些中间件解决方案不完全是游戏引擎,但是能够免费或收取较少的费用来提供构建定制游戏引擎所需的部件,如 Imagination Technologies PowerVR* SDK 和 LWJGL。 如果您的应用仅限于一定范围内,不需要一个典型 3D 游戏的全部服务,或者需要源代码进行定制时,可以选择这些选项。
物理引擎
您的游戏可能需要一个物理引擎,使您的动画呈现自然的移动方式,即在运动中受约束的刚体几何上模拟重力、摩擦力、惯性和恢复运动,并执行碰撞检查。 游戏开发最常见的物理引擎有 Bullet、NVIDIA PhysX* 和 Box2D。 Bullet 和 Box2D 是免费的开源项目。 Box2D 仅限于 2D,但是 Bullet 和 PhysX 可提供 3D 碰撞检测以及针对可变形软体(如布料和绳索)的支持。 Android 上的多数 2D 游戏引擎(包括 Corona、LibGDX、GameMaker:Studio*、Gideros Studio 和 LWJGL)使用 Box2D;多数 3D 引擎使用 Bullet。 PhysX 专用于 NVIDIA;对于 Android 平台,它仅针对教育用途和非商业用途免费提供。 Unity 3D 和 DX Studio* 使用 PhysX。
Havok Project Anarchy*
Havok Project Anarchy* 是最近发布的一款游戏引擎,是移动游戏开发的全面工具套件。 它的许可支持您在 Android、Tizen* 和 iOS 平台上免费发布游戏。 它采用可扩展的 C++ 插件架构,包括 Havok 的视觉和物理引擎、动画和人工智能 (AI) 工具;灵活的资产管理系统;以及 Lua* 脚本编写和调试功能。 此外,SDK 中还可提供完整的游戏示例和丰富的课件。 Havok 要求开发人员成为营销合作伙伴,并使用 x86 工具进行编写,以便充分利用日益增长的采用英特尔处理器的 Android 平板电脑市场。 对于移动游戏开发人员而言,这是一款免费但专业的新选项。
Unity 3D
Unity 3D 是目前在 Android 市场上份额最大的 3D 游戏引擎。 它支持多种目标平台,包括 iOS、Windows 和游戏控制台。 Unity 3D 采用内置集成开发环境、PhysX 物理引擎、C#、JavaScript* 和 Boo 脚本语言;多层和网络支持;以及流传输资产。 此外,它还支持从多种创作工具中导入艺术资产(art asset)。 开发人员可以免费开始使用,但是如要在 Android 上发布则需要许可,而且许可费用是最高的。 Unity 3D 不支持采用英特尔 x86 处理器的 Android 设备,这限制了 Android 游戏市场采用 Unity 3D。
jPCT-AE
jPCT‑AE 引擎是一款易于习得且全部使用 Java 的 3D 应用编程接口 (API),它可为 Android 提供构建定制游戏引擎的基本功能。 它可免费用于个人和商业用途。 它支持 Autodesk 3ds Max 创作工具、骨骼动画、着色器、纹理压缩、碰撞检测、多种光照模式、透明度、烟雾和本地 x86 支持,可在采用英特尔处理器的 Android 平板电脑上提供更出色的性能。 它基于 LWJGL。
Gameplay
Gameplay 是一款免费、开源、跨平台的 C++ 3D 框架,旨在为台式机和移动游戏(包括 Android)的独立开发提供支持。 它包含一个全功能、基于节点的场景图形渲染系统,包括颗粒、Bullet 物理引擎、音频和用户界面 (UI) 系统等。 此外,它还包括适用于 Microsoft Visual Studio*、Xcode*、Eclipse* C/C++ 开发工具和 CMake 的解决方案和工作区。
Esenthel 引擎
该款面向 Windows、Linux、Mac* OS X*、iOS 和 Android 的基于 C++ 的现代化 2D 和 3D 游戏引擎支持脚本编写、多渲染器、动画系统、PhysX 和 Bullet 物理引擎以及流传输。 此外,它还包括地图编辑器 (world editor)、模型编辑器、数据浏览器和代码编辑器,并具备针对 Android 的原生 x86 支持,仅需单击一下,即可跨平台发布。 如果是非商业用途,Esenthel 引擎可无限次免费试用。
Linderdaum 引擎
Linderdaum 引擎是一款免费、开源、面向对象的 3D 游戏引擎,主要面向 Windows、Android 和 RIM BlackBerry* OS 10,使用 C++ 编写。 它是一款开发交互式 3D 应用的集成解决方案,包括游戏、工业和科学虚拟化。 此外,它还采用原生 x86 支持,可在采用英特尔处理器的 Android 平板电脑上提供更高的性能。
ShadingZen
ShadingZen 是一款免费的开源 2D 和 3D 游戏引擎,使用 Java 编写。 它专门针对采用 OpenGL ES 2.0 加速器且屏幕尺寸各异的 Android 移动设备而设计,采用流行的 Cocos2d 框架的设计,可轻松利用现代多核移动 CPU 来并行处理场景背后的任务。
Marmalade*
Marmalade* SDK 是一款使用广泛的跨平台 C++ SDK,支持大型游戏开发商用来开发新的 2D 和 3D Android 标题。 它支持多种移动平台使用 Visual Studio (适用于 Windows)或 Xcode (适用于 Mac OS X)。Marmalade SDK 支持使用 OpenGL ES ,但是对于构建 3D 游戏是一个相对较新的工具。 此外,该公司还提供了 Marmalade Quick,可使用 Cocos2d‑x 支持通过 Lua 脚本语言构建 2D 游戏;以及 Marmalade Juice,允许面向 Android 在 iOS 上以原生的方式重新编写 Objective‑C* 项目。 您可以在 30 天内免费评估这些工具,但是如要发布,则需要许可。 Marmalade SDK 还采用原生 x86 支持,可在采用英特尔处理器的 Android 平板电脑上提供更高的性能。
ShiVa3D
ShiVa3D 是一款 3D 游戏引擎、编辑器、创作工具、编译器和大型多人在线服务器,它可支持多种目标平台,包括 Android。 它包括高级着色系统、物理特性、平视显示器渲染、Lua 脚本编写、声音库 (sound library) 等。 ShiVa3D 采用单协议、免版税的定价结构,该结构可以覆盖 Marmalade SDK 支持的所有移动平台。
DX Studio*
DX Studio 是一款免费的 2D 和 3D 游戏引擎,它拥有一款自身的编辑器,专门用于 Windows(近期添加),并可提供对 Android 的支持。 它使用 PhysX 库来处理物理特性,并可通过几种常见的创作工具中导入内容。
SIO2 引擎
SIO2 是一款跨平台 2D 和 3D 游戏引擎,可在 Windows、Bada、webOS、iOS 和 Android 等多种平台上使用。 它包括 Lua 脚本支持、Bullet 物理特性、路径查找、声音 API、着色器、动画和网络支持。 SIO2 支持选择多种创作工具,包括多种导出插件选项。 可以使用免费的评估套件,但是如要发布,则需要许可。
Unigine*
Unigine* 是一款跨平台 3D 游戏引擎,适用于 Windows、Linux、Sony PlayStation* 3、Mac OS X、iOS 和 Android。 共有两个版本的 SDK 可用:一个适用于游戏,另一个适用于模拟、培训、实时视觉化和虚拟现实应用。 可以使用免费的评估套件来开发商业项目,但是如要发布,则需要许可。
LibGDX
最好的一款免费的开源 3D 解决方案是 LibGDX。 多数使用 Java,部分使用 C++,提供更高性能。 LibGDX 不区分 Windows、Linux 和 Android 平台,因此您可以在台式机 Windows 或 Linux* 电脑上随意开发,然后在 Android 设备上定义测试代码。 此外,LibGDX 还可使用支持 Mac OS X、iOS 和 Web 图形库的浏览器。 LibGDX 基于 LWJGL、OpenGL ES、FreeType、MPG123、Xiph、SoundTouch 音频处理库、Box2D、OpenAL 和 Kiss FFT。
轻型 Java* 游戏库
LWJGL 是一款免费的开源库,可用于在 Java 中开发商业质量的游戏。 它支持使用多种高性能、跨平台库,如 OpenGL ES、OpenCL™ 和 OpenAL,其中一些在 Java 平台上无法使用或较难部署。 LWJGL 支持使用 3D 声音开发 Android 游戏,并支持使用游戏板、方向盘和操纵杆等控制器。 许多以 Android 为目标的 2D 和 3D 游戏引擎使用该库,包括 jPCT‑AE 和 LibGDX。
jMonkeyEngine SDK
jMonkeyEngine 是一款免费的开源 3D 引擎,支持大胆的 Java 开发人员使用尖端技术创建 3D 游戏。 它包括用于地形塑造、影院、网络、输入、定制控制以及音频和视频的工具。 它支持 Windows、Linux、Mac OS X 和 Android 目标。 对于物理模拟,jMonkeyEngine 使用 jBullet(Bullet 物理库的 Java 端口)。jMonkeyEngine 的独特之处在于它与 Blender 创作工具紧密集成,从而构成一个完整的开源、免费 3D 游戏开发解决方案。
PowerVR* SDK
PowerVR SDK 可为多种平台(包括 Android)提供在 C++ 中构建定制游戏引擎的工具和库。 其中包括 PVRTexTool;对于采用 PowerVR GPU 的英特尔® 凌动™ 处理器,需要使用它将 2D 图像压缩成专用的 PVRTC 纹理格式。 此外,该 SDK 还包括 PVRGeoPOD 工具,可从多种常见的创作工具中导入内容,其中包括 Collada 以及全面的 OpenGL ES 示例程序教程。 该 SDK 为专用,但是您可以免费获得许可进行发布。 它作为 Android SDK 管理器的 Eclipse 插件提供。 按照 PowerVR 下载站点的步骤进行操作来安装 SDK。
表 1 展示了常见的 3D 游戏引擎和可用 SDK。
表 1. 3D 游戏引擎和 SDK
名称 | 语言 | 源代码 | 成本 | 英特尔® x86 支持 | 示例 |
---|---|---|---|---|---|
Havok Project Anarchy* | C++ | 是 | 免费 | 本机 | 教程 |
Unity* 3D | C#、JavaScript*、Boo | 否 | 分级 | 否 | AirAttack HD Lite |
LibGDX | C++ 和 Java* | 是 | 免费 | 可移植 | – |
jPCT-AE | Java | 是 | 免费 | 本机 | 将宣传单 3D 化 |
Gameplay | C++ | 是 | 免费 | 可移植 | 示例 |
Esenthel 引擎 | C++ | 是 | 分级 | 本机 | 示例 |
Linderdaum 引擎 | C++ | 是 | 免费 | 本机 | 示例 |
ShadingZen | Java | 是 | 免费 | 可移植 | 儿童游戏: 3D 立方体 |
Marmalade* SDK | C++ 和 Lua* | 否 | 分级 | 本机 | 高尔夫 3D 游戏 |
ShiVa3D | C++ 和 Lua | 否 | 分级 | 可移植 | 展示 |
DX Studio* | C++ | 是 | 免费 | 可移植 | 图片库 |
SIO2 引擎 | C/C++ 和 Lua | 是 | 分级 | 可移植 | 教程 |
Unigine | C++ | 否 | 分级 | 可移植 | Oil Rush |
轻型 Java 游戏库 | Java | 是 | 免费 | 可移植 | Space Invaders |
jMonkeyEngine | Java | 是 | 免费 | 可移植 | 展示 |
Imagination Technologies PowerVR* 软件开发套件 | C++ | 是 | 免费 | 可移植 | – |
结论
最近推出丰富的 2D 和 3D 游戏引擎资产、创作工具和中间件解决方案,以加速开发新应用,满足新一代 Android 平板电脑的大尺寸、高清显示器和 OpenGL ES 2.0 加速特性。 您可以采用这些软件解决方案,从多种语言、许可和成本选项中选择合适选项,以简化大部分 Android 平台的复杂性并提供视觉效果更逼真的用户体验,让您的应用脱颖而出。
更多信息
- 借助 OpenGL ES 实现显卡显示— Google 教程。
- 查看 Nathan Totura 撰写的 适用于 Android 的引擎。
- 参阅 Jerry Makare 撰写的英特尔® 展示移动显卡方面取得的新成果。
- 参阅 Clay D. Montgomery 撰写的面向 Android* 开发人员的英特尔学习系列计划 #11: 基于英特尔® 凌动™ 处理器的 Android* 的 OpenGL ES* 支持、性能和特性
关于作者
Clay D. Montgomery 是嵌入式系统 OpenGL 驱动程序和应用领域首屈一指的开发人员。 他曾在 STB Systems、VLSI Technology、Philips Semiconductors、Nokia、Texas Instruments、AMX 等公司担任过图形加速器硬件、图形驱动程序、API 和跨多平台 OpenGL 应用的设计师,也曾担任过独立咨询师。 他曾参与开发第一代面向 Freescale i.MX 和 TI OMAP 平台的 OpenGL ES、OpenVG* 和 SVG 驱动程序和应用,以及 Vivante、AMD 和 PowerVR 核心。 他曾在嵌入式 Linux 上开发过 OpenGL ES 并开办过关于该内容的研讨会,并曾代理过 Khronos Group 的多家公司。