현재 문서에서는 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를 통해 가져오면 된다.
- UPROPERTY에 Replicated를 설정
- GetLifetimeReplicatedProps() 함수에 Replicated 설정한 변수를 등록
- Pawn(Actor)이 서버에 Login된 시점 (예로 들어 BeginPlay()) 이후부터 값을 적용.
-> 공식 문서에서는 PostLogin 이후부터 설정하는 것을 추천하고 있다.