iPhone 编程游戏

Posted

技术标签:

【中文标题】iPhone 编程游戏【英文标题】:Programming Games for iPhone 【发布时间】:2011-03-05 16:55:13 【问题描述】:

最好用 Objective C 或 C++ 为 iPhone 编写游戏。 像飞行控制这样的游戏会用什么语言编写? 图形应该采用什么格式才能在 iPhone 上正确显示和快速加载?

【问题讨论】:

【参考方案1】:

像飞行控制这样的游戏通常是用 Objective-C 编写的,其中包含一些对 OpenGL 和其他 C API 的 C 调用。图形可以以 PNG 或 JPEG 格式存储。除非我必须使用一些 C++ 代码或拥有具有良好 C++ 知识的开发人员,否则我会远离 C++。根据我的经验,瓶颈很少出现在语言中,因此切换到 C++ 并没有什么好处。

【讨论】:

更不用说您会发现用 Objective-C 编写的 iPhone 示例代码(就像所有 Apple 的一样)比任何其他语言都多。【参考方案2】:

您无法避免使用 Objective-C 或 Objective-C++,因为您必须与许多 API 进行交互。您是否也将 C++ 用作游戏核心很大程度上取决于经验和您计划使用的第三方工具。

我的游戏主要是用 C++ 编写的,尽管我使用的唯一主要第三方组件 - Chipmunk Physics - 是用 C 编写的。这主要是因为我已经使用 C++ 编程多年,而且我对它更加熟悉与Objective-C相比。其他人当然会有不同的观点,这取决于他们的经验。

更主观地说,我发现 C++ 是一种更好的语言来编写空间游戏逻辑。它能够将向量、矩阵等表示为类并在它们上重载数学运算符,这使事情变得更加清晰。我还发现,与 C++ 的 RAII 相比,Objective-C 的保留/发布模型是一个皇家 PITA。

WRT,图片。我发现 PNG 已经足够了,虽然我的游戏不是很重纹理。 This page 提供了很多关于 iPhone 上高效纹理存储的见解。纹理图集尤为重要。

【讨论】:

关于内存管理的有趣点。我的感觉正好相反 :) 我发现引用计数非常方便和安全,我非常喜欢它,而且我很少会造成泄漏,因为一切看起来都很简单。 @zoul:也许这只是我缺乏使用 Objective-C 的经验,但我发现自己不断地不得不追踪漏洞,并且总是发现我忘记发布某些东西,或者在什么时候保留它我不应该,或者发现一个 NSString 在我预期之前被清理了(即使在阅读了所有权/生命周期规则之后)。【参考方案3】:

您需要在 Objective C 或 Objective C++ 中创建***视图和操作系统界面。没有它就无法调用*** Apple API。

一旦了解了游戏逻辑,如果您希望使用 Core Graphics 或 OpenGL,您可以在 C 中完成大部分工作。

【讨论】:

【参考方案4】:

您还可以查看花栗鼠 (C) 或 Box2D (C++):

我应该去花栗鼠还是 Box2D?

http://www.cocos2d-iphone.org/forum/topic/6841

【讨论】:

【参考方案5】:

感谢大家的快速反应和专业知识。

我正在学习 C++ 或 Objective C,看起来 Objective C 对 iPhone 更直接。

我的背景是“喘不过气来”COBOL85(以及其他神秘语言)。我宁愿让已经精通 iPhone 应用程序的人为游戏编写代码,但我猜开发成本会让这有点令人望而却步。如果有人想看到它并给出报价,我确实准备了一份带有“伪代码”的投标请求。同时,C++ 似乎没有优势 肯 clean37@hotmail.com

【讨论】:

C++ 有一个优势。它更跨平台。如果您打算为 iPhone 以外的其他设备开发游戏,则只需将 Objective-C 用于 UI 代码。【参考方案6】:

您现在可以通过使用一种语言来加速您的开发,这种语言不需要您作为开发人员手动管理您的内存并担心泄漏,该语言就是 C#。 MonoTouch 的出现是使这成为可能的魔力,但甚至在 MonoTouch 之前,我就听说 Unity framework 已成功用于几款 iPhone 游戏。

好吧,不那么“商业”(强硬的人群......)

使用 C# 可以让您相对轻松地将游戏移植到其他移动平台(如 Droid),而无需重写代码。 Objective C 几乎不是 Apple 社区以外广泛接受的语言。多亏了 iPhone4 和 iPad,AppStore 仍在增长,但 android 没什么好打喷嚏的,除了两大移动设备之外,还有其他移动设备值得考虑......

请参阅related answer,了解对 Android 的支持。

在编写相同代码时,底线是更大的受众 = 更多收入。如果您正在寻找 Objective C 或 C++ 的选择,但没有提供其他选项,我深表歉意...

【讨论】:

这好像是个广告。 可以说 Objective-C 还提供了自动内存管理。这似乎有点像 C# 的插件,没有太多支持来说明为什么它是为 iPhone 编写代码的更好方法。 虽然 MonoTouch 相当不错,但我认为提出这个问题的人希望在某种程度上留在 Apple 堆栈。 目前与 Apple iPhone 开发者协议存在争议,该协议要求应用程序必须最初用 C、C++ 或 Objective-C 编写。 Unity 和 MonoTouch 目前对于由这些产品开发的应用程序是否会被 Apple 接受或将来会被禁止,目前都处于争论之中。到目前为止,类似产品 RunRev 已经得到乔布斯的官方回应,彻底禁止它们。 Unity 和 MonoTouch 目前还没有收到苹果的回应,但他们认为他们还可以。

以上是关于iPhone 编程游戏的主要内容,如果未能解决你的问题,请参考以下文章

在 iPhone 上以编程方式打开蓝牙

基于 mmo 浏览器的游戏需要哪些语言?

跨平台开发基于服务器的游戏,包括 iphone、android、WP7 [关闭]

游戏编程入门

初级游戏外挂编程详解 windows运行原理+游戏辅助编程 游戏外挂编程

2-Python游戏编程-拼图游戏(教程+源码)steam少儿编程课件