UE5는 중앙서버가 자신의 정보를 접속한 클라이언트들에게 복제하는 방식으로 구현됨.

Authority를 통해 서버 권한인지 확인 후, 계산을 하고 클라이언트들로 그 결과를 복제(준다)한다.

 

 

void AMovingPlatform_B::Tick(float DeltaTime)
{
    //서버의 권한인가?, 서버에서 실행하나?
    //!HasAuthority일경우 클라이언트의 권한.
	if (HasAuthority())
	{
		//이동
		FVector Location = GetActorLocation();
		
		Location += mSpeed * DeltaTime;
		//위치 변경
		SetActorLocation(Location);
	}
}

Tick마다 서버의 권한일경우만 (오소리티가 있는경우?) 해당 액터를 옮기는것을 계산함.

 

void AMovingPlatform_B::BeginPlay()
{
	Super::BeginPlay();

	//서버의 권한일경우
	if (HasAuthority())
	{
		//이 액터가 네트워크 클라이언트에 복제할지 여부를 설정합니다.
		SetReplicates(true);

		//이 액터의 움직임이 네트워크 클라이언트에 복제되는지 여부를 설정합니다.
		SetReplicateMovement(true);
	}
}

해당 액터 생성자에서 오소리티가 있는경우 SetReplicates, SetReplicateMovement를 통해 복제 및 이동 결과를 클라이언트로 복제한다.

 

 

bonnate