Unreal Engine
c/s模式连接流程
记录了学习c/s链接的流程,以及和ue的网络关联起来
================================================================================
UE4 客户端-服务器完整网络流程 总结
================================================================================
流程总览:
建立连接(握手)→ 引擎层调度 → 数据分流与传输
================================================================================
一、建立连接(握手)
--------------------------------------------------------------------------------
1. 客户端通过 UEngine::Browse() 向服务器发起连接。
2. 服务器接收后,双方各自创建 UNetConnection。
3. 握手在服务器端对应的新建 UNetConnection 上完成。
4. 同时,该连接的 Control Channel 已经随之启动,负责管理接下来的
Actor 创建、关卡同步等所有全局事件。
二、引擎层调度
--------------------------------------------------------------------------------
1. 服务器端的 UNetDriver 每帧决定:
- 哪些 Actor 需要复制
- 发给哪些客户端
- 优先级排序
2. UNetDriver 管理着服务器上所有 ClientConnections(一对多)。
3. 客户端只有一个指向服务器的 ServerConnection(一对一)。
三、数据分流与传输
--------------------------------------------------------------------------------
1. Control Channel:
- 管理全局事件(Actor 创建/销毁、关卡流送等)
- 是连接的“元老通道”,握手阶段就已存在
2. UActorChannel:
- 为每个开启复制的 Actor 单独创建
- 专门负责该 Actor 的属性同步和 RPC 调用
3. Bunch 打包与可靠性:
- 通道有数据要发时,将数据打包成 Bunch
- 标注可靠或不可靠传输
- 可靠传输通过确认/重传机制保障
4. 最终传输:
- Bunch 交由底层的 UNetConnection 通过 UDP 发出
================================================================================
核心关系:
UNetDriver(调度)
↓
UNetConnection(连接)
↓
UChannel(分流:Control / Actor / Voice …)
↓
Bunch(数据块)
↓
UDP 数据包(网络传输)
服务器-客户端不对称性:
服务器:UNetDriver → ClientConnections 列表(一对多)
客户端:UNetDriver → ServerConnection 单连接(一对一)
================================================================================