【问题标题】:Is Objective C A Suitable Language For 3D Games?Objective C 是适合 3D 游戏的语言吗?
【发布时间】:2011-05-13 23:11:05
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c performance


    【解决方案1】:

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

    Objective-C 是 C 的 strict 超集,因此您可以根据需要在 Objective-C 中编写纯 C 代码。因此,没有理由不将 Objective-C 用于不适用于使用 C 的游戏。您可以随意使用 Objective-C 提供的额外功能。

    【讨论】:

      【解决方案2】:

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

      无论如何,对于大多数游戏来说,大部分性能瓶颈都来自图形代码:如果你将图形的东西委托给 OpenGL,它的速度快得离谱,那么在游戏中使用 Objective-C 应该没有问题。我能看到 Objective-C 或 Cocoa 提供瓶颈的唯一其他地方是密集的物理代码——无论如何,这可能应该用纯 C/C++ 编写。不过,其他一切都应该没有那么重要。

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          唯一可能使游戏不适合 3D 游戏的想法是,如果它被解释并且执行速度特别慢。这不是你上面列出的任何东西的特征。

          附:为了解决您最初的问题,我很确定任何拥有 iPod Touch 或 iPhone 的人都能够告诉您,Objective-C 绝对适合 3D 游戏:)

          【讨论】:

          • 不是我,但我很确定反对票是因为 Mac OS X 上的 Objective-C 实际上具有自动垃圾回收功能。它是可选的,但它就在那里。仅供参考,因为我讨厌没有教育意义的投票。
          • Mac 是 Objective-C 的唯一平台,对吧。呃,没有。它不是。我坐在我面前的设备有 Objective-C 并且没有自动垃圾收集。另外,他问Objective-C 是否有垃圾收集功能,因为他担心它是否会导致性能爆发,并使其成为3D 游戏的糟糕选择。它没有。不以任何方式需要使用它。除了我,没有人读过他说的话吗?
          • Mac 是 Objective-C 的主要平台。对Mac 不适用的Objective-C 做出一揽子声明就像对Windows 不正确的计算机做出一揽子声明一样。 “计算机无法运行图形程序。”嗯,当然,有些不是——我在房间里有一个——但我仍然不认为这是一个真实的陈述。
          猜你喜欢
          • 2014-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-02
          • 2022-06-13
          相关资源
          最近更新 更多