因此,随着微软新版本的 Visual Studios 最近发布,它们似乎增加了一些性能提升。硬件的功能也在增加,我很好奇:
用 VB .NET 开发的游戏会运行得足够快,以至于用户不会注意到 C++ 开发的游戏之间的区别吗?
因此,随着微软新版本的 Visual Studios 最近发布,它们似乎增加了一些性能提升。硬件的功能也在增加,我很好奇:
用 VB .NET 开发的游戏会运行得足够快,以至于用户不会注意到 C++ 开发的游戏之间的区别吗?
取决于游戏类型;例如,在一个简单的 2D 棋盘游戏中,渲染和计算并不复杂,用户不太可能看到任何差异。如果游戏需要实时渲染响应式 3D 图形,总会有区别的。或者对于复杂的人工智能(例如国际象棋)——大量数据肯定会减慢 VB 程序的速度,因为垃圾收集内存。不过,在您实际测量之前,您永远不会知道。
我最近读了一篇关于托管语言性能的文章,以及 JIT 有时如何比提前编译器优化更好,但我忘记了它在哪里。我想它可以用谷歌搜索;您可能想看一下它以及一般的 JIT 优化(请记住,VB 和 C# 都编译为 IL,然后对其进行解释)。
我一直在用 C# 开发第一人称射击游戏,使用OpenTK进行 OpenGL/OpenAL 绑定,到目前为止进展顺利。有一些潜在的陷阱,JITted IL 和 C++ 之间总会有一些可测量的速度差异,但如果你小心,你可以将这种差异最小化到最终用户不会注意到的程度。
将尽可能多的工作卸载到 GPU 上。如果你不小心,顶点处理 CPU 端会降低你的帧率,尤其是动画和粒子效果。在 GPU 上工作的速度与 C++ 游戏相同(尽管方法调用可能会使它有点贵,所以尝试使用 VBO/VAO/等)
定期分析您的游戏。检查每帧分配了多少对象并尝试减少分配的数量,理想情况下,将所有分配偏移到初始化。此外,不要害怕在unsafe
阻碍游戏的紧密数学循环中使用块。使用对象池来帮助您在运行游戏时减少分配。
如果您需要 3d 物理,我发现Jitter Physics Engine非常擅长在运行时不生成大量垃圾,并且在必要时使用对象池。