所以我试图为我想编写的游戏创建一个简单的多线程游戏引擎。到目前为止,一切都很顺利,没有任何问题,我什至知道我必须采取什么步骤才能完成它。
只有一件事我不知道(好吧,从技术上讲,我知道它的解决方案,但我希望有更优雅和更快的东西):基本上,我的引擎的每个部分都有一个单独的线程 -图形、输入、物理、音频等
物理线程有一个完整的世界场景节点结构,它模拟了一切。然而,我现在必须以尽可能小的开销将此结构转移到我的图形线程。理想情况下,它应该只传输自上次更新以来更改的部分。
我有用于传输这些数据的组件,唯一的问题是生成它。
到目前为止,我想到了两种不同的方法:
- 为每次更新复制整个结构 - 非常简单,但可能会占用大量时间和内存(我没有使用大型引擎的经验 - 这可行吗?)
- 通过用一些标志标记场景节点,然后仅复制已更改的部分来跟踪场景的哪些部分发生了变化
方法一会复制大量内存,但没有太多处理能力,方法二则相反:处理能力充足,复制的内存较少。
是否有一些通用答案,在典型的游戏环境中哪种方法会更快?
不,没有公认的通用答案,这是游戏开发当前的研究领域。
我的 2 美分是传统智慧 - 使用哪一种实际上取决于您的具体用例 - 如果您的游戏有大量数据(即它非常占用内存,就像大多数大片游戏一样),您可能只想传输更改。如果您的游戏不是内存密集型游戏(例如街机游戏),您可能可以复制整个对象。
我建议同时实现两者并连接性能计时器,看看哪个更适合您;可以实现一种能够透明地处理这两种方法的体系结构。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)