我可以在C ++中为移动平台开发游戏吗?


16

我精通C ++和C,也有使用C ++开发AAA游戏的经验。现在,我毫不客气地考虑着手开发iOS或Android手机游戏。不幸的是,我不了解Objective-C和Java,也没有勇气学习它。因此,如上所述,在不使用JAVA和Objective-C的任何声明的情况下,是否有可能在C ++中进行移动开发?

Answers:


13

必须为iPhone应用程序编写一些目标C。话虽如此,您可以编写一个非常薄的obj-c层,然后使用C或C ++完成所有游戏代码。

在android上查找NDK。我没有任何经验,但是它有望成为本机sdk,因此您应该能够用C或C ++编写大多数东西。

话虽如此,您在人为地限制语言障碍。在iOS上,如果您想对OS层(例如GameCenter,其社交平台)进行任何操作,或使用任何类型的中间件,则可能会遇到客观的C API。

我可以理解这种情绪。特别是C ++是一门巨大的语言。但是obj-c并不大。这是C语言的一个螺栓(因此应熟悉基本原理),并在顶部添加了一些其他内容。它不像C ++那样复杂或深入。


2
请记住,使用Android NDK意味着保留“编写一次部署到任何地方”的优势,因为您必须为多个平台编译代码,这可能会导致多个构建问题。NDK旨在用于从Java代码调用C函数,而不是编写整个应用程序(尽管仍然可以)。
FxIII

1
我也认为Google已明确声明不将NDK用于完整的游戏实现。此外,java语法几乎与C ++相同,应该花几天的时间才能掌握。如果您想赚钱,您可能应该专注于iOS游戏。
Nailer

你说什么Unity3D,如果我学习C#
詹姆斯伯尔尼

1
从Android 2.3开始,Google添加了本机活动,使您可以使用100%c ++编写完整的应用程序(主要用于游戏)。
2011年

我会推荐Unity3D,特别是如果您要部署到多个平台。如果您已经了解C ++,那么C#的学习并不难,并且其论坛内容是无数示例代码的佼佼者(尽管大多数代码都使用JavaScript)。
Doug.McFarlane 2011年

7

我已经用Android的c ++编写了一段时间的游戏。我必须每隔几周触摸一次Java代码,但是在大多数情况下,我修改了NDK附带的示例应用程序之一,否则编写了c ++。我还必须做一些JNI工作,这从没有乐趣。但是,我有多年的Java经验,因此必须编写Java或JNI不会特别让我失望。

我的游戏在Linux机器上的运行与在测试设备上的运行一样好。linux版本是纯C ++,每当我对游戏进行迭代更改时,我遇到的使这项工作付诸东流的麻烦便得到了回报。

我的项目有836行Java代码,331行丑陋的jni C代码和大约40k行C ++代码。


您是否使用可以针对每个目标自动构建的构建系统?我一直在使用CMake允许跨平台构建,并且想知道是否可以将其与ndk-build集成。
马丁·富特

我已经看到其他NDK项目使用CMake。
notlesh 2012年

4

还有Marmalade,它使您可以使用c ++为各种设备(例如iPhone,Android,Win Mobile,Bada等)创建移动应用程序。


2

我使用cocos2d-x已有一段时间,它是基于c ++的游戏引擎。(实际上是cocos2d-iphone的C ++端口)。使用此引擎,您可以轻松地在Windows上运行和测试您的代码,然后为iPhone / Android导出编译相同的代码。


现在也包括bada,并且有人在橘子果酱上使用了它-Andy
Dent

1

如果您真的只想要C ++,Marmalade可能对您有益

但是对于完整功能,您必须至少使用一些Objective-C (或java,但我在谈论“完整功能”)。但是只要用一薄层的Objective-C,您就可以完成很多工作,因此我建议您使用Xcode进行iOS开发。


如果您在Mac上使用Xcode,请尝试使用lua代替corona

有多种方法可以最大化在iPhone上运行的C ++代码。一个在Mac App Store中的免费程序能帮助在Objective-C为基础的产品增加C ++使用:

称为Objective-C ++预处理程序头

这使您可以用C ++而不是Objective-C做更多的事情。

iOS程式设计:


-3

是的,您可以使用C ++编程语言来开发手机游戏。在相同的硬件上,C ++游戏应用程序总是比Java快一点。因此,如果您是C ++的专家并且有兴趣开发Android游戏,那么现在用Java编程就容易且零成本了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.