嗨玩手游网

CS

CS

休闲益智|9.1MB

csgola开箱模拟器是一款深...

下载

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

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

作者: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中的回放录制命令

PDD直播看CSGO大神操作集锦:看回放都看懵了!

视频加载中...

升堂!如何成为一名合格的CSGO监管员

太长不看版最近有玩家问我如何成为监管此前有合辑做过科普,本期将推出精华版

上周有玩家问我怎么成为监管,如何操作?其实关于鉴别作弊、如何举报,之前已经有一个系列介绍过了。公众号回复:监管,查看《教你如何监管,鉴别举报外挂》。

那么本期我们就再浓缩下内容,让大家明确下如何成为监管,并且如何在监管中操作。

成为监管条件

监管允许 CS:GO 社区采用合格且经验丰富的监管成员来审议玩家举报的破坏性行为,判定举报是否真实可靠,并采取相应的临时封禁,以进行社区的自我管理。所以,成为一名监管员也是有一定的要求的。

具体要求有:

1. 游戏胜场至少150场(至少,不是到了150胜场就一定有,只计算官方匹配,平台以及社区游戏不算);

2. 段位至少在黄金1(包含黄金)以上;

3. 具有优先账号;

4. 游戏行为良好(被举报次数少,无恶劣游戏行为等);

5. 在游戏中维持活跃(简单来说就是平常要多玩,段位隐藏将会失去监管权限)。

当你具备了以上条件,那么恭喜你,你成为了一名监管员,可以为游戏社区贡献自己的一份力了。当你下载好证据录像并点击审议,你的监管就开始啦。首先我们先讲下监管中的一些操作。

监管要基于无罪判定

在监管中你需要观看从被举报玩家的比赛中随机选取的八回合回放片段。你的职责是判断在回放中该玩家是否有任何违规行为。为了排除可能影响你判断的因素,被举报的玩家将显示为“嫌疑人”,而其他玩家将使用化名显示,比如:大象、河马、鸵鸟等等……所有文字和语音聊天都被删去。

监管要点是:要基于无罪进行判定,他尽管叫“嫌疑人”,但不能认为他有罪找证据,而是你需要在假定嫌疑人为“清白”的基础上,根据嫌疑人的行为作出裁定。观看时,如果你想要进行快进暂停等操作,可以同时按下shift和F2,这样可以调出可以在屏幕左侧调出demo控制台。

我们主要使用的分3个区域:

1区域为暂停/继续;

2区域为播放速度选择区域,当你想快进时可以点击倍速按钮或拖动底下的方块进行操作;

3区域是进度条,可以通过拖动小方块控制进度,

这里需要注意由于你只需要观看8回合录像,拖动太多可能直接导致审议结束。

判决务必公正,疑罪从无

观看完毕后,就正式升堂来到了判决页面,这时候各位大人就要秉持公正,不要错判一个良民,也不要放过一个作弊者。我们看到,这个判决书上一个有4项罪行,每项罪行下有两个判决选项一个为证据不足,一个为明显符合无可置疑原则。

这里各位大人就要注意了, 宗旨是:疑罪从无!这里可不能宁可错杀一百,也不放过一个哦!明显符合无可置疑原则就是非常明显的违背了游戏规则的行为才可以选择这项,不能因为你觉得他“像挂”但没有明显证据来判决。下面我们就来细说一下这四项罪行。

1

瞄准辅助

这一项说的就是自瞄了,像我们平时说的陀螺就属于这一类。

如果我们在证据录像中看到了这种陀螺(低头转的同时造成击杀,而不是见到有人在转视角就判,有玩家改鼠标灵敏度假装陀螺,不要误判),那么不用犹豫,直接明显符合无可置疑原则送上刑场。

其实一些高分段的玩家,经常能打出神经枪,看起来很像自瞄,但如果整场偶尔出现这种神经枪表现,而大多数时间该玩家表现是正常的,这样并不能成为作弊的证据。但如果一位嫌疑人全场有一半击杀都是神经枪,那么你就要打起精神关注起来了。顺便提一下,通常开启自瞄的嫌疑人比较钟爱的武器一般是鸟狙和沙鹰(经验推断,不能做为证据)。如果一名嫌疑人只起鸟狙沙鹰,枪枪爆头(这个爆头率比职业哥还高),若他的对手们不是白银萌新送人头的话,那他大概率使用了瞄准辅助的。

2

视野辅助

这一项罪行就是我们常说的透视,“滴滴滴”也属于这一类。这一类犯罪是比较容易揪出来的,比较难演,毕竟如果嫌疑人知道人在哪里,很难控制住不去用准星去瞄准那里或者找人杀。

透视作弊是比较容易通过观看demo发现的,这里建议各位调查员看demo打开X光去观看一场证据,通过X光透视很容易原形毕露。如果你发现一个人在没有听到脚步的情况下提前枪打人;或者很明显的用准星去瞄准墙后有人的位置,甚至开枪;又或者在没有人的地方都切着刀跑路,一旦快到有人的地方就切枪静步,那么这个人多半可以被定罪为视野辅助。这里需要提醒各位判官的是,很多混烟击杀和被闪光一瞬间开枪击杀都不能算作无可置疑的证据,因为一些高分段对地图有研究的玩家都练过一些穿烟或者穿点的位置,而被闪白后第一时间开枪也是一个狙击手的日常操作。所以在碰到这些情况的时候就要根据自身经验去公正地判定,如果没有明显证据表示,那么就选择证据不足。

3

其他外部软件辅助

这一项主要针对的是连跳脚本等外部辅助软件,也很容易判定。如果你看到一个人在游戏中无限连跳,并且越跳越快甚至可以代替走路,那么这个人多半开了连跳脚本。因为在竞技服务器中是对连跳最高速度有限制的,不可能做到无限连跳,尤其是官匹64tick服务器想做到连跳就更难了,所以一旦看到像下图这样连跳可以代替走路的,直接选择明显符合无可置疑原则即可。

4

骚扰

这一项行为只要是指游戏行为一类的,不属于作弊范畴但同样对社区危害极大。这类行为包括但不限于挂机、故意友伤,消极游戏等等,如果在证据录像中看到这类行为,直接选择下面。如果因为骚扰行为被监管系统封禁,通常是一个有时间的冷却,而不是永久封禁,但是惯犯一样可能被永久封禁。主要也是让我们的游戏环境变得更好。

监管也有评定,切勿滥用私刑

作为一名CS:GO的监管调查员,我们同样是有分数评定的,根据CS:GO官网描述,监管得分代表调查员始终准确判断他们审议的证据的能力——包括真实与测试事件中的每一项指控的证据。在审议统一回放时,调查员与多数调查员的判决一致时得分,不一致时扣分。多数人意见一致时得分变化较大,意见分歧时得分变化较小。由于有测试事件随机插入,提高监管得分的唯一途径是仔细观看整个回放,并根据证据作出全面准确的判断。

这就说明我们判断的越准确,得分就会越高,而高得分调查员的判决比低得分调查员的判决更有效力。所以希望大家在监管的时候一定要秉公执法,既要将作弊者揪出来,不能滥用私刑!

那么看到这里很多玩家就想问了,那对于萌新或者没有监管资格的玩家怎样为我们的游戏环境做贡献呢?很简单,只需要举报破坏性行为即可。文章开头的合辑中有如何举报的客服,人人都有举报的权利,如果你觉得对手或队友作弊或者扰乱游戏,直接将其举报,监管系统内的各位判官们会将其绳之以法。

最后在监管确认嫌疑人是作弊后,建议播放一曲《Astronomia》,可以为作弊者带去快乐。

更多攻略
游戏推荐
更多+