Marmalade C++ 和 ShiVa3D:针对 Android X86 的游戏引擎指南

下载文档

构建一款跨平台 Android 应用? 之前我们分享了如何 使用 Unity* 游戏引擎向 Android* 应用添加 x86 支持,以及使用 Unreal* Engine 4等游戏开发套件。 不过在本指南中,我们将详述借助专门面向 Android x86 架构的 Marmalade C++ SDK 7.1 和 ShiVa3D 游戏引擎构建跨平台 Android 应用的分步式流程。

Marmalade C++ SDK

Marmalade SDK 是一个跨平台软件开发套件,包含开发、测试和部署移动设备应用所需的库文件、示例、文档和工具。

Marmalade SDK 的基本理念是“一次编写,在任何地方运行”,这样单一代码库可以在所有支持的平台上编译和执行,而非为每个平台使用不同的 API,用不同的编程语言编写。 这是通过提供一个基于 C/C++ 的 API(充当每个平台的核心 API 的抽象层)来实现的。

Marmalade SDK 提供了包含示例项目和教程的软件包,也有在线文档

设置

以下是在 Windows* 平台上使用 Marmalade 的步骤。 对于 Mac OS*,请参考这一文档

对于 Windows 平台,在实际安装 Marmalade SDK 之前,以下前提条件很有必要:

  • Windows 7 或更高版本
  • 必须安装 JRE 5 或新版本。
  • Microsoft Visual Studio* 2008SP/2010/2012 Express/Pro 版本
  • 需要装有 (C++)、Scons (C++) 和 ZeroBrane (Lua)
  • Android ADT 包
  • Android NDK
  • Apache Ant(可选)

在您开始构建项目之前,需要更新几个环境值:

  • 设置 ANDROID_SDK_ROOT = 提供 SDK 文件夹的完整路径。 例如:对于我而言,我在 D:\android\ 中下载并解压 ADT 包,因此我的路径为: D:\android\adt-bundle-windows-x86_64-20131030\sdk
  • 设定 NDK_ROOT = NDK 文件夹的完整路径,我的路径为: D:\android\android-ndk-r9b
  • 设定 JAVA_HOME = 您安装 JAVA JDK 的路径,对于我而言为: C:\Program Files\Java\jdk1.7.0_45
  • 设定 ANT_HOME = 您安装 Apache Ant 的路径,我的路径为: C:\ant\apache-ant-1.9.2
  • 更新路径变量,包含以下内容:JDK 文件夹的路径、JDK bin 文件夹、NDK、Ant bin 文件夹的路径、SDK 工具文件夹和 SDK 平台工具文件夹,每个用分号隔开 (;)。 例如,对于我而言,我将添加以下内容:

    %ANT_HOME%\bin;C:\Program Files\Java\jdk1.7.0_40\bin;D:\android\adt-bundle-windows-x86_64-20131030\sdk\tools;D:\android\adt-bundle-windows-x86_64-20131030\sdk\platform-tools;%JAVA_HOME%\bin

    NOTE: 不要将 \ 或 ` 或任何特殊字符作为任何变量的结尾。

现在您已经准备好下载 Marmalade SDK

使用 Marmalade SDK 进行面向 Android x86 的开发

Marmalade 提供三种创建项目的方式:

I. 手动
II. 通过命令行
III. 通过 Marmalade Hub

以下是使用这些流程创建 Hello World 项目的步骤。

注: 项目文件夹的路径将被称为: {$PROJECT PATH}. 例如,如果项目在 D:\Marmalade_Projs中,则为:

{$PROJECT PATH} = D:\Marmalade_Projs

使用 IDE 手动创建

若要手动创建 Hello World 项目,则必须创建以下两个文件:

  1. HelloWorld.mkb

    Marmalade 使用带扩展 .MKB 的纯文本文件格式来存储有关您项目的信息,包括:

    • 构建选项
    • 子项目
    • 源文件
    • 资产(图形、音频等)
    • 部署选项

    若要深入了解 MKB 文件,请参考官方文档

  2. HelloWorld.cpp

    这将包含应用的源代码。

运行项目的步骤:

  1. 导航至您之前创建的 HelloWorld.mkb 文件并双击该文件。
  2. 您将看到,它将执行很多功能并自动生成 2 个包含生成文件的新的子文件夹。
  3. 生成的 Visual Studio 项目将在 Microsoft Visual Studio 打开,以供编辑、编译和/或测试项目,如下所示:


     
  4. 若要使用 Marmalade 的 x86 模拟器进行编译和运行,进行以下更改:
    1. 点击 Debug > HelloWorld_vc11x Properties…


       
    2. 以下窗口将打开。 然后点击配置管理器(在下面的图中圈出):


       
    3. 按下所示,从下拉菜单中选择 x86 Debug 选项,然后点击 Close 按钮:


       
    4. 如下所示,现在点击 Debug > Start Debugging 选项:


       
    5. 您可能会获得一个如下所示的警告,点击 Yes:


       
    6. 如果系统发出警告,如下图所示,再次点击 Yes:


       
    7. 项目将调试并成功运行,并提供以下输出:


       

使用命令行

  1. 打开命令提示符。
  2. 导航至项目目录。
  3. 发出以下命令:
    >>mkb.bat Hello.mkb --execute --rebuild
    这将重新构建所有变量的项目(ARM 和 x86)。
  4. 按照以下方式,在 mkb 文件中配置针对 x86 的选项:
    option
    {
    android-x86
    }
    D:\MarmaladeProject> mkb.bat Hello.mkb --execute --debug
    D:\MarmaladeProject> mkb.bat Hello.mkb --execute --Release

    这些将为所选的变量构建项目。

    重要提示: 对于在命令行中运行,请将 s3e 二进制路径附加到系统 PATH env,
    例如:设置PATH=%PATH%;D:\Marmalade\7.0\s3e\bin;
    或更新
    MyComputer->Properties->AdvancedSystemSettings->Advanced->Environment Variables->System 变量中的路径系统变量,以包含 s3e 二进制路径

通过 Marmalade Hub

在 Windows Start 菜单中找到“Marmalade Hub”并运行。

当窗口出现时,点击“Marmalade C++”,如下所示(左侧):

如果显示欢迎界面(如右上图),点击 Close 继续,如下所示(圈出)。 然后点击 Create New Project 按钮,如下所示:

之后您将找到以下表格:

  1. 项目名称: 输入项目的名称。 在这种情况下为HelloWorld1
  2. 创建位置: 输入创建项目的文件夹(相当于手动流程中的 {$PROJECT PATH} )。

然后点击 Create Project 按钮。 您将看到以下界面:

Marmalade Hub 不支持编辑源文件,但提供了一个 Open in IDE 功能,支持使用可以编辑源文件的默认 IDE 打开项目。 点击 Open in IDE 按钮,在 Visual Studio 中打开项目。

若要调试和运行项目,按照第 4 步, 成功执行后,您可以通过点击 Marmalade Hub 界面的 Run 按钮来运行应用,如下所示:

输出或二进制文件:

构建流程完成后,假设 Visual Studio Xpress 2010 安装在主机上,二进制文件将如下生成:

  1. <projectfolder>/build_<projectName>_vc10x/Debug_IwGx<projectName>_vc10x_gcc_X86_android/IwGx<projectName>.so
  2. <projectfolder>/build_<projectName>_vc10x/Debug_IwGx<projectName>_vc10x_gcc_X86_android/IwGx<projectName>.obj

例如:

  1. C:/Marmalade/7.0/examples/HelloWorld/build_iwgxhelloworld_vc10x/Debug_IwGxHelloWorld_vc10x_gcc_X86_android/IwGxHelloWorld.so
  2. C:/Marmalade/7.0/examples/HelloWorld/build_iwgxhelloworld_vc10x/Debug_IwGxHelloWorld_vc10x_gcc_X86_android/IwGxHelloWorld.obj

Marmalade SDK (7.1) 仅支持单独的 APK(基于为 IDE 中运行配置的版本指定/配置的选项或 mkb 文件中的选项标签),但不支持 FAT 二进制文件,即,APK 可针对 x86 或 ARM 一次生成一个。

一旦您生成多个 APK,您可以使用多 APK 支持将其提交至 Google Play*。 这一功能允许您为针对 x86 CPU 架构的应用发布不同的 APK。

ShiVa3D* 游戏引擎

ShiVa3D 游戏引擎与 Marmalade 不同。 ShiVa3D 是一个带图形编辑器的 3D 游戏引擎,旨在创建面向 web、控制台和移动设备的应用和视频游戏。

它可以生成面向 Windows、Mac OS、Linux*、iPhone*、iPad*、BlackBerry* Tablet OS/BlackBerry 10、Android、Palm OS、Wii* 和 WebOS 的 3D 图形模拟,独立或嵌入在 web 浏览器中。

游戏引擎使用 OpenGL*、OpenGL ES* 或 DirectX*,还可以在软件模式下运行。 ShiVa3D 支持 NVIDIA PhysX*、FMOD* 声音库和 ARToolKit 等行业标准插件。

ShiVa3D Web 版 是一个免费、无限制的完整版本,可用于测试。

除了编辑器之外,您还有一个ShiVa3D 创作工具,支持您为 Windows、Mac OS、Linux、iPhone、iPod、iPad、Android、 BlackBerry QNX 和 Palm 编译由编辑器生成的源。

ShiVa3D 安装

使用 ShiVa3D 之前,您需要履行特定的先决条件。 请注意,这里假设您将在 Windows 中开发。

  1. Windows 要求
    1. 需要 Windows 7 或更高版本。
  2. 下载列表
    1. 下载 Android ADT 包
    2. 下载 NDK
    3. 下载并安装 Cygwin*Cygwin 是一个程序,可让您在 Windows 中获得 Linux 的感觉。 您可以在 Cygwin 上安装特定软件包,有一个类似于 Linux 的最小环境。 当系统提示选择软件包时,搜索下面的软件包并安装:
      • autoconf, automake, binutils, gcc-core, gcc-g++, gcc4-core, gcc4-g++, gdb, pcre, pcre-devel, gawk, make, python

        : 还是选择 make 的 GUI 版本为好;否则,您将无法使用 NDK 构建您的项目。
    4. 下载 JDK
    5. Apache Ant
    6. Microsoft Visual Studio C++ Express: 下载Microsoft Visual Studio.
  3. 环境变量编辑列表
    1. 设置JAVA_HOME = 您安装 JAVA JDK 的路径,对于我而言为: C:\Program Files\Java\jdk1.7.0_45
    2. 设置 ANDROID_SDK_ROOT = SDK 文件夹的完整路径。 例如:对于我而言,我将 ADT 包下载并解压到 D:\android\中,因此我的路径为: D:\android\adt-bundle-windows-x86-20131030\sdk
    3. 设置 NDK_ROOT = NDK 文件夹的完整路径,我的路径为: D:\android\android-ndk-r9b
    4. 设置 ANT_HOME = ANT 文件夹的完整路径,对我而言为: C:\ant\apache-ant-1.9.2
    5. 更新路径变量,包含以下内容 = JDK 文件夹的路径、JDK bin 文件夹、NDK、Cygwin bin 文件夹、ANT bin 文件夹、SDK 工具文件夹和 SDK 平台工具文件夹,每个用分号隔开 (;)。 例如,我将添加以下内容:

      D:\cygwin64\bin;C:\Program Files\Java\jdk1.7.0_40\bin;D:\android\adt-bundle-windows-x86_64-20131030\sdk\tools;D:\android\adt-bundle-windows-x86_64-20131030\sdk\platform-tools;%JAVA_HOME%\bin;%ANT_HOME%\bin

      注: 不要将 \ 或 ` 或任何特殊字符作为任何变量的结尾。

既然先决条件已经满足,您可以在 Windows 中下载并设置 ShiVa3D。

下载 ShiVa3D Web 版

您可以从以下网址下载 ShiVa3D: http://www.stonetrip.com/download.html

在该页面上,您将看到许多选项。 请选择与 Web 版相对应的选项,如下:

这一软件包将包含以下内容: ShiVa Editor、ShiVa 创作工具、ShiVa 移动开发工具、ShiVa Server PLE 和 ShiVa Player。

使用 ShiVa3D 导出您的第一个应用的步骤

  1. 点击 General > Game Editor > Game > Export… 按照如下方式导出您的应用:


     
  2. 按照如下描述填写表格并点击 Export。 我的导出文件夹为: D:\ShiVa3D_prog\game_export. 您可以选择任何文件夹。



    : 如上所示,导出应该作为单一的 .stk 文件。

使用 ShiVa3D 创作工具构建您的第一个应用的步骤

  1. 关闭 ShiVa Editor,运行 ShiVa3D 创作工具。 您将看到下面这样的一个窗口:


     
  2. 双击选择 Android 选项,下面的界面将显示:


     
  3. 选择文件夹选项(圈出)并浏览至该文件,在相应的位置导入在上一步中导出的应用。 同样,您可以点击其相应的文件夹图标(圈出)并导航到所需的文件,为图标或开机启动画面添加图像。


     
  4. 点击右下的 Settings 选项(上面圈出),下面的屏幕显示:


     
  5. 点击相应的文件夹图标并导航到相应的文件夹,为 Cygwin、Android NDK 等所需的软件包添加文件夹。
  6. 然后点击 OK,您将返回到之前的屏幕。
  7. 按照如下所示,点击 Step 2: Authoring。


     
  8. 在圈出的位置写出软件包名称,如下所示:


     
  9. 然后点击 Step 3: Build,如下所示的屏幕将显示,在屏幕中您将看到设置最低 Android API 级别、CPU 支持和输出文件夹的选项。


     
  10. 选择相应的数值后,点击右下方的 Build 选项,如上图圈出的位置。
  11. 成功构建后,您将看到以下界面:


     

在 ShiVa3D 中,我们只能够通过 ShiVa3D 创作工具进行构建,该工具有一个 GUI。 没有命令行选项。 针对 GUI 选项进行配置的步骤如下:

  1. 如何针对 x86 平台进行配置:
    1. 首先,使用 ShiVa Editor 开发和导出您的游戏。 请确保在导出的文件中,不要使用 a-z 或 A-Z 或 0-9 或 _ 以外的任何字符(其他任何字符将导致构建过程中出现错误)。 重要的是,如果游戏先由 ShiVa Editor 或其他软件导出,我们将无法使用 ShiVa3D 创作工具进行处理。
    2. 现在打开 ShiVa3D 创作工具并双击 Android 选项。 遵照上面提到的步骤,但有以下不同之处:
      当您执行上面提到的 g-h 步时,您将看到有一个称为 Authoring Type 的选项,如下所示:



      默认状态下,这一字段的值为 APK Package。 如果您只想要可以直接安装到设备上的应用的 .apk 包,保持不变即可。

      : 在这种情况下,您不会 获得任何二进制文件,因为它们将存储在 windows 临时文件夹中,并将在构建完成后删除

      如果您对二进制文件而非 .apk 软件包感兴趣,那么从下拉列表: 项目中选择第二个选项。 这将确保生成包含所有二进制文件的 .zip 文件。 不过在这种情况下不生成 .apk 软件包文件。

      生成上面提到的 .apk 或 .zip 文件的输出文件夹在 i 步中指定。您将看到以下窗口,随着向下滚动,该窗口将显示 Output 文件夹选项:



      在此处,您可以使用文件夹图标输入所需的输出文件夹,并浏览至您所需的文件夹,或输入完整的路径。

      为了针对 x86 平台构建,点击 CPU support 选项,该选项位于如下所示的 Output 文件夹选项上方。 从下拉菜单中,选择 x86 选项。 请注意,这一选项的默认值为 Default,它需要更改为 86 以构建面向 x86 目标的游戏。



      如果 Minimum OS Support 字段中的数值低于 API – 9,您可能会遇到错误。 请按照如下所示,选择一个合适的 API 级别:


       
  2. 构建输出:

    确保您添加了之前部分中提到的差异后,您已经准备好构建面向 x86 目标平台的游戏。 输出取决于您选择 APK 软件包 还是项目,但这两者都位于 Output 文件夹中。 我的输出文件夹为: D:/ShiVa3D_prog/authoring_tool_output

    如果您选择 APK 软件包,那么这个文件夹将包含一个 .apk 文件,例如:

    D:\ShiVa3D_prog\authoring_tool_output\FistApp_1-debug.apk

    如果您选择 Project,那么这个文件夹将包含一个 .zip 文件,例如:

    D:\ShiVa3D_prog\authoring_tool_output\FistApp_1_Android.zip

    这个 .zip文件将包含所有所需的二进制文件、清单文件、make 文件、资源文件和构建文件。

相关文章和资源

有关编译器优化的更完整信息,请参阅优化通知