【发布时间】:2009-05-31 06:50:39
【问题描述】:
编写游戏项目的最佳语言是什么?为什么?
为什么游戏编程世界被c++主宰?
【问题讨论】:
编写游戏项目的最佳语言是什么?为什么?
为什么游戏编程世界被c++主宰?
【问题讨论】:
这是一个很难回答的问题。在大多数情况下,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 会是更好的选择。
可能应该指出,从我最初写这篇文章的两年后,Silverlight 游戏,尤其是 Windows Phone 7 上的 Silverlight,已经成为一个大型且快速增长的平台,游戏,通常是非常先进的游戏,正在其上发达。自 2010 年 11 月该平台首次推出以来,WP7 上的游戏已经呈爆炸式增长,并且已经 WP7 为其开发的游戏数量超过了竞争平台。鉴于移动设备的普及和在其上玩游戏的流行,我认为这有力地表明了 C# 作为一种游戏开发语言的力量和能力。相当多的 WP7 游戏是完全 3D 图形密集型游戏。
【讨论】:
对于商业/大型游戏项目,C++ 可能是最佳选择。但是,如果您正在考虑制作较小的独立类型游戏,那么没有什么能阻止您使用 C# 甚至 Java。
我用 C++ 完成了几款小游戏,其中一款使用 C# 使用 XNA Framework,主要是出于好奇。目前我正在使用 Java 和LWJGL(轻量级 Java 游戏库)开发平台游戏。你猜怎么着?它工作得非常好,而且我几乎免费获得跨平台兼容性!我用 Java 开始这个项目的原因是想看看我是否可以使用 Java 而不是我通常使用的 C++ 创建一个不错的 OpenGL 加速游戏。到目前为止,它对我来说非常好用,我真的很惊讶。 =) 老实说,我对 C++ 有点厌倦了,现在用 Java 编码对我来说效率更高(非常感谢 Eclipse IDE!)。
因此,对于较小的游戏,您绝对可以使用 Java 或 C# 获得成功,无需为 C++ 操心,除非您正在做的事情需要 100% 的可能性能。 XNA 可能是最容易上手的选择,尽管就我自己而言,我很可能不会再次使用它,因为它基本上只是 Windows(加上 Xbox 360)..
【讨论】:
游戏是您可以运行的一些硬件密集型应用程序。人们用 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
【讨论】:
让游戏开发者从汇编语言转向 C 语言需要数年时间,然后整个行业需要更多年时间才能转向 C++。原因总是一样的……“C 会太慢”,“对象会太慢”。对代码(引擎、以前的游戏等)和 C++ 行业人才的巨大投资。这需要很长时间才能改变——就像过去一样。总有一天,游戏将以托管代码开发,但这需要一些时间。
【讨论】:
我想您会发现,当您创建自己的游戏时,CPU 瓶颈(语言选择有任何影响的唯一方面)是您最不需要担心的事情。更容易被 GPU 阻塞。见鬼,今天最少有 2 个内核,如果你能达到 100% 的 CPU 使用率,我会觉得令人印象深刻,因为这需要一个完美的工作负载划分来利用 CPU 的 2 个或 4 个内核。
一般来说,运行游戏(大概是用 C++ 编写的)对我来说太常见了,以至于看到它最多使用我的 CPU 的 50%-60%。然后,您能否真正谈论您使用的语言的瓶颈,或者使用的算法的瓶颈,这些瓶颈不允许您在超过 1 个 CPU 内核上进行扩展?因此,即使在遇到单核限制的情况下,仍然有可能(理论上)通过优化算法来使性能翻倍,然后才能真正说自己受到语言的限制。
随着 8、16 和 32 核的出现,这只会在未来增加。你真的不想拥有一款只能使用 32 个内核中的一个的游戏。
C# 未在行业中使用的真正原因是:对于已在 C++ 代码上投入大量资金的游戏工作室来说,没有足够的理由转向 C#。不仅是他们的代码,而且他们的开发人员已经非常擅长 C++,所以为了“易用性”而切换到 C# 是很奇怪的,而这实际上意味着要克服许多新的挑战以及重写现有代码需要大量资金。毕竟,您已经获得了仅在 PC(支持 Mono for Linux)和 Xbox 360 上支持的新代码。没有 PS3,没有 Wii。所以你只是为了一点点收益而限制了自己。
【讨论】:
如果您使用 C++,您的代码库会大得多,尽管这对于大多数游戏(除了 3D 游戏或需要物理引擎等库的游戏除外)来说应该是无关紧要的。 C# 可能更容易编写,这取决于您对它有多少经验(或者您对 C++ 的经验有多少)。
还可以考虑使用某种游戏创建工具,例如 XNA Game Studio 或类似工具,它们通常可以为您提供各种常规帮助。
【讨论】:
“性能”是一个红鲱鱼。是的,游戏几乎是大多数消费者将运行的最苛刻的应用程序。但是,大部分繁重的工作都可以通过专用硬件完成,这将在一周中的任何一天击败任何语言的软件解决方案。 Flash 游戏的普及应该足以证明,在大多数情况下,我们的性能有待提高(现在我们有了一些不错的实现,我想我们很快就会看到游戏也出现在 Javascript 中)。
我认为只是许多其他语言被标榜为以业务为中心、学术或统计,而开发人员总体上并没有真正觉得有必要挑战这些假设。
【讨论】: