我看到很多关于使用哪种语言来开发实时3D游戏的争论,而普遍的共识是C或C++是唯一可以为高端系统密集型3D提供合适性能的语言游戏.我看到很多人说C#,Java或Python太慢了,特别是因为垃圾收集.Objective C怎么样?Objective C有自动垃圾收集吗?除了自动垃圾收集之外,什么语言"太慢"或不适合3D游戏?
这个问题可能更像是一个"思想实验",因为我怀疑我是否会开发一个资源非常庞大的游戏,需要解决这些问题,但作为一名程序员,我莫名其妙地沉迷于表现,所以我'我仍然想知道我自己的混蛋.
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提供的额外功能尽可能多或少.
Objective-C 本身唯一真正的减速将是消息传递机制 - 即便如此,它通常是Cocoa框架的组件,会减慢速度.Objective-C的消息发送并没有真正伤害的表现是很多.
无论如何,对于大多数游戏来说,大多数性能瓶颈都来自图形代码:如果你将图形内容委托给OpenGL,这是非常快的,那么使用Objective-C进行游戏确实应该没问题.我可以看到Objective-C或Cocoa提供瓶颈的唯一其他地方是密集的物理代码 - 而且应该用纯C/C++编写.但是,其他一切都不应该那么重要.
说实话,我敢打赌,现在大多数OS X游戏都是使用Cocoa框架用Objective-C编写的,性能敏感的代码是用纯C/C++编写的(使用OpenGL的图形代码).