为iPhone编程游戏

3

在iPhone上编写游戏,使用Objective C还是C++更好?
像Flight Control这样的游戏会使用哪种语言编写?
为了在iPhone上正确显示并快速加载,图形应该采用什么格式?

6个回答

5

像Flight Control这样的游戏通常使用Objective-C编写,同时调用一些C语言API,如OpenGL等。图形可以存储为PNG或JPEG格式。如果没有必要使用一些C++代码或拥有熟练的C++开发人员,我建议不要使用C++。根据我的经验,瓶颈很少出现在语言上,因此切换到C++并不能带来太多好处。


1
更不用说,你会发现iPhone的示例代码(就像所有苹果公司的产品)中,使用Objective-C语言编写的比其他任何语言都多。 - Brad Larson

3
由于您需要与许多API进行交互,因此无法避免使用Objective-C或Objective-C++。是否还要使用C ++来编写游戏的核心取决于经验和计划使用的第三方工具。尽管我只使用了一个主要的C语言编写的第三方组件Chipmunk Physics,但我大部分时间都是用C ++编写我的游戏。这主要是因为我已经使用C ++编程多年,比使用Objective-C更加熟悉。当然,其他人会有不同的看法,这取决于他们的经验。更主观地说,我发现C ++是编写空间游戏逻辑的更好语言。它可以将向量、矩阵等表示为类,并在其上重载数学运算符,使代码更加简洁。此外,与C ++的RAII相比,我发现Objective-C的保留/释放模型非常麻烦。

关于WRT和图片,我发现PNG格式已经足够好了,尽管我的游戏不是以纹理为主。这个页面提供了很多关于在iPhone上高效存储纹理的见解。纹理图集尤其重要。


关于内存管理的有趣观点。我感觉完全相反 :) 我发现引用计数非常方便和安全,我非常喜欢它,而且很少出现泄漏问题,因为一切都看起来如此简单。 - zoul
@zoul:也许这只是我在 Objective-C 缺乏经验,但我发现自己不断地需要跟踪泄漏,而且总是发现我忘记释放某些东西,或者在不该保留它时保留了它,或者发现 NSString 在我期望之前被清理了(即使在阅读了所有拥有权/生命周期规则后)。 - Marcelo Cantos

2

您需要使用Objective C或Objective C++来创建顶层视图和操作系统界面,否则将无法调用顶层Apple API。

一旦进入游戏逻辑阶段,如果您想使用Core Graphics或OpenGL,则可以大部分工作使用C语言完成。


1

0

现在,您可以使用一种不需要开发人员手动管理内存和担心泄漏的语言来加速开发,这种语言就是C#。 MonoTouch 的出现使这成为可能,但即使在MonoTouch之前,我听说Unity框架已经成功用于多个iPhone游戏。

好吧,少点“商业化”(难搞的观众...)

使用C#将使您相对容易地将游戏移植到其他移动平台(如Droid),而无需重写代码。 Objective C几乎不是一个被广泛接受的语言,除了苹果社区以外。由于iPhone4和iPad的推出,AppStore仍在增长,但Android也不容小觑,还有其他移动设备需要考虑...

请参见此相关答案,了解对Android的支持情况。

底线是,当你编写相同的代码时,更多的受众 = 更多的收入。如果你只想了解Objective C或C++的选择,而不带来其他选项,请原谅我...

4
这似乎是一则商业广告。 - BobbyShaftoe
1
可以说,Objective-C也提供了自动内存管理。这似乎有点像在为C#做广告,但并没有太多支持它是更好的编写iPhone代码的原因。 - Jon L
虽然MonoTouch很不错,但我认为提问的人可能希望在某种程度上保持与Apple堆栈的一致性。 - icktoofay
目前,苹果iPhone开发者协议存在争议,要求应用程序必须最初使用C、C++或Objective-C编写。Unity和MonoTouch目前正处于热水中,就开发这些产品的应用程序是否会被苹果接受或在未来被禁止而争论不休。到目前为止,类似产品的RunRev已经收到了乔布斯的官方回复,直接禁止他们。Unity和MonoTouch迄今尚未收到苹果的回复,但他们认为一切都还好。 - 5ound

0

我很感激大家的快速回复和专业知识。

我正在学习C++或Objective C,看起来Objective C更适合iPhone开发。

我的背景是“COBOL85”(还有其他古怪的语言)。我宁愿让已经精通iPhone应用程序编码的人编写游戏,但我猜开发成本可能会有点高。如果有人想看一下我的“伪代码”并给出报价,我已经准备好了招标请求。同时,似乎没有使用C++的优势。

Ken clean37@hotmail.com


C++有一个优点,就是更加跨平台。如果你计划开发的游戏不仅仅是针对iPhone,那么你只需要使用Objective-C来编写UI代码。 - JeremyP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接