Unity 검색

Unity Gaming Services 소개: 멀티플레이어 자세히 살펴보기

2022년 3월 24일 게임 | 13 분 소요
Magnifying glass zooming in over a building
Magnifying glass zooming in over a building
공유

Is this article helpful for you?

Thank you for your feedback!

Unity Gaming Services 시리즈에 돌아오신 것을 환영합니다. 세 번째 포스팅에서는 멀티플레이어 제품군을 집중적으로 다룹니다. 

유니티의 멀티플레이어 툴을 사용하면 멀티플레이어 게임 제작과 관련된 내용을 살펴보고 플레이어를 위한 최적의 온라인 경험을 만들 수 있습니다.

Table showing different Unity Gaming Services pillars (Multiplayer highlighted)

유니티에서 제공하는 서비스는 다음 세 가지 주요 요소로 구성됩니다. 

  • 멀티플레이어 게임 제작
  • 플레이어 연결
  • 플레이어 간 커뮤니케이션
Multiplayer services breakdown between creation, connection, and communication

제작

게임 오브젝트용 Netcode

소개: 게임 오브젝트용 Netcode는 고급 네트워킹 라이브러리로서 Unity 개발자가 로우레벨 프로토콜에 집중할 필요 없이 멀티플레이어 게임에 네트워킹 기능을 추가할 수 있도록 지원합니다. 이 멀티플랫폼 솔루션은 전송에 구애받지 않는 레이어를 갖추고 있으며, Unity Transport와 연동되어 효율적으로 패킷을 전송하고 종단간 보안을 위해 DTLS를 사용합니다. 게임 오브젝트용 Netcode는 현재 사전 릴리스 단계입니다. 

주요 기능: 

  • 로우레벨 프로토콜이나 네트워킹 프레임워크가 아닌 게임 자체에 집중하도록 지원
  • Unity Relay 서비스와의 커뮤니케이션을 용이하게 하는 어댑터 제공
  • 소규모 협동 게임을 위한 완전 구축된 네트워킹 기반 제공

작동 방식: 

게임 오브젝트용 Netcode를 사용하면 Unity 개발자는 멀티플레이어 게임을 제작하면서 동일한 네트워킹 세션에서 연결된 여러 애플리케이션 인스턴스에 걸쳐 씬 및 게임 오브젝트를 동기화할 수 있습니다.

게임 오브젝트용 Netcode는 당사의 Boss RoomGalactic Kittens 데모 게임 샘플처럼 현재 소규모 게임에 가장 적합합니다. 클라이언트 중 하나를 클라이언트-호스트로 설정하거나 전용 서버 시나리오를 지원할 수 있습니다. 

열정과 실력을 겸비한 개발자라면 MIT 라이선스를 받은 공개 소스 코드를 활용하여, 개발 중인 멀티플레이어 게임 요구 사항에 맞게 제공된 컴포넌트를 확장하거나 수정할 수 있습니다. 

사용해보기: 패키지를 설치한 후 Discord에 참여하거나 기술 자료를 확인하세요.

엔티티용 Netcode

소개: 엔티티용 Netcode는 고급 네트워킹 라이브러리로서 멀티플레이어 게임에 네트워킹 기능을 추가할 수 있도록 지원합니다. 네트워킹된 오브젝트가 실험용 DOTS ECS 프레임워크에 기반을 두고 있다면 엔티티용 Netcode가 필요합니다. 엔티티용 Netcode는 실험 단계이며 아직 정식 제작 용도로는 추천하지 않습니다.

주요 기능: 

  • 네트워킹된 오브젝트가 DOTS ECS 프레임워크에 기반을 둔 경우 중간 규모 내지 대규모의 멀티플레이어 액션 게임을 위한 네트워킹 기반 제공
  • 대량의 네트워킹된 오브젝트 또는 대량의 클라이언트를 동기화하기 위해 제작됨
  • 입력 지연을 최소화하도록 롤백에 스케일링 가능한 기반을 제공하며, 동일한 프로세스에서 클라이언트와 서버를 실행하고 디버깅할 수 있는 기능 제공

작동 방식:

엔티티용 Netcode는 클라이언트 예측을 포함하는 서버 권한 네트워크 모델을 사용합니다. 즉, 엔티티용 Netcode를 사용하면 시뮬레이션이 서버와 클라이언트라는 두 가지 별도 시뮬레이션 유닛으로 나뉩니다. 서버 시뮬레이션은 연결된 모든 클라이언트의 시뮬레이션을 실행하며 진정한 시뮬레이션 상태로 간주됩니다. 클라이언트 시뮬레이션은 서버로부터 시뮬레이션 상태의 스냅샷을 받습니다.

스냅샷이 클라이언트에게 도달하기까지 시간이 걸리기 때문에 클라이언트는 서버와 동일한 시뮬레이션을 실행하여 서버가 무엇을 시뮬레이션할지 예측함으로써 이를 보완합니다.

이 설정에서는 엔티티와 입력이 어떻게 동기화되는지, 무엇이 가장 중요한지를 결정하기 위해 데이터에 주석을 입력해야 합니다. 엔티티용 Netcode는 이러한 주석에 기반하여 클라이언트와 서버의 동기화를 유지합니다. 엔티티용 Netcode는 한정된 대역폭으로 대량의 오브젝트와 클라이언트를 처리할 수 있도록 가장 중요한 오브젝트를 동기화하는 데 먼저 초점을 둡니다.

사용해보기: 엔티티용 Netcode는 실험적 기능이므로 평가를 위해 프로젝트 매니페스트에 수동으로 추가해야 합니다. 자세한 정보는 기술 자료에서 확인하세요.

연결

Multiplay

소개: Multiplay는 엔진에 구애받지 않는 게임 서버 호스팅 서비스로, 베어메탈과 클라우드 서버를 결합하여 원활하고 지연 없는 게임플레이를 유지하면서 수백만 명의 플레이어에 대응할 수 있도록 게임의 스케일링을 지원합니다. 

주요 기능: 

  • 자체 인프라를 구축 및 실행할 필요 없이 멀티플레이어 게임을 운영할 수 있도록 지원 
  • 자동 스케일링을 통해 지속적으로 변하는 플레이어 기반 지원

작동 방식:

Multiplay는 자동 스케일링을 지원하는 하이브리드 호스팅 플랫폼으로, 베어메탈 서버와 클라우드의 버스트 용량을 사용합니다.

항상 바로 구동 가능한 머신에 우선순위를 두고 서버 할당이 이루어지므로 대기 시간이 매우 짧아집니다. Multiplay는 플레이어의 요구 사항을 예측하며, 계획된 용량이 초과될 것으로 예상되면 클라우드로 버스트하여 가용성을 향상하고 플레이어가 게임 참여를 거부당하거나 오래 대기하지 않도록 합니다.

플레이어 동시성을 근접하게 따르는 동적 디스케일링이 가능하여 쉽게 용량을 스케일업할 수 있습니다. 클라우드 머신을 온디맨드로 생성하고 종료할 수 있으므로, 시스템은 클라우드에서 호스팅되는 게임 세션이 끝나면 클라우드 머신을 빠르게 종료하여 비용을 절감할 수 있습니다. 자세한 내용은 이 포스팅에서 확인하세요.

사용해보기:유니티에 문의하거나 기술 자료 사이트를 참조하세요.

Matchmaker

소개: Matchmaker는 최상의 멀티플레이어 게임 경험을 위해 적절한 플레이어를 자동으로 신속하게 함께 매칭합니다. Matchmaker는 현재 베타 버전으로 제공됩니다. 

주요 기능: 

  • 직접 인하우스로 구축하는 것이 아니라 검증된 매치메이킹 시스템을 사용함으로써 시간과 리소스 절약
  • 가까운 지역에 위치한 비슷한 레벨의 플레이어들끼리 매칭하여 플레이어 경험 개선 

작동 방식: 

Matchmaker는 개발자가 설정한 매칭 로직, 커스터마이즈 가능한 평가자 함수, 매칭 함수 실행이 예약된 매치메이킹 루프를 사용하여 게임 플레이어를 적절한 세션으로 매칭합니다. 개발자는 표준 또는 규칙 기반 로직을 사용하여 게임에 더 적합하도록 매치메이킹 로직을 커스터마이징할 수 있습니다. 이 로직은 JSON 형식의 설정 파일을 생성하고 Unity Matchmaker CLI를 통해 업로드하여 설정할 수 있습니다.

이상적인 상황이라면 잘 만들어진 매치메이킹 시스템은 고품질 매치를 빠르게 생성합니다. 하지만 실제 상황에서는 많은 요인이 매칭 시간과 매칭 품질에 영향을 미칠 수 있습니다. 

Unity의 Matchmaker를 사용하면 매칭 품질과 매칭 시간의 균형을 유지하기 위한 전략적 방식을 쉽게 결정할 수 있습니다. Matchmaker는 적절한 플레이어를 최대한 쉬운 방법으로 모을 수 있도록 다음 기능을 제공합니다.

  • 설정 가능한 데이터가 완벽한 매칭을 만들기 위한 정보 제공
  • Multiplay 게임 서버 호스팅 통합을 통해 게임의 스케일링 및 전 세계적인 성공 지원
  • 유연한 백필(backfill)을 통해 진행 중인 매칭에 플레이어 연결
  • 빠른 매칭 시간으로 플레이어의 대기 시간 단축

Matchmaker의 작동 방식에 대한 자세한 정보를 보려면 여기에서 기술 자료를 확인하세요.

사용해보기: 유니티에 문의하세요.

Relay

소개: Relay는 플레이어가 전용 게임 서버 없이도 몰입형 멀티플레이어 게임 경험에 연결하여 즐길 수 있도록 지원하는 서비스입니다. Relay는 현재 베타 버전으로 제공됩니다. 

주요 기능: 

  • 서버 호스팅보다 비용 효율적인 방식으로 멀티플레이어 게이머를 연결
  • DTLS 암호화를 통해 안전한 커뮤니케이션 보장

작동 방식:

Relay 서비스는 Unity Transport를 활용하여 플레이어가 서로 안전한 P2P 수신 서버 UDP 통신을 수립할 수 있도록 지원합니다. Relay는 Relay 서버와의 모든 UDP 커뮤니케이션에 대해 DTLS(Datagram Transport Layer Security, 데이터그램 전송 계층 보안) 암호화를 지원하여 사용자가 안전하게 암호화되고 인증된 데이터를 전송할 수 있게 합니다.

Relay에서는 참여 코드 스타일의 워크플로와 수신 서버를 사용하여 플레이어가 연결됩니다. Relay 서비스는 DGS(Dedicated Game Server, 전용 게임 서버)를 사용하는 대신 프록시 역할을 하는 유니버설 릴레이 서버를 통해 연결성을 제공합니다.

Relay 서비스에는 Relay 서버와 Relay 할당 서비스라는 두 가지 주요 컴포넌트가 있습니다.

사용해보기: 베타에 참여하거나 기술 자료 사이트를 참조하세요.

Lobby

소개: Lobby는 뛰어난 멀티플레이어 게임 경험을 구현하기 위한 커스텀 공간을 제공하며, 공개 또는 비공개로 플레이어를 연결하는 유연한 솔루션입니다. Lobby는 현재 베타 버전으로 제공됩니다. 

주요 기능: 

  • Lobby를 통해 플레이어가 플레이를 함께할 대상과 플레이할 방식을 결정할 수 있음 
  • 몇 시간 이내에 새 게임 세션에서 플레이어를 온라인으로 전환하고 연결할 수 있음
  • 게임 세션에서 플레이어를 쉽고 비용 효율적인 방식으로 연결할 수 있도록 지원

작동 방식:

플레이어가 간단한 게임 속성을 사용하여 공개 로비를 만들면, 다른 플레이어가 이를 검색하고 발견하여 합류할 수 있습니다. 또한 초대 전용 로비를 통해 선택된 참가자만 입장이 가능한 비공개 로비를 만들 수도 있습니다.

  • 공개 로비에서는 플레이어가 자신의 검색 파라미터에 맞는 공개 로비를 생성하고, 살펴보고, 참여할 수 있음
  • 비공개 매치에서는 플레이어가 비공개 로비를 생성할 수 있고 여기서 로비 코드를 전송하여 다른 플레이어를 초대할 수 있음

빠른 참여를 사용하면 플레이어가 게임 세션에 최대한 빨리 참여할 수 있습니다. 플레이어는 요구 사항을 명시하고, 적절한 매칭 로비가 있으면 참여합니다. 이 방법을 사용하여 간단한 매치메이킹을 구현하거나 진행 중인 게임에 플레이어가 참여하도록 할 수도 있습니다.

사용해보기: 베타에 참여하거나 기술 자료 사이트를 참조하세요.

커뮤니케이션

Vivox

소개: Vivox 는 엔진에 구애받지 않는 서비스로 게임 내 음성 및 텍스트 채팅을 통한 플레이어 커뮤니케이션을 지원합니다. 

주요 기능: 

  • 인하우스 솔루션을 구축하지 않고도 플레이어 커뮤니케이션을 게임에 쉽게 추가
  • 엔진에 구애받지 않으므로 멀티플레이어 게임 빌드에 사용하는 어떤 엔진에도 연결 가능 
  • Vivox의 기술은 게임에 완벽히 통합되므로 플레이어가 타사 커뮤니케이션 애플리케이션으로 전환하기 위해 게임을 중단할 필요가 없습니다. 유니티에서는 커뮤니티를 구축하고, 더 전략적으로 플레이하고, 게임을 통해 친구를 사귈 것을 장려합니다.
  • Vivox는 음성인식, 음성합성 및 기타 기술에 투자하여 개발자가 규제 요구 사항을 충족하고 모든 사람이 이용할 수 있는 게임을 개발하도록 지원합니다.

작동 방식:

Vivox를 통해 며칠 안에 2D 음성 채팅, 워키토키 스타일 채널, 또는 극도로 생생한 3D 포지션 채널까지 원하는 방식으로 구축하고 실행할 수 있습니다. 플레이어는 볼륨과 음소거를 자유자재로 제어할 수 있고 다른 플레이어도 쉽게 음소거할 수 있습니다.

Vivox는 엔진에 구애받지 않으며 모든 주요 플랫폼에서 사용할 수 있습니다. 특히 Unity와 Unreal 엔진에는 전용 래퍼가 제공되어 두 엔진 내에서는 더 빠른 구현이 가능합니다.

모든 주요 플랫폼을 지원하기 때문에 크로스 플레이를 아주 간단하게 활성화할 수 있습니다. 서로 다른 플랫폼에 있는 플레이어가 동일한 채널에 참여하도록 하기만 하면 됩니다.

채널에는 2D와 3D 포지션이라는 두 가지 유형이 있습니다.

게임에서의 음성 채팅을 이야기할 때 가장 많은 사람들이 떠올리는 것이 2D 채널입니다. 맵의 어느 위치에 있든 플레이어가 모든 팀원과 음성을 주고받을 수 있는 일반적인 기능입니다.

3D 포지션 채널은 플레이어의 위치와 방향을 고려하여 3D 공간에서 오디오를 표현합니다. 주변에 있는 다른 플레이어의 소리를 자연스럽게 들을 수 있어 플레이어에게 더 몰입도 높은 경험을 선사합니다.

플레이어는 쉽게 여러 채널을 동시에 사용할 수 있습니다.  따라서 플레이어는 게임 공간에서 주변을 달리고 있는 플레이어의 소리를 들으며 3D 포지션 채널을 사용하는 동시에, 하나 또는 여러 2D 스쿼드 채널을 사용할 수 있습니다.

Vivox는 필수적인 접근성 기능을 제공하여 규정 준수 요구 사항을 충족하며 이러한 서비스를 이용하는 플레이어에게 놀라운 경험을 제공합니다.

또한 Vivox는 플레이어를 음소거하거나 강제 퇴장시킬 수 있는 관리형 서버 간 API와 같은 중재 기능을 통해 게임에서 악성 채팅을 근절합니다. 잠재적인 악성 채팅을 확인하거나 문제가 되는 플레이어를 징계할 수 있도록 서버 측 녹화를 활성화할 수도 있습니다.

사용해보기: 계정을 등록하거나 유니티에 문의하세요. 또는 기술 자료 사이트를 참조하세요.

이상적인 기술 스택 구축

Unity Dashboard에서 필요한 서비스를 선택하여 Unity Gaming Services를 시작하거나 가격 정보를 확인해 보세요. 

이번 시리즈가 흥미로우셨나요? 아래에서 이전 포스팅을 확인해 보세요. 

다음 포스팅에 대한 소식은 TwitterFacebook에서 신규 UGS 채널을 팔로우하거나, 새로 개설된 Unity Gaming Services 포럼을 방문하여 확인할 수 있습니다.

2022년 3월 24일 게임 | 13 분 소요

Is this article helpful for you?

Thank you for your feedback!