언리얼 엔진 본캠프 14주차-1 네트워크 : 언리얼 네트워크

정재훈·2025년 3월 17일
0

unreal engine

목록 보기
30/45

언리얼 네트워크

언리얼 리플리케이션

언리얼 리플리케이션(Replication) : 클라이언트와 서버의 사이의 복제

  • 깊게 들어가보면 Network Framework API를 상속받아 구현한 구현체

서버와 클라이언트 통신을 위해 RPCs와 RepNotify를 사용하고, 서버와 클라이언트의 동기화를 위해 Actor Replication을 사용

  • Actor Replication : 값 변경 시 서버 → 클라이언트로 동기화
    • 호출 방법 : 자동
    • 실행 : 서버에서 값 변경 후 클라이언트에 반영
    • Reliable
UPROPERTY(Replicated)
int32 PlayerHealth = 100;
  • RepNotify : 값 변경 시 서버 → 클라이언트로 "이벤트" 호출
    • 호출 방법 : 자동
    • 실행 : 클라이언트
    • Reliable
UPROPERTY(ReplicatedUsing=OnRep_HealthChange)
int32 PlayerHealth = 100;

UFUNCTION()
void OnRep_HealthChange();

=> ✅ Actor Replication과 RepNotify는 UPROPERTY()와 지정자만 잘 선언하면 자동으로 됨

  • RPCs : 서버 ↔ 클라이언트 간 양방향 "함수" 호출
    • 호출 방법 : 수동
    • 실행 : 서버, 클라이언트
    • Reliable / Unreliable
UFUNCTION(Server, Reliable)	// Reliable = TCP
void ServerFireWeapon();

UFUNCTION(NetMulticast, Unreliable)	// Unreliable = UDP
void MulticastPlayExplosionEffect();

UFUNCTION(Server) = 서버에서 실행해야 할 함수(클라이언트가 요청) = BP에서 Run On Server
UFUNCTION(Client) = 클라이언트에서 실행해야 할 함수(서버가 요청) = BP에서 Run On owning Client
UFUNCTION(NetMulticast) = 서버에서 먼저 호출된 다음, 모든 클라이언트에서도 호출되는 함수 = BP에서 Multicast

=> ✅ RPCs는 UFUNCTION()의 지정자에 따라 동작하는 게 달라짐, 그리고 때에 맞게 수동으로 호출해야함

언리얼 기본 네트워크 모드

  • Listen Server와 Dedicated Server
    • 데디 서버 : 대규모보단 정해진 숫자의 플레이어에게 제공되는 독립적인 서버
      • 프로젝트는 클라이언트 코드와 서버 코드를 모두 탑재하지만, 데디 서버는 빌드하면 서버 관련 코드만 가지고 빌드를 함
    • 리슨 서버 : 여러 클라이언트 중에 한 명이 서버의 역할을 겸직

언리얼 객체간 통신

  • 이벤트 디스패처 : 하나 이상의 이벤트를 바인딩하여, 이벤트 디스패처 호출 시 바인딩된 모든 이벤트가 발동되도록 하는 기능
    (디자인 패턴의 옵저버 패턴 같음)

언리얼 서버와 클라이언트간 통신







참조 사이트
1. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/networking-overview-for-unreal-engine
2. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/networking-overview-for-unreal-engine#%EC%95%A1%ED%84%B0%EB%A6%AC%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98
3. https://dev.epicgames.com/documentation/ko-kr/unreal-engine/event-dispatchers-in-unreal-engine

profile
드가자

0개의 댓글