한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

游戏卡顿白皮书 › 同步设计

延迟补偿过度 Excessive lag compensation

原因 ID sy-lagcomp-overreach · 主责 研发团队·服务器开发

在含图示和实验的完整版中打开此卡片 →

按攻击者的视角回溯得太远时,被打的一方明明已经躲好了,还是会被打中。

起因 为照顾 ping 高的攻击者,服务器大幅回溯后判定 → 结果 在被打者的画面上,自己早已躲到掩体后 → 画面表现 “躲到墙后还被打中”,ping 高的人反而占优

症状
吞操作/回档
因素
延迟
谁会遇到
只有我, 特定地区/运营商
何时出现
做特定操作时
负责方
主责 研发团队·服务器开发
研发团队要做的事
设置回溯上限(例如 200~250 ms),ping 比这更高的攻击者只回溯到上限,剩下的部分由他自己打提前量。
监控图上
仅部分偏高 · 每次命中的回溯时长(按攻击者 ping)
查看位置
在服务器判定日志中为每次命中记录回溯时长、攻击者 RTT、被打者进入掩体的服务器时间。在开发版本中把回溯后的判定框画到画面上(Source 引擎用 sv_showlagcompensation)
确认依据
“躲到墙后还被打中”反馈对应的命中集中在回溯时长长的攻击者身上,回溯时长没有上限,随攻击者 ping 一路增加
排除依据
回溯时长很短的命中也出现墙后中弹,是判定框、碰撞检测的问题。被打者 ping 高时,是他的移动很晚才到达服务器造成的
确认手段
需要游戏服务器/客户端的日志和指标
深入了解
回溯判定以“开枪者优先”为原则。也有人提出“被打者优先”的例外:被打的一方在自己画面上已经进入安全位置时就不回溯。

出处

  1. Peeking into VALORANT's Netcode Riot Games
    回溯没有上限时,延迟 500 ms 的人在对方躲进掩体 0.5 秒后仍能打中,所以要设上限
  2. A Survey and Taxonomy of Latency Compensation Techniques for Network Computer Games (ACM Computing Surveys, 2022) ACM
    “拐角后被打中(shot around the corner)”现象,商业 FPS 的回溯上限,提出被打者安全时不回溯的方法
  3. Source SDK 2013: player_lagcompensation.cpp Valve
    Source 引擎的回溯上限 sv_maxunlag 默认 1 秒(最大 1 秒),sv_showlagcompensation 在画面上显示回溯后的判定框

相关原因

同一层:同步设计

其他层中同样导致“吞操作/回档”的原因

查看含图示和实验的原卡片