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

游戏卡顿白皮书 › 只有部分人遇到的问题

到达即处理的服务器造成的快进 Event-driven processing of bursty inputs

原因 ID pt-event-server · 主责 研发团队·服务器开发 · 配合 研发团队·客户端开发

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

在包一到就立即处理并广播的服务器上,网络差的人扎堆到达的动作会被接连立即执行。

起因 网络差的人的技能、移动请求扎堆到达 → 结果 服务器一收到就按顺序执行,并立即通知所有人 → 画面表现 在别人眼里,这个人一瞬间放出好几个技能,或像快进一样移动

症状
快进
因素
抖动
谁会遇到
只有某个角色看起来异常
何时出现
做特定操作时, 一直
负责方
主责 研发团队·服务器开发 · 配合 研发团队·客户端开发
研发团队要做的事
服务器:按动作附带的输入时间的间隔执行(时间只在允许范围内采信);或者不拒绝扎堆到达的动作,按最小间隔(公共冷却)拉开后依次执行;不要只按到达时间做冷却检查(会吞掉正常输入)。客户端:给动作附上输入时间再发送。
监控图上
仅部分偏高 · 各玩家的动作执行间隔
查看位置
在服务器日志中按玩家记录动作的到达时刻、执行时刻、客户端附带的输入时间(如果有),比较执行间隔和输入间隔。同时在服务器侧抓包,看该玩家包的到达间隔
确认依据
输入间隔正常,服务器到达、执行间隔却挤在几 ms 之内,挤在一起的时刻与其他人反馈快进的时刻重合
排除依据
输入时间的间隔本身就挤在一起,是客户端或脚本方面的问题。服务器执行间隔均匀,只在别人画面上看起来挤在一起,是观看者的线路问题
确认手段
需要游戏服务器/客户端的日志和指标

出处

  1. Understanding Networked Movement in the Character Movement Component for Unreal Engine Epic Games
    服务器每收到一个 ServerMove 就计算一次移动,用与上一次移动的时间戳差值确定时间间隔。与服务器时间差得太多时丢弃该次移动
  2. Deterministic Lockstep Gaffer On Games
    输入到了就应用,即使按 60 Hz 发送,间隔也不均匀,结果忽快忽慢

相关原因

同一层:只有部分人遇到的问题

其他层中同样导致“快进”的原因

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