현재 문서에서는 Dedicated Server를 이용한다.

먼저 Dedicated Server를 이용해 여러 클라이언트를 띄우려면, 고급 세팅에서 개별 서버 실행 을 클릭 후 플레이어 수를 늘리고, Play as Client로 하면 된다.

기본적으로 Replicated 속성은 아래 구조체에 적용할 수 있다.

  • GameState
  • PlayerState
  • Pawn : Actor, Charater
UPROPERTY(Replicated, Category = Body)
FLinearColor BodyColor;

이렇게 설정한 후, 구현 부분에서도 해줄 게 있다.

void AMyCharacter::GetLifetimeReplicatedProps(TArray<FligetimeProperty>& OutLifetimeProps) const{
	Super::GetLifetimeReplicatedProps(OutLifetimeProps);
    
    DORELIFETIME(AMyCharacter, BodyColor);
}

이렇게 GetLifttimeReplicatedProps() 함수에 Replicated할 속성값을 등록해줘야 한다.
DOREPLIFETIME#include "Net/UnrealNetwork.h" 헤더를 사용한다.

랜덤하게 색깔을 변경하는 코드를 우선 Constructor에서 적용하자.

SetRandomBodyColor();

static ConstructorHelpers::FObjectFinder<UMaterialInterface> M_BODYMATERIAL(TEXT("/Game/~"));
if(M_BODYMATERIAL.Succeeded()){
	UMaterialInstanceDynamic* MaterialInstance = GetMesh()->CreateDynamicMaterialInstance(0, ~);
    if(nullptr != MaterialInstance)
    	MaterialInstance->SetVectorParameterValue(TEXT("BodyColor"), BodyColor);
}

Constructor가 아닌 곳에서는 LoadObject를 통해 가져오면 된다.

  1. UPROPERTY에 Replicated를 설정
  2. GetLifetimeReplicatedProps() 함수에 Replicated 설정한 변수를 등록
  3. Pawn(Actor)이 서버에 Login된 시점 (예로 들어 BeginPlay()) 이후부터 값을 적용.
    -> 공식 문서에서는 PostLogin 이후부터 설정하는 것을 추천하고 있다.
profile
언젠간 전문가가 되겠지

0개의 댓글

관련 채용 정보