我看到了很多争论来回上要使用的语言来开发实时3D游戏,一般的共识是,C或C ++是可以为高端提供合适性能的唯一语言,系统密集型3D游戏。我看到很多人说C#,Java或Python的速度太慢,尤其是垃圾回收的原因。如何目标C?是否目标C具有自动垃圾回收?除了自动垃圾收集什么使语言“太慢”或不适合3D游戏?

此问题可能更多的是“思想实验”,因为我怀疑我会永远开发一个游戏是如此沉重的资源,这些问题需要解决,但作为一个程序员,我莫名其妙地与性能痴迷的,所以我还是想知道只是我自己寻欢作乐。

有帮助吗?

解决方案

目标-C 2.0有在Mac OS X 10.5可用的垃圾收集,但它是可选的 - 你仍然可以编译Objective-C的应用程序不会回收垃圾,如果你选择。在其他平台(iPhone,Mac OS X的预10.5,和别的),没有垃圾收集,你必须手动管理你的记忆。

目标-C是一个严格的C超集,这样就可以在Objective-C,如果你想编码纯C。因此,没有理由不使用Objective-C的游戏,不会也适用于使用C.可以使用额外功能的Objective-C提供了很多,还是你想少。

其他提示

使用Objective-C中的本身唯一的真正放缓的将是消息机制,即使如此,它通常是Cocoa框架会慢下来的部件。 Objective-C的消息发送并没有真正影响性能的的多。

不管怎么说,对于大多数游戏,大多数的性能瓶颈将来自图形代码:如果您委派图形的东西到OpenGL,这是可笑的快,那么真的应该使用Objective-C的游戏没有问题。唯一的其他地方,我可以看到的Objective-C或可可提供的瓶颈将是密集的物理代码 - 这也许应该在纯粹的C / C ++编写的反正。一切,不过,真的不应该管那么多了。

要诚实,我打赌,大多数的OS X游戏现在正在使用的Cocoa框架用Objective-C,与用纯C / C ++的性能敏感的代码(和与图形代码利用OpenGL的)

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

这看起来很死,但现在铿锵/ LLVM 2.9很多的Objective-C 2的好吃的东西都可以在Linux上,可能是有趣的,有3D API。

目标-C不具有自动垃圾收集。 Java有垃圾收集的各种方法,其中一些被设计为通过定期逐步出现与游戏兼容。我想,如果感到惊讶C#或其他任何这也有垃圾收集没有多种方法可供选择,其中一些与游戏兼容。

我的头顶部的唯一的事,将可能使3D游戏游戏不合适会,如果它被解释,并在其实施特别慢。这不是你上面列出的任何特征。

P.S。为了解决你原来的问题,我敢肯定,任何人谁拥有一个iPod Touch或iPhone就能告诉你,Objective-C的绝对是最高的3D游戏:)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top