언리얼 엔진 네트워크

정완훈·2025년 3월 17일

1. 언리얼 엔진의 네트워크 RPC 호출과 브로드캐스팅 이해

  • RPC (Remote Procedure Call)

    • 정의: 네트워크를 통해 원격지의 함수를 호출하는 방법. 클라이언트와 서버 간 통신을 가능하게 함.
    • 종류:
      • Server RPC: 클라이언트가 서버의 함수를 호출 (예: "서버야, 내 위치 업데이트해줘").
      • Client RPC: 서버가 특정 클라이언트의 함수를 호출 (예: "클라이언트야, UI 업데이트해").
      • NetMulticast: 서버가 모든 연결된 클라이언트에 함수를 호출 (예: "모두에게 이벤트 알림").
    • 특징: 함수에 UFUNCTION 속성(Server, Client, NetMulticast)을 추가해 구현. 네트워크에서 실행될 위치와 권한을 지정해야 함.
      https://dev.epicgames.com/documentation/ko-kr/unreal-engine/remote-procedure-calls-in-unreal-engine
  • 브로드캐스팅

    • 정의: 서버가 모든 클라이언트에게 동시에 메시지나 이벤트를 전달하는 방식.
    • 구현: NetMulticast RPC를 사용. 예를 들어, 채팅 메시지를 모든 플레이어에게 보내는 경우.
    • 장점: 효율적으로 다수의 클라이언트에 동일한 데이터를 전송.
    • 주의점: 네트워크 부하를 고려해 빈번한 호출은 피해야 함.

요점: RPC는 클라이언트와 서버 간 특정 함수 호출, 브로드캐스팅은 모든 클라이언트에 동시 전송.


2. 언리얼 엔진의 네트워크 Listen / Dedicated 서버 차이 이해

  • Listen Server

    • 정의: 호스트 플레이어가 서버와 클라이언트 역할을 동시에 수행.
    • 특징:
      • 호스트도 게임에 참여 (플레이어 중 하나가 서버 역할).
      • 별도의 서버 하드웨어 필요 없음.
      • 네트워크 설정 간단 (예: 친구와 함께 플레이).
    • 단점: 호스트의 네트워크 상태나 성능에 의존적, 보안 취약 가능성.
  • Dedicated Server

    • 정의: 게임 로직만 처리하는 독립적인 서버. 플레이어는 모두 클라이언트로 접속.
    • 특징:
      • 서버는 게임에 참여하지 않고 관리만 함.
      • 안정적이고 대규모 플레이어 지원 가능.
      • 별도의 서버 실행 파일 필요 (빌드 후 배포).
    • 장점: 성능 최적화, 공정한 게임 환경 제공.
    • 단점: 설정 복잡, 추가 비용 발생 가능.

요점: Listen은 호스트가 플레이어 겸 서버, Dedicated는 독립 서버로 관리만 담당.
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/setting-up-dedicated-servers-in-unreal-engine


3. 언리얼 에디터에서 Listen Server 환경 구성 및 채팅 구현

  • Listen Server 환경 구성

    • 설정 단계:
      1. 멀티플레이어 옵션: 에디터에서 Play 버튼 > Number of Players를 2 이상으로 설정.
      2. 서버 모드: Net ModePlay as Listen Server로 선택.
      3. 레벨 실행: 맵 실행 시 호스트가 서버 역할, 추가 창은 클라이언트로 작동.
    • 확인: 콘솔 명령어 Open [맵이름]?listen으로 Listen Server 실행 가능.
  • 채팅 구현

    • 구현 단계:
      1. 입력 처리: 블루프린트나 C++로 채팅 입력 UI와 Input Action 설정 (예: Enter 키).
      2. Server RPC: 클라이언트가 입력한 메시지를 서버로 전송 (예: SendChatMessage 함수).
      3. NetMulticast: 서버가 모든 클라이언트에 메시지 브로드캐스트 (예: BroadcastChatMessage).
      4. UI 업데이트: 클라이언트가 메시지를 받아 화면에 표시.
    • 핵심: Reliable 속성을 추가해 메시지 전송 신뢰성 확보.
    • 테스트: 멀티플레이어 환경에서 각 클라이언트가 서로 채팅 확인.

요점: Listen Server는 에디터에서 쉽게 설정, 채팅은 Server RPC로 전송 후 NetMulticast로 배포.


정리

  • RPC와 브로드캐스팅: 클라이언트-서버 통신과 다수 전송 방식 이해.
  • Listen vs Dedicated: 호스트 겸용 vs 독립 서버의 역할과 차이.
  • Listen Server 채팅: 간단한 설정으로 멀티플레이어 환경에서 채팅 구현 가능.

0개의 댓글