Marmalade C++ 和 ShiVa3D: 适用于 Android x86 的游戏引擎指南






4.56/5 (4投票s)
本指南将详细介绍使用 Marmalade C++ SDK 7.1 和 ShiVa3D 游戏引擎为 Android x86 架构构建跨平台 Android 应用程序的详细步骤。
Intel® Developer Zone 提供跨平台应用开发工具和操作指南、平台和技术信息、代码示例以及同行专业知识,帮助开发者创新并取得成功。加入我们的社区,获取 Android、物联网、Intel® RealSense™ 技术和 Windows 的开发工具、访问开发者套件、与志同道合的开发者交流想法,并参与黑客松、竞赛、路演和本地活动。
正在构建跨平台 Android 应用?此前,我们分享了如何使用 Unity* 游戏引擎为 Android* 应用添加 x86 支持,以及如何使用《虚幻* 引擎 4》等游戏开发套件。然而,在本指南中,我们将详细介绍使用 Marmalade C++ SDK 7.1 和 ShiVa3D 游戏引擎为 Android x86 架构构建跨平台 Android 应用程序的详细步骤。
Marmalade C++ SDK
Marmalade SDK 是一个跨平台软件开发套件,包含开发、测试和部署移动设备应用程序所需的库文件、示例、文档和工具。
Marmalade SDK 的基本理念是“一次编写,随处运行”,这样就可以将单一代码库编译并在所有支持的平台上执行,而不是为每个平台使用不同的编程语言和不同的 API 进行编写。这是通过提供一个基于 C/C++ 的 API 来实现的,该 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 bundle
- Android NDK
- Apache Ant (可选)
在开始构建项目之前,需要更新一些环境变量
- 设置 ANDROID_SDK_ROOT = 提供 SDK 文件夹的完整路径。例如:在我这里,我将 ADT bundle 下载并解压到 D:\android\,所以我的路径是: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
- 更新 Path 变量,使其包含以下内容:JDK 文件夹的路径、JDK bin 文件夹的路径、NDK 路径、Ant bin 文件夹的路径、SDK tools 文件夹的路径以及 SDK platform-tools 文件夹的路径,每个路径之间用分号 (;) 分隔。例如,在我这里,我将添加以下内容:
%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
注意:任何变量的末尾都不要包含 \ 或 ` 或任何特殊字符。
现在您已准备好下载 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 项目,您需要创建以下两个文件:
- HelloWorld.mkb
Marmalade 使用扩展名为 .MKB 的纯文本文件格式来存储项目信息,包括:
- 构建选项
- 子项目
- 源文件
- 资源(图形、音频等)
- 部署选项
有关 MKB 文件的深入知识,请参考官方文档。
- HelloWorld.cpp
这将包含应用程序的源代码。
运行项目的步骤
- 导航到您之前创建的
HelloWorld.mkb
文件并双击它。 - 您会看到它执行了许多功能,并自动生成了两个新的子文件夹,其中包含构建文件。
- 生成的 Visual Studio 项目随后将在 Microsoft Visual Studio 中打开进行编辑、编译和/或测试,如下图所示。
- 要使用 Marmalade 的 x86 模拟器进行编译和运行,请进行以下更改:
- 点击 Debug > HelloWorld_vc11x Properties…
- 将打开以下窗口。然后点击 Configuration Manager(如下图中圈出)
- 从下拉菜单中选择 x86 Debug 选项(如下图所示),然后点击 Close 按钮。
- 现在,点击 Debug > Start Debugging 选项(如下图所示)。
- 您可能会收到一个警报(如下图所示),点击 Yes。
- 如果出现警告(如下图所示),再次点击 Yes。
- 项目将成功调试并运行,输出如下:
- 点击 Debug > HelloWorld_vc11x Properties…
使用命令行
- 打开命令提示符。
- 导航到项目目录。
- 输入以下命令:
>>mkb.bat Hello.mkb --execute --rebuild
这将为所有变体(ARM 和 x86)重新构建项目。 - 按如下方式在 mkb 文件中配置 x86 选项:
option
{
android-x86
}
D:\MarmaladeProject> mkb.bat Hello.mkb --execute --debug
D:\MarmaladeProject> mkb.bat Hello.mkb --execute --Release
这将为选定的变体构建项目。
重要提示:要在命令行中运行,请将 s3e 二进制文件路径附加到系统 PATH 环境变量中。
例如:setPATH=%PATH%;D:\Marmalade\7.0\s3e\bin;
或者更新位于“此电脑->属性->高级系统设置->高级->环境变量->系统变量”中的 PATH 系统变量,以包含 s3e 二进制文件路径。
MyComputer->Properties->AdvancedSystemSettings->Advanced->Environment Variables->System variables to contain the s3e binary path
通过 Marmalade Hub
在 Windows 开始菜单中找到“Marmalade Hub”并运行它。
当窗口出现时,点击“Marmalade C++”(如下图左侧)。
如果显示欢迎屏幕(如上图右侧),请点击 Close 继续(如下图中圈出)。然后点击 Create New Project 按钮(如下图所示)。
之后,您将看到以下表单:
- Project Name:输入项目名称。在本例中,是
HelloWorld1
。 - Create In:输入要创建项目的文件夹(相当于手动过程中的
{$PROJECT PATH}
)。
然后点击 Create Project 按钮。您将看到以下屏幕:
Marmalade Hub 不允许编辑源文件,而是提供了一个 Open in IDE 功能,该功能将使用默认 IDE 打开项目,您可以在其中编辑源文件。点击 Open in IDE 按钮在 Visual Studio 中打开项目。
要调试和运行项目,请按照文档前面手动部分“运行步骤”中的第 4 步进行操作。成功执行后,您可以通过点击 Marmalade Hub 屏幕中的 Run 按钮(如下图所示)来运行应用程序。
输出或二进制文件
构建过程完成后,假设主机上安装了 Visual Studio Xpress 2010,则二进制文件生成如下:
- <projectfolder>/build_<projectName>_vc10x/Debug_IwGx<projectName>_vc10x_gcc_X86_android/IwGx<projectName>.so
- <projectfolder>/build_<projectName>_vc10x/Debug_IwGx<projectName>_vc10x_gcc_X86_android/IwGx<projectName>.obj
例如
- C:/Marmalade/7.0/examples/HelloWorld/build_iwgxhelloworld_vc10x/Debug_IwGxHelloWorld_vc10x_gcc_X86_android/IwGxHelloWorld.so
- C:/Marmalade/7.0/examples/HelloWorld/build_iwgxhelloworld_vc10x/Debug_IwGxHelloWorld_vc10x_gcc_X86_android/IwGxHelloWorld.obj
Marmalade SDK (7.1) 仅支持基于 IDE 中运行配置或 mkb 文件中的 options 标签指定/配置的选项的单个 APK。它不支持 FAT 二进制文件,也就是说,一次只能生成 x86 或 ARM 的 APK。
生成多个 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 Edition 是一个免费、无限制且功能齐全的版本,可用于测试目的。
除了编辑器外,您还可以使用ShiVa3D Authoring Tool 来编译由编辑器生成的 Windows、Mac OS、Linux、iPhone、iPod、iPad、Android、BlackBerry QNX 和 Palm 的源文件。
ShiVa3D 安装
在使用 ShiVa3D 之前,您需要满足某些先决条件。请注意,此处假定您将在 Windows 上进行开发。
- Windows 要求
- 需要 Windows 7 或更高版本。
- 下载列表
- 下载 Android ADT Bundle
- 下载 NDK
- 下载并安装 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 构建项目。
- autoconf, automake, binutils, gcc-core, gcc-g++, gcc4-core, gcc4-g++, gdb, pcre, pcre-devel, gawk, make, python
- 下载 JDK
- Apache Ant
- Microsoft Visual Studio C++ Express:下载Microsoft Visual Studio。
- 环境变量编辑列表
- 设置 JAVA_HOME = 您安装 JAVA JDK 的路径,对我而言是:C:\Program Files\Java\jdk1.7.0_45
- 设置 ANDROID_SDK_ROOT = SDK 文件夹的完整路径。例如:在我这里,我将 ADT bundle 下载并解压到 D:\android\,所以我的路径是:D:\android\adt-bundle-windows-x86-20131030\sdk
- 设置 NDK_ROOT = NDK 文件夹的完整路径,我的路径是:D:\android\android-ndk-r9b
- 设置 ANT_HOME = ANT 文件夹的完整路径,对我而言是:
C:\ant\apache-ant-1.9.2
- 更新 Path 变量,使其包含以下内容:JDK 文件夹的路径、JDK bin 文件夹的路径、NDK 路径、Cygwin bin 文件夹的路径、ANT bin 文件夹的路径、SDK tools 文件夹的路径以及 SDK platform-tools 文件夹的路径,每个路径之间用分号 (;) 分隔。例如,我添加了以下内容:
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 Edition
您可以在以下网址下载 ShiVa3D:http://www.stonetrip.com/download.html
在该页面您会找到很多选项。请选择与 Web 版本对应的选项(如下图所示)。
此软件包将包含以下内容:ShiVa Editor、ShiVa Authoring Tool、ShiVa Mobile Development Tools、ShiVa Server PLE 和 ShiVa Players。
使用 ShiVa3D 导出第一个应用程序的步骤
- 点击 General > Game Editor > Game > Export… 导出您的应用程序(如下图所示)。
- 填写表单并点击 Export(如下图所示)。我的导出文件夹是:D:\ShiVa3D_prog\game_export。您可以选择任何您偏好的文件夹。
注意:导出应作为单个 .stk 文件进行,如下图所示。
使用 ShiVa3D Authoring tool 构建第一个应用程序的步骤
- 关闭 ShiVa Editor 并运行 ShiVa3D Authoring tool。您将看到一个类似下面的窗口。
- 双击选择 Android 选项,将显示一个类似下面的屏幕。
- 在相应的输入框中导入上一步导出的应用程序,方法是选择 folder 选项(圈出)并浏览到该文件。同样,您可以通过点击其对应的 folder 图标(圈出)并导航到所需文件来添加图标或启动闪屏的图像。
- 点击右下角的 Settings 选项(圈出),将显示下面的屏幕。
- 点击其对应的 folder 图标并导航到相应文件夹,添加 Cygwin、Android NDK 等所需软件包的文件夹。
- 然后点击 OK,您将返回到之前的屏幕。
- 点击 Step 2: Authoring(如下图所示)。
- 在圈出的位置输入软件包名称(如下图所示)。
- 然后点击 Step 3: Build,将显示一个类似下面的屏幕,您可以在其中设置最低 Android API 级别、CPU 支持和输出文件夹。
- 选择适当的值后,点击右下角的 Build 选项(如下图中圈出)。
- 构建成功后,您将看到以下屏幕。
在 ShiVa3D 的情况下,我们只能通过 ShiVa3D Authoring tool 进行构建,它有一个 GUI。没有命令行选项。下面记录了配置 GUI 选项的步骤。
- 如何配置 x86 平台
- 首先,使用 ShiVa Editor 开发并导出您的游戏。请确保在导出的文件名中,除了 a-z、A-Z、0-9 或 _ 之外,不使用任何其他字符(任何其他字符都会在构建过程中导致错误)。重要的是,游戏必须先由 ShiVa Editor 导出,否则我们将无法在 ShiVa3D Authoring tool 中对其进行操作。
- 现在打开 ShiVa3D Authoring tool 并双击 Android 选项。按照上面提到的步骤进行,但有以下区别:
当您执行上述 g-h 步骤时,您会看到一个名为 Authoring Type 的选项(如下图所示)。
默认情况下,此字段的值为 APK Package。如果您只想获取可以直接安装在设备上的应用程序的 .apk 文件,请保持不变。
注意:在这种情况下,您将不会获得任何二进制文件,因为它们将存储在 Windows 临时文件夹中,并且在构建完成后会被删除。
如果您对二进制文件而不是 .apk 文件感兴趣,请从下拉列表中选择第二个选项:Project。这将确保生成一个 .zip 文件,其中包含所有二进制文件。但是,在这种情况下,.apk 包文件不会生成。
上述 .apk 或 .zip 文件的生成输出文件夹在步骤 i 中指定。您将看到以下窗口,当您向下滚动时,会显示 Output folder 选项。
在这里,您可以通过使用 folder 图标并浏览到所需的文件夹,或者键入完整路径来输入所需的输出文件夹。
要为 x86 平台进行构建,请点击 Output folder 选项上方的 CPU support 选项(如下图所示)。从下拉菜单中选择 x86 选项。请注意,此选项的默认值为 Default,需要将其更改为 x86 才能为 x86 目标构建游戏。
如果 Minimum OS Support 字段的值小于 API – 9,则可能会出现错误。请选择合适的 API 级别(如下图所示)。
- 构建输出
确保您已根据前面的部分中的说明进行了更改后,您就可以为 x86 目标平台构建游戏了。输出取决于您选择的是APK Package
还是Project
,但无论哪种,都会位于 Output folder 中。我的输出文件夹是:D:/ShiVa3D_prog/authoring_tool_output如果您选择了 APK Package,则该文件夹包含一个
.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 文件、资源文件和构建文件。