概念
1.RTT: 往返时间 (rtt) 是指信息往返于另一端所需的时间。有两个影响因素:
- 延迟: 网络信息在互联网上传输需要一些时间。
- 更新间隔: 信息需要处理并发送回另一端。如果服务器更新速度慢,RTT 就会很大。
2.获取 RTT 的方式:
- Client:NetworkTime.rtt
- Server:NetworkServer.connection.rtt
或者在 NetworkPingDisplay 组件获取 RTT 值。
本地机器的RTT
1.本地机器获取的 RTT 大概为 8ms。这是因为 Mirror 的 NetworkManager.sendInterval 设置为 60 Hz。这意味着网络更新每 16 毫秒(1 秒/60)发生一次。RTT 信息可能在更新过程中到达,也可能在等待下一次更新的 16 毫秒期间到达。这意味着平均每条 RTT 报文需要 8 毫秒的等待时间。
优化 RTT
1.60 Hz 的发送间隔是带宽(发送频率越高,带宽成本越高)和 RTT 之间的合理权衡。如果您想用更多的带宽换取更低的 RTT:
- 将发送间隔(sendInterval)提高到 120 赫兹或更高。
- 确保禁用 VSYNC(如果屏幕以 60 Hz 运行,Vsync 会将更新速率限制为 60 Hz)。
- 确保游戏运行速度足够快(如果 CPU 速度太慢,无法达到 120 Hz,那么发送速率显然也无法达到 120 Hz)。
不是建议 RTT 越低越好,而是权衡各种因素。