用于制作游戏引擎的C#或C ++(深入)

时间:2017-01-07 04:35:55

标签: c# c++ graphics game-engine

制作游戏引擎的最佳C#或C ++是什么。我目前是.NET C#开发人员,真的想使用C#。虽然我知道C ++确实支持内存管理,但这就是许多大公司为之努力的原因。据说C#在开发过程中更快,对我来说非常熟悉。在任何人建议之前,是的,我已经使用了统一。我喜欢它,但是想要花费很长时间和额外的努力来拥有我自己构建的游戏的100%。

如果不去C ++,我会失去什么?我使用什么样的库,图形和东西?这是DirectX的用途吗?我试图绕过这个,任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:4)

  

我需要一些意见

也许我不应该假设告诉你你需要什么,但我认为你在收到形成自己意见所需的信息方面要好得多。在我看来,在这里寻求自以为是的答案(通知讽刺)在这里一般都不可取。

C#和C ++都是非常强大的通用编程语言。这两种语言都是100%能够创建完整的高性能游戏。话虽如此,有一些(大多数)目标的差异,可以指出可能会影响您的决定。

  • 垃圾收集

这对你来说是赞成还是骗局是由你来决定的。有些人想节省工作,不得不花很少的时间来处理记忆。显然,C#在这方面很闪耀。如果你知道如何正确使用智能指针,C ++可以拥有优雅和简单的内存管理,但这比垃圾收集还要多。如果您非常关心对资源的严格控制,那么C ++可能更适合您。

如果你想在不重新发明轮子的情况下编写软件(你应该),语言库可以和语言本身一样重要。对于这两种语言来说,这都不是一个明显的专业人士,因为它们都有很多支持游戏的库。如果你必须挑选一个胜利者,我说它可能是C ++。这种语言多年来一直是游戏程序员的白话,并且在这个领域中有很多成熟度。 C ++可以直接利用API作为低级别的OpenGL和高级的Ogre3D。虽然没有保证你的游戏实际上会从C#库中的C ++库中获益。这取决于您的使用案例。

  • 标准库

继续关于图书馆的主题,这可能是C#的专业人士。 C和C ++是两种语言,拥有大量可用的库。如果你只计算他们的标准库,那么事情会发生变化。有些人不介意,甚至不喜欢这样。然而,人们可能还需要更广泛的标准功能集。 C ++无论如何都没有一个小的或无能力的标准库,但C#的功能肯定更丰富。

  • 平台

除非您要使用Mono,否则C#不可移植。单声道是一个很好的选择,但它确实有缺点(你必须自己研究)。 C ++不能像“#34;构建一次,在任何地方运行”那样划线,但如果这就是你想要的东西,它会提供相同的便携性。使用OpenGL渲染器(或某些更高级别的包装器API,如SDL / SFML),您可以构建几乎任何桌面环境。如果您只担心为微软平台制作游戏,那么这一点可能就是静音。

  • 虚拟机或本机

这就像垃圾收集只是一个需要考虑的因素。您可以自行决定是否适合您的使用。由于假设的性能问题,VM似乎有时会在游戏程序员中产生耻辱感。这是真的,如果智能地使用C ++,它可能会是一个表现更好的游戏。然而,C#的表现并不值得嘲笑。今天编写的很多游戏都可以通过C#实现很好地运行。如果它意味着450 FPS对400 FPS,那么使用C ++真的是一个优势吗?当然,这是一个可衡量的差异,但对于玩游戏的人来说,即使他们拥有144hz的显示器也没有多大意义。内存开销与此类似。通常C ++实际上并不是必需,直到你开始进入认真的重量级游戏。

  • 学习

最后但同样重要的是,请考虑一下您拥有自己知道的工具以及您不了解的工具。您已经了解C#,如果您选择放弃C ++,那么您需要投入学习的时间可能要少得多。与C#和Java等语言相比,C ++只有其他概念和职责。您可以选择忽略其中一些内容。 C ++不会用枪指着你并迫使你使用多重继承,嘿,这可能很容易被忽略。你会放弃析构函数吗?这些非常重要。 STL一般怎么样?传递它可能不是一个好主意,如果您要使用C ++,最好不要学习STL。如果您认为这是值得的,那么请务必继续。尽管如此,这只是值得称道的事情。

答案 1 :(得分:2)

在学习C ++的同时用C ++创建游戏引擎是一项巨大的挑战。 C#比C ++更有趣

为什么?

  1. 在C ++中,指针很强大,你需要知道指针是如何工作的以及如何使用指针
  2. 在C ++中,查找库并不像拉动nuget包那么容易
  3. 在C ++中,创建/重构头文件和源文件很烦人
  4. 在C ++中,需要针对每个架构进行编译
  5. 在C ++中,语法在开头很尴尬,充满了::和 - >
  6. 在C ++中,使用编译器并对其进行优化是一个独立的主题
  7. 但如果你想让你的游戏/游戏引擎变得更快,那么你应该选择C ++

    当我看到人们用C ++编写游戏时,他们主要使用OpenGL,但这是一个错误,因为大多数游戏玩家使用Windows,因此使用DirectX。基准测试还表明DirectX更具性能。

    我的建议是首先使用DirectX创建一个小游戏,如果你觉得舒服,那么下一步就是创建自己的游戏引擎