玩家按下鼠标左键,屏幕上出现枪口火焰。这中间通常要经过 15ms 到 120ms 以上,具体取决于硬件、系统设置和游戏实现。本文按信号流经的顺序,逐环拆解这段延迟的来源、典型数值和优化手段。
数据说明:文中数值为常见配置下的典型范围或估算,不同硬件、驱动和引擎差异很大。真实项目请以实测为准,测量方法见第八章。
一、先厘清概念
1.1 我们要分析的是哪段延迟
射击相关的延迟有好几种,经常被混为一谈:
| 延迟 | 定义 | 是否受网络影响 |
|---|---|---|
| 系统延迟 / Click-to-Photon | 按下按键到屏幕上出现对应画面变化 | 否(前提是开火反馈在本地立即播放) |
| 命中确认延迟 | 按下按键到看到服务器确认的伤害数字 | 是,额外加上 RTT |
| 网络延迟(Ping/RTT) | 数据包往返服务器的时间 | 就是网络本身 |
本文讨论的是第一种。枪口火焰、枪声、后坐力都应该由本地直接触发