Files
nexus/wiki/sources/unreal-multiplayer-architect.md
2026-05-03 05:42:12 +08:00

104 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Unreal Multiplayer Architect"
type: source
tags: ["unreal-engine", "game-development", "multiplayer", "networking", "ue5"]
date: 2026-04-30
---
## Source File
- [[raw/Agent/agency-agents/game-development/unreal-engine/unreal-multiplayer-architect.md]]
## Summary用中文描述
- 核心主题Unreal Engine 5多人游戏网络架构师的 Agent 个性定义与核心能力规范
- 问题域UE5多人游戏开发中的服务器权威模型、Actor复制、网络预测、GAS复制和专用服务器配置
- 方法/机制定义完整的UE5多人网络开发规范包括RPC验证、复制层级、带宽优化、反作弊加固
- 结论/价值提供可直接用于构建UE5多人游戏AI Agent的完整人格规范和技术交付物模板
## Key Claims用中文描述
- 所有游戏状态变更必须在服务器执行客户端发送RPC服务器验证并复制
- 每个 Server RPC 的 `WithValidation` 标签不可省略,缺少 `_Validate()` 即为作弊漏洞
- GameMode 仅服务器可用永不复制GameState 复制到所有客户端PlayerController 仅复制给拥有者
- Reliable RPC 保证顺序但增加带宽仅用于关键游戏事件高频数据使用不可靠RPC
- GAS 复制需要双初始化路径PossessedBy服务器+ OnRep_PlayerState客户端
- 每玩家带宽应 < 15KB/s使用 Replication Graph 可将带宽降低40%
## Key Quotes
> "The server owns that. The client requests it — the server decides." — 核心权威模型原则
> "Every Server RPC needs a `_Validate`. No exceptions. One missing is a cheat vector." — RPC安全规范
> "That belongs in GameState, not the Character. GameMode is server-only — never replicated." — 层级规范
> "That actor is replicating at 100Hz — it needs 20Hz with interpolation" — 带宽优化原则
## Key Concepts
- [[Server-Authoritative Model]]:服务器权威模型 — 所有游戏状态由服务器模拟,客户端预测并协调
- [[Actor Replication]]Actor复制 — UE5核心网络同步机制通过UPROPERTY(Replicated)实现状态复制
- [[RPC (Remote Procedure Call)]]:远程过程调用 — 客户端与服务器通信的主要机制分Server/Client/NetMulticast
- [[Network Prediction]]:网络预测 — 客户端本地预测操作以减少延迟感知,服务器确认或回滚
- [[GAS (Gameplay Ability System)]]:游戏能力系统 — UE5能力与属性复制框架
- [[Replication Graph]]:复制图 — UE5空间分区优化方案可替代默认平面相关性模型
- [[NetUpdateFrequency]]:网络更新频率 — 每个Actor类的复制频率默认100Hz通常过高
## Key Entities
- [[UnrealEngine5]]:游戏引擎 — UE5提供完整的网络层、复制系统和GAS框架
- [[GameMode]]:游戏模式 — 服务器专属,从不复制,负责规则仲裁和胜利条件
- [[GameState]]:游戏状态 — 复制到所有客户端,存储共享世界状态(回合计时、队伍分数)
- [[PlayerState]]:玩家状态 — 复制到所有客户端,存储玩家公开数据(名称、击杀、死亡)
- [[PlayerController]]:玩家控制器 — 仅复制给拥有它的客户端处理输入、相机、HUD
## Connections
- [[UnrealEngine5]] ← provides ← [[Actor Replication]]
- [[Actor Replication]] ← optimized_by ← [[Replication Graph]]
- [[GameMode]] ← controls ← [[GameState]]
- [[GameMode]] ← manages ← [[PlayerState]]
- [[GAS (Gameplay Ability System)]] ← replicates_via ← [[Actor Replication]]
## Contradictions
- 无已知冲突
## 技术交付物Technical Deliverables
### Replicated Actor Setup
```cpp
// 带有 RepNotify 和条件复制的网络 Actor
UPROPERTY(ReplicatedUsing=OnRep_Health)
float Health = 100.f;
// 服务器 RPC 必须包含 _Validate 实现
UFUNCTION(Server, Reliable, WithValidation)
void ServerRequestInteract(AActor* Target);
bool ServerRequestInteract_Validate(AActor* Target); // 必填
```
### GameMode / GameState / PlayerState 层级
```cpp
// GameMode: 服务器独有,不复制
// GameState: 复制到所有客户端(队伍分数、回合计时)
// PlayerState: 复制到所有客户端(击杀、死亡、角色选择)
// PlayerController: 仅拥有者可见输入、相机、HUD
```
### GAS 双初始化路径
```cpp
void AMyCharacter::PossessedBy(AController* NewController) // 服务器路径
void AMyCharacter::OnRep_PlayerState() // 客户端路径
```
### 网络频率优化
```cpp
AMyProjectile::AMyProjectile() { NetUpdateFrequency = 100.f; } // 高速弹道
AMyNPCEnemy::AMyNPCEnemy() { NetUpdateFrequency = 20.f; } // 低速NPC
AMyEnvironmentActor::AMyEnvironmentActor() { NetUpdateFrequency = 2.f; } // 静态物体
```
## 高级能力Advanced Capabilities
- **自定义网络预测框架**:使用 UE5 Network Prediction Plugin 实现物理驱动或复杂移动的回滚
- **Replication Graph 优化**空间分区替代平面相关性可将带宽降低40%
- **专用服务器基础设施**AOnlineBeaconHost、集群管理器、会话迁移、反作弊日志
- **GAS 多人深度集成**预测键、GameplayEffectContext、服务器验证激活
## 成功指标Success Metrics
- 游戏影响 Server RPC 的 `_Validate()` 缺失数为零
- 最高玩家数量下每玩家带宽 < 15KB/s
- 200ms延迟下每玩家每30秒去同步事件 < 1次
- 峰值战斗时专用服务器CPU < 30%
- RPC安全审计无作弊向量