# 网络通信

Unreal内部支持网络通信。

在UE4.26,在编辑器中选择PlayAsListenerServer,玩家数大于两个则会将第一个作为服务器,其他作为客户端。

# 网络复制变量

蓝图中的变量有Replication属性,它一共有:

  • None:不做操作
  • Replicated:该变量会复制,服务器端和客户端都会存在。
  • RepNotify:该变量也会复制,且操作该变量时均会执行一个OnRep函数。

一些组件也有Component Replicates属性,勾选了后会在客户端和服务器端间同步。下面是一个示例:

MultiPerson

# 网络复制事件

事件也可以同步,在Replicates属性有:

  • NotReplicated:不做操作
  • Multicast:从服务器广播到客户端
  • RunOnServer:只运行在服务器
  • RunOnOwningClient:只运行在自己的客户端。

# 网络通信原理

有以下几个常用的方法:

  • CreateSession:发生在服务端,创建一个session。
  • FindSessions:在客户端查找session。
  • DestroySession:在服务端删掉session。
  • JoinSession:客户端加入session。

常用的属性有:

  • GetCurrentPlayers:获取当前玩家。
  • GetMaxPlayers:获取最大玩家数。
  • GetServerName:获取服务器名字。
  • GetPingInMs:获取ping的数值。

# 网络通信实例

这里用到的资产有:

下面是创建流程:

  1. 创建搜索网络Session的主界面:

    LoginUI

    LoginBP

  2. 创建被搜索出来按钮的界面:

    SearchButtonUI

    SearchButtonBP

  3. 创建被打开关卡的GameMode:

    OpenedGameStartPoint

    OpenedGameMode