info8995 님의 블로그

언리얼 RepNotify, Actor Replication, RPCs 본문

TIL(Today I Learned)

언리얼 RepNotify, Actor Replication, RPCs

info8995 2025. 3. 19. 20:25

📌 오늘 학습한 내용

1️⃣ RepNotify (Replicated Using)

용도:

  • 서버에서 값이 변경될 때 클라이언트에서 자동으로 해당 값의 변경을 감지하여 이벤트를 호출하는 기능.

호출 방법:

  • 자동으로 호출됨.

실행:

  • 클라이언트에서 실행됨 (서버에서 값이 변경되었을 때 클라이언트가 이를 감지).
  • 네트워크가 연결되어 있으면 신뢰 가능.

사용 예제:

UPROPERTY(ReplicatedUsing=OnRep_HealthChanged)
int32 PlayerHealth = 100;

UFUNCTION()
void OnRep_HealthChanged();
  • PlayerHealth 값이 서버에서 변경될 경우, 클라이언트에서 OnRep_HealthChanged() 함수가 자동으로 실행됨.

2️⃣ Actor Replication

용도:

  • 변수 값을 동기화하고 소유권(Ownership)을 관리하여 서버에서 변경된 값을 클라이언트에 자동 반영.

호출 방법:

  • 자동으로 서버에서 값을 변경하면 클라이언트에 복제됨.

실행:

  • 서버에서 값이 변경되면 클라이언트에 반영됨.
  • 네트워크가 연결되어 있으면 신뢰 가능.

사용 예제:

UPROPERTY(Replicated)
int32 PlayerHealth = 100;
  • Replicated 키워드를 사용하면 서버에서 값이 변경될 때 클라이언트에서도 자동으로 동기화됨.
  • 단, 별도의 OnRep_ 함수는 제공되지 않으며 클라이언트에서 직접 값이 변경되지는 않음.

3️⃣ RPCs (Remote Procedure Calls)

용도:

  • 서버와 클라이언트 간 함수를 직접 호출하여 데이터 전송.

호출 방법:

  • 수동 호출해야 하며, 서버 또는 클라이언트에서 명시적으로 실행해야 함.

실행:

  • 서버와 클라이언트 모두에서 실행 가능.
  • Reliable(신뢰 가능) / Unreliable(빠른 속도, 신뢰성 낮음) 선택 가능.

사용 예제:

UFUNCTION(Server, Reliable)
void ServerFireWeapon();

UFUNCTION(NetMulticast, Unreliable)
void MulticastPlayExplosionEffect();
  • ServerFireWeapon() → 클라이언트에서 호출하면 서버에서 실행됨.
  • MulticastPlayExplosionEffect() → 서버에서 호출하면 모든 클라이언트에서 실행됨.

🔹 Listen Server와 Dedicated Server

1️⃣ Dedicated Server (전용 서버)

  • 서버 전용으로 빌드된 버전이며, 클라이언트 기능이 포함되지 않음.
  • 보안이 강하고 독립적인 서버를 운영하는 환경에 적합.
  • 별도의 빌드가 필요함.

 

항목 설명
별도 빌드 필요
클라이언트 기능 포함 없음
보안 강함
용도 독립 서버를 갖춘 게임 환경
개발 난이도 상대적으로 깔끔

2️⃣ Listen Server (클라이언트가 서버 역할을 수행)

  • 클라이언트가 서버 역할을 겸함.
  • LAN 환경에서 근거리 그룹 플레이에 적합.
  • 보안이 취약하며 해킹 가능성이 있음.
  • 권한 체크를 철저히 해야 함.

 

항목 설명
별도 빌드 불필요
클라이언트 기능 포함 포함됨
보안 해킹에 취약
용도 LAN 환경에서 근거리 그룹
개발 난이도 클라이언트와 서버 기능이 합쳐져 있어 권한 체크 필수

결론 및 다음 학습 목표

  • RepNotify, Actor Replication, RPCs 개념을 숙지하고 서버-클라이언트 간 통신을 적절히 분배하는 것이 중요하다.
  • Listen Server에서는 반드시 권한 체크(Has Authority 등)를 수행해야 함.
  • 다음 학습 목표: Dedicated Server 구성 및 빌드 실습

'TIL(Today I Learned)' 카테고리의 다른 글

플레이어 & AI 시스템 완성  (0) 2025.05.16
파사드 패턴 (Facade Pattern)  (0) 2025.03.20
디자인 패턴  (0) 2025.03.14
어댑터(Adapter) 패턴 정리  (0) 2025.03.13
IPv4와 IPv6의 차이점  (0) 2025.03.12