• 클라이언트-서버 모델의 구성 이해
  • 언리얼 엔진의 네트웍 멀티프레이어 프레임웍
  • 언리얼 C++ 프로그래밍이 가지는 장점의 이해

 

 

인프런 이득우님의 '언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해' 강의를 참고하였습니다. 
😎 [이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해] 강의 들으러 가기!

 

 

 

목차

     

     


     

     

    프로젝트 세팅

     


     

     

    프로젝트 세팅하기

     

    Add another Client 버튼 보이게 하기

     

     

    Editor Preferences - PIE

    • Allow late joining 체크

     

    Editor Preferences - Play - Play in New Window

    • Always On Top 체크

     

     

    언리얼 네트웍 멀티플레이어 프레임웍


     

     

    언리얼 네트웍 멀티플레이어 프레임웍의 구성 요소

     

     

     

    Remote Procedure Call (RPC)

    • 네트워크를 활용해서 즉각적으로 서버와 클라이언트 간 명령을 주고받아야 되는 경우에 사용한다.
    • 대표적인 예시로 Movement Replication이 있다.
      • Movement Replication의 예시로는 Character Replcation, Physics Replication이 있다.

     

    프로퍼트 리플리케이 Property Relplication

    • 액터가 가지고 있는 속성을 동기화
    • RPC 보다 반응속도는 느리지만, 게임을 구성하는 주요한 속성을 확실하게 변화된 속성을 전달받고 싶을 때 사용한다.
    • 게임에서 중요한 부분을 담당하기 때문에 가급적이면 이 정보들을 최적화해서 전달하는 것이 중요하다. 

     

     

    언리얼 공식문서 - 언리얼 엔진의 네트워킹

     

    네트워크 게임에서는 이러한 상호작용이 서버에 존재하는 월드, 플레이어 1의 클라이언트에 존재하는 월드, 플레이어 2의 클라이언트에 존재하는 월드, 그리고 세션에 참여하는 각 클라이언트의 추가 월드 등, 여러 개의 서로 다른 월드에서 벌어집니다.

    게임이 실제 플레이되는 곳은 서버이지만, 클라이언트의 월드에서 똑같은 이벤트가 발생하는 것처럼 보이게 해야 합니다. 따라서, 각 클라이언트에 선별적으로 정보를 전송하여 서버에 있는 월드의 시각적 표현을 생성해야 합니다.

     

    https://dev.epicgames.com/documentation/ko-kr/unreal-engine/networking-overview-for-unreal-engine?application_version=5.2

     

    언리얼 엔진의 네트워킹 개요

    멀티플레이어용 네트워크 게임 구성하기

    dev.epicgames.com


     

     

    싱글플레이어 게임의 구성 vs. 멀티플레이어 게임의 구성 (Client-Server 모델)

     

    싱글플레이어 게임의 구성 vs. 멀티플레이어 게임의 구성 (Client-Server 모델)

     

     

    멀티플레이어 게임의 구성 (Client-Server 모델)

     

     

    클라이언트는 독립적인 게임 인스턴스를 가진다.

     

    클라이언트는 자기 클라이언트가 있는 컴퓨터 내에서 실행하는 환경만 제공한다고 볼 수 있다. 이 안에 담긴 내용은 서버로부터 복제된 허상 콘텐츠(=Proxy)다.


     

     

     

    C++ 프로그래밍으로 네트워킹을 구현해야 하는 이유?

     

    C++ 프로그래밍으로 가능한 기능

    • 필수적으로 사용되는 가상 함수의 활용 가능
    • 제대로 된 리플리케이션 콜백의 호출 가능
    • 리플리케이션 조건의 세밀한 제어 가능
    • 네트워크 전송 최적화: 가벼운 데이터 설계

     

    네트워크 프로그래밍 시 리플리케이션 콜백을 적절히 호출하여 네트워크 상에서 정보를 동기화한다.

    C++ 프로그래밍에서는 다양하게 콜백함수를 받을 수 있어 BP보다 더 세밀히 조절할 수 있다.

    또한 C++이 데이터 경량화에 유리하다.