본문으로 건너뛰기

© 2026 Molayo

YouTube요약2026. 06. 02. 06:53

Unity에서 글로벌 매치메이킹 (Global Matchmaking)을 설정하는 방법

요약

Unity의 Relay 및 Lobby 서비스를 활용하여 글로벌 매치메이킹 시스템을 구축하는 방법을 설명합니다. Netcode for GameObjects 설치부터 Unity Dashboard 설정, 익명 인증을 통한 플레이어 진입 과정까지의 워크플로우를 다룹니다.

핵심 포인트

  • Unity Relay와 Lobby 서비스를 통한 매치메이킹 구현
  • Netcode for GameObjects 및 관련 패키지 설치 방법
  • Unity Dashboard를 통한 서비스 활성화 및 프로젝트 설정
  • 익명 로그인을 활용한 마찰 없는 플레이어 진입 구현

영상: Unity에서 글로벌 매치메이킹 (Global Matchmaking)을 설정하는 방법
채널: Tarodev
재생 시간: 12분 26초
출처: 자막 (자동 생성, 영어)

Unity는 Relay 및 Lobby 서비스를 사용하여 간편한 글로벌 매치메이킹 (Global Matchmaking)을 제공합니다. 여러분이 직접 살펴보고 어떻게 작동하는지 검토하여 게임에 쉽게 구현할 수 있도록, 화면에 보이는 것과 같은 로비 시스템 (Lobby System)을 제작했습니다. 프로젝트 파일은 설명란에서 찾을 수 있지만, 이 영상에서는 모든 것이 어떻게 작동하는지 가르쳐 드리기 위해 단순화된 스크립트를 다룰 것입니다.

자, 시작하려면 몇 가지 사전 준비 사항이 필요합니다. Windows Package Manager로 가서 Lobby와 Relay를 설치하세요. 이들은 Unity Registry에 있을 것입니다. 또한 현재 베타 버전인 Netcode for GameObjects도 설치하고 싶을 텐데, 이는 Unity Registry에서 찾을 수 없으므로 Git URL을 통해 추가해야 합니다. 링크는 설명란과 화면에 남겨두겠습니다. 설치가 완료되면 창을 닫으세요.

설치를 마치면 프로젝트를 연결하라는 작은 대화 상자가 나타날 수 있습니다. 나타났다면 안내를 따르시고, 나타나지 않았다면 Windows > General Services로 가서 여기 General Settings를 클릭하세요. 그러면 조직 (Organization)을 선택하라는 메시지가 뜹니다. 아직 없다면 새로 만들어야 할 수도 있습니다. Project ID를 생성하세요. 그러면 실제로 Unity Dashboard에 프로젝트가 생성됩니다. 완료한 후 여기 Dashboard 버튼을 클릭하세요. 아직 로그인하지 않았다면 로그인을 해야 합니다. 여기서 Multiplayer로 이동하여 Relay의 Get Started를 클릭한 다음 안내를 따르세요. 여러분이 읽을 수 있도록 제가 거의 모든 과정을 진행하겠지만, 굳이 다 읽을 필요는 없습니다. Relay를 켜고(Turn on Relay), Next, Finish를 누르세요. 그리고 Lobby에 대해서도 정확히 똑같이 진행합니다. Next, Next, Turn it on, Next, Finish. 좋습니다. 이제 Dashboard에서 나가셔도 됩니다. 토큰 (Token)을 새로고침하려면 에디터를 재시작해야 하므로 잠시 후에 돌아오겠습니다. 좋습니다, 이제 Relay를...

여기에 예시가 있으며, 이것은 단순히 Relay에만 다룰 것이고 잠시 동안 Lobby에 대해서는 이야기하지 않겠습니다. 그럼 이 간단한 흐름을 살펴보겠습니다. 대부분의 Unity Services를 사용하려면 두 가지 Unity Services 인증 (Authenticate)이 필요합니다. 그래서 Awake에서 지금 바로 인증 (Authenticate)을 호출하고 있습니다. 혹시 모르시는 분들을 위해 말씀드리자면, Unity Services는 수많은 놀라운 멀티플레이어 서비스들을 포함하는 통합 브랜드입니다. 예를 들어, 플레이어 데이터를 온라인에 저장하고 싶다면 그렇게 할 수 있고, 민감한 서버 측 코드를 실행하고 싶다면 Cloud Code를 사용할 수 있습니다. 전체 경제 시스템도 있고, 당연히 Netcode와 Lobby, 그리고 이 영상에서 살펴볼 Relay가 있습니다. 정말 놀라운 기술 스택이니 꼭 확인해 보세요. 링크는 설명란에 있습니다. 우리가 하고 있는 것은 Unity Services를 초기화한 다음 익명으로 로그인 (Sign in anonymously)하는 것입니다. 익명 로그인은 플레이어들이 게임에 진입하여 플레이를 시작하게 만드는 매우 마찰 없는 (Frictionless) 방법입니다. 즉시 로그인을 요구하거나 사용자 이름과 이메일로 계정을 등록하게 하거나, Google 계정을 사용하게 할 필요가 없습니다. 그냥 바로 플레이를 시작하게 할 수 있고, 나중에 플레이를 어느 정도 한 후에 "계정을 백업하시겠습니까? Google 계정이나 Steam 계정 등에 연결하시겠습니까?"라고 제안할 수 있습니다. 죄송하지만, 이번에는 그냥 익명으로 로그인하겠습니다. 거기서 저는 Join과 Create라는 두 개의 버튼을 가지고 있습니다. 이 두 함수에 대해서, 그리고 지금이 바로 Relay 서비스가 정확히 무엇인지 설명하기에 아주 좋은 타이밍입니다. 만약 여러분이 멀티플레이어 게임이 막 나오기 시작하던 초창기에 멀티플레이어 게임을 해본 적이 있다면, 친구가 IP 주소를 알려주면 여러분의 클라이언트에서 그 IP 주소를 입력하고, 친구가 방화벽 규칙을 잘 설정했는지, 포트 포워딩 (Port forwarding)을 제대로 했는지 기도해야 했던 기억이 있을 것입니다. Relay가 하는 일은 여러분과 다른 플레이어들 사이에서 프록시 (Proxy) 역할을 하는 것입니다. 즉, Relay 서비스가 여기에 위치하게 되며, 여러분은 여기에 연결하게 됩니다.

릴레이 서비스(Relay service)와 다른 모든 클라이언트들입니다. 모든 클라이언트는 릴레이 서비스에 연결하게 되며, 기본적으로 여러분의 연결 정보가 그들에게 전달(propagate)되는 방식입니다. 이것이 의미하는 바는 여러분이 친구의 IP 주소나 다른 정보를 알 필요가 없다는 것입니다. 여러분은 단지 릴레이 서비스가 어디에 있는지만 알면 되는데, 이는 분명 매우 간단한 일입니다. 이 흐름을 초기화하는 방법은 릴레이 서비스에 할당(allocation)을 생성하는 것이며, 과정은 다음과 같이 간단합니다. 우리가 하고 있는 일은 이 게임에 몇 명의 플레이어가 참여하기를 원하는지 보내는 것뿐입니다. 지금은 일단 5명이라고 말하겠지만, 여러분이 원하는 대로 설정할 수 있습니다. 추가적으로 여기에 선택적 인자(optional argument)로 지역(region)을 넣을 수 있는데, 만약 null로 남겨둔다면 시스템이 여러 지역에 대해 수많은 서비스 품질 (Quality of Service, QoS) 체크를 수행하여 자동으로 여러분에게 가장 적합한 지역을 찾아줄 것입니다. 하지만 여러분의 사용자 기반이 특정 지역으로 고정되어 있을 수도 있습니다. 예를 들어 오세아니아(Oceania)나 아메리카(Americas) 등이 될 수 있으므로, 그럴 때는 해당 값을 넣어주면 됩니다. 저는 일단 지금은 비워두겠습니다. 할당(allocation)을 생성하고 나면, 이제 해당 할당으로부터 참여 코드(join code)를 요청하게 됩니다. 이 참여 코드를 통해 여러분은 친구나 다른 사람들에게 코드를 전달할 수 있으며, 그들은 이 코드를 사용하여 여러분이 방금 만든 할당에 참여할 수 있습니다. 여기서 '게임 참여(Join game)'를 클릭하는 것이 바로 그들이 하고 있는 일입니다. 두 사람이 연결되는 데 필요한 것은 오직 참여 코드뿐입니다. IP도 필요 없고, 포트 포워딩(port forwarding) 같은 것도 필요 없습니다. 오직 참여 코드만 있으면 됩니다. 양측 모두 할당(allocation)을 확보했다면, 이제 이를 실제로 활용해야 합니다. 활용한다는 것은 우리의 트랜스포트(transport)에 적용하는 것을 의미합니다. 한 가지 유의할 점은, Unity Relay를 사용하려면 Unity Transport도 함께 사용해야 한다는 것입니다. 즉, 트랜스포트에 구애받지 않는(transport agnostic) 방식은 아닙니다. 마찬가지로 Steam Relay를 사용하고 싶다면 Steam Transport를 사용해야 할 것이고, Epic의 경우에도 Epic Transport를 사용해야 하는 것과 같습니다. 이를 적용하는 방식은 호스트(host)와 클라이언트(client)에서 약간 다르지만, 기본적으로 우리는 그냥

할당(allocation)으로부터 엄청나게 많은 정보를 보내게 됩니다. 이것은 상당히 장황하며, 대부분의 경우 사람들이 할당으로부터 얻은 이 정확히 동일한 세부 정보들을 사용할 것이라고 가정합니다. 따라서 'apply allocation to transport(트랜스포트에 할당 적용)'와 같은 작은 헬퍼 함수(helper function) 같은 것이 있다면 좋을 것입니다. 기본적으로 할당 정보를 보내기만 하면 되니까요. 하지만 이는 아마도 미래의 언젠가 구현될 것입니다. 클라이언트에서는 'set client relay data(클라이언트 릴레이 데이터 설정)'라고 말할 것입니다. 한 가지 주의할 점은, 제가 잠시 동안 헤맸던 부분인데, 호스트(host)에서는 호스트 릴레이 데이터(host relay data)를 설정하고, 클라이언트(client)에서는 클라이언트 릴레이 데이터(client relay data)를 설정해야 한다는 점입니다. 그 다음에는 평소 다른 Netcode 게임에서 하던 것처럼 그냥 호스트를 시작(start host)하고 클라이언트를 시작(start client)하면 됩니다. 이제 유일한 차이점은 우리가 릴레이(relay) 시스템을 통해 트랜스포트(transport)를 사용한다는 것입니다. 만약 우리가 여기서 이러한 설정들을 실제로 하지 않고 그냥 'start client', 'start host'라고만 했다면, 우리가 실제로 같은 컴퓨터에 앉아 있지 않는 한 서로의 게임에 연결되지 않았을 것입니다. 어쨌든 계속해서, 우리는 평소처럼 호스트를 시작하고 평소처럼 클라이언트를 시작합니다. 다만 이제 우리의 트랜스포트에 이러한 특별한 설정들이 적용되어 있습니다. 그러면 우리는 해당 릴레이 서비스를 통해 연결될 것이고 함께 플레이할 수 있습니다. 그럼 실제로 테스트해 봅시다. 여기 클라이언트가 있고, Parallel Sync를 열어서 여기에 클론(clone)을 하나 생성하겠습니다. 이에 대해 더 많은 정보가 필요하다면, Netcode 영상에서 다루었지만, 이는 매번 빌드하지 않고도 로컬에서 멀티플레이어 게임을 테스트할 수 있는 방법입니다. 정말 매우 유용합니다. 완료되면 'open in a new editor'를 클릭하세요. 좋습니다, 여기에 두 번째 클라이언트가 열렸습니다. 메인 클라이언트에서 'play'를 클릭하겠습니다. 생성(create)을 누르면 클라이언트 상단에 참여 코드(join code)가 나타날 것입니다. 클라이언트에서 참여 코드를 입력하고, 'join'을 누릅니다. 자, 이제 두 명의 플레이어가 준비되었습니다. 이것은 이전 Netcode 영상과 다를 바 없어 보이죠? Netcode 영상에서도 이 작업을 할 수 있었지만, 이것은

실제로 전역적으로(globally) 작동하며, 반드시 같은 컴퓨터에 있을 필요가 없습니다. 당연히 이를 보여드리기 위해 테스트하기가 그리 쉽지는 않지만, 제 말을 믿으셔도 됩니다. 그것이 릴레이(Relay)이며, Unity는

AI 자동 생성 콘텐츠

본 콘텐츠는 YouTube Tarodev (Unity 팁)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0