프로그래밍 공부
작성일
2024. 1. 8. 14:36
작성자
WDmil
728x90

리플리케이션을 쉽게 풀어서 이야기하면,

서버와 클라이언트 간 데이터 동기화를 의미한다.

 

여기에서 언리얼 리플리케이션은

언제 동기화를 시킬지. 아니면 동기화시키지 못할경우 가장 근사한 값을 유지시켜야 함으로, 어떤방식으로 유지하는지 등을 이야기 한다.

 

멀티플레이에만 중요한 개념이라기 보다는, 데이터 동기화, 통신 필요분야 에서 사용하는 개념인데,

 

보동 3가지로 구분해서 생각한다.

 

  • 동기화 : 서버와 클라이언트 간의 게임상태, 플레이어 입력을 동기화하여 모든 플레이어가 일관된 게임을 플레이할 수 있도록 한다.
  • 상태 전송 : 서버에서 변경된 상태를 클라이언트에 전송하여 실시간반영을 할 수 있도록 한다.
  • RPC(Remote Procedure Call) : 함수 호출을 서버에서 클라이언트로, 또는 그 반대로 전송하여 로직을 동기화한다.
  • 프로퍼티(Properties) : 프로퍼티는 변경때마다 자동으로 리플리케이트됨, RPC는 실행때만 리플리케이트됨.

 

언리얼에서 사용하는 것.

 

UFUNCTION, Replicated

위 두가지를 사용한다.


UFUNCTION 매크로.

함수에 대한 여러 속성을 정의하는데 사용된다.

 

멀티플레이 게임에서 리플리케이션을 구현하는데 사용되고, 여러 특성을 지정할 수 있다.

 

UFUNCTION(Reliable, Server, WithValidation)
void ServerMoveToLocation(FVector NewLocation);
  • Reliable : 함수 호출이 안전하게 전달됨을 의미. 패킷손실, 순서바뀜에도 데이터를 유지할 수 이쏟록 함.
  • Server : 서버에서만 호출되어야함을 의미, 클라이언트에서 호출된경우, 서버에서 실행된 다음 클라이언트로 전달함.
  • WithValidation : 클라이언트에서 서버로의 함수 호출 전에 먼저 서버에서 검증 함수를 호출해야함을 의미. 검증함수를 통해 해당 호출이 유효한지 확인함.

Replicated 키워드

UPROPERTY 매크로에서 해당 변수가 리플리케이션을 지원함을 나타냄.

UPROPERTY(Replicated)
int32 Score;

위 변수는 서버에서 변경되면 클라이언트로 자동전달되며, 클라이언에서 변경되면 서버로 자동전달되어, 다른 클라이언트와 동기화된다.

728x90