--- title: "Bandwidth Management" type: concept tags: [networking, performance, multiplayer] sources: [unity-multiplayer-engineer] last_updated: 2026-04-26 --- ## Aliases - Network Bandwidth Optimization - 带宽管理 ## Definition 带宽管理是在多人游戏中**控制网络流量**的技术和策略,目标是在有限的带宽下提供流畅的游戏体验。典型目标:每玩家稳态带宽 < 10KB/s。 ## Core Techniques ### 1. Dirty Check(脏值检查) `NetworkVariable` 仅在值真正变化时触发同步,避免重复设置: ```csharp // 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` 只同步增量: ```csharp public struct ComplexState : INetworkSerializable { public Vector3 position; public Quaternion rotation; // 只同步变化的部分 } ``` ### 4. Object Pooling(对象池) NGO NetworkObject 的 spawn/despawn 成本高,对频繁创建的对象使用对象池复用。 ## Performance Target - 每玩家稳态带宽:< 10KB/s - 峰值带宽(事件触发时):< 50KB/s - 同步延迟容忍:200ms 延迟下无明显卡顿 ## Related Concepts - [[NetworkVariable]]: 带宽管理的核心对象 - [[ClientPrediction]]: 预测减少对服务器状态的依赖 - [[UnityMultiplayerEngineer]]: 负责带宽优化的专家