11

我一直在为我未来的游戏使用 C++ 开发游戏引擎运行时环境,并开始将 android 视为一个平台。我注意到它与 Java 紧密绑定并大量使用 Java VM。

但是否有可能在 Android NDK 中维持完整的 C++ 运行时环境?我对 Java 没有任何反对意见,如果必须,我准备使用它,但性能是我最关心的问题之一(我打算让我的游戏资源密集型),尤其是在手机上。

如果一个完整的 C++ 环境是可能的,我将如何在 Eclipse Indigo CDT 中实现它?我是否能够提前为 Android 创建一个已编译的游戏可执行文件以获得最佳性能?我需要在 Eclipse 中安装任何其他插件吗?我可以使用 MinGW 来编译我的游戏,还是需要使用不同的编译器?如果我必须以一种或另一种方式使用 Java,是否甚至需要编译 C++ 代码?这些都是我想回答的所有问题,以便在 Eclipse IDE 中获得一个坚固的开发环境。

请注意,我对 Android 开发和一般的多平台编程还很陌生。我的目标是创建一个能够充分利用新硬件的游戏引擎,尤其是在手机上!

感谢你们提供的任何建议!

4

3 回答 3

9

在 Android 2.3 (API 9) 中添加的 NativeActivity 可能是您正在寻找的仅使用 C++ 编写 Android 游戏的内容。http://developer.android.com/reference/android/app/NativeActivity.html

但是,既然您说您是新手,您可能希望从当前可用的 Android 游戏引擎之一开始,而不是立即编写自己的游戏引擎。与其他平台相比,移动设备有一组非常不同的约束。如果电池在下午没电了,手机就不是很有用了,所以以“资源密集型”为目标的项目开始已经是一个糟糕的开端。很少有人愿意在这里和那里玩你的游戏 20 分钟,如果这意味着他们晚上不能打电话的话。

如果您的意思是您正在为高端图形拍摄,请记住,设备在该领域具有广泛的功能,并且仅针对高端限制了您的观众。不同的 GPU 具有非常不同的策略和性能特征,并且都有表现出色或落后的情况。最成功的手机游戏不是具有最高多边形数或最复杂的光照着色器的游戏,而是能够实现始终如一的流畅帧率和独特风格的游戏。

查看一些现有的 Android 游戏引擎并尝试一下。写几个小游戏让他们试驾一下,看看他们在哪里做,而不是与你想做的事情相吻合。如果您发现自己对可用的内容感到有限,请利用您所学的知识并尝试编写适合您想要制作的游戏类型的自己的引擎。

这里有一些链接可以帮助您入门。这些引擎为 Android Market 上一些非常流行的游戏提供动力,许多开发者发现它们很有用:

http://www.andengine.org/ andengine 是用 Java 编写的并且是开源的。

http://unity3d.com/ Unity 基于 C# 和 Mono。

http://www.madewithmarmalade.com/ Marmalade,以前的 Airplay SDK 基于 C++。

于 2011-10-01T19:01:22.200 回答
2

您要密切关注的答案是@adamp's。忽略他的回答,后果自负。

不过,要解决您问题中的其他几点:

我是否能够提前为 Android 创建一个已编译的游戏可执行文件以获得最佳性能?

不,只要 Android 不使用“编译的游戏可执行文件”。您的 C/C++ 代码将被编译成 Linux 共享对象 (.so) 文件,并与 APK 文件中的其他内容(如清单)一起打包。不过,编译 .so 会提前。

我可以使用 MinGW 来编译我的游戏吗?我需要使用不同的编译器吗?

我有一种明显的印象,即您会在尝试在 Windows 上的 Cygwin 中进行 NDK 开发时睁大眼睛。我衷心鼓励您在 OS X 或 Linux 上进行 NDK 开发。至少设置一个带有 Ubuntu 或其他东西的 VirtualBox 来进行 NDK 编译。

无论如何,NDK 都有自己的 GCC 编译器。AFAIK,MinGW 不是交叉编译器,大多数 Android 设备都没有在 x86 CPU 上运行。

如果我必须以一种或另一种方式使用 Java,是否甚至需要编译 C++ 代码?

是的。现在,对于 Honeycomb,您可以选择使用 Renderscript 进行 OpenGL 工作——这相当于一个 C99 环境,您不需要使用 NDK 编译其代码。

于 2011-10-01T19:25:59.407 回答
-1

我已经尝试了很多,我发现最好的一个可以立即交叉编译到一堆其他设备,让你用 HTML5/C++ 组合(sweeeeet)编写你的好东西是 MoSync(http://www.mosync 。 _ _ _

我注意到有一些虚拟机映像和教程可以用来避免设置麻烦。

于 2012-06-11T22:45:09.980 回答