PRC:Remote Procedure Call(远程过程调用) (客户端Client→服务器Server→客户端Client)之间的通信

例如: 当有个Actor在一个客户端中设置为复制(Replicted), 这个Actor就会被复制到另一个客户端当中 (复制出来的Actor是模仿服务器的)

UE4-RPC特点: 简单易用,无需了解网络底层 缺点:只适用于局域网

网络基础

IP:计算机地址 端口:软件地址

TCP协议:可靠的数据传输协议 Transmission Control Protocol 传输控制协议 (通过三次握手,数据校验、保证传输数据的正确性和完整性)

UDP协议:不可靠传输协议 User Datagram Protocol 用户数据报协议(无连接协议) (客户端只管发,只能保证数据正确,但不保证完整)

Actor的复制:Repliction

文档(4.27)https://docs.unrealengine.com/4.27/zh-CN/InteractiveExperiences/Networking/Actors/ 要让Actor联网同步,必须打开Actor复制相关的选项 image.png

Component复制

Actor同步后,Component并不会跟着同步,需要手动打开Component的复制(Repliction) image.png

属性(变量)复制

Replicated:同步复制 RepNotify:同步后回调(当变量被修改时,会触发回调函数) image.png image.png

Actor的拥有权:Owner

image.png

事件的调用和执行

为了防止作弊,于是有了4种调用事件的方式

  • 【Not Replicated】默认调用模式

本地调用,不与服务器或客户端进行同步

  • 【Muticast】 广播

只能服务器调用,客户端全部执行

  • 【Run on Owning Client】服务端调用,客户端执行

服务器可以调用客户端的函数

  • 【Run on Server】 客户端调用,服务段执行

客户端可以调用服务器的函数(然后同步给其他客户端)

image.png image.png

可靠性:Relicast

用于重要数据传输

优点:优先发送,不会丢失信息 缺点:过多使用会造成网络拥堵(不适合放在循环里)

image.png