网易首页 > 网易号 > 正文 申请入驻

游戏中的回放系统是如何实现的?

0
分享至

本文首发“游戏开发那些事

作者:Jerish

回放系统,是电子游戏中常见的一项功能。通过回放,我们可以观摩高手之间的对决,重复享受游戏中的精彩瞬间,甚至还可以拿到敌方玩家的比赛录像进行分析和学习。总的来说,回放功能常用于记录整个比赛的过程细节或者展示游戏中的精彩瞬间,非常贴合竞技类游戏玩家的需求。

从实现技术角度来讲,下面的这些功能本质上都属于回放的一部分:

  • 精彩瞬间展示: FIFA / 实况足球 / NBA2K / 守望先锋 / 极限竞速:地平线 / 跑跑卡丁车
  • 死亡回放: 守望先锋 / 彩虹六号 / 使命召唤 / CODM
  • 全局比赛录制、下载、播放: 守望先锋 / CSGO / Dota / LOL / 魔兽争霸 / 星际争霸 / 红色警戒 / 坦克世界 / 绝地求生 / 王者荣耀
  • 观战(常用于非实时观战): CSGo / 堡垒之夜 / Dota
  • 时光倒流:Braid / 极限竞速:地平线

彩虹6号中的击杀回放

守望先锋中的完整比赛回放

其实早在20世纪90年代,回放系统就已经诞生并广泛用于即时战略、第一人称射击以及体育竞技等类型的游戏当中。

回放系统的录制方式

当我们打开CSGo或者Dota回放文件夹的时候会发现这些回放的文件并不大,一场比赛下来最多也就几十兆,远小于对应时长的视频,那么回放到底是如何实现的呢?

Dota录制文件大小,打开后一般是乱码

通常来说有三种方式,我们会逐一的展开来讲:

  1. 逐帧的录制游戏画面
  2. 逐帧录制玩家的输入操作
  3. 定时录制玩家以及游戏场景对象的状态

第一种,逐帧的录制游戏画面。就像现实中体育赛事用摄像机捕捉现场画面那样,我们可以游戏渲染的时候直接从底层抓取画面信息来持续的生成一个视频流文件,然后通过任意的一个视频播放器都进行解析和回放。

优点:

  • 播放简单,随便找个视频播放器即可
  • 方便分享到社交平台
  • 完美支持倒放和跳跃进度

缺点:

  • 占用大量的存储空间
  • 录制性能开销较大
  • 加载速度慢,很难实时地用于游戏中
  • 不够灵活,视角受限,无法定制特殊功能

一般来说,由于存储空间以及各种性能问题,录制游戏画面方式几乎不会被用于游戏开发中。

实况足球比赛回放(可以任意调整视角)

第二种,逐帧录制玩家的输入操作。其实游戏本身就是一个可视化的软件程序(或者说是一个渲染器),每一时刻的画面都是通过玩家的操作逻辑来驱动的。在考虑游戏内进行回放的情况下(比如死亡回放),我们完全没有必要去录制冗余的画面信息,只需要记录玩家的输入信息然后去驱动游戏逻辑改变画面就可以了。

录制帧输入,回放时按照时间触发这些指令信息即可

优点:

  • 录制数据极小,存储空间友好,网络发送便捷
  • 录制性能开销几乎可以忽略
  • 对于帧同步的游戏,额外开发工作较少
  • 播放视角可以随意调整和定制

缺点:

  • 回放消耗性能很大,等价于重新跑游戏
  • 进度跳跃比较困难、倒放很困难
  • 只能在游戏内播放
  • 要严格保证游戏内逻辑计算结果的一致性

通常来说,这种实现方式可以完美的利用游戏逻辑去进行回放,而且消耗非常小。对于帧同步(LockStep)的网络游戏,不需要额外做太多的工作,适合性能要求严格、物理计算不太需要同步的RTS、MOBA、FTG等类型游戏。

有了玩家输入信息我们可以较好的向前推进游戏流程,但是却很难执行倒退、向前跳跃等操作。举个场景,假如玩家A在第10帧点击攻击按钮击杀了一个AI并回复了5点生命值,第20帧点击武器制作按钮制作了一把新的武器但是同时由于被敌人击杀而掉落。

如果回放时想从第50帧跳回到第5帧的画面,那么就需要把玩家A复活,新创建的武器删掉,扣掉恢复的生命并复活AI。按照上述的第二种方案我们在只记录玩家的输入信息【5帧:攻击按钮 20帧:制作按钮】的情况下,几乎不可能顺利还原所有逻辑。根本的原因是,游戏很容易根据当前的场景和玩家输入推算出下一帧的结果,却很难根据当前一帧的结果和玩家输入推算出上一帧的游戏状态。

除此之外,我们需要保证任何一个操作都必须有一个回滚的逻辑并且不同播放端回滚后的结果是严格一致的的,这些都都远远增大了跳跃播放的难度。

因此,我们可以考虑第三种方案,定时记录玩家以及游戏世界的状态信息(或者说游戏快照)。所谓的状态信息就是某一时刻的对象身上附带的状态信息,比如玩家的生命值、移动位置等。如果我有了每一帧玩家的坐标信息,我就可以完美的处理播放、快进、跳跃等逻辑,但很明显这样要记录的数据要多很多。

Dota中的回放,录制状态信息

优点:

  • 录制数据量中等,可以根据具体情况调整和优化
  • 录制性能开销较少
  • 回放时性能消耗尚可
  • 可以支持跳跃、倒放等常见功能
  • 不用担心计算一致性问题(浮点数精度、随机数等)
  • 播放视角可以随意调整和定制

缺点:

  • 实现逻辑相对复杂
  • 只能在游戏内播放
  • 录制数据量和性能上不如第二种方案

总的来说,回放的本质是记录游戏的过程信息,画面是最终的表现效果。为了更好的利用游戏程序本身提供渲染功能和逻辑计算功能,同时从性能、数据量、自由度等多角度考虑,我们通常会根据游戏的类型来选择第二种或者第三种方案来实现游戏内部的回放系统。

回放系统与网络同步

通过上面的描述,我们很容易发现,回放系统的实现逻辑与网络同步非常相似。从原理上来讲,我们完全可以认为网络同步是实现回放系统的技术基础,上面第二种方案对应的就是网络同步中的“帧同步(LockStep)”技术,第三种方案对应就是网络同步中的“状态同步”技术。

虽然大家常把网络同步可以简单分为帧同步和状态同步,但实际上这两个概念是国内开发者不断摸索和自创的名词,并非严格指某种固定的算法,他们有很多变种,甚至可以结合到一起去使用。

在如今的游戏中,状态同步是比较流行的实现方式,也可以比较好支持回放的各种功能(比如吃鸡、守望、彩六等)。但是如果频繁的录制整个世界的快照会导致消耗非常大,所以通常会采用定时录制快照+持续录制Delta的方式进行处理,简单来说就是每隔一段时间录制一个存档点(称为Checkpoint),每个存档点之间持续的录制Delta数据(变化的状态信息),每次加载回放的时候都先找到合适的存档点,然后再通过读取中间的Delta数据快进过去。

Checkpoint+Delta方案示意图

Unreal的回放系统就是按照上面的方式实现的,可以比较好的支持快进、跳转、暂停等大部分回放功能,我会在下一篇文章中详细的分析虚幻引擎回放系统的实现原理,尽请期待!

UE中的回放录制命令

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
法国让1.5球却总进球3.5,赌博公司在矛盾什么

法国让1.5球却总进球3.5,赌博公司在矛盾什么

慢享生活集
2026-07-01 00:31:07
罕见!广州中心城区,发现多枚完整恐龙蛋化石

罕见!广州中心城区,发现多枚完整恐龙蛋化石

南方都市报
2026-07-01 19:51:34
全网喊话“韦神” 做高考数学卷,没想到他的一句话,就让千万网友瞬间服气

全网喊话“韦神” 做高考数学卷,没想到他的一句话,就让千万网友瞬间服气

不二大叔
2026-06-29 14:33:45
韩国29岁女消防员被多次强迫陪酒自杀事件更多细节曝光,已有17人被停职

韩国29岁女消防员被多次强迫陪酒自杀事件更多细节曝光,已有17人被停职

红星新闻
2026-07-01 11:52:28
湖人和快船的一个时代,都在今天结束了

湖人和快船的一个时代,都在今天结束了

只关于篮球
2026-07-01 12:13:06
罗永浩为韩红发声:虽然我也捐过很多钱,但和她却完全比不了

罗永浩为韩红发声:虽然我也捐过很多钱,但和她却完全比不了

映射生活的身影
2026-06-30 16:37:05
“清淡饮食”正在毁掉中老年人的血管!我国近20%的老年人患有肌少症,不吃肉,血管反而越来越脆

“清淡饮食”正在毁掉中老年人的血管!我国近20%的老年人患有肌少症,不吃肉,血管反而越来越脆

消化石医生
2026-06-05 21:28:28
走面风波升级,“一言不发”的冯小刚,终于不再顾及所谓的体面!

走面风波升级,“一言不发”的冯小刚,终于不再顾及所谓的体面!

摸爬滚打的烙印
2026-06-29 07:20:54
多家检测机构拒绝个人申请纸尿裤甲酰胺检测

多家检测机构拒绝个人申请纸尿裤甲酰胺检测

财闻
2026-06-30 20:56:42
亚马尔:我达不到梅罗的高度;若小蜘蛛来巴萨会张开双臂欢迎他

亚马尔:我达不到梅罗的高度;若小蜘蛛来巴萨会张开双臂欢迎他

懂球帝
2026-07-01 17:33:05
切尔西签意甲新锐,21岁全能边卫帕莱斯特拉加盟,七年长约锁核心

切尔西签意甲新锐,21岁全能边卫帕莱斯特拉加盟,七年长约锁核心

云儿评球
2026-07-01 23:01:40
官宣!中国女排冠军二传姚迪正式签约,身披新战袍,朱婷续约在即

官宣!中国女排冠军二传姚迪正式签约,身披新战袍,朱婷续约在即

余憁搞笑段子
2026-07-01 17:03:22
卢卡申科出席儿子北大毕业礼

卢卡申科出席儿子北大毕业礼

俄罗斯卫星通讯社
2026-07-01 16:05:24
伊朗总统:达成伊美谅解备忘录经与穆杰塔巴充分协调,一些政治派别“试图通过抹黑谈判团队、质疑国家决策,削弱这一外交成果”

伊朗总统:达成伊美谅解备忘录经与穆杰塔巴充分协调,一些政治派别“试图通过抹黑谈判团队、质疑国家决策,削弱这一外交成果”

鲁中晨报
2026-06-30 20:26:40
倒计时2天!对台新法将生效,大陆全面收网,赖清德败局早已注定

倒计时2天!对台新法将生效,大陆全面收网,赖清德败局早已注定

史智文道
2026-07-01 16:55:03
哈佛10年追踪:俯卧撑比血压更准!每周2-3次力竭,给全身换系统

哈佛10年追踪:俯卧撑比血压更准!每周2-3次力竭,给全身换系统

健身狂人
2026-06-13 20:30:47
秦海璐变卖房产,清空全部资产,凑出近亿身家,绝境兜底救下刘涛

秦海璐变卖房产,清空全部资产,凑出近亿身家,绝境兜底救下刘涛

秋别离
2026-06-13 15:50:00
俄媒女主持人曾言:若中国愿出兵300万,俄军很快就能打败乌克兰

俄媒女主持人曾言:若中国愿出兵300万,俄军很快就能打败乌克兰

南宗历史
2026-03-17 16:53:10
80年代中美蜜月期,中国拿了多少美械装备?该告诉大家实情了!

80年代中美蜜月期,中国拿了多少美械装备?该告诉大家实情了!

抽象派大师
2026-06-30 01:45:32
孙鹏、狄莺早分开生活! 孙安佐前经纪人爆家庭内幕「像政商关系」

孙鹏、狄莺早分开生活! 孙安佐前经纪人爆家庭内幕「像政商关系」

ETtoday星光云
2026-07-01 17:26:08
2026-07-01 23:55:00
GameRes游资网 incentive-icons
GameRes游资网
GameRes游资网
7372文章数 10467关注度
往期回顾 全部

游戏要闻

PS忠实博主带头抵制索尼PS6!玩家集体沸腾支持

头条要闻

六旬父亲背8个土鸡蛋接考后续:儿子报考大学已确定

头条要闻

六旬父亲背8个土鸡蛋接考后续:儿子报考大学已确定

体育要闻

卖球衣救子的门将,把德国扑出了世界杯

娱乐要闻

77岁牛群公证裸捐全部财产,清贫独居坚持月捐

财经要闻

新氧贷款:宣传年化15%,实际顶格24%

科技要闻

Claude Code被曝“植入木马”识别中国用户

汽车要闻

同比暴涨188.4% 方程豹6月热销35607台

态度原创

手机
时尚
艺术
房产
公开课

手机要闻

苹果中国官网终于上线iOS 27预览,但砍掉了所有AI内容

7月,穿好看的衣服,看最美的风景

艺术要闻

西安美术学院,2026届油画系硕士研究生毕业作品选(二)

房产要闻

洞察新局 | 2026年天河置业红盘图鉴

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版