我不是游戏开发者(除非你算上我在 1982 年用 Atari 6502 汇编语言编写的黑白棋游戏),但我确实有很多用 Assembly -> C -> Objective-C 编写商业应用软件的经验(任何人都记得下一个立方体?)-> C++ -> Java,现在是 C#。
我无法比较游戏库,但我确实对 C++ 与 C# 有一些想法。
IMO,由于性能原因,C++ 优于 C# 的论点并不像某些人所相信的那么简单。我工作的软件对性能至关重要。我们与编译为本机代码(可能是用 C/C++/Assembly 编写)的产品竞争,我们在性能上获胜,以至于我们的竞争对手甚至在某些应用程序中使用我们的软件而不是他们自己的软件。
如果 C++ 比 C# 快,那怎么可能呢?以我的经验,答案是对于任何复杂的系统,架构和算法比语言更重要(假设潜在的性能在同一个范围内——C++ 和 C# 肯定是这样)。尽管我是一名全职 C++ 开发人员的时间比我使用 C# 的时间长,但我在 C# 方面的工作效率比 C++ 高得多。这意味着我可以花比以前更多的时间来重构和完善我的架构和算法。
现在,有时我不得不承认我很想用 C++ 重写我的应用程序的核心引擎,因为我知道我可以让它运行得更快并且使用更少的内存。到目前为止,我一直抵制这种冲动,因为我相信生产力的下降意味着我的 C++ 代码库比我继续使用 C# 时的速度慢只是时间问题。
我相信游戏开发过渡到 C# 和/或 Java 和/或其他比 C++ 更高效的语言只是时间问题。使用 Java 数年,现在使用 C# 数年,我会押注 C# - 但这只是一个猜测。
如果我今天开始从事游戏开发,我肯定会押注 Silverlight 和/或 WPF。WPF 基于 Direct3D 构建。微软已经宣布 Silverlight 3 将支持硬件辅助 3D 渲染。Silverlight 在各种浏览器和 Mac 上运行。使用 Moonlight,它可以在 Linux 上运行。它已针对某些电话平台宣布。由于 Silverlight 本质上是 WPF 的轻量级版本(它最初是作为“WPF/E”引入的,其中“E”表示无处不在),您可以在不花费大量额外精力的情况下同时定位两者。您可以在浏览器中使用 Silverlight 为您的游戏提供轻量级版本(免费或广告支持),以及使用 WPF 并在 Windows 上运行的严肃游戏玩家的真正优惠。
Better yet, be the person to create an excellent gaming library which allows for easy targeting of both WPF and Silverlight 3 (or Silverlight 2 if you don't need hardware assisted 3D rendering).
While I have seen no official announcement, it is hard to believe that the next generation of XBox will not support Silverlight. Of course, I would not look for it on Sony or Nintendo gaming systems.