情报量,即知识储备量的差距,就是切切实实的实力差距 。正如上面《No Game No Life》剧集截图中所展示的内容,刚开封的新牌还是已经洗过的旧牌,这种小细节虽然看似很简单,但其中的道理就和变魔术一样,懂得了其中的玄机其实也就这么一回事。但即便是这么一个微小的细节,知道和不知道,是完全两个不同的概念。
在实际的电玩对战中,知道和不知道这两个概念所造成的实际差距比这1.92%对100%的差距还要大:10/0,不知道的一方甚至会被打得体无完肤。完败的一方甚至会因此而陷入怀疑人生不知所云的处境。
在没有意识到这一层之前,可能对很多潜意识里的因素认知只是一笑而过就算了,而一旦理解到了情报的重要性后,玩家的整体硬实力就会有一层飞跃性的突破,一点都不夸张。下面,我会以Counter Strike 1.6这个骨灰游戏做例子,说明一下这个概念。
从CS1.6时代网战混出来的老年人大概都知道这个参数的重要性。 这个参数其实就是当今我们常说的一个很重要的网络机制:“ 延迟补偿”。 不过ex_interp参数是将‘延迟补偿’具象化成可视画面后的‘ 手动设置的延迟补偿 ’,即‘插入帧’。
interp的全称为frame interpolation, 在网络游戏中,插入帧(frame interpolation)参数是结合网络补包(lag compensation)一同发挥作用的。网络补包(lag compensation)的作用是往玩家主机与网络之间发送 插入的 额外数据包,将数据包源源不断地传输到服务器中。而网络数据进行补包发送后所产生的具体可视反馈则需要通过生成我们肉眼可视的实际画面所表现出来,即将服务器反馈的数据变成本地可视画面的工作,就是由插入帧(frame interpolation)来完成。
如上图,存在网络延迟的对战游戏中,实际上我们玩家所看到对手运动的身姿其实是一个过去式的残影,对手所在的实时位置(Real-time position)已经不在我们肉眼看到的位置了,玩家之所以能够看到这个‘残影’,则是插入帧(frame interpolation)起作用的功劳。
如果没有插入帧,那实际我们玩家看到的画面会是这样子的:
没有插入帧,我们看到的就是一个瞬移玩家的‘鬼魂’。而我们之所以能够开火击中敌方玩家的‘残影’并且对敌方玩家造成伤害,则还是多亏了网络补包(lag compensation)的功劳,补发包会将命中了敌方玩家的数据回传到服务器中计算出命中后的伤害并反馈给敌方玩家的本地PC显示出来,这个过程是在服务器中进行的。
和‘ex_interp’密切相关的,还有另外一个兄弟参数:‘cl_updaterate’。‘cl_updaterate’参数所代表的意思为‘ 每秒从服务器接受的数据包数量 ’,即数据包接收速率。工作方式为:当‘cl_updaterate’参数数值为100时,意味着1秒内接受100个数据包,也就是说每隔1/100=10ms就会接收到一个数据包。收包时间将决定我们玩家看到对手身姿的位置的有效相对时间,这个有效时间当然越精准越好。而这个参数设置成 100 是最佳的数值。即便是线下的比赛,玩家的Ping值最低也有8-9ms,即数值=100=10ms,cl_updaterate=100效果最佳。 这个数值过高是没有意义的。
建立在cl_updaterate数值固定的前提下,接下来我们需要考虑的才是补帧参数 ex_interp 的数值。
物理建模(True)| 虚拟建模(Echo)| 真实建模(Real) | 相对时间坐标(Tick)
ex_interp参数是 为了解决存在网络延迟的情况下,处于‘运动状态的对手’的真实位置和我们肉眼所看到的角色位置不同步的问题。只有对手处在运动状态时,ex_interp参数才会生效
由ex_interp参数控制的是一个由计算机模拟生成的视觉补正建模,这个补正是对敌对玩家的相对时间坐标(Tick)进行实时的虚拟计算,模拟生成虚拟相对时间坐标(Tick)的虚拟建模(Echo), 这个由计算机推算出来的虚拟建模(Echo)是不具备任何攻击判定的。 同时它的存在会将具备伤害触发判定的物理建模(True)代替。
也就是说, 只要ex_interp参数生效,我们肉眼所看到的全都是虚拟建模(Echo) 。
设置这个插帧参数的意义在于:它将帮助我们以可视的建模定位敌方角色的真实物理位置。数值准确的ex_interp参数生效后的结果则是将游戏中具有攻击判定的物理建模(True)和补帧后生成的肉眼可视的虚拟建模(Echo)的相对时间坐标(Tick)位置实时叠加在一起,从而变成一个被我们子弹攻击后能够触发伤害判定的肉眼可视的真实建模(Real) 。
虽然不能做到100%精准重叠,但至少能最大程度地减少我们的对真实建模(Real)的误判。也可以理解为: 它将决定我们开火后的子弹着弹点是否能准确地落在对方玩家的真实建模(Real)上。
这也是很久以前那个网络信息尚不发达的年代,对这个参数理解不到位的玩家普遍认为修改ex_interp参数会影响子弹弹道的根本原因。确实,命中判定的手感差异是能够切实地感受到的,但是这种看到但打不到的感觉以前却被玩家们称之为: 弹道延迟。
本来,一款单机游戏只需要设置好物理建模(True)即可。但CS系列历来都是‘网络游戏’,即便玩家只是单机开启一场Bot对战,但这就其实已经基于个人本地主机所开启的局域网(LAN)游戏了。正因为有PING值的存在,也就意味着只要是开启了一局对战就一定存在网络延迟,无论有没有‘插入帧’参数的介入,在实际游戏画面中,肉眼所看到的敌方玩家身姿都不是对手在相对时间内的真实位置(Real-time Position)。
这也意味着,ex_interp参数数值的设置和玩家个人的PING值有挂钩。玩家需要根据自身的PING值设置相应的ex_interp参数的数值。且ex_interp参数的数值必须精确在一个可接受的范围内。
如果设置并生效的ex_interp数值与自身网络PING值偏差过大 。就会变成上图所示的情况,开火射击命中的只是一个影分身虚拟建模(Echo),不会触发任何伤害判定。肉眼虽然看到敌方切实被命中了,但却没有任何造成任何伤害。这是 因为子弹并没有击中具备伤害判定的物理建模(True)本体 ,能够触发伤害判定的物理建模(True)变成了虚拟建模(Echo)移动轨迹前方/后方的肉眼不可视的 ‘空白区域’ 【视情况而定】。
那么, ex_interp参数的最佳数值该如何把握呢?
首先,要知道PING值是怎么计算的。PING值就是你的主机发送一个数据包,传递到目标地址,然后目标地址又重新把这个包给你发回来,而这个数据包所走的这一趟往返旅程 所花费的时间 ,也就是所谓的PING值。 玩家的PING值,就是ex_interp参数该设置的数值 。
ex_interp的数值(0.1,0.05,...,0.02,0.01等)单位的本质是以秒为基准的时间单位,0.1就代表0.1秒=100ms,0.01秒=10ms……它代表的是 一段固定的相对时间 。那么解读过来就是:‘每x.xxxxx秒虚拟生成一次对方角色的运动帧’或者‘固定将对方角色的可视建模(Echo)提前显示x.xxxxx秒’。
假设本地玩家的固定PING值为50ms,可以理解成我们肉眼所看到影像是敌方玩家50ms以前的残影, 那我们只需要通过修改ex_interp将我们实际看到的物理建模提前50ms显示即可,即ex_interp 0.05。这时,玩家所见的就是一个 物理建模(True)与虚拟建模(Echo)重叠后的具备实质判定的真实建模(Real)。
上述两张图为局域网模式下,仅更改ex_interp参数所导致的建模位置不同。
而线下比赛的PING值是最为稳定的,使用的是LAN模式,即局域网的对战。PING值一般为6ms-10ms,对应的ex_interp参数数值则设置成0.01,这就是当年广为流传的 ex_interp 0.01 的由来——而线上对战的时候由于PING值变化剧烈,这个参数根本起不到任何作用。
当年绝大多数玩家对ex_interp 0.01参数都存在理解上的误区,他们看到打线下的职业选手如此设置这个参数的数值, 也就照葫芦画瓢地将ex_interp 0.01值定义成了ex_interp的最佳的数值,但这种理解显然是错误的 。
我们在打线上对战时,网络PING值是很难做到一个稳定的整十位数值,大多数情况下我们的PING值都是不规则的,比如34ms、17ms、25ms等等。理论上讲,ex_interp参数是可以设置成精确到毫秒的,比如说ex_interp 0.017——但这并没有多大用处。为什么?
大多数提供给CS1.6网战使用的服务器,都会将ex_interp参数的数值限制成 只以整十作为单位的数值为有效数值。 也就是说,数值能够生效的其实只有小数点后两位。所以,在这里过于纠结细节是没用的。 即ex_interp X.XX的格式 。
网络PING值是浮动的,而且浮动只会让PING值偏高,几乎不会出现PING值偏低的情况。在设置ex_interp参数时可以考虑将数值设略高几毫秒后取整,比方说我们的平均PING值是51-57ms,那么我们可以考虑将数值设置成ex_interp 0.06。
至于你们要问我十几年前我是否知道这个参数的真正含义?
答案是很肯定的:知道它的作用,但当初不是从计算机专业知识的角度来理解这个参数的。
至此,关于ex_interp参数的例子,就已经讲完了。那么话又说回来了,为什么我要举这个例子呢?
ex_interp参数的本质其实就是当今主流网游中所涉及到的 ‘延迟补偿’ 的科普。当然,实现延迟补偿有很多方法,这只是其中一种。重要的是,如果一名普通玩家对游戏系统与参数没有深刻的理解,那么, 他甚至可能不会意识到CS1.6中的ex_interp参数默认数值是0.1。 这也就意味着玩家很难在适应自己的网络环境基础下,将系统环境调整为最优化状态,更无从谈起能够发挥出自己最佳的实力了——这是隐藏在硬件下的另一个重要内容。
如果是在不懂得调整这一重要因素的前提下开始对战,线上对战还没有开打,双方玩家间可能就已经分出了胜负。
知道怎么设置一个正确参数,至少能够确保发挥自己的真实实力,不至于带着一个天然固有的DeBuFF影响去竞技。世上没有绝对平衡的对战,其意义或许就来自这些细节的堆积。
当然这只是众多游戏中的其中一个小例子,具体的情况还是要针对具体的游戏而言,每个游戏都存在有诸如此类使用正常手段就能利用好的小技巧,了解并掌握到这些技巧,就是在对战游戏中变强的其中一步扎实的脚印。
评论区
共 32 条评论热门最新