状态同步与 AOI 的结合

状态同步下,服务器是权威数据源,客户端只是”视图”。 AOI 子系统决定每个客户端的视图范围,两者通过差量广播结合。

同步流程示意

广播节流

class SyncScheduler {
  private dirty = new Set<number>();

  markDirty(entityId: number) {
    this.dirty.add(entityId);
  }

  /** 每帧收集脏实体,按 AOI 过滤后打包广播 */
  flush(aoi: AoiGrid, tick: number) {
    const packets = new Map<number, number[]>();
    for (const id of this.dirty) {
      for (const watcher of aoi.watchersOf(id)) {
        const list = packets.get(watcher) ?? [];
        list.push(id);
        packets.set(watcher, list);
      }
    }
    this.dirty.clear();
    return packets;
  }
}

关键收益:视野外的实体变更零带宽;参考九宫格 AOI的差量计算。