47 lines
1.6 KiB
Markdown
47 lines
1.6 KiB
Markdown
---
|
||
title: "RPC (Remote Procedure Call)"
|
||
type: concept
|
||
tags: ["unreal-engine", "networking", "client-server"]
|
||
sources: ["unreal-multiplayer-architect", "unreal-multiplayer-architect"]
|
||
last_updated: 2026-04-30
|
||
---
|
||
|
||
## Aliases
|
||
- 远程过程调用
|
||
- Server RPC
|
||
- Client RPC
|
||
- NetMulticast
|
||
|
||
## 定义
|
||
RPC(远程过程调用)是 UE5 中客户端与服务器之间通信的主要机制,允许在一个网络节点上调用另一个节点上的函数。
|
||
|
||
## 三种 RPC 类型
|
||
|
||
### Server RPC
|
||
- **方向**: 客户端 → 服务器
|
||
- **用途**: 客户端向服务器发送请求(玩家输入、操作命令)
|
||
- **要求**: 游戏逻辑 RPC 必须包含 `_Validate()` 实现
|
||
- **标记**: `UFUNCTION(Server, Reliable, WithValidation)`
|
||
|
||
### Client RPC
|
||
- **方向**: 服务器 → 特定客户端(拥有该 Actor 的客户端)
|
||
- **用途**: 服务器向特定客户端发送消息(私有数据、确认消息)
|
||
- **标记**: `UFUNCTION(Client, Reliable)`
|
||
|
||
### NetMulticast
|
||
- **方向**: 服务器 → 所有相关客户端
|
||
- **用途**: 服务器向所有客户端广播事件(视觉特效、公共事件)
|
||
- **标记**: `UFUNCTION(NetMulticast, Unreliable)`
|
||
|
||
## 可靠性
|
||
- **Reliable**: 保证按序到达,但增加带宽
|
||
- **Unreliable**: 尽力发送,可能丢失或乱序
|
||
|
||
## 安全规范
|
||
每个 Server RPC 必须实现 `_Validate()` 函数,拒绝非法输入。缺少验证 = 作弊漏洞。
|
||
|
||
## 相关概念
|
||
- [[Server-Authoritative Model]] — RPC 的使用背景
|
||
- [[Actor Replication]] — 与 RPC 配合的状态同步机制
|
||
- [[Network Prediction]] — RPC 与客户端预测的协同
|