Unreal Engine/네트워크

[UE5] - 네트워크 프레임워크

KimGeon-U 2025. 3. 24. 19:44

https://github.com/drstreit/unreal_schematics/

 

Replication

 

Server-Client Model

  • Server
    • 게임의 상태에 대한 권한 (Authority) 소유
    • Client의 요청 처리, 응답
  • Client
    • 서버 외 인스턴스, 서버에게 데이터를 업데이트 받는다.
    • Client는 서로 직접 통신하지 않고, Server를 통한 데이터 전송 방식
    • Client -> Server -> Client (Broadcast, Multicast)
    • Replicated, ReplicatedUsing, WithValidation을 통한 동기화를통한 일관성, 보안 강화
  • Listen Server
    • 세션의 한 플레이어가 Server 호스트 역할
      • Server이면서 Client
    • 호스트에게 UI 및 Player Controller 존재
    • 호스트가 게임을 나가면 해당 서버(세션) 종료
  • Dedicated Server
    • Server 전용 인스턴스
    • Local 플레이어 없음
    • 렌더링을 하지않는다. GPU없이 구동이 가능하다.
      • 렌더링과 같은 서버 대역폭의 부담이 큰 경우, 해당 정보를 모니터에 직접 복제하는것이 아닌
        필요한 정보들만 복제해서 대욕폭을 최소화 한다.
    • 자율적인 (Autonomous) 플레이어 컨트롤러 보유
    • 권한있는 결정 및 게임상태 업데이트는 Server에게 의존

※ Dedicated, Listen, Cloud Server - https://mynameiskgws.tistory.com/60

 

Actor Replication

  • Actor 자체를 리플리케이션 대상으로 설정
  • Transform, State 등 자동 동기화
  • bReplicates = true와 같은 설정
  • 서버에서 값 변경 후 클라이언트에 반영
  • Actor 내 Property 값 동기화 및 OwnerShip관리

 

Reliability

  • RPC의 전송 보장 여부 결정
  • Reliable : TCP/IP와 같은 반드시 전달되어야 하는 데이터 전송시 (Player isDead?)
  • Unreliable : UDP/IP와 같은 데이터 유실시에도 영향을 크게 미치지 않는 데이터 전송 시 (Player Movement) 

 

RepNotify

  • 값 변경시 서버 -> 클라이언트로 이벤트 호출하는 방식
  • 값 변경시 자동으로 바인딩된 시그니처 함수 호출
  • UPROPERTY(ReplicatedUsing = OnRep_SigatureName)
    • OnRep_ 컨벤션을 통해 언리얼에서 해당 이벤트가 Replicated 바인딩을 담당

 

Network Mode (ENetMode)

  • 현재 게임 월드 내 해당 Actor가 현재 어떤 네트워크 환경에서 실행중인지 알 수 있는 열거형
  • World 또는 NetDriver 초기화시에 결정된다.
  • 게임 실행시 실행 방식(Entry Point)에 따라 결정되며, 런타임에서 변경 불가
  • GameInstance, GameMode, Actor등 GetNetMode()를 사용한 현재 네트워크 모드 확인 가능
  •  NM_Standalone
    • 서버와 클라이언트가 모두 로컬에 있는 경우
    • 싱글 플레이 게임 모드
    • 멀티플레이 불가
    • 기본값. PIE 실행시 기본 실행
  • NM_DedicatedServer
    • UI, 플레이어 설정 불가
    • 오적 서버 로직만 수행
    • 사운드, 비주얼 렌더링 처리 없음
  • NM_ListenServer
    • 어떤 클라이언트가 서버역할을 하는 리슨서버
    • 서버 권한 HasAuthority()을 통한 로직
    • IsLocalController()을 사용한 로컬 컨트롤러 관련 로직
  • NM_Client
    • 클라이언트 모드 (서버 X)
    • 서버로부터 정보를 받아 실행하는 역할
    • 서버 전용 로직은 실행되지 않는다. (UFUNCTION(Server)...)
    • 유저(클라이언트)에게 보여줄 비주얼 작업, 입력 등 담당

 

출처

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/networking-and-multiplayer?application_version=4.27