gpt4 book ai didi

multithreading - 如何在多线程游戏引擎中保持我的世界数据同步?

转载 作者:行者123 更新时间:2023-12-04 06:43:58 26 4
gpt4 key购买 nike

所以我正在尝试为我想要编写的游戏创建一个简单的多线程游戏引擎。到目前为止,一切都没有任何问题,我什至知道我必须采取哪些步骤来完成它。

只有一件事我不知道(嗯,从技术上讲,我知道一个解决方案,但我希望有一些更优雅和更快的东西):基本上,我的引擎的每个部分都有一个单独的线程 -图形、输入、物理、音频等。

物理线程有一个完整的世界场景节点结构,它模拟一切。但是,我现在必须以尽可能少的开销将这个结构传递给我的图形线程。理想情况下,它应该只传输自上次更新以来发生变化的部分。

我有用于传输这些数据的组件,唯一的问题是生成它。

到目前为止,我想到了两种不同的方法:

  • 为每次更新复制整个结构 - 非常简单,但可能会占用大量时间和内存(我没有使用大型引擎的经验 - 这可行吗?)
  • 通过用一些标志标记场景节点来跟踪场景的哪些部分发生了变化,然后只复制更改的部分

  • 方法一会复制大量内存,但没有太多处理能力,方法二会做相反的事情:处理能力充足,复制的内存较少。

    是否有一些通用的答案,哪种方法在典型的游戏环境中会更快?

    最佳答案

    不,没有公认的通用答案,这是游戏开发的当前研究领域。

    我的 2 美分是传统智慧 - 使用哪一个实际上取决于您的特定用例 - 如果您的游戏有大量数据(即它非常占用内存,就像大多数大片一样),您可能只想传输更改。如果您的游戏不是内存密集型的(例如,街机游戏),您可能可以通过复制整个对象而逃脱。

    我建议同时实现并连接性能计时器,看看哪个更适合您;可以实现一种可以透明地处理这两种方法的架构。

    关于multithreading - 如何在多线程游戏引擎中保持我的世界数据同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/761990/

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