用c ++或c#游戏?

时间:2009-05-31 06:50:40

标签: c# c++

编写游戏项目的最佳语言是什么?为什么?

为什么游戏编程世界由c ++主宰?

7 个答案:

答案 0 :(得分:33)

这是一个难以回答的问题。在大多数情况下,C ++是一种“更好”的编程游戏语言,因为它为您提供了对内存管理的直接控制,您可以有更多选项来微调您的性能。这一点,以及C ++已经比C#长大的事实,已经导致其目前在游戏行业的主导地位。

然而,现在,随着.NET平台和C#变得如此成熟,它不容易被排除在游戏编程领域的强大竞争者之外。我认为在不久的将来尤其如此,因为.NET 4.0和C#4.0将带来一个全新的多线程和并发编程时代,可以为他们的平台带来巨大的性能提升。随着多核CPU摒弃桌面计算世界,大量核心CPU只落后于.NET / C#4.0,我认为使用.NET和C#4.0开发多线程应用程序的难易程度将使C ++运行钱。

最后,它完全取决于你认为你需要多少控制内存管理,以及这种控制是否值得在大规模并行游戏领域的努力。如果你需要这种控制,并认为你可以处理用C ++编写高度并行游戏的努力,那么你可能会从中获得一些东西。否则,我会说C#4.0会是更好的选择。


2011年更新:

应该注意的是,从我最初写这篇文章开始的两年后,Silverlight游戏,特别是Windows Phone 7上的Silverlight,已经成为一个庞大且快速发展的平台,游戏通常是非常先进的游戏,发达。自从该平台于2010年11月首次推出以来,WP7上的游戏已经爆炸式增长,并且WP7已经开发了比竞争平台更多的游戏。鉴于移动设备无处不在以及玩游戏的普及,我认为这是C#作为游戏开发语言的强大功能。相当多的WP7游戏都是3D图形密集型游戏。

答案 1 :(得分:5)

对于商业/大型游戏项目, C ++ 可能是最佳选择。但是,如果你想要做一些较小的独立游戏,那么就没有什么可以阻止你使用 C#甚至 Java

我用C ++完成了几个小游戏,用C XNA Framework做了一个C#,主要是为了好奇。目前我正在使用Java和LWJGL轻量级Java游戏库)开发平台游戏。你猜怎么着?它工作得非常好,而且我几乎可以免费获得跨平台兼容性!我用Java开始这个项目的原因是为了看看我是否可以使用Java创建一个很好的OpenGL加速游戏而不是我通常使用的C ++。到目前为止它对我来说非常好用,实际上我真的很惊讶。 =)老实说,我对C ++感到有些厌倦,目前使用Java编码对我来说效率更高(非常感谢Eclipse IDE!)。

因此,对于较小的游戏,您肯定可以使用Java或C#取得成功,不需要为C ++而烦恼,除非您正在做一些需要100%可能性能的事情。 XNA可能是最容易开始使用的选项,但对于我自己而言,我很可能不再使用它,因为它基本上只是Windows(加上Xbox 360)..

答案 2 :(得分:3)

游戏是您可以运行的一些硬件最密集的应用程序。人们使用C ++编写游戏以获得性能,尽管现在有一些游戏是用C#编写的。

之前已经提出过这个问题,请查看以下帖子了解更多详情: Viability of C#/.NET as the new standard game dev platform? https://stackoverflow.com/questions/19642/suggested-gaming-platform-to-learn-direct-x-c-open-gl-or-xna

答案 3 :(得分:3)

将游戏开发人员组装到C上需要花费数年的时间,然后花费更多的时间才使这个行业进入C ++。原因总是一样的......“C会太慢”,“物体会变慢”。 C ++中的代码(引擎,以前的游戏等)和业内人才投入巨大。转移需要很长时间 - 就像过去一样。有一天,游戏将以托管代码开发,但需要一些时间。

同时有engines written for .NET in C#

答案 4 :(得分:2)

我想你会发现,当你创建自己的游戏时,那就是CPU瓶颈(语言选择有效的唯一方面)是你需要担心的最后一件事。由GPU引起的瓶颈更容易,更容易。地狱,今天至少有2个核心,如果你甚至设法达到100%的CPU使用率,我会发现它令人印象深刻,因为这需要一个完美的工作负荷划分来利用CPU的2或4个核心。

一般来说,运行游戏(可能是用C ++编写)让我看到它最多使用50%-60%的CPU是很常见的。那么你真的可以说你使用的语言存在瓶颈,或者所使用的算法的瓶颈是什么,不允许你扩展到超过1个CPU内核?因此,即使在您遇到单核心限制的情况下,通过优化算法仍然可以(理论上)将性能提高一倍,然后才能真正说出您受到语言的限制。

随着8,16和32核心的出现,这种情况将在未来增加。你真的不想拥有一个只能使用32个核心的游戏。

C#没有在行业中使用的真正原因:对于已经在C ++代码中投入大量资金转向C#的游戏工作室来说,没有理由足够引人注目。不仅仅是他们的代码,但是他们的开发人员已经非常擅长C ++,所以切换到C#以获得“易用性”是很奇怪的,因为这实际上意味着要克服许多新的挑战并且需要大量资金来重写现有代码。毕竟,你有新的代码只支持在PC上(支持Mono for Linux)和Xbox 360.没有PS3,没有Wii。所以你只是限制自己的收益。

答案 5 :(得分:1)

如果你使用C ++,你有一个更大的代码库,虽然这对大多数游戏来说无关紧要(除了需要像物理引擎这样的库的3D游戏或游戏)。 C#可能更容易编写,具体取决于您使用它的经验(或者您使用C ++的经验多少/多)。

另外考虑使用某种游戏创建工具,如XNA Game Studio或类似工具,它们通常可以为您提供各种常用的帮助。

答案 6 :(得分:-1)

'表演'是一个红鲱鱼。是的,游戏只是大多数消费者将要运行的最苛刻的应用程序。然而,大部分繁重的工作都可以通过专用硬件完成,这将在一周中的任何一天以任何语言击败软件解决方案。 Flash游戏的扩散应该足够证明,在大多数情况下我们都有性能可以刻录(现在我们有一些不错的实现,我认为我们很快就会看到Javascript中的游戏)。

我认为只是许多其他语言被称为业务重点,学术或统计,开发人员总体上并不觉得有必要挑战这些假设。