[UE4]Replications,复制

关于进程

1.进程:运行中的程序

虚幻4游戏进程的四种网络模式

1、StandAlone:单机模式,不联网

2、Client,网络游戏中的客户端。

3、ListenServer,服务器和一个客户端

4、DedicatedServer,专用服务器,没有图形表现,本地没有客户端

Replication,复制

1、是一种同步机制

2、Actor及Actor中的属性,可以设置是否复制。Actor要设置可复制,期内的属性设置可复制才会起作用。

勾选表示可被复制

Pawn及其子类、Character及其子类默认是可被复制的,Actor及其子类默认是不可复制,但都可以通过手动设置是否可被复制。

Actor中属性也可以设置是否被复制。Replicated:复制;RepNotify:复制并通知

 

如果选择“RepNotify”会自动生成一个OnRep_UsingMotion函数

3、复制是单向的,只能从服务器到客户端。不能从客户端复制到服务器

Actor的产生和复制

1、客户端Spawn的Actor,不会被复制

2、服务器Spawn的Actor,可以被复制

3、放置在关卡中的Actor,可以被复制。

1、服务器创建了3个角色,把这3个角色复制到客户端。

2、“玩家A”打了“玩家B”一下,服务器经过判断以后让“玩家B”掉了20点血剩余80点血,“玩家B”的血量值就会别复制到ABC这3个客户端的玩家B镜像

3、如果在客户端A修改了“玩家B”的血量值,是不会更新到服务器的,也不会更新到客户端B和C。复制是单向的,只能从服务器到客户端。不能从客户端复制到服务器

血量示例

服务器的两种模式

1、ListenServer:一个服务器和一个客户端,都在一个进程里面。

客户端A创建了游戏,客户端A同时是A的客户端和服务器,也是是客户端B和客户端C的服务器。

在ListenServer模式中,第一个游戏窗口是第一个打开,所以第一个游戏窗口既是客户端也是自己的服务器,同时也是第二个窗口的服务器。

如图所示,在第一个窗口打一下第二个游戏窗口的玩家掉了20点血还剩80点血,因为第一个窗口是客户端也是服务器,所以会把第二个玩家的血量复制到第二个客户端,因此第二个窗口的玩家可以看到自己还剩80点血。

 

在第二个窗口打一下第一个窗口的玩家,在第二个窗口可以看到第一个玩家还剩80点血,因为第二个窗口是客户端,第一个窗口才是服务器端,所以第一个窗口(客户端)并不会把数据同步到第二个窗口(服务器)。

 

附示例设置:

 

 

变量右上角出现2个白小球,表示是一个可被复制的变量。

2、DedicatedServer:专用服务器,没有可用于控制的客户端,只有其它客户端的镜像。

  

 如图所示,左边打出的子弹,在右边窗口并不会显示,只要把子弹设置成可复制即可。并且右边窗口中立方体也能看到被子弹打飞。

 

但是在右边窗口打出的子弹(客户端)在左边窗口(服务器端)是不会出现的。

原文地址:https://www.cnblogs.com/timy/p/9873587.html