개발자 소식으로 돌아가기

멀티플레이어 VR 경험 빌드

2022년 5월 24일제작:Navyata Bawa

멀티플레이어 경험이 VR 에코시스템에서 차지하는 중요성이 점점 커지고 있습니다. 멀티플레이어 기능을 사용하면 사용자가 다양한 게임과 앱에서 쉽게 상대를 찾아서 초대하고 함께 플레이할 수 있습니다. 4부로 구성된 이 '멀티플레이어 VR 경험 빌드' 블로그와 동영상 시리즈에서는 Unity에서 개발한 오픈 소스 SharedSpaces 샘플을 통해 Quest의 플랫폼 SDK 멀티플레이어 기능에 대해 설명하고 샘플을 사용하여 나만의 멀티플레이어 앱을 빌드하는 방법을 보여드립니다. 보거나 들으면서 배우고 싶다면 Meta Open Source YouTube 채널에서 이 동영상을 확인해 보세요.

오늘 블로그에서는 플랫폼 SDK의 멀티플레이어 기능에 대해 알아보고 플랫폼 SDK를 활용하여 무엇을 빌드할 수 있는지 알아보겠습니다. 또한 App Lab의 Unity SharedSpaces 샘플을 살펴보고 이러한 멀티플레이어 기능이 실제로 작동하는 모습을 확인해 볼 것입니다.

멀티플레이어 기능

Quest 멀티플레이어 기능(데스티네이션, 그룹 프레즌스, 초대, 초대 링크, 로스터 등)을 사용하면 사용자가 VR 앱에서 상대를 찾아서 초대하고 함께 플레이할 수 있습니다. 이러한 기능은 앱 내에서 소셜 인터랙션을 향상하고 앱의 열정적인 팬들이 다른 사용자를 초대하여 마치 앱에서 친구와 실제로 함께 있는 것처럼 느낄 수 있는 고유한 멀티플레이어 경험을 구현합니다.

데스티네이션

데스티네이션은 앱 내에서 사용자가 이동하는 위치이고 Quest 개발이 진행 중인 멀티플레이어 기능에 꼭 필요한 요소입니다. 아래의 그림은 SharedSpaces 샘플 앱의 세 가지 데스티네이션을 보여줍니다. 다음 블로그에서는 앱에서 데스티네이션을 설정하는 단계를 설명하겠습니다.

그룹 프레즌스

그룹 프레즌스는 누군가가 어떤 앱을 사용 중인지에 관한 정보를 제공합니다. 예를 들어 매치가 있는지, 친구가 특정 데스티네이션에 있는지, 참여 가능한지 등에 관한 정보를 알 수 있습니다. 데스티네이션과 그룹 프레즌스에 대한 자세한 정보는 다양한 사용 사례 시나리오와 앱에서 해당 사용 사례를 가장 잘 활용하는 방법에 대한 문서를 참조하세요.

딥 링크

딥 링크를 사용하면 개발자가 사용자를 특정 환경으로 안내할 수 있습니다. 누군가 앱을 시작해서 친구에게 합류하거나 데스티네이션으로 이동할 때마다 딥 링크에 원하는 데스티네이션과 로비 또는 매치에 대한 정보가 포함됩니다.

멀티플레이어 경험을 활성화하는 첫 단계는 데스티네이션, 그룹 프레즌스, 딥 링크를 통합하는 것입니다. 다음 블로그에서는 Unity SharedSpaces 샘플을 나만의 버전으로 빌드하고 이를 앱에서 설정하는 방법을 설명하겠습니다.

앱 초대

앱 초대를 이용하면 플레이어가 지원되는 게임에서 Quest 메뉴를 사용하여 Quest 친구 및 최근에 함께 플레이한 사용자를 기존의 로비로 원활하게 초대할 수 있습니다.

초대를 보내면 초대된 사용자에게 경험에 참여하도록 초대하는 알림이 VR과 Oculus 모바일 앱에 표시됩니다.

앱 초대 API와 이 API를 경험에서 사용하는 방법에 대한 자세한 내용은 문서 페이지를 참조하세요.

초대 링크

Oculus 모바일 앱에서 친구 그룹을 데스티네이션으로 이동시키는 초대 링크를 사용할 수도 있습니다.

초대 링크는 그룹 프레즌스 API를 사용하여 모든 사람이 같은 세션에 모이도록 합니다. 초대 링크에 대해 자세히 알아보려면 문서 페이지를 참조하세요.

로스터

로스터는 사용자에게 게임 내에 함께 있는 친구를 볼 수 있도록 도와줍니다. 현재 사용자의 프레즌스를 게임에서 설정했다면 게임에서 채운 사용자들이 동일한 로비 세션 ID에 들어오게 됩니다. SharedSpaces 샘플에서 로스터 패널 위로 올라가면 로스터를 사용할 수 있습니다. 아래의 이미지는 로스터에서 나와 함께 플레이하는 사용자와 초대된 사용자를 보여주는 방법에 관한 예시입니다.

Unity SharedSpaces 샘플

지금까지 몇 가지 플랫폼 SDK 멀티플레이어 기능을 살펴보았습니다. 이제 SharedSpaces라는 샘플 프로젝트에서 이러한 멀티플레이어 기능이 작동하는 모습을 살펴보겠습니다. 이 샘플은 Unity 버전을 사용하지만, Unreal 버전에 관심이 있다면 App Lab에서 찾아보세요.

먼저 Unity SharedSpaces 샘플이 어떻게 작동하는지 알아보겠습니다. 이 샘플은 다음 세 가지 계층의 네트워킹을 사용합니다.

  • 데스티네이션, 프레즌스, 로비, 매치를 설정하도록 해주는 플랫폼 SDK
  • 공간을 공유하는 사용자 간의 통신을 담당하는 전송 계층인 Photon SDK
  • Unity의 게임 오브젝트용 Netcode SDK에서 제공하는 네트워킹 기능

아래의 그림에 앞서 설명한 세 가지 계층이 요약되어 있습니다.

샘플 설치

SharedSpaces 앱이 작동하는 기본적인 원리를 이해하였으므로 App Lab에서 Unity SharedSpaces 샘플을 다운로드하고 Quest 헤드셋에서 체험해 보실 수 있습니다.

샘플 실행

Quest 헤드셋에서 앱을 시작하면 로비라는 룸에 위치하게 됩니다. 플레이어는 컨트롤러를 사용하여 제어할 수 있는 다채로운 캐릭터로 표현됩니다. 왼쪽 컨트롤러는 플레이어를 움직이고 오른쪽 컨트롤러는 카메라를 움직여서 주변 월드를 편안하게 보고 원하는 곳으로 향할 수 있도록 합니다. 컨트롤러의 Y 버튼을 누르면 플레이어가 점프합니다.

오른쪽의 디버그 패널을 사용하면 데스티네이션 상태, 네트워킹 계층, 룸에 들어온 사용자에 관한 정보를 확인할 수 있습니다. 왼쪽에는 입장할 수 있는 3개의 비공개 데스티네이션이 있고, 오른쪽에는 입장할 수 있는 공개 데스티네이션이 보입니다.

왼쪽 상단에는 친구를 이 경험에 참여하도록 초대할 수 있는 옵션이 보입니다. 이 옵션이 앞서 설명해 드린 앱 초대 기능입니다.

오른쪽 상단에는 그룹 프레즌스에 대한 정보를 보여주는 로스터가 보입니다. 이것은 플랫폼 SDK의 로스터 기능이 작동하는 모습입니다.

뒤에는 플레이어 색을 바꿀 수 있는 옵션을 제공하는 페인트 상점이 보입니다. 또는 컨트롤러에서 X 버튼을 눌러 플레이어 색을 바꿀 수 있습니다.

왼쪽 하단과 오른쪽 하단에는 자신과 친구에게 쿼리하여 플레이어에 대한 자세한 정보를 얻을 수 있는 옵션이 보입니다.

샘플 테스트 시나리오

이제 공간에 익숙해졌으므로 데스티네이션 중 하나에 입장해 보세요. 퍼플 룸은 누구나 입장할 수 있으며 로비에서 도달할 수 있는 공개 데스티네이션입니다. 이제 로비로 돌아가 보겠습니다.

로비로 돌아간 다음 다른 룸으로 입장해 보세요. 레드, 블루, 그린 룸은 비공개이고 입장하려면 초대가 필요합니다.

비공개 룸에 들어가기 전에 다른 사람을 같이 초대할 수 있습니다. '친구 초대' 패널로 이동해서 초대할 수 있는 친구의 리스트를 확인하고 리스트에서 친구를 초대합니다. 내가 로비에서 경험을 시작했으므로 로비의 마스터 클라이언트 자격으로 로비를 호스팅합니다.

초대한 친구에게는 초대된 사실을 알리는 알림이 표시됩니다. 친구가 초대를 수락하면 로비에 나타납니다. 이제부터는 나와 친구 모두가 이 세션에 대해 동일한 로비 ID를 공유합니다.

이제 블루 룸에서 비공개 매치를 시작할 수 있습니다. 블루 룸에 입장할 때 친구가 나보다 먼저 블루 룸에 와 있는 것을 확인할 수도 있습니다. 친구가 먼저 룸에 입장했으므로 해당 친구가 룸을 호스팅하고 나는 친구에게 연결됩니다. 내게는 또한 블루 룸에 해당하는 동일한 매치 세션 ID가 부여됩니다. 내가 블루 룸을 나가면 동일한 로비 ID를 공유하기 때문에 나와 친구 모두 로비로 돌아옵니다.

내가 블루 룸에 있는 동안 친구를 초대했고 친구가 자신의 로비에서 초대를 수락한 경우, 친구의 매치 ID는 블루 룸에 해당하는 동일한 매치 세션 ID로 변경되지만 로비 ID는 예전과 똑같이 유지됩니다. 이 경우, 두 사람 모두 블루 룸을 나가면 각자 자신의 로비로 돌아가 서로 다른 공간에 있게 됩니다.

지금까지 Unity SharedSpaces 샘플 앱을 간단히 설명해 드렸습니다. 플랫폼 SDK가 제공하는 멀티플레이어 기능 몇 가지와 Quest의 Unity SharedSpaces 앱에서 이러한 기능이 작동하는 모습을 살펴보았습니다. 다음 블로그에서는 Github에서 샘플을 다운로드한 다음 Quest 헤드셋에서 빌드하고 실행하는 방법을 포함하여 이 샘플의 사본을 직접 빌드하는 방법을 알아보겠습니다.


시리즈 정보

이 시리즈에서는 Unity로 개발한 오픈 소스 SharedSpaces 샘플을 통해 Quest의 플랫폼 SDK 멀티플레이어 기능을 설명합니다. 이 블로그는 '멀티플레이어 VR 경험 빌드' 동영상 시리즈를 지원하는 블로그 시리즈 4부작 중 1부입니다.

플랫폼 SDK 멀티플레이어 기능과 SharedSpaces 샘플의 작동 원리에 대해 자세히 알아보려면 Quest용 멀티플레이어 앱을 빌드하고 성장시키는 방법을 설명하는 이 Connect 세션을 참조하세요. App Lab을 방문하고 자신의 헤드셋에서 Unity SharedSpaces 샘플을 사용해보세요. 자신의 앱에서 플랫폼 SDK 멀티플레이어 기능을 사용하는 방법에 대해 알아보려면 멀티플레이어 기능 문서를 참조하세요.

Meta Quest에 대해 자세히 알아보려면 웹사이트를 방문하여 YouTube 채널을 구독하거나 TwitterFacebook을 팔로우하세요. 질문이나 제안, 피드백이 있는 경우 개발자 포럼에 문의해 주시기 바랍니다.

Meta Open Source에 대해 자세히 알아보려면 오픈 소스 사이트를 방문하여 YouTube 채널을 구독하거나 TwitterFacebook을 팔로우하세요.