我不是游戏开发人员(除非你把我在大约1982年用Atari 6502汇编语言编写的翻转棋游戏算作),但我有很多写商业应用软件的经验,从汇编语言 -> C -> Objective-C(还有人记得Next Cube吗?)-> C++ -> Java,现在是C#。
我无法比较游戏库,但我对C++和C#有一些想法。
在我看来,因为性能而选择C++而不是C#的论点并不像有些人所说的那么简单。我工作的软件对性能至关重要。我们与编译为本地代码的产品竞争(可能是用C / C++ / Assembly编写的),我们在性能上获胜,以至于我们的竞争对手甚至会在某些应用程序中使用我们的软件而不是他们自己的软件。
如果C ++比C#更快,那怎么可能呢?根据我的经验,答案是对于任何复杂的系统,架构和算法比语言更重要(假设潜在性能大致相同-对于C ++和C#肯定是如此)。即使我作为全职C ++开发人员的时间比使用C#的时间长,但我在C#比在C ++中更具生产力。这意味着我可以花更多时间重构和完善我的架构和算法,而以前则不能。
现在,有时我必须承认我很想用C ++重写应用程序的核心引擎,因为我知道我可以使其运行更快并且使用更少的内存。到目前为止,我已经抵制了这种冲动,因为我相信生产力的下降意味着只是时间问题,我的C ++代码库会比我留在C#时更慢。
我相信游戏开发转向C#和/或Java和/或其他更具生产力的语言只是时间问题。使用Java几年后,现在使用C#几年后,我会打赌C#-但这只是猜测。
如果我今天开始进行游戏开发,我一定会押注于Silverlight和/或WPF。WPF是建立在Direct3D上的。微软已经宣布Silverlight 3将支持硬件辅助3D渲染。Silverlight可以运行在各种浏览器和Mac上。在Moonlight的帮助下,它可以在Linux上运行。它已经被宣布适用于一些手机平台。由于Silverlight本质上是WPF的轻量级版本(最初被称为“WPF/E”,其中“E”代表“到处都有”),因此您可以在不需要太多额外工作的情况下同时针对两者。您可以使用Silverlight在浏览器中拥有轻量级版本(免费或通过广告支持),并使用WPF在Windows上运行真正的游戏以供专业玩家使用。
更好的是,成为创建优秀游戏库的人,该库允许轻松针对WPF和Silverlight 3(如果您不需要硬件辅助3D渲染,则为Silverlight 2)进行定位。
虽然我没有看到官方公告,但很难相信下一代XBox不支持Silverlight。当然,我不会在Sony或Nintendo游戏系统上寻找它。