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 里写方法,它只存在与服务器权威端。

相关推荐
科创致远19 小时前
ESOP 电子作业指导书 WiFi 网络应用实测报告
运维·服务器·网络
承渊政道19 小时前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat
最强小杰20 小时前
minimax-m3 突然报 HTTP 529 怎么办?连续重试为何更难恢复,退避时间该怎么算?
网络·网络协议·http·ai
程序员清风20 小时前
AI 编程助手的权限边界:文件、命令、密钥与人工确认
运维·服务器·网络
凉茶钱20 小时前
红黑树:用“颜色”换“平衡”,set 与 map 的底层发动机
开发语言·c++·红黑树
栉甜20 小时前
Vue2学习内容(上)
前端·javascript·vue.js·学习
别讲概念20 小时前
JavaEE(5)网络原理初识
网络·java-ee·智能路由器
m0_6399069420 小时前
TCP与UDP协议详解|原理、区别、粘包拆包、应用场景,面试总
网络协议·tcp/ip·udp
shangjian00720 小时前
K8S学习-基础组件
学习·容器·kubernetes
lifallen21 小时前
ub-mode skill:软件工程原则
人工智能·学习·ai·软件工程·ai编程