55 lines
2.2 KiB
Markdown
55 lines
2.2 KiB
Markdown
---
|
||
title: "Replication Graph"
|
||
type: concept
|
||
tags: [unreal-engine, networking, multiplayer, ue5]
|
||
sources: [unreal-multiplayer-architect]
|
||
last_updated: 2026-04-26
|
||
---
|
||
|
||
## Definition
|
||
Replication Graph 是 UE5 的空间分区复制优化系统,用空间网格分区替代默认的扁平相关性模型。通过只向相关客户端复制区域内的 Actor,显著降低带宽消耗。核心机制:`UReplicationGraphNode_GridSpatialization2D`(开放世界空间网格)和自定义 `UReplicationGraphNode`(休眠 Actor 优化)。
|
||
|
||
## Core Mechanisms
|
||
- **空间网格分区**:基于 2D 空间网格,将世界划分为网格单元,每个单元仅复制给附近玩家
|
||
- **休眠 Actor 优化**:NPC 等休眠 Actor 不在任何玩家附近时,以极低频率复制
|
||
- **动态 relevancy**:根据客户端视角动态决定 Actor 的相关性
|
||
- `UReplicationGraphNode_GridSpatialization2D`:开放世界空间分区节点
|
||
- `UReplicationGraphNode`:可自定义的复制图节点基类
|
||
|
||
## Implementation
|
||
```cpp
|
||
// 启用 Replication Graph 插件
|
||
// DefaultEngine.ini
|
||
[/Script/OnlineSubsystemUtils.IpNetDriver]
|
||
ReplicationGraphClassName=ReplicationGraph.UReplicationGraph
|
||
|
||
// 自定义休眠节点
|
||
UCLASS()
|
||
class UMyDormancyNode : public UReplicationGraphNode
|
||
{
|
||
// 重写 DetermineWrites 会话逻辑
|
||
};
|
||
```
|
||
|
||
## Key Benefits
|
||
- 开放世界多人游戏中带宽降低 40%+
|
||
- 仅复制视野内 Actor,减少不必要的网络流量
|
||
- 可自定义节点类型适配特殊需求
|
||
|
||
## Network Profiling Commands
|
||
- `net.RepGraph.PrintAllNodes` — 打印所有复制图节点信息
|
||
- Unreal Insights — 性能分析工具,测量复制图对带宽的影响
|
||
|
||
## Connection to Other Concepts
|
||
- [[Actor Replication]] — Replication Graph 是 Actor 复制的空间优化层
|
||
- [[Server-Authoritative Model]] — 服务器权威通过复制图高效同步状态到客户端
|
||
- [[Network Prediction]] — 预测系统依赖高效的复制同步
|
||
|
||
## Relationship to Agent
|
||
[[UnrealMultiplayerArchitect]] 使用 Replication Graph 作为生产级多人游戏的带宽优化方案,性能基准:\"Bandwidth per player < 15KB/s at maximum player count\"。
|
||
|
||
## Aliases
|
||
- UE5 Replication Graph
|
||
- Spatial Replication
|
||
- Grid Spatialization
|