Files
nexus/wiki/concepts/RPC-Remote-Procedure-Call.md
2026-04-26 12:02:53 +08:00

2.3 KiB
Raw Blame History

title, type, tags, sources, last_updated
title type tags sources last_updated
RPC (Remote Procedure Call) concept
unreal-multiplayer-architect
2026-04-26

Definition

远程过程调用RPC是 UE5 多人游戏中客户端与服务器之间进行通信的核心机制。客户端通过 RPC 向服务器发送请求Server RPC服务器通过 RPC 向客户端或所有客户端广播事件Client RPC / NetMulticast

RPC Types

类型 方向 可靠性 用途
Server 客户端 → 服务器 Reliable/Unreliable 客户端请求服务器执行操作
Client 服务器 → 特定客户端 Reliable/Unreliable 服务器通知特定客户端
NetMulticast 服务器 → 所有客户端 Reliable/Unreliable 服务器广播事件

Critical Rule: WithValidation

每个游戏影响型的 Server RPC 必须实现 _Validate() 函数。 缺失 _Validate() 构成安全漏洞,恶意客户端可发送非法请求。

// Server RPC 必须有 WithValidation
UFUNCTION(Server, Reliable, WithValidation)
void ServerRequestInteract(AActor* Target);

bool AMyActor::ServerRequestInteract_Validate(AActor* Target)
{
    // 拒绝不可能的请求
    if (!IsValid(Target)) return false;
    float Distance = FVector::Dist(GetActorLocation(), Target->GetActorLocation());
    return Distance < 200.f; // 最大交互距离
}

void AMyActor::ServerRequestInteract_Implementation(AActor* Target)
{
    // 验证通过后安全执行
    PerformInteraction(Target);
}

Reliability Guidelines

  • Reliable:保证按序到达,用于游戏关键事件(伤害、得分、道具拾取)
  • Unreliable:即发即忘,不保证到达,用于视觉效果、高频位置同步
  • 绝不能将高频调用与可靠 RPC 混合——必须为高频数据创建独立的不可靠更新路径

Connection to Other Concepts

Relationship to Agent

UnrealMultiplayerArchitect 将 RPC 验证视为非妥协原则:"Every Server RPC needs a _Validate. No exceptions."

Aliases

  • Remote Procedure Call
  • Server RPC
  • Client RPC
  • NetMulticast