目标C是适合3D游戏的语言吗?

时间:2009-05-30 03:24:47

标签: objective-c performance

我看到很多关于使用哪种语言来开发实时3D游戏的争论,而普遍的共识是C或C ++是唯一可以为高端系统提供合适性能的语言密集的3D游戏。我看到很多人说C#,Java或Python太慢了,特别是因为垃圾收集。 Objective C怎么样? Objective C有自动垃圾收集吗?除了自动垃圾收集之外,什么语言“太慢”或不适合3D游戏?

这个问题可能更像是一个'思想实验',因为我怀疑我是否会开发一个资源太重的游戏,以至于需要解决这些问题,但作为程序员,我莫名其妙地沉迷于表现,所以我还是想知道我自己的混蛋。

4 个答案:

答案 0 :(得分:7)

Objective-C 2.0在Mac OS X 10.5上提供了垃圾收集,但它是可选的 - 如果您愿意,您仍然可以编译没有垃圾收集的Objective-C应用程序。在其他平台(iPhone,Mac OS X 10.5之前,以及其他任何平台)上,没有垃圾收集,您必须手动管理内存。

Objective-C是C的严格超集,因此如果需要,您可以在Objective-C中编写纯C代码。因此,没有理由不将Objective-C用于不适用于使用C的游戏。您可以使用Objective-C提供的额外功能尽可能多或少。

答案 1 :(得分:5)

Objective-C 本身唯一真正的减速将是消息传递机制 - 即便如此,它通常是Cocoa框架的组件,会减慢速度。 Objective-C的消息发送并没有真正损害的性能。

无论如何,对于大多数游戏来说,大多数性能瓶颈都来自图形代码:如果你将图形内容委托给OpenGL,这是非常快的,那么使用Objective-C进行游戏确实应该没问题。我可以看到Objective-C或Cocoa提供瓶颈的唯一其他地方是密集的物理代码 - 而且应该用纯C / C ++编写。但是,其他一切都不应该那么重要。

说实话,我敢打赌,现在大多数OS X游戏是使用Cocoa框架用Objective-C编写的,性能敏感的代码是用纯C / C ++编写的(并且使用OpenGL的图形代码)

答案 2 :(得分:0)

我也对这个话题很感兴趣,我发现了这个 http://wiki.gnustep.org/index.php/3DKit

它看起来已经死了但是现在有了clang / llvm 2.9很多Objective-C 2的好东西都可以在linux上找到,并且可能有趣的是有了3D API。

答案 3 :(得分:-1)

Objective-C没有自动垃圾回收。 Java有各种垃圾收集方法,其中一些方法是通过以固定间隔递增的方式与游戏兼容。如果C#或其他任何有垃圾收集的东西没有多种方法可供选择,我会感到惊讶,其中一些方法与游戏兼容。

如果它被解释并且其实施速度特别慢,那么可能会使游戏不适合3D游戏的唯一不可思议的事情。这不是你上面列出的任何特征。

P.S。为了解决您的原始问题,我非常确定拥有iPod Touch或iPhone的任何人都能告诉您Objective-C绝对适合3D游戏:)