UE5

Survival - UE5 - Multiplayer의 작동

게임 개발 2023. 12. 31. 13:00

 

이 서바이벌 게임의 multiplayer로 복제되는 방식으로 설계되었다.

 

우선,

멀티플레이어에 대해 가장 먼저 알아야 할 것이 있다. 

언리얼 엔진 내에서 멀티플레이어 게임을 프로그래밍하거나 만들 때,

따라야할 몇 가지 규칙이 있다.

 

만약 그 규칙을 따르지 않으면,

Player1이 동작하는 모든 것이

Player2의 화면에서는 복제되지 않아

그저 멀대같이 서있는 하나의 캐릭터로만 보일 뿐이다.

이러한 문제는 멀티플레이어 게임을 제작할 때 종종 겪는 시행착오이다.

 

UE 내에서는 멀티플레이어 작업을 수행할 때 준수해야하는 특정 규칙들이 있고,

이러한 규칙들을 잘 이해하면 원하는 종류의 멀티플레이어 게임을 거의 만들 수 있다.

실제로 언리얼 편집기 내에서는,

언리얼이 가지고 있는 두 가지 다른 유형의 멀티플레이어 게임 서버를 제공한다.

 

++Plus++

 

리슨 서버란?

 

리슨서버는 플레이어 중 한 명이 서버의 역할을 대신하여 참가하는 것이다.

그래서 "Play as Host"라고 불리기도 한다.

리슨서버는 개인의 컴퓨터 중 하나가 서버의 역할을 해준다고 할 수 있기 때문에

서비스 유지 비용이 적게 든다.

또한 물리적으로 가까운 사람들끼리 한다면

속도가 전용서버보다 빠를 수 있다.

 

하지만 리슨서버 방식은 호스트의 기기 성능에 따라 품질이 달라질 수 있다.

또한 호스트가 게임을 종료할 경우 게임을 일시정지하고

남은 클라이언트 중 한 명을 호스트로 선정하는 절차가 필요하다.

 

리슨 서버 예시 - 스타듀벨리 

https://blog.naver.com/rkawkwodnjs/221046881011 - 출저

 

 

호스트가 나가버리면 게임이 멈춘다.

 

이 외에도 마인크래프트, 콜 오브 듀티 등등 많다.

 

++++

 

 

이 중에는 3가지 다른 옵션이 있지만, 

첫 번째 옵션은, 언리얼 기본 값으로 쓰이며 서버와 클라이언트를 둘 다 포함한다. 

따라서 싱글플레이어 게임을 제작하기 좋다.

2명 이상의 플레이어가 있으면 에디터를 클라이언트로 변경하는 것과 리슨 서버로 변경할 수 있다.

 

이 두 가지의 차이점은

기본적으로 두 가지 유형의 게임 서버가 있다는 것을 이해해야 한다.

이 두 가지 유형은 데디케이트(dedicated) 서버와 리슨 서버가 있다.

리슨 서버라고 써져있는 것 아래 있는 것이 데디케이트 서버이다.

 

리슨 서버는 일종의 P2P Network인데,

클라이언트 컴퓨터끼리 직접적을 통신하는 방식을 P2P Network라고 한다.

이는 개발자가 서버를 열기 위해서 직접적으로 돈을 지불해야 한다던가 하는 것은 없다.

리슨 서버는 플레이어가 자신의 서버를 호스트하도록 할 수 있다.

호스트를 원하지 않으면 서버 기능을 끄고 진행해도 된다.

사용자 역시 서버 호스팅 비용을 지불하는 것에 대한 걱정할 필요가 없다.

별도의 게임 서버를 이용하지 않고, 사용자 컴퓨터 자체가 서버가 되는 것이니 말이다.

단점은 호스팅하는 사람이 게임을 끄면 다수의 연동이 꺼진다는 단점이 있다.

또한 리슨 서버는 인원 수의 제한이 크다.

 

이렇듯 연동이 꺼지는 현상이 싫다면 호스트에게 서버 소유권을 넘겨주거나,

데디케이트 서버로 연동하면 된다.

 

 

데디케이트 서버는 일종의 터미널과 같다 마치 cmd와 같은 터미널 프로세스 말이다.

일종의 터미널 프로세스처럼 실행되고,

데디케이트 서버가 실행되는 것은 클라이언트의 위치 같은 데이터 처리만 수행할 뿐이다.

리슨 서버처럼 실제 클라이언트를 렌더링하지 않는다.

이 작업이 눈에 보이는 어떤 것이 아니라는 것이다.

이 말이 뭐냐하면,

서버를 단독으로 처리하여 일관성 있는 결과를 처리하고

호스트 역할만을 담당하는 하나의 시스템이 모든 사용자들을 수용하는 방식으로

호스팅하는 클라이언트의 모든 현상을 복제하여 보내는 것이 아니라,

서버와 클라이언트를 분리하여,

데디케이트 서버에서 독립적으로 모든 것이 서버에 저장되고 실행되도록 하는 것이다.

 

'UE5' 카테고리의 다른 글

Survival - 0102 - 작업 메모  (0) 2024.01.02
멀티플레이어의 기본 -데디케이트 서버와 리슨 서버  (2) 2024.01.01
GitHub에 프로젝트 저장하기  (0) 2023.12.29
Delegate 사용방법  (1) 2023.12.05
언리얼 내의 포인터  (0) 2023.11.02