UE5 客户端 需要的网络同步概念总结(3 )-事件同步 RPC 以及三种调用方式

一.RPC概念

远端 过程 调用,RPC这个概念并不是只在UE里有,纯C++ 也有。只不过为了保障可靠性纯C++里用的是TCP。

大部分传统 RPC 框架确实是基于 TCP 的,但不能简单说"传统 RPC = TCP"。

复制代码
传统RPC
    ↓
通常使用可靠传输层
    ↓
TCP(最常见)

例如:

  • gRPC → HTTP/2 → TCP
  • Apache Thrift → 通常 TCP
  • Dubbo → TCP
  • brpc → TCP

为什么传统 RPC 喜欢 TCP?

因为业务系统最关心的是:

复制代码
数据不能丢
数据不能乱序
数据必须完整

互联网公司常说的 RPC(gRPC、Thrift、brpc)本质上大多数都是:

后端:

复制代码
客户端
 ↓
RPC
 ↓
服务A
 ↓
RPC
 ↓
服务B
 ↓
RPC
 ↓
数据库

整个系统围绕 RPC 运转,RPC本身就是主角。

让程序员感觉像在调用本地函数,但实际上是在调用远程机器上的函数。

而在UE 里,TCP 太慢了,为了实时性通过UDP的一些操作来实现可靠的远程调用。UE DS 便是设计的,区别非常大。

UE 网络架构其实是:

复制代码
客户端输入
 ↓
RPC
 ↓
服务器修改状态
 ↓
Replication
 ↓
客户端同步状态

RPC 只是入口。真正负责同步游戏世界状态的是 Replication 系统,而不是 RPC 系统。

总之,RPC 的核心并不是 TCP,而是"可靠的请求-响应模型"。历史上最方便实现这一点的传输层就是 TCP,但技术进步也有其他方式保障可靠。UE为了实时性采用UDP。

二.UE 里的分类

其实很简单,如果看了之前的文章UE 客户端 需要的网络同步概念总结(2)-CSDN博客。大概能猜出来,是 1.客户端呼叫服务器执行 2.服务端呼叫指定客户端执行 3.服务器呼叫所有客户端执行

三.直接上案例

在蓝图里就时 Event 里有这几个对应的选项。

1.测试首先在角色里,CallServerDoSomething里新增事件CallSeverDoSomething

设置这个事件,只在服务器上可靠执行。RunOnSever

按下1测试,确实只在这个事件,才能拿到GameMode。是在服务器上执行的

根据打印日志,确实只在服务器上执行。

2.服务器端 呼叫 客户端 ,在GameMode 里写方法,它只存在与服务器权威端。

相关推荐
WL学习笔记1 分钟前
类和对象(下)
c++·类和对象
傲世仙尊31 分钟前
拷贝构造-传值传参的连锁反应与隐式函数的三个局限
c++
垆边人似月.1 小时前
华为机试题 :最大数
c++·算法·华为
对讲机数码科普1 小时前
从电路原理到协议栈:模拟对讲机与数字对讲机的技术内核拆解
运维·网络·架构·软件工程
Dark_Fairy1 小时前
CMeKG_tools 知识图谱项目速成教程(13课共24H)
学习
悟乙己1 小时前
AFAC2026 赛题四金融长文本 Agent竞赛学习笔记:关联技术(二)
笔记·学习·金融
方便面不加香菜1 小时前
C++ 关于多态的知识点讲解
开发语言·c++
福大大架构师每日一题1 小时前
mediamtx v1.21.2发布:UDP、JWT、RTSP、RTMP、HLS、WebRTC全面修复,稳定性与安全性再提升
网络协议·udp·webrtc
我送炭你添花2 小时前
ASA原理与电子维修实战:前言 一路修来,一路学习
运维·网络·学习
张小姐的猫2 小时前
【Linux】网络编程 —— 多路转接:epoll
linux·运维·网络