阅前提醒,本文仅为客户端内一些游戏信息做出科学化的解析,了解与否对游戏并无太大影响。最后有省流版
你好,瓦友,请先看下面这组gif动画,我们再继续聊今天的话题。
由这两张图可以得出两个结论。
第一点是命中判定范围。
靶场bot在用肉眼观察下的命中范围比实际的命中范围要小一点。(假设瞄准镜中的bot头部宽度为2.3cm,则实际上前后左右仍有0.3cm左右的命中余量,此时距离bot5m左右),而对英雄的判定结果几乎是没有这一点的命中余量。换句话说靶场bot相当于脱了衣服的英雄,每天我们都在打果体bot(bushi
当然实际对战中这一点几乎可以忽略不计。
第二点是子弹的命中反馈。
子弹命中反馈和弹孔以及弹道画面不在同一帧画面中。
今天要展开聊的是第二点的关于瓦这款游戏的命中判定。
毕竟作为短TTK游戏,一发精准爆头,就足以结束对枪。在浏览过valorant的开发者工作日志以及解析无畏契约的游戏文件包之后,写者可以很确凿地说无畏契约里的关于射击的正确度判定是优先于清晰度的。
正确度指的是射击结果判断错误。(例如:子弹射击头部,却被判定成击中身体,或是敌人在用户端的显示和服务器不同)
清晰度指的是射击结果在视觉上不易判断(例如:子弹击中肩膀,但视觉反馈看起来像是击中头部)
从左键射击到爆头
在开始说明武器射击之前,首先必须科普一下游戏是如何模拟战斗场景。
无畏契约的游戏体验经过两层的模拟:首先是通过服务器(模拟呈现结果以此为准),接着再由玩家的用户端二度模拟(为了让游戏体验更流畅用户端会预测服务器结果)。
游戏模拟包括组成游戏世界的所有元素,像是玩家的位置、交战使用的技能,以及战场上的烟尘。每个画面的生成,都是游戏撷取模拟内容后,渲染呈现在萤幕上的结果。服务器也会以相同的机制生成每个画面(但会省略渲染的步骤,因为玩家不会看到服务器画面)。
这里看图举例来解释说明或许能更显而易见一些。
猎枭(palyer)在看见了奶妈准备偷背身,此时他摁下左键,“射击”这一输入信号会传入输入系统(可能会有小幅度的硬件/系统延迟)。在每个游戏画面中,输入系统都会处理上一个画面之后收到的所有输入信号。此时,“射击”的输入信号会和时间戳一起传送至服务器,以便判断射击发生在模拟的哪一个画面。
此时需要分开描述用户端和服务器端。
用户端。“射击”动作一旦发送至服务器,用户端就会开始运作,在电脑画面上显示枪口闪光和弹道,由于游戏必须在画面上更新一帧画面,因此送出输入信号后,最快要经过一帧,才会看到枪口闪光和弹道,这点很重要,显示弹道的画面,至少与收到“射击”信号的画面相差一帧,这两者并不在同一帧画面上。
服务器端。服务器最终收到了来自猎枭(palyer)用户端的武器射击的信息,由于网络延迟,距离玩家射击武器已经过了一段时间,为了确定武器是在同一个模拟上射击,服务器会先将模拟倒转到用户端发送的时间戳,在评估命中判定,这个倒转步骤包括了玩家的位置和动作(蹲起跳等),在判定后,服务器会将结果回传至用户端,假设猎枭的这一发射击的结果是”爆头“。
是否命中的判定结果由服务器决定。
用户端会从服务器结果击中结果,并根据结果播放视觉特效和音效。由于用户端必须等待服务器传送击中判定结果,所以弹道和命中特效之间有时差,时差就等于网络往返时间+处理延迟。(用下图举例,即为41ms),延迟越严重,时差越明显,即你的网络优势越小。
图源网络,那时候捷风还有三个烟
这里截图了画面来对我上述内容加以说明。
观察以上三图可以简单验证我上文论述的内容。
省流版
ping值越低越好。
玩家端而言,由于网络延迟和输入延迟等,命中特效与敌人位置大相径庭,
由此可得,是否命中的判定依据只能由反馈的视觉命中特效来判断。
而从鼠标左键摁下的瞬间需要通过输入系统➡服务器模拟命中反馈➡结果返回至用户端
箭头中影响的因素有网络延迟以及硬件处理时间(包括CPU处理软硬件处理等)
并且命中判定由系统决定。
这里也就能解释为什么网络延迟高低对于高分段玩家甚至职业选手如此之大。
同时也能解释了校园网玩家出现延迟子弹的原因。
那么问题来了。
请观察以下这个gif图,并回答投票中的问题。
最后,感谢您看到这里,祝生活愉快,上分顺利。