游戏卡顿白皮书 › 只有部分人遇到的问题
集中在特定运营商玩家身上的校验误判 Anti-cheat / movement validation false positives on bad ISPs
原因 ID pt-isp-validation · 主责 研发团队·服务器开发 · 配合 运维团队·网络运维
在含图示和实验的完整版中打开此卡片 →
使用抖动大的线路的人,输入会扎堆到达,经常触发服务器的速度、冷却检查。
起因 特定运营商、地区的线路晚上抖动变大 → 结果 服务器把扎堆到达的正常输入判为超速、冷却违规 → 画面表现 只有这家运营商的玩家出现拉回、技能被拒,严重时被服务器踢出而掉线
- 症状
- 拉回, 吞操作/回档, 掉线
- 因素
- 抖动
- 谁会遇到
- 特定地区/运营商, 只有我
- 何时出现
- 晚高峰, 移动中/切换地图时
- 负责方
- 主责 研发团队·服务器开发 · 配合 运维团队·网络运维
- 研发团队要做的事
- 检查改用跨几秒的累积额度,参考线路状况(ping、抖动)放宽标准,强制断开前加一个警告阶段,用每个玩家的输入缓冲把扎堆到达的输入均匀分到每个 tick,从源头减少误判。
- 运维团队要做的事
- 按时段查看各运营商的丢包率、抖动分布并同步给研发团队,检查该运营商段的路径(双向 mtr),必要时调整路由或向运营商升级处理。
- 监控图上
- 特定时段偏高 · 各运营商(ASN)的校验拒绝、强制断开次数,各运营商的抖动
- 查看位置
- 给服务器的校验拒绝、校正、强制断开日志标上接入 IP 所属运营商(ASN)和时刻,按运营商、时段统计。运维团队在同一时段向该运营商方向跑双向 mtr,看抖动和丢包
- 确认依据
- 拒绝、强制断开集中在特定运营商,晚上增多,同一时段该运营商的抖动也高,而按几秒合计的移动量在规则之内
- 排除依据
- 与运营商无关、只有特定账号反复出现,可能是真的作弊。所有运营商一起增加,是服务器 tick 积压、指令被集中应用的服务器侧原因(tick 超出预算)
- 确认手段
- 需要游戏服务器/客户端的日志和指标
出处
- Source SDK 2013: player.cpp Valve
用每个 tick 累积的指令预算防止超速,但开发注释中提到,更严格的限制会让正常玩家也一卡一卡 - RFC 2697: A Single Rate Three Color Marker IETF
令牌桶:按平均速率和允许的突发量判定 - Understanding Networked Movement in the Character Movement Component for Unreal Engine Epic Games
客户端与服务器时间戳差距大时,丢弃该次移动或走时间差消解流程;按服务器时间计算,防止加速外挂
相关原因
同一层:只有部分人遇到的问题
其他层中同样导致“拉回”的原因
查看含图示和实验的原卡片