gpt4 book ai didi

c++ - 在 gamedev 中编程(性能相关)

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:04:34 24 4
gpt4 key购买 nike

我只是想知道 gamedev 中的一些东西是如何工作的:

  1. 我知道,性能实际上至关重要,所以仍然(而且我认为永远不会)没有地方可以使用 Java/.NET 等托管语言/平台,只是因为他们的表现。但是...最近我在 SO 的某个地方读到,即使开发游戏的人使用 C++ 作为主要语言,他们实际上也使用 STL 或 Boost(或其中的许多)。我认为它与性能有一些共同点,对吗?如果我错了,您能否告诉我避免使用这些库的原因是什么(我认为它们使开发人员的生活更轻松)?是因为授权(Boost)吗?那么 EA 的 STL 版本呢?其他工作室也制作自己的版本吗?

  2. 游戏编程到底有多“接近金属”?你离机器更深更近了吗?您是否有时将 Assembly 用于关键的内部循环,或者 C++ 实际上是您目前使用的最低抽象层?我假设在性能是最重要的此类产品中,分析是非常非常常见的任务 - 但您有时是否被迫使用汇编来加速某些部分,或者好的 C++ 已经“足够好”?

    <

编辑:对不起,可能还不清楚,但我很想听听有游戏行业经验的人的回答。我对没有游戏开发商业经验的人给出的一些假设感兴趣。我也对用 C#/Java 创建的一些小众游戏的例子不感兴趣。但是,如果您知道一款看起来比 FarCry2 更好的产品(只是举个例子,但这里是您最喜欢的现代精美游戏名称),并且完全用 Java/.NET 编写,并且具有与 FarCry2 相似的性能... 不要犹豫,提及该产品!谢谢。

最佳答案

1.与一些人的看法相反,STL 是经过优化的,而且一点也不糟糕。大多数游戏工作室不使用它的原因是内存。您无法像编写自己的 STL 容器版本那样控制内存分配和释放。这也是托管语言不受欢迎的原因。

编写自己的容器将使您能够编写跨平台代码并更轻松地进行内存跟踪。在游戏机上尤其如此,例如 PS3,需要详细了解硬件才能发挥最佳性能。这通常最终意味着您需要完全控制 PPU、SPU 和 RSX 之间的内存流。

2。汇编程序只是“必需的”(在引号中,因为它实际上不是必需的但有帮助)用于非常专业的操作,例如数学库函数。更常见的是向量化代码的 SIMD 内在函数。然而,大多数工作室都有经过相当优化的遗留代码,并且由于这些优化的级别非常低,因此代码不需要在硬件代际之间进行重大更改。我会说在控制台上使用较低级别的代码更为常见。

关于c++ - 在 gamedev 中编程(性能相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1547632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com