LeeTaes 공부노트

[Unreal Engine 5] Multiplayer 개념, Net Mode 본문

Game Programming/UE_Multiplayer

[Unreal Engine 5] Multiplayer 개념, Net Mode

리태s 2024. 7. 15. 15:08
728x90
반응형

개요

저는 지금까지 Unreal Engine 5를 사용하여 RPG 장르의 포트폴리오를 제작하였으며, 해당 프로젝트는 팀 프로젝트로 진행하였기에 개인 프로젝트도 하나 있으면 좋겠다는 생각을 하게 되었습니다.

 

9월 ~ 10월 사이에 열리는 하반기 공채에 지원하기 위해 어떤 프로젝트를 진행하는 것이 좋을까 곰곰히 고민한 결과 아무래도 멀티플레이어 기반의 프로젝트를 진행해보지 않았기에 천천히 Unreal Engine5를 활용하여 멀티플레이어 기반 FPS 장르의 프로젝트를 진행해보기로 마음먹었습니다.

 

앞으로의 일정을 간단히 요약해보면 다음과 같습니다.

  • 7 ~ 8월 : 멀티플레이어 기반의 게임 제작 강의를 들으며 기초 실력 쌓기 + 프로젝트 기획
  • 8 ~ 9월 : 프로젝트 제작

아무래도 SeSAC 언리얼 과정이 다음주부터 시작하기에 시간이 많이 모자랄 것 같지만 위 계획에 최대한 맞춰 포트폴리오를 제작할 예정입니다.

 

참고로 제가 앞으로 들을 강의는 Udemy의 multiplayer shooter in Unreal Engine 5 using C++ 강의입니다.

강의에서 나온 개념을 토대로 개인적으로 추가적인 정보를 찾아가며 포스팅을 종종 진행하도록 하겠습니다.

멀티플레이어 게임의 개념

멀티플레이어 게임은 두 명 이상의 플레이어가 동시에 같은 게임 환경에서 상호작용하며 게임을 즐길 수 있도록 설계된 게임입니다.

 

멀티플레이어 게임은 크게 다음과 같은 두 가지 기본 네트워크 모델로 구현이 가능합니다.

  • Peer-to-Peer(P2P) 모델
  • Server-Client 모델

각각은 장/단점을 가지고 있으며, 두 모델에 대해 간단히 설명드리도록 하겠습니다.

Peer-to-Peer(P2P) 모델

Peer-to-Peer 모델에서는 각 플레이어의 컴퓨터가 서로 직접 연결되어 데이터를 주고받게 됩니다.

모든 플레이어가 동등한 권한을 가지며, 중앙 서버가 존재하지 않는 모델입니다.

 

즉, 한 플레이어가 이동하면 해당 정보를 직접 다른 플레이어에게 전달하는 방식이라고 생각할 수 있습니다.

 

P2P 모델의 장점

  • 중앙 서버가 없기에 서버 유지 비용 절감
  • 플레이어들 간의 직접 연결로 인한 지연 시간 감소 효과

P2P 모델의 단점

  • 많은 수의 플레이어가 참여할 경우 전송되는 데이터의 양 증가관리 어려움
  • 한 플레이어의 네트워크 상태가 안좋은 경우 전체에 영향
  • 개개인의 게임 버전이 다를 경우 기준이 없음

Peer-to-Peer 모델은 주로 소규모의 협동 게임이나 가벼운 모바일 게임에 종종 사용되는 네트워크 모델입니다.

Server-Client 모델

Server-Client 모델에서는 중앙 서버가 존재하며, 모든 플레이어는 이 서버에 연결되어 게임 데이터를 주고받는 네트워크 모델입니다. 서버가 게임의 상태를 관리하고, 플레이어로부터 전달받은 데이터를 확인하여 다른 플레이어들에게 복제하는 방식으로 통신합니다.

 

즉, 모든 플레이어는 자신의 행동을 서버에 전달하고 서버는 해당 행동이 올바른 것인지를 판단하여 올바른 경우 다른 플레이어들에게 해당 정보를 나눠주는 방식으로 생각할 수 있습니다.

 

Server-Client 모델의 장점

  • 중앙 서버가 모든 데이터를 관리하기에 해킹치트 방지용이합니다.
  • 서버가 게임 상태를 관리하므로 게임의 안정성이 뛰어납니다.
  • 여러 플레이어를 지원할 수 있도록 구조 확장이 용이합니다.

Server-Client 모델 의 단점

  • 서버를 유지하기 위한 비용이 필요합니다.

Server-Client 모델은 MMO 게임, FPS 게임과 같은 게임에  자주 사용되는 네트워크 모델입니다.

언리얼 엔진이 제공하는 네트워크 모드

언리얼 엔진은 멀티플레이어 게임 개발을 지원하기 위해 다음과 같은 네트워크 모드를 제공합니다.

  • 독립형 (Standalone)
  • 클라이언트 (Client)
  • 리슨 서버 (Listen Server)
  • 데디케이티드 서버 (Dedicated Server)

독립형 (Standalone)

  • 게임이 원격 클라이언트 접속을 허용하지 않는 서버로 실행됩니다.
  • 게임에 참여하는 모든 플레이어는 로컬 플레이어뿐입니다.

클라이언트 (Client)

  • 게임이 네트워크 멀티플레이어 세션으로 서버에 접속된 클라이언트로 실행됩니다.

리슨 서버 (Listen Server)

  • 게임이 네트워크 멀티플레이어 세션을 호스팅하는 서버로 실행됩니다.
  • 원격 클라이언트의 접속을 허용하며, 서버에 바로 로컬 플레이어가 있습니다.
  • 가벼운 협동 및 경쟁 멀티 플레이어 게임에 자주 사용됩니다.

데디케이티트 서버 (Dedicated Server)

  • 게임이 네트워크 멀티플레이어 세션을 호스팅하는 서버로 실행됩니다.
  • 원격 클라이언트의 접속을 허용하지만, 로컬 플레이어는 없습니다.
  • 높은 지속성이나 보안, 대규모 멀티플레이어가 필요한 게임에 자주 사용됩니다.

 

참고 자료

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

 

 

 

728x90
반응형

'Game Programming > UE_Multiplayer' 카테고리의 다른 글

[Unreal Engine 5] ENetRole  (0) 2024.08.06
[Unreal Engine 5] LAN Connection (C++)  (0) 2024.07.15