游戏录像的功能还是挺有意思的,今天我就和大家说说怎么样来做游戏录像系统。
什么是游戏录像系统,用一句通俗的话就是把游戏过程重现出来, 不需要要任何玩家
的干预。
1:游戏录像系统有什么用处?
游戏录像系统可以让玩家回味刚才精彩的一局,这个是对玩家最直观的功能,游戏录像系统还能帮助我们定位一些比较难的bug
大家可能都遇到过一个问题,无论怎么测试,一些bug能测试到,但是很难重现,偶尔重现一次,有很难解决,那么录像系统就很重要了。当重现的时候,你有录像,这个时候可以回放数据,把bug完整的复现出来。帮助了测试,也帮助了程序能无数次的重现这个bug。
2: 游戏录像系统的具体设计
(1) 录像数据采集;
录像数据设计到游戏的回放, 所有游戏的关键数据都要保存起来,比如用户的操作,比如产生一个新得物体等,这些推进游戏进程的关键数据,都需要被保存起来。 回放的时候,我们还需要事件产生的时间戳,所以我们设计如下数据结构。
搞一个数组来存放每一个关键数据对象,[玩家射击,怪物产生,玩家移动, 怪物发射子弹, …. ]
每个关键数据, 我们都会定义一个数据结构,大致如下:
{
时间戳:产生事件的时间戳
操作类型:
操作的关键数据对象;
}
还有一个关键的数据,就是游戏开始的时间戳,这样的话,把每个关键事件的时间戳减去上一个事件的时间戳,就能得到下一个播放事件的。
(2) 录像回放:
录像回放的时候,会重用很多游戏的接口,那么这个时候,我们要调整代码,录像模式和普通模式可以共用, 第一条数据执行的时间戳,是 第一条数据时间戳 - 开始的时间戳
后续,就是 当前关键操作的时间戳 - 上一条关键操作的时间戳。一条一条数据播放下去。
这样录像系统就完成了。