Actor复制

Pawns和Characters存在于服务器和所有客户端上,并且可以包含复制的变量和事件。

只有服务器将actor复制到连接的客户端(客户端永远不会将actor复制到服务器)。

Actor的生成/删除:

1.在服务器生成/删除,所有客户端会生成/删除该Actor的副本

2.在客户端生成/删除,服务器和其他客户端不会生成/删除该Actor的副本


对于服务器上存在的每个actor(包括所有复制的actor),服务器都拥有该actor的权限 。

并不是level中所有Actor都对玩家没有显着影响(可见可听)。服务器认为对客户端能够影响客户端的Actors集合被视为该客户端的相关Actors集合。

服务器不会在每次更新时复制actor(减少性能开销)。但以AActor::NetUpdateFrequency属性上指定的频率复制actor 。作为弥补,客户端将在更新之间模拟actor。

Actor的Role为ROLE_Authority,引擎的运行实例负责该actor;

RemoteRole是ROLE_SimulatedProxy(变换频率不高,插值算法)或者ROLE_AutonomousProxy(适用于经常变换的,例如PlayerControllers拥有的actor),引擎实例负责将此actor重新复制到远程连接。

Detailed Actor Replication Flow(Actor复制流程):UNetDriver::ServerReplicateActors负责actor复制

提高复制效率:Performance and Bandwidth Tips

Actor主要以两种方式更新:

1.Property更新(Property Replication):在更改时自动同步(适合经常变化的属性,例如玩家血量)

更新仅来自服务器; 服务器向每个客户端发送更新,客户端永远不会向服务器或其他客户端发送属性更新。

在UPROPERTY( )中进行声明replicated

在构造函数中设置bReplicates = true;

覆写AActor::GetLifetimeReplicatedProps函数

void AFPSCharacter::GetLifetimeReplicatedProps(TArray< FLifetimeProperty > & OutLifetimeProps) const

{

      Super::GetLifetimeReplicatedProps(OutLifetimeProps);

      DOREPLIFETIME(AFPSCharacter, bIsCarryingObjective);

}

Conditional Property Replication:控制属性如何复制

在GetLifetimeReplicatedProps函数中调用DOREPLIFETIME_CONDITION宏

使用DOREPLIFETIME_ACTIVE_OVERRIDE使用任何自定义条件完全控制属性何时执行和不复制

Replicating object references:复制引用或者指针

2.RPC(远程过程调用):函数在本地调用,但在另一台机器上远程执行

在UFUNCTION( )中进行声明

Server:在(拥有该Actor的)客户端上调用,在服务器上执行

Client:在服务器上调用,在(拥有该Actor的)客户端上执行

Multicast:(多播)在服务器调用,在服务器以及所有客户端上执行;从客户端调用,仅在本地执行

注意Actor必须允许复制


Actor由PlayerController确定所有权

客户端的PlayerController

客户端的PlayerController拥有的Pawn

客户端的PlayerState

发送“Run on server”或者“Run on owning client”事件:


Run on server:在服务器调用此事件,仅在服务器上运行;在(拥有该Actor的)客户端上调用,,则它将被复制到服务器并在服务器上运行。

Run on Owning Client:如果从服务器调用,则此事件将在拥有目标actor的客户端上运行。如果从客户端调用,仅在调用它的客户端上运行。

服务器调用RPC函数
客户端调用RPC函数

Reliable

WithValidation:在bool 函数名_Validate( 变量名 )中进行验证

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容