【问题标题】:gaming with c++ or c#? [closed]用 c++ 或 c# 玩游戏? [关闭]
【发布时间】:2009-05-31 06:50:39
【问题描述】:

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

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

【问题讨论】:

    标签: c# c++


    【解决方案1】:

    这是一个很难回答的问题。在大多数情况下,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 图形密集型游戏。

    【讨论】:

    • 我想补充一点,如果您的目标是进入游戏行业(我的意思是:非独立游戏或游戏机),那么您目前别无选择,只能使用 C++。 XNA 套件对于大多数行业游戏来说是不够的。
    • 另外,不要忘记您不能使用 C# 来为 PS3 或 Wii 编程(除非您将其用作 C++ 之上的脚本语言)。所以学习 C# 而不是 C++ 会限制你的就业选择。
    • 从 C++ 到 C# 也容易很多。 C++ 教你一些硬核的东西,比如指针和内存管理。 C# 更像是在沙盒中玩耍。
    • 我看不出为什么不能为 PS3 或 Wii 创建 CLR。一旦 C# 成为游戏开发的主要竞争者,我不怀疑 C# 运行时的新市场将会出现。 @Klaim:我根本不认为 XNA 是 C# 游戏开发的一个因素。相反……一旦 C# 成为竞争者,ID、CryTek 等公司的引擎将占据主导地位。与可能编写的内容相比,XNA 是一个沙盒。
    • 2年后更新+1 :)
    【解决方案2】:

    对于商业/大型游戏项目,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)..

    【讨论】:

    • Java 游戏?嗯...当然可以:国际象棋、Othelo、平台 2D 游戏等...
    • groan 如果这是一种批评,那么国际象棋实际上将是计算难度最高的游戏之一。否则,IBM 为什么会制造一台专门的计算机来播放它?
    【解决方案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

    【讨论】:

      【解决方案4】:

      让游戏开发者从汇编语言转向 C 语言需要数年时间,然后整个行业需要更多年时间才能转向 ​​C++。原因总是一样的……“C 会太慢”,“对象会太慢”。对代码(引擎、以前的游戏等)和 C++ 行业人才的巨大投资。这需要很长时间才能改变——就像过去一样。总有一天,游戏将以托管代码开发,但这需要一些时间。

      同时还有engines written for .NET in C#

      【讨论】:

      • 另外两个(商业)基于 XNA 的引擎能够产生令人印象深刻的视觉效果:Visual3D.NET:game-engine.visual3d.net Sunburn:synapsegaming.com/products/sunburn
      • C# 的亮点在于它不是一种多平台语言。您不能(例如)仅使用 C# 为 PS3 或 Wii 开发游戏。
      • @MB:好吧。 “托管代码”并不意味着 C# 或单一平台。您在我的答案中读到了一些不存在的内容。
      【解决方案5】:

      我想您会发现,当您创建自己的游戏时,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。所以你只是为了一点点收益而限制了自己。

      【讨论】:

      • 即使在今天,游戏仍然是 CPU 受限的情况。向 GPU 发送状态更改和绘制调用会占用大量 CPU 时间。即使在今天,领先游戏的开发团队仍然花费大量时间优化 CPU。
      • 真的,你很棒,你的观点很满意。 100:比;转到 100;
      • 你对工作中的c3有什么看法?用它可以做什么,比c++更漂亮?
      • 回答得好...你熟悉旧游戏 Zone 66 吗?在我的书中,任何不控制操作系统的游戏都没有得到足够的优化;)
      • MB:向 GPU 发送数据真的依赖于语言吗?不管语言如何,它不会占用大量 CPU 吗?不是一个修辞问题,而是一个实际问题:) 因为如果我查看 XNA 的 GraphicsDevice 类的 Draw 方法,它只调用 C++ 代码,因此与非托管代码通信和一些健全性检查会产生一些开销。但我怀疑这是一个真正的交易破坏者。
      【解决方案6】:

      如果您使用 C++,您的代码库会大得多,尽管这对于大多数游戏(除了 3D 游戏或需要物理引擎等库的游戏除外)来说应该是无关紧要的。 C# 可能更容易编写,这取决于您对它有多少经验(或者您对 C++ 的经验有多少)。

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

      【讨论】:

        【解决方案7】:

        “性能”是一个红鲱鱼。是的,游戏几乎是大多数消费者将运行的最苛刻的应用程序。但是,大部分繁重的工作都可以通过专用硬件完成,这将在一周中的任何一天击败任何语言的软件解决方案。 Flash 游戏的普及应该足以证明,在大多数情况下,我们的性能有待提高(现在我们有了一些不错的实现,我想我们很快就会看到游戏也出现在 Javascript 中)。

        我认为只是许多其他语言被标榜为以业务为中心、学术或统计,而开发人员总体上并没有真正觉得有必要挑战这些假设。

        【讨论】:

        • 如果您想开发诸如孤岛危机、半条命、侠盗猎车手等前沿游戏,则不需要。开发团队通常会花费大量时间优化代码、美术资源等以使游戏运行尽可能快。尤其是在游戏机上。
        猜你喜欢
        • 2013-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-01
        • 1970-01-01
        • 2011-07-06
        相关资源
        最近更新 更多