是否可以添加一项功能来记录游戏中的游戏而不会占用太多内存?
我想允许用户将游戏保存为某种视频文件(如果可能的话)?
//编辑 - 让事情更容易更加重视// 我们的想法是,用户可以使用该应用程序在预先制作动画的场景中更改纹理,完成后可以将其导出到视频中。
由于
答案 0 :(得分:0)
你的游戏是否具有确定性?如果是,那么您应该能够记录用户输入。然后播放它你只需运行游戏并提供录制的输入而不是实时输入。
根据游戏的类型,最难的部分将使其具有确定性。您需要将所有种子捕获到随机数生成器以及从生成器获取数字的次数,以便获得完全相同的结果。由于我们讨论的是单个核心,因此您不必过于担心评估的顺序,这很好,但要确保它的定义很明确。
其次,如果你使用MVC(模型视图控制器)设置,那么最简单的就是你需要的只是一个回放控制器和一个实时用户控制器,如有必要,它会记录带时间戳的输入。注意:根据您的操作方式,使用帧数而不是实际时间可能更容易。当玩家点击记录时,收集整个游戏状态,并开始捕捉玩家输入。
要导出视频,您只需加载起始状态播放一帧,捕获帧然后遍历整个播放记录。如果游戏中的某些内容是基于时间的,那么您将不得不摆弄时钟,以便消除视频捕获所花费的时间。或者,您可以使用帧计数记录基于时间的事件,以便它在正确的帧上发生,但是您必须确保不同的处理顺序不会改变游戏。
第二个选项是基于事件,只记录游戏中发生的每个事件然后在回放期间只是在它们最初发生的帧期间触发这些事件。这需要捕获更多数据,因为你没有使用游戏模拟一切(你仍然需要做动画等),但可能会改善渲染时间,因为你没有运行整个游戏。