.net - 在游戏开发和 VirtualBox 等应用程序方面,C++ 比 .NET 有什么优势

标签 .net c++

这是对我之前提出的问题的重新措辞尝试。我想知道为什么 C++ 似乎是某些胖客户端应用程序的首选语言。我能想到的最简单的例子是视频游戏和我最喜欢的应用程序 VirtualBox。

请不要关闭这篇文章,我只是想了解为什么会这样。

最佳答案

作为从事 AAA 游戏的专业游戏开发者,我可以告诉您。第一个原因是 C++,C 可以在任何平台上编译和运行,比如 PS3 或 NDS。下一代平台制造商只提供强大的 C 库来与硬件接口(interface)。这背后的原因是 C 和 C++ 是免费的,不属于一家公司,因为它们是为接近金属的低级编程而设计的。这意味着游戏开发者需要了解形成反馈循环的 C/C++。然而,现在许多开发人员使用 C# 或 Java 制作他们的工具集,但那是因为性能并不重要。

现在这种姿势对于大多数 Web 开发人员来说似乎是狂热的,但游戏需要处理整个复杂模拟片段并每秒渲染多达 60 次,很少有 Web 应用程序必然会保持在该延迟率内,因此需求是不同的。出于同样的原因,很少有 Web 服务是用 C++ 生成的。

然而,由于开发速度的提高和微调游戏的能力,高级 AI 和游戏玩法(规则)是脚本化的。也因为这大约占资源的 15%,所以我们可以在这里挥霍一下,让设计师完成他们的工作。另请注意,编写一个灵活的规则系统无论如何都会占用大约相同的资源,即使是在 C++ 中完成也是如此。哦,并非所有平台都允许 Jit 代码,这很好 :)

当然,正如提到的内存控制,即使您使用的内存比硬件提供的内存多 1 个字节,它也不会像 PC 那样变慢。它崩溃了。所以我们喜欢我们的裸指针、自定义分配器和 RAII。

关于.net - 在游戏开发和 VirtualBox 等应用程序方面,C++ 比 .NET 有什么优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/469722/

相关文章:

c# - 从 .NET 应用程序 (C#) 捕获控制台输出

c# - Distinct 不使用 LINQ to Objects

c# - AesManaged 的​​密码学设置和 secret 管理

c++ - 使用 OpenGL ES(EGL) 与 eglCreatePbufferSurface 和 eglCreatePixmapSurface 的区别

c++ - 什么/其他/导致这个?

c++ - 无法在构造中输入变量创建对象- “Expected a type specifier”说

c# - 机器人遇到错误或错误。要继续运行该机器人,请修复机器人源代码

c# - 我创建了一个 ListView UserControl,但是在向它添加项目时将它拖到 form1 设计器后,我什么也看不到,为什么?

c++ - 链接库未在 makefile 中正确设置

c++ - 如何将 C++ 宏转换为更优雅的解决方案