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

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

双重 tick 等待 Double tick quantization

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

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

请求攒到下一个 tick 才处理,结果又在再下一个 tick 才发出,tick 间隔就被叠加了两次。

起因 收到的请求在下一个 tick 处理 → 结果 处理结果也攒到下一个发送 tick 统一发出 → 画面表现 线路 ping 很低,反应却稳定地慢约 1.5 倍 tick 间隔。10 tick 服务器平均 0.15 秒,最差 0.2 秒

症状
操作延迟
因素
延迟
谁会遇到
全服
何时出现
一直
负责方
主责 研发团队·服务器开发
研发团队要做的事
在处理的那个 tick 里直接发出响应,提高 tick 率,重要响应立即发送。
数值参考
10 tick 服务器一个 tick 是 100 ms,光 tick 等待就要多出平均 150 ms、最差 200 ms。只等一次,平均是 50 ms。
监控图上
一直偏高 · 从请求到达到发出响应的时间
查看位置
在服务器侧抓包,测试账号多次做同一动作(例如使用物品)时,测量请求包到达时刻与对应响应包发出时刻的间隔。有服务器日志时,看请求到达时刻、处理所在的 tick 编号、发出响应的时刻
确认依据
在服务器内部花的时间平均约为 tick 间隔的 1.5 倍,最长约 2 倍,与 RTT 无关、保持稳定
排除依据
服务器内部时间在平均 tick 间隔的一半上下,说明 tick 等待只有一次。比 tick 间隔长且忽长忽短,看 tick 超出预算
确认手段
运维工具即可确认(无需游戏代码)

出处

  1. Peeking into VALORANT's Netcode Riot Games
    到达的输入最多要等一个 tick 才到 tick 边界,应用和发送又要一帧。tick 率越高,这段时间越短
  2. VALORANT's 128-Tick Servers Riot Games
    延迟一部分来自网络,一部分来自服务器的 tick 率
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    NetworkVariable 的变更每个网络 tick 汇总发送一次,不即时发出

相关原因

同一层:同步设计

其他层中同样导致“操作延迟”的原因

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