본문 바로가기
UNITY

[Unity] 유니티 릴레이 서비스

by 램플릿 2025. 8. 13.
유니티 릴레이

유니티에서 제공하는 멀티플레이어 게임용 네트워크 인프라 서비스 중 하나로, NAT(Network Address Translation)나 방화벽 등의 이유로 플레이어들끼리 직접 연결(P2P, Peer-to-Peer)할 수 없을 때, 중간 서버를 통해 데이터를 중계해주는 서비스입니다.

Unity의 Unity Gaming Services (UGS) 플랫폼의 일부로 작동하며, Unity Transport와 연동되어 사용됩니다.

 

https://docs.unity.com/ugs/ko-kr/manual/relay/manual/integration

 

Relay 연동

Relay 연동# Relay는 Unity 생태계의 일부로, Lobby, Unity Authentication, Unity Transport 패키지, Netcode for GameObjects, Mirror Networking API 등 여러 Unity 제품과 원활하게 연동됩니다. 참고: 당분간 Unity Relay SDK는 UTP(Un

docs.unity.com

🎮 게임에서의 프록시 = 릴레이 서버

게임에서는 "프록시 서버"라는 말을 잘 안 쓰고, 그 역할을 하는 걸 "릴레이 서버"라고 해.

  • 플레이어 A ↔ 릴레이 서버 ↔ 플레이어 B
  • A와 B는 서로의 IP를 몰라도 되고, 방화벽도 우회 가능

즉, 릴레이 서버가 프록시(대리인, 중간자 시스템 또는 서버) 역할을 하는 거야.

 

🎯 주요 기능

기능설명
✅ NAT 우회 NAT 및 방화벽이 있어도 연결 가능하게 중계
✅ 호스트-클라이언트 구조 지원 호스트가 릴레이를 통해 클라이언트를 연결
✅ UTP(Unity Transport Package) 통합 UTP를 통해 릴레이 네트워크 구현 가능
✅ UGS 인증 연동 Unity의 Authentication 서비스와 함께 사용
✅ 서버 유지비 절감 전용 서버가 필요 없는 구조로 운영비 절감 가능
 

🧩 동작 방식

  1. 호스트 생성
    • 게임에서 한 명의 플레이어가 호스트가 되며, Relay 서버에 할당 요청을 보냅니다.
    • Relay 서버는 호스트에게 Join Code를 발급합니다.
  2. 클라이언트 연결
    • 다른 플레이어(클라이언트)는 이 Join Code를 사용하여 Relay 서버를 통해 호스트에 연결합니다.
  3. 데이터 중계
    • Relay 서버는 양쪽 데이터를 중계하여 NAT나 방화벽을 우회함으로써 실시간 통신이 가능하도록 합니다.

📦 필요 패키지

  • Unity Transport (UTP)
  • Relay SDK (com.unity.services.relay)
  • Authentication SDK (옵션, 보안 연동을 위해 권장)

📌 사용 예시

// 호스트 생성 예시
Allocation allocation = await RelayService.Instance.CreateAllocationAsync(maxPlayers);
string joinCode = await RelayService.Instance.GetJoinCodeAsync(allocation.AllocationId);

// 클라이언트 연결 예시
JoinAllocation joinAllocation = await RelayService.Instance.JoinAllocationAsync(joinCode);

🚫 제한사항

  • 고용량 데이터에는 부적합 (Relay 서버는 단순 중계만 하므로 지연이나 속도 제한 있음)
  • PvP나 소규모 협동 게임에 적합
  • 대규모 MMO 등에는 Dedicated Server 사용이 더 적합

🧠 언제 쓰면 좋을까?

  • 플레이어 간 연결이 중요한 협동 게임(Co-op), P2P 기반 게임
  • NAT 문제로 직접 연결이 어려운 환경
  • 서버 비용을 최소화하면서 멀티플레이를 구현하고 싶을 때

 

 

 

Unity > Edit > Services > Members > Dashboard를 누르면 웹에서 해당 프로젝트의 대시보드가 열린다.

프로젝트 > (프로젝트이름) > 서비스 > Multiplay Hosting, Matchmaker, Lobby, Relay 실행

Unity > Window > Package Manager에서 Relay 패키지를 설치 (com.unity.services.relay)

 

UnityTransport 컴포넌트에서 Protocol Type 속성을 변경한다.

게임을 호스트할 때는 RelayUnityTransport를 활용하고, 매치메이킹(대전)을 진행할 때는 UnityTransport를 사용한다.

 

 

UGS는 일정 한도에 도달하기까지는 Free Plan으로 이용할 수 있다.

  • Free Plan 한도를 초과하면 자동으로 전환됨.
  • 이때 결제 수단 등록이 필요하며, 등록된 다음부터는 무료 범위를 넘어선 사용분에 대해 요금이 청구된다.

 

https://unity.com/kr/products/gaming-services/pricing

 

UGS 가격

게임 출시, 관리, 운영에 필요한 모든 기능을 합리적인 가격에 이용하실 수 있습니다. UGS 제품은 AAA 스튜디오부터 인디 개발사에 이르는 모든 고객을 지원합니다.

unity.com