美文网首页
Actor复制

Actor复制

作者: 右腕 | 来源:发表于2019-02-27 15:40 被阅读0次

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( 变量名 )中进行验证

相关文章

网友评论

      本文标题:Actor复制

      本文链接:https://www.haomeiwen.com/subject/mpfgyqtx.html