您当前所在位置: > 爆料站 > 君子堂

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

时间:2022-03-28 21:41:27  来源:  作者:网络转载
本文首发“游戏开发那些事”
作者:Jerish

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

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

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

彩虹6号中的击杀回放

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

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

回放系统的录制方式

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

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

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

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

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

优点:

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

缺点:

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

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

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

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

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

优点:

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

缺点:

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

通常来说,这种实现方式可以完美的利用游戏逻辑去进行回放,而且消耗非常小。对于帧同步(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中的回放录制命令


来源:游戏开发那些事

资源转载网络,如有侵权联系删除。
相关下载

玩家评论

泰拉瑞亚八大禁器如何获得_泰拉瑞亚八大禁器获得方式_快吧手游

1.在手游的主界面中,点击PVP。2.接着玩家需要在PVP中打败线上对手。3.最后玩家就可以领取泰拉瑞亚八大禁器了。4.以上就是泰拉瑞亚八大禁器如何获得的解析方法,希详情>>

阅读: 1
日期: 2022-03-27
 DNF手游韩服检测到非法程序是怎么回事?如何解决

想必最近有玩家在体验DNF手游韩服版的时候有遇到游戏检测到非法程序,这就让人奇怪了,明明是按照正常流程安装的游戏啊,为什么打开游戏会遇到详情>>

阅读: 1
日期: 2022-03-27
赛博朋克2077如何使用超梦 超梦使用技巧

详情>>

阅读: 2
日期: 2022-03-18
赛博朋克2077如何获得不朽武器觉

详情>>

阅读: 0
日期: 2022-03-18
艾尔登法环战灰怎么用 新手如何使用战灰

详情>>

阅读: 3
日期: 2022-03-16
从产品体验的角度谈Golf Clash是如何做盈利模式设计的

欢迎回到In-App Purchase Inspector,在这里我们会以消费者的视角定期测评一些F2P游戏。 每期文章,我们都会考虑游戏中IAP的诱因、压力、它们的感知价值、IAP带来的扩展内容详情>>

阅读: 2
日期: 2022-03-13
重塑生存游戏认知——如何实现从“生”到“存”

前言 哲学界有三大终极问题——我是谁?从哪来?到哪去?从意识到死亡的那一刻起,人类就开始思考生命的意义。 生命离不开“生存”和“生活”,生存是人类的基本需求,是维持生命详情>>

阅读: 2
日期: 2022-03-13
原神怎么获得降魔玉符_原神如何获得降魔玉符_快吧手游

原神的降魔玉符需要完成“飞彩镌流年”活动中的“武卫重溟”任务来获得;玩家进入游戏之后在飞彩镌流年”活动界面中点击活动详情,再点击“武卫重溟”,在这里完成详情>>

阅读: 6
日期: 2022-03-07
艾尔登法环下载失败/下载慢如何解决 老头环无法联机游戏怎么办

据了解,国内的玩家最早可以在2月25日零点玩到《艾尔登法环》,PC版的玩家则需要等到7点才可以正式游玩。大家可以趁现在游戏还没正式出来,先预下载一波,等游戏正式详情>>

阅读: 0
日期: 2022-02-25
Free Fire中如何获得新的女性捆绑包

Free Fire 中的 Dragon Spy Diamond Royale 持续 18 天,从10 月 17日开始到11 月 3 日。 要获得 Dragon Spy 捆绑包,玩家需要使用 Diamonds 或 Diamond Royale Vouc详情>>

阅读: 1
日期: 2022-02-25
消逝的光芒2十字弓如何获得 十字弓获取方法分享

消逝的光芒2游戏中有着许多的武器可供玩家选择使用,其中十字弓作为游戏中非常好用的远程武器,很多玩家想知道该如何获取。那么消逝的光芒2十字弓如何获得?接下来小编为详情>>

阅读: 2
日期: 2022-02-16
原神:血牛流和副C流钟离如何选择?

随着原神2.5版本的临近,2.4版本的钟离卡池也即将结束,相信大多数玩家也已经抽到了这名角色,钟离作为游戏中少有能改变整个游戏环境的角色,在实用性和泛用详情>>

阅读: 2
日期: 2022-02-10
发明3丧尸生如何下载 下载教程

发明3丧尸生存游戏是一款非常好玩刺激的丧尸射击游戏,游戏中玩家要控制你自己的角色在这里进行战斗,这里有着非常多的丧尸,你要利用武器去进行射击抵御,游戏中还有非常多的玩详情>>

阅读: 0
日期: 2022-02-08
幻塔如何获得奉献点-奉献点获取方法

  很多玩家小伙伴不是很清楚,幻塔如何获得奉献点?想要知道的小伙伴们,本期小编就为大家带来了相关内容,感兴趣的小伙伴快详情>>

阅读: 1
日期: 2022-02-07
幻塔如何获得装备

导 读 幻塔如何获得装备需要挑战-联合作战(日常本),最主要的装备来源,共有四个副本,每天开放的副本与每个副本掉落的装备都不一样;等级高了之后会出产橙装,同时会掉落相当重要的“详情>>

阅读: 0
日期: 2022-01-27
三国志幻想大陆2022春节神将自选如何选择

三国志幻想大陆春节神将自选哪个最好?2022春节即将到来,官方也是推出了很多福利活动,其中就包括神将六选详情>>

阅读: 2
日期: 2022-01-27
如何获得《原神》赤角石溃杵

详情>>

阅读: 0
日期: 2022-01-26
幻塔如何获得金核

  幻塔如何获得金核?幻塔手游中的金核是一种珍贵道具,今天小编就给大家带来了幻塔金核获取详情>>

阅读: 1
日期: 2022-01-21
天美技术中心TA专家:如何用AI辅助数字内容生产,提升品质效率?

以下文章来源于TiMi Club 天美俱乐部 ,作者腾讯天美工作室群 导语:天美十三周年,天美联合知乎游戏,举办“游戏未来十三问”主题圆桌,邀请游戏从业者、玩家和广大朋友们,一同探详情>>

阅读: 0
日期: 2022-01-20
《彩虹六号:异种》降价联机时总是卡顿如何解决

《彩虹六号:异种》将于1月20日正式发售,原价60美元,现降低售价为40美元。在这款新作中,玩家将以三人一组的形式共同对抗来自外星的异形侵略者。 《彩虹六号:异种》的设定和玩详情>>

阅读: 2
日期: 2022-01-19
原神如何使用原神云堇盾-云堇盾反使用介绍

  很多玩家小伙伴不是很清楚,原神如何使用原神云堇盾?云堇盾是一项非常有用的技能。许多玩家不知道如何使用它。以下小详情>>

阅读: 1
日期: 2022-01-11
消逝的光芒复合弩如何获得

  消逝的光芒复合弩如何获得?复合弩是一把非常好用的武器,今天小编就给大家带来了消逝的光详情>>

阅读: 2
日期: 2022-01-07
《文明与征服》迁城令如何获得 迁城令获取途径分享

在文明与征服游戏中很多玩家还不清楚,迁城令的获取方法是什么。接下来就让小编给大家带来《文明与征服详情>>

阅读: 1
日期: 2022-01-06
永劫无间复活符怎么用_永劫无间复活符如何使用_快吧手游

能复活完全阵亡的队友,但是整局中一共有6张返魂符也就是说一局游戏中只有6个小组可以获得这个物品;它能够为队友赋予额外的复活次数去拯救自己的队友;前期主要以详情>>

阅读: 0
日期: 2022-01-05
梦幻西游是如何用游戏主题曲开一场跨年晚会的

原标题:梦幻西游是如何用游戏主题曲开一场跨年晚会的 2021年的最后一天晚上,梦幻西游举办了一场自己的跨年晚会。 作为国内经典游戏详情>>

阅读: 0
日期: 2022-01-05
如何在原神中获得Summit Shaper

如何获得峰会塑造者 Genshin Impact Summit Shaper 只能从 Wish Banners 获得。这把五星剑非常稀有,很难得到。因此,您可能需要使用大量交织的命运来获得它。 Summi详情>>

阅读: 3
日期: 2021-12-23
《和平精英》捷德奥特曼如何获得

详情>>

阅读: 2
日期: 2021-12-17
超级人类如何下载安装 出现卡顿延迟怎么办

大逃杀游戏超级人类测试已经开始,还没有游玩的小伙伴可要抓紧时间了,下面为大家介绍一下如何进入游戏游玩。 登录steam,在商店中找到《超级人类》页面,下拉我们详情>>

阅读: 3
日期: 2021-12-11
泰拉瑞亚妖灵瓶如何获得_泰拉瑞亚妖灵瓶获取方法_快吧手游

在泰拉瑞亚游戏中,玩家想要获得妖灵瓶,需要在击败世纪之花之后,前往地牢寻找蓝色装甲骷髅,以及地域装甲骷髅和锈蚀装甲骷髅;击败他们都有小概率获得妖灵瓶,概率大概是详情>>

阅读: 3
日期: 2021-12-09
部落冲突14本如何看阵下兵

不知不觉部落冲突已经配备玩家快9年了,游戏也迎来了14本的时代,身边的联盟好友也是换了一批又一批,但不管什么版本,如何看阵下兵都是部落战或者部落联赛的详情>>

阅读: 3
日期: 2021-12-08
《JOJO石之海》上线,却遭B站疯狂删减,萌新如何正确追番?_正版_动画_徐伦

原标题:《JOJO石之海》上线,却遭B站疯狂删减,萌新如何正确追番? 这一季的新番由于种种原因,在正版平台上可以追的其实不多,而能上线的新详情>>

阅读: 2
日期: 2021-12-03
科学家重现地球深处的条件以观察铁如何应对极端压力

  在我们的下方有一个固体铁和镍的球体,其宽度跟德克萨斯州最宽的地方一样,它是地球的内核。内核的金属所承受的压力比我们在日常生活中所经历的高约3.6亿倍,温度大概跟太详情>>

阅读: 3
日期: 2021-11-15
如何在Genshin Impact中获得Mora

在穿越充满活力的 Teyvat 世界时,您自然会遇到大量不同的物品和资源。然而,Genshin Impact 中最重要的虚拟货币之一是 Mora。 作为游戏的主要货币来源,它用于购买消耗品详情>>

阅读: 1
日期: 2021-11-15
“粤商创二代”如何打造电竞冠军?_朱一航

原标题:“粤商创二代”如何打造电竞冠军? 总策划:刘海陵 林海利 总统筹:孙 璇 吴 江 执行:孙晶 李卉 赵燕华详情>>

阅读: 2
日期: 2021-11-15
如何使用代码在Spotify中快速搜索音乐

为了更轻松地浏览庞大的歌曲目录,Spotify 提供了一系列可用的搜索代码,类似于我们在 Netflix 上的搜索代码。这使得搜索歌曲或艺术家变得更加简单,并且使用它们非常详情>>

阅读: 1
日期: 2021-11-08
《东方夜雀食堂》幻昙华如何获得

东方夜雀食堂幻昙华如何获得 幻昙华采集地点 幻昙华可以在地图解锁之后,从神社左边拐下去采集,每日16:00之后刷新,24小时周期。 地点在兽道右侧的高详情>>

阅读: 10
日期: 2021-11-05
如何使用Free Fire Membership 2.0获得2600钻石

与之前版本的 Free Fire 会员类似,Free Fire 会员 2.0 也有两个选项:每周和每月。每周会员费为 159 印度卢比,每月会员费为 799 印度卢比。 然而,与旧版本相比,会员 2.0 详情>>

阅读: 1
日期: 2021-11-04
如何在原神中获得免费Primogems

MiHoYo 的免费游戏,让玩家探索其广阔开放世界的每一寸。更重要的是,您只需玩游戏或使用 Genshin Impact 的免费代码,就可以通读整个内容,而无需花一分钱。 然而,如详情>>

阅读: 3
日期: 2021-11-04
GTA 5的Enus Super Diamond如何获得

该 ENUS超级钻石 是在侠盗猎车手V和GTA Online功能最快的轿车车辆之一。在本文中,我们将向您展示有关 Enus Super Diamond GTA 5 位置、价格、性能等的每一个细节详情>>

阅读: 1
日期: 2021-11-04
如何看待RNG和EDG八强赛?宁王:EDG能赢,但希望RNG赢

原标题:如何看待RNG和EDG八强赛?宁王:EDG能赢,但希望RNG赢 北京时间10月22日,英雄联盟S11世详情>>

阅读: 1
日期: 2021-10-22
精彩推荐