我有点好奇如何在游戏中实现重播。
最初,我认为游戏中只会有一个包含每个玩家/人工智能操作的命令列表,然后它会“重新玩”游戏并让引擎照常渲染。然而,我查看了 FPS/RTS 游戏的重播,经过仔细检查,甚至像粒子和图形/声音故障之类的东西都是一致的(并且这些故障通常是in持续的)。
那么这是怎么发生的呢。在固定摄像机角度的游戏中,我认为它可能只是将整个场景的每一帧写入存储的流中,然后重播该流,但这对于允许您暂停和移动摄像机的游戏来说似乎还不够大约。您必须及时存储场景中所有内容在所有时间点的位置(不是?)。因此,对于粒子之类的东西,需要推送大量数据,这似乎对游戏在玩时的性能产生了重大影响。
我认为你最初的想法是正确的。要创建重播,您需要存储从用户接收到的所有输入(以及接收到的帧号)以及任何随机数生成器的初始种子。要重玩游戏,您可以使用保存的种子重置 PRNG,并向游戏引擎提供相同的输入序列(与帧编号同步)。由于许多游戏会根据帧之间经过的时间量更新游戏状态,因此您可能还需要存储每帧的长度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)