UE5实现客户端与服务器时间同步

图1:RTT实现原理

图2:4个客户端在5秒后实现时间同步

一、属性声明 (`BlasterPlayerController.h`)

cpp 复制代码
// 第63行:单程网络延迟 (RTT/2),public 供 SSR 等模块使用
float SingleTripTime = 0.f;

// 第180行:客户端与服务器时间差偏移量
float ClientServerDelta = 0.f;

// 第182行:时间同步累计运行时间 (每5秒重置)
float TimeSyncRunningTime = 0.f;

// 第184行:时间同步频率 (默认每5秒同步一次)
float TimeSyncFrequency = 5.f;
```

二、RPC 声明 (`BlasterPlayerController.h:86-96`)

cpp 复制代码
```cpp
/** 客户端→服务器:请求服务器当前时间 */
UFUNCTION(Server, Reliable)
void ServerRequestServerTime(float TimeOfClientRequest);

/** 服务器→客户端:回传服务器时间戳 */
UFUNCTION(Client, Reliable)
void ClientReportServerTime(float TimeOfClientRequest, float TimeServerReceivedClientRequest);

/** 获取经过同步后的服务器时间 (虚函数,服务端子类可重写) */
virtual float GetServerTime();

/** 玩家首次加入时立即同步一次 */
virtual void ReceivedPlayer() override;
相关推荐
mengzhi啊9 小时前
UE5关卡切换 传统加载(阻塞)vs流式加载(非阻塞)。还有加载关卡3种办法
ue5
电子云与长程纠缠12 小时前
UE中使用TGuardValue与TInlineComponentArray数据结构
开发语言·数据结构·学习·ue5·游戏引擎
Duo1J2 天前
【UE】Slate 编辑器工具开发03 - 节点编辑器 (EdGraph)
ue5·编辑器·游戏引擎·ue4
directx3d_beginner3 天前
26,怪物受击接口改为C++
ue5
远离UE45 天前
UE5 UV邻接 Niagara潜水模拟 学习笔记
ue5·uv
AA陈超6 天前
005 T03 — 角色基类与移动系统 详细功能设计文档
ue5
AA陈超6 天前
004 T02 - 俯视角摄像机系统 设计文档
网络·c++·ue5·虚幻引擎
AA陈超7 天前
006 T03 — 蓝图操作指南
c++·游戏·架构·ue5·github·虚幻引擎
Duo1J9 天前
【UE】Slate 编辑器工具开发01 - Slate语法 & 常用控件
ue5·编辑器·游戏引擎·ue4
朗迹 - 张伟9 天前
UE5.7 PCG从入门到精通系列课程【第五课:PCG沿一条样条线生成物体】
ue5·pcg