Files
nexus/wiki/concepts/BandwidthManagement.md
2026-04-26 12:02:53 +08:00

1.8 KiB
Raw Blame History

title, type, tags, sources, last_updated
title type tags sources last_updated
Bandwidth Management concept
networking
performance
multiplayer
unity-multiplayer-engineer
2026-04-26

Aliases

  • Network Bandwidth Optimization
  • 带宽管理

Definition

带宽管理是在多人游戏中控制网络流量的技术和策略,目标是在有限的带宽下提供流畅的游戏体验。典型目标:每玩家稳态带宽 < 10KB/s。

Core Techniques

1. Dirty Check脏值检查

NetworkVariable 仅在值真正变化时触发同步,避免重复设置:

// BAD: 每帧设置相同值 → 无意义网络流量
void Update() {
    Position.Value = transform.position; // 即使位置没变也同步!
}

// GOOD: 值真正变化才同步
void FixedUpdate() {
    if (Vector3.Distance(transform.position, lastPosition) > 0.01f)
    {
        Position.Value = transform.position;
        lastPosition = transform.position;
    }
}

2. Throttling限流

非关键状态更新频率限制:

  • 生命值条:最高 1Hz
  • 分数:最高 1Hz
  • 位置同步:使用 NetworkTransform 而非每帧 NetworkVariable

3. Delta Compression差分压缩

对复杂结构使用 INetworkSerializable 只同步增量:

public struct ComplexState : INetworkSerializable
{
    public Vector3 position;
    public Quaternion rotation;
    // 只同步变化的部分
}

4. Object Pooling对象池

NGO NetworkObject 的 spawn/despawn 成本高,对频繁创建的对象使用对象池复用。

Performance Target

  • 每玩家稳态带宽:< 10KB/s
  • 峰值带宽(事件触发时):< 50KB/s
  • 同步延迟容忍200ms 延迟下无明显卡顿