1.8 KiB
1.8 KiB
title, type, tags, sources, last_updated
| title | type | tags | sources | last_updated | ||||
|---|---|---|---|---|---|---|---|---|
| Bandwidth Management | concept |
|
|
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 延迟下无明显卡顿
Related Concepts
- NetworkVariable: 带宽管理的核心对象
- ClientPrediction: 预测减少对服务器状态的依赖
- UnityMultiplayerEngineer: 负责带宽优化的专家