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

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

技能不支持预输入 No input/spell queue

原因 ID sy-no-queue · 主责 研发团队·客户端开发 · 配合 研发团队·服务器开发

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

必须等服务器确认上一个技能结束后才能按下一个技能时,每次衔接中间都会插入一段往返时间。

起因 只有在“上一个技能确认后”才接受下一个技能的输入 → 结果 每两个技能之间都空出一段与 ping 相当的时间 → 画面表现 每次衔接之间都出现空当,ping 越高 DPS 越低

症状
操作延迟, 吞操作/回档
因素
延迟
谁会遇到
只有我, 仅特定功能
何时出现
做特定操作时
负责方
主责 研发团队·客户端开发 · 配合 研发团队·服务器开发
研发团队要做的事
客户端:预输入时间窗,冷却结束前一段时间(例如 0.3~0.4 秒)内的输入也接受,并立即发给服务器。服务器:稍早到达的输入不要拒绝,在冷却结束的那一刻执行。
数值参考
冷却 1 秒的技能衔接中,ping 150 ms 时每两个技能之间至少空出 0.15 秒,同样时间内放出的技能减少 13% 以上。
监控图上
一直偏高 · 技能之间的空当,RTT(ping)
查看位置
在服务器日志中按角色记录技能冷却结束时刻、下一个技能请求到达时刻、执行时刻,把其间的空当与玩家 RTT 对比
确认依据
从冷却结束到下一个技能执行之间总是空着大约一个 RTT,ping 越高的玩家空当越长,同样时间内用出的技能越少
排除依据
空当与 ping 无关、保持固定,是公共冷却或动画时长的设计。空当只是偶尔猛然变大,看抖动、丢包或 tick 超出预算
确认手段
需要游戏服务器/客户端的日志和指标
深入了解
例如《魔兽世界》设有预输入时间窗,并允许玩家在设置中调整。时间窗比往返时间长时,衔接之间几乎感觉不到 ping。

出处

  1. Latency and Player Actions in Online Games (Communications of the ACM, 2006) ACM
    《EverQuest 2》中延迟越大,角色造成的伤害越低,战斗时间越长(0→500 ms 时,约 2 分钟的战斗多出 5 秒)

相关原因

同一层:同步设计

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

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