首先你要明白,在你的视角中,自己的人物和其他玩家以及小兵野怪是怎么移动的。自己的人物是靠你用鼠标下达指令去哪里,然后由系统计算路径,并且渲染移动过程,同时把这条指令发给服务器;别人移动是别人下达移动指令,传给服务器,服务器再传给你;小兵野怪是由服务器计算出来的AI,直接把它们的移动指令发给你。所以,只要服务器把所有的接到指令全部记录下来就实现了录制。玩家下载录制之后,靠客户端算出来哪秒所有人都做了什么并加以实现,就实现了回放功能。
这和war3录像原理是一样的,war3好多年前就实现了,记录的是操作动作,然后通过实时演算来还原对战记录游戏过程而不是图像画面。只是记录坐标和一些函数而已,只不过重现出来反馈给观看者是游戏画面,并不是录制视频的那种用视频重现。不然csgo那些demo怕不是几十个G。这么说吧,它记录的是:0分30秒,玩家呆蛙右键单击商店,购买鞋子。0分31秒,玩家呆猴右键单击商店,购买一坨屎0分40秒,玩家呆蛙行走到坐标xx0分41秒,玩家呆蛙行走到坐标xx……1分05秒,玩家呆蛙使用了技能爆菊(伤害300点,cd时间5秒,消耗魔法值100),技能目标玩家呆猴,呆猴的护甲抵消45点伤害,呆蛙对其造成255点伤害,呆猴生命值(上限256)减为1。当然实际记录是使用代码的方式,数据也会更精确。通过记录玩家的每一项操作,每个单位的每一项数值变化来保存这一局游戏,因为都是一些文本数据,所以文件可以很小,回放的时候相当于重新开了一局游戏,电脑根据之前记录下来的十个人的操作再玩一遍。
领取专属 10元无门槛券
私享最新 技术干货