【发布时间】:2010-06-17 18:07:54
【问题描述】:
我有点好奇如何在游戏中实现回放。
最初,我认为游戏中的每个玩家/AI 操作都会有一个命令列表,然后它会“重新玩”游戏并让引擎照常渲染。但是,我查看了 FPS/RTS 游戏中的回放,经过仔细检查,甚至粒子和图形/听觉故障之类的东西都是一致的(并且这些故障通常in一致)。
那么这是怎么发生的。在固定摄像机角度的游戏中,我虽然可能只是将整个场景的每一帧都写入一个流,然后存储然后重放该流,但这对于允许您暂停和移动摄像机的游戏来说似乎还不够大约。您必须在所有时间点存储场景中所有内容的位置(不是吗?)。因此,对于粒子之类的东西,需要推送大量数据,这似乎对游戏在玩时的性能产生了重大影响。
【问题讨论】:
-
最初的星际争霸回放实际上并不一致。您可以将同一场比赛看两次,并看到一些截然不同的结果。
-
@Andres:有趣,我没注意到。特别是,对于 RTS 类型,我想到的是《英雄连》。
-
澄清我认为 SnOrfus 的问题:有些游戏(神秘海域 2、光环 3,甚至战地 2)允许您完整地录制游戏。游戏结束后,您可以以指定的速度播放它,并在动作发生时飞过关卡,从地图上的任何位置查看它。所以我认为这是关于记录所有玩家/对象的移动,而不是与视频缓冲区有关。
-
@Sean O'Hollaren:是的,没错。
-
然后我还会为几乎默认重放的赛车游戏添加。我很确定模型的位置被记录下来,然后一切都通过引擎运行。
标签: design-patterns