Metaverse/UE5

Network

onenewkong 2024. 1. 29. 05:06

Network 모드 유형

NM_Standalone

로컬 머신에서 실행되며 원격 머신에서 클라이언트를 받지 않는 서버를 나타낸다. 싱글 플레이어, 또는 멀티 플레이 게임에 적절하다.

NM_DedicatedServer

로컬 플레이어가 없어 사운드, 그래픽, 사용자 입력, 기타 플레이어 관련 기능을 제거하여 보다 효율적인 실행이 가능한 전용 서버이다. 이 서버 유형은 신뢰 서버에서 호스팅되는 멀티 플레이어 게임에 사용되며, 경쟁형 MOBA, MMO, 온라인 슈팅 게임 등 퍼포먼스가 중요해서 신뢰성 있는 서버가 필요한 경우에 사용된다.

NM_ListenServer

로컬 플레이어가 있는 서버로, 원격 플레이어에게도 접속을 허락한다. 이 유형의 서버는 데디케이티드 서버가 불필요한 경쟁 또는 협력 게임에 좋으며, 사용자는 써드 파이 서버 없이 자신의 게임을 구성하여 플레이할 수 있다. 이 네트워크 모드 유형은 호스트에 네트워크 지연 시간이 없어 호스트 플레이어에게 약간 유리할 수 있으며, 호스트는 경고 없이 게임을 중단시킬 수 있다.

NM_Client

서버가 아닌 유일한 모드이다. 이 모드에서 로컬 머신은 데디케이티드 또는 리슨 서버로 접속되는 클라이언트이므로, 서버 측 로직은 실행되지 않는다.

 

Network Replication

Replication: 클라이언트와 서버에서만 데이터와 프로세스를 호출하는 프로세스의 이름

각 액터에는 모든 프로퍼티 목록이 유지된다. 서버는 리플리케이트된 프로퍼티의 값이 변할 때마다 각 클라이언트에 업데이트를 전송하며, 클라이언트는 액터의 로컬 버전에 적용한다. 이 업데이트는 서버에만 받으며, 클라이언트는 프로퍼티 업데이트를 서버나 다른 클라이언트로 절대 전송하지 않는다.

 

리플리케이션용 프로퍼티 구성

프로퍼티가 정의되는 액터 클래스의 헤더에서, UPROPERTY 선언에 파라미터의 하나로 replicated 키워드를 넣어주어야 한다.

class ENGINE_API AActor : public UObject
{
    UPROPERTY( replicated )
    AActor * Owner;
};

액터 클래스의 구현에서 GetLifetimeReplicateProps 함수를 구현해야 한다.

void AActor::GetLifetimeReplicatedProps( TArray< FLifetimeProperty > & OutLifetimeProps ) const
{
    DOREPLIFETIME( AActor, Owner );
}

액터의 생성자에서, bReplicates 플래그가 true로 설정되었는지 확인한다.

AActor::AActor( const class FPostConstructInitializeProperties & PCIP ) : Super( PCIP )
{ 
    bReplicates = true;
}

 

 

'Metaverse > UE5' 카테고리의 다른 글

Automation Tool  (0) 2024.02.01
RPC  (0) 2024.01.29
Animation  (1) 2024.01.25
MyVox - Player Move(1)  (0) 2024.01.25
Reflection  (2) 2023.12.29