다음을 통해 공유


Xbox Live 네트워크 간 멀티 플레이어 구현 예제: 멀티 플레이어 게임

버전 1.0, 2020/3/1

이 예제 시나리오는 기존의 멀티 플레이 게임 또는 MOBA에서 권장되는 네트워크 간 기능 및 흐름을 보여줍니다. 여기에서는 한 가지 사용 가능한 디자인 및 구현 경로를 보여줍니다.

이 시나리오에서 타이틀은 다음과 같은 멀티 플레이 기능을 지원합니다.

  • 사용자 지정 매치 메이킹

    타이틀이 사용자 지정 매치 메이킹 서비스를 구현합니다. 이 서비스는 먼저 (선택적으로) 일치하는 플레이어를 찾아서 팀을 구성한 후 일치하는 팀과 플레이어를 함께 찾습니다.

  • 전용 서버

    타이틀의 모든 게임 플레이는 전용 서버에서 실행됩니다. 모든 트래픽(채팅 트래픽 포함)도 이러한 서버를 통해 연결됩니다.

  • 사용자 지정 순위표

    타이틀 서비스는 플레이어 진행 상태에 대한 세부 정보가 포함된 사용자 지정 순위표를 구현합니다.

  • 여러 게임 모드/설정

    타이틀이 협동 대 팀 기반과 같은 여러 게임 모드를 지원하며, 플레이어가 이러한 모드에 대해 맵, 게임 크기, 규칙 및 기타 설정을 구성할 수 있도록 허용합니다.

  • 게임 내 통화

    타이틀이 구매 가능한(프리미엄) 게임 내 통화가 지원되는 게임 내 스토어를 제공합니다. 이 통화를 이용해서 플레이어가 팀을 위한 강화 아이템을 구입할 수 있습니다. 플레이어 캐릭터를 위한 장식 아이템도 구입할 수 있습니다.

  • DLC

    구입할 수 있는 다운로드 가능한 콘텐츠에는 새로운 맵 및 추가 캐릭터가 포함됩니다.

타이틀 서비스

이 예에서 사용자 지정 타이틀 서비스 중 하나는 인증 서비스입니다. 이 서비스는 타이틀 특정 플레이어 계정에 대한 Xbox Live(또는 다른 멀티 플레이 네트워크) 계정의 계정 연결을 위해 사용됩니다. 플레이어가 먼저 서비스에 연결하면, 계정 연결이 자동으로 수행되고 새로운 네트워크 간 플레이어 ID가 생성됩니다. Xbox Live의 경우 플레이어의 XUID는 제목별 계정에 연결된 고유한 플레이어 식별자로 사용됩니다. XUID는 사용 전 승인을 받아야 하고 DAM과 논의해야 합니다.

타이틀 특정 계정에는 네트워크 시작 위치에 관계없이 모든 타이틀 서비스가 플레이어를 처리할 수 있게 해주는 고유한 ID(GUID)가 포함되어 있으며, 플레이어에 대한 메타 데이터가 저장됩니다. 이 예에서는 멀티 플레이 네트워크 및 기본 게임 플레이 플레이어 통계가 이 계정에 저장됩니다.

타이틀 서비스는 타이틀 특정 계정에서 멀티 플레이 네트워크 정보를 사용하여 멀티 플레이 기능이 Xbox Live 플레이어로만 제한될 수 있도록 합니다.

타이틀 흐름

일반적인 멀티 플레이 게임에서 네트워크 간 기능에 대해 호환되는 흐름은 플레이어가 멀티 플레이 모드에 들어갈 때 처음 시작됩니다.

이 예에서 타이틀은 다음 단계를 수행합니다.

  1. 권한 검증

    멀티 플레이를 시작하기 전 타이틀이 멀티 플레이 권한(254 및 189)을 검증합니다. 권한이 거부되면 타이틀이 멀티 플레이 모드로 들어가지 않습니다.

    타이틀은 또한 통신 권한(252)을 확인하고 그에 따라 음성 및 문자 채팅을 종료/비활성화해야 합니다.

  2. 네트워크 간 권한 검증

    이 예에서 타이틀은 네트워크 간 게임 플레이를 기본 매치 메이킹 경험으로 통합합니다. 플레이어가 매치 메이킹 경험에 들어갈 때, 타이틀은 네트워크 간 플레이 권한(185)을 검증합니다. 권한이 거부되면 Xbox Live 내의 매치 메이킹만 가능합니다.

    플레이어가 네트워크 간 게임 플레이에 처음 배치될 때, 타이틀은 네트워크 간 게임 플레이가 활성화되었다는 알림을 표시합니다.

  3. 팀 매치 메이킹

    타이틀 매치 메이킹 서비스는 먼저 매치 메이킹 규칙을 기준으로 네트워크 간 플레이어로부터 팀을 구성합니다.

  4. 팀/로비 MPSD 세션 생성 및 참가

    타이틀 매치 메이킹 서비스는 Xbox Live에 대한 서비스 간 호출을 통해 MPSD 로비 세션을 생성합니다. 모든 Xbox Live 사용자가 이 로비 세션에 참여하고 서비스는 사용자 지정 속성을 사용하여 세션에서 Xbox Live 외부 사용자에 대한 힌트를 추가로 제공합니다. 그런 다음에는 클라이언트 논리에 따라 이러한 힌트를 사용하여 다음 단계에서 세션 상태를 설정할 수 있습니다.

  5. 팀/로비 MPSD 세션 설정

    Xbox Live 클라이언트는 로비 세션을 활동 세션으로 설정합니다. 세션 참가 가능성 및 닫힘 상태는 네트워크 간 플레이어 상태에 따라 설정되어야 합니다. Xbox Live 플레이어는 네트워크 간 팀에 속해 있는 한 이 세션에 유지됩니다.

    세션이 가득 차면(또는 흐름 중 나중에 가득 차면), 서비스 또는 로비 중재자가 세션을 닫힘으로 설정해야 합니다. 플레이어 슬롯이 더 이상 없는 활동 세션은 참가 가능한 상태가 되지 않아야 합니다.

  6. 팀 로비

    팀 로비에는 Xbox Live 플레이어 및 다른 멀티 플레이 플랫폼의 플레이어가 모두 존재합니다. 음성 채팅은 사용자 지정 타이틀 서비스를 통해 Xbox Live 플레이어 간에 활성화됩니다.

    모든 플레이어 사이(Xbox Live 내부 플레이어 사이 및 Xbox Live 내부와 Xbox Live 외부 플레이어 사이)의 음성 채팅은 모든 필요한 개인 정보 보호 및 권한 검사가 완료된 후에만 활성화됩니다. Xbox Live 외부 친구 관계에 대해 타이틀은 Xbox Live 외부 네트워크 친구 관계 데이터를 사용합니다.

    팀 로비에서 Xbox Live 플레이어와 Xbox Live 외부 플레이어는 타이틀 계정 ID로 고유하게 식별됩니다. 모든 플레이어 식별자에는 또한 게이머태그와 그에 상응하는 플레이어 이름(다른 멀티 플레이 네트워크의 경우)이 표시됩니다.

    로비 UI에서 플레이어 명단 예는 다음과 같습니다.

    로비 UI의 플레이어 명단 예제를 보여 주는 이미지.

    로비 UI에서 팀 리더는 다음 단계에 대한 매치 속성(예: 수준 또는 사용자 지정 규칙)을 선택하여 다른 팀과의 게임 세션을 찾은 후 매치 요청을 시작합니다.

  7. 게임 세션 매치 메이킹

    이 단계에서 기존 네트워크 간 팀은 팀 리더가 설정한 추가 매치 속성을 사용하여 매치 메이킹에 제출됩니다. 이러한 속성은 최상의 매치를 찾기 위해 사용되며 매치를 위한 새로운 두 팀 집합을 가져옵니다. 이 시점에서 매치 서비스는 또한 두 팀을 위한 전용 서버를 식별합니다.

  8. 게임 MPSD 세션 생성 및 참가

    익명 게임 세션 매치 메이킹의 결과는 Xbox Live에 대한 서비스 간 호출을 통해 매치 서비스 또는 전용 서비스에서 생성된 MPSD 게임 세션입니다. 모든 Xbox Live 사용자가 이 게임 세션에 참여하고 서비스는 사용자 지정 속성을 사용하여 세션에서 Xbox Live 외부 사용자에 대한 힌트를 추가로 제공합니다.

    그런 다음에는 클라이언트 논리에 따라 이러한 힌트를 사용하여 세션 상태를 설정할 수 있습니다.

  9. 전용 서버에 연결

    마지막 단계에서 모든 클라이언트는 전용 서버에 안전하게 연결하고 네트워크 간 게임 플레이를 시작합니다. 멀티 플레이 네트워크 간의 모든 트래픽은 전용 서버를 통해 연결되어야 하며, P2P 연결이 허용되지 않습니다.

  10. 게임 플레이 완료

    게임 플레이 매치가 완료되면 팀이 다음을 선택할 수 있습니다.

    • 매치 재생

      플레이어가 서버 연결 및 MPSD 게임 세션 상태를 유지합니다. 플레이어가 새로운 게임 플레이 매치를 시작합니다.

    • 새로운 상대 검색

      플레이어가 서버 연결을 끊고 MPSD 게임 세션을 나갑니다. 플레이어가 로비 세션을 유지하고 다음 매치 메이킹 라운드를 위해 로비 화면으로 돌아갑니다.

세션 관리

모든 Xbox 요구 사항을 준수하기 위해 타이틀은 Xbox Live 플레이어에 대해 2개의 MPSD 세션을 생성합니다.

  • 로비 세션

    이 세션은 Xbox Live에 대한 서비스 간 호출을 통해 매치 메이킹 서비스에 의해 생성됩니다. 여기에는 생성 시 팀에 있는 모든 Xbox Live 플레이어에 대한 예약이 포함됩니다. 이것은 플레이어가 초대 또는 진행 중 참가를 보낼 수 있는 세션입니다. 초대 및 진행 중 참가는 Xbox Live 시스템을 사용해야 하며, 네트워크 간에 수행될 수 없습니다. 따라서 모든 Xbox Live 플레이어가 이 세션을 자신의 활동 세션으로 설정합니다.

  • 게임 세션

    이 세션은 Xbox Live에 대한 서비스 간 호출을 통해 매치 메이킹 서비스에 의해 생성됩니다. 여기에는 게임 세션(팀 간)에 있는 모든 Xbox Live 플레이어에 대한 예약이 포함됩니다. Xbox Live 플레이어의 멀티 플레이 활동을 추적하기 위해 사용됩니다.

Xbox Live 외부 플레이어는 MPSD 세션에 세션 멤버로 직접 표시되지 않습니다. 타이틀은 사용자 지정 세션 속성에서만 프레즌스를 추적합니다.

{{"name":"jackplayer"},{"name":"johnplayer"},{"name":"joeplayer"}}

이 목록 및 Xbox Live 세션 멤버를 사용하여 세션이 가득 찼는지 여부를 확인할 수 있습니다. 가득 찬 경우에는 올바른 동작을 위해 Xbox Live에 대한 초대 및 진행 중 참가 기능을 비활성화해야 합니다. 플레이어(또는 서버)는 이 기능을 비활성화하기 위해 세션에서 닫힘 속성을 설정합니다.

게임 플레이에서 플레이어를 추적하기 위해 사용되는 MPSD 세션은 Xbox 요건을 준수하기 위해 게임 플레이 기능을 활성화해야 합니다.

플레이어 통신 차단/보고

타이틀에서 플레이어 차단은 타이틀 수준에서 지원됩니다.

  • Xbox Live 플레이어 차단

    타이틀은 check_multiple_permissions_with_multiple_target_users를 사용하여 다른 Xbox Live 플레이어 및 Xbox Live 외부 플레이어/Xbox Live 외부 친구의 플레이어 클래스와의 멀티 플레이 및 채팅을 위한 권한을 확인합니다. 타이틀은 또한 ShowProfileCardAsync를 통해 다른 플레이어의 프로필에 대한 액세스 권한을 제공합니다. 차단은 플레이어의 프로필 UI에서 수행될 수 있습니다.

  • Xbox Live 외부 플레이어 차단

    타이틀은 타이틀 내 차단 목록을 사용하여 Xbox Live 외부 플레이어와의 통신 차단을 지원합니다. 이 목록은 타이틀 서비스에서 유지 관리되며 멀티 플레이 권한이 확인됩니다. 네트워크 간 채팅은 기본적으로 제공되지 않습니다. Xbox Live 외부 플레이어는 사용자 지정 타이틀 UI를 통해 타이틀에서 차단될 수 있습니다.

    사용자 지정 타이틀 UI를 통해 Xbox Live가 아닌 플레이어 차단

  • Xbox Live 플레이어 보고

    타이틀은 또한 플레이어 보고를 허용합니다. Xbox Live에서 보고는 프로필 UI를 통해 플레이어에 의해 수행됩니다. Xbox Live 집행 기관은 플레이어 보고를 처리합니다.

  • Xbox Live 외부 플레이어 보고

    Xbox Live 외부 사용자의 경우 타이틀이 사용자 지정 보고 UI 흐름을 제공합니다. 타이틀은 타이틀에 따라 또는 다른 멀티 플레이 네트워크의 지침을 기준으로 플레이어 보고를 처리합니다.

마켓플레이스

Xbox Live 및 다른 멀티 플레이 네트워크에서의 게임 내 통화 구입은 타이틀 서비스에서 추적됩니다. 타이틀은 모든 타이틀 버전 간의 공유된 가상 통화 지갑 및 게임 내 아이템 인벤토리를 제공합니다.

Xbox Live 외부 타이틀 버전의 경우 다음 제한 사항이 적용됩니다.

  • 플레이어 스킨

    플레이어 스킨은 게임 내 통화로만 구입할 수 있습니다. 게임 내 통화는 모든 네트워크 간에 제공되는 통합된 게임 내 지갑으로 관리됩니다. 모든 플레이어 스킨은 모든 타이틀 버전 간에 동일합니다.

  • 소모품

    소모품은 게임 내 통화로만 구입할 수 있습니다. 통화와 마찬가지로 소모성 아이템은 통합된 게임 내 재고로 관리됩니다.

  • 다운로드 가능한 콘텐츠

    Xbox Live 플랫폼에서 다운로드 가능한 콘텐츠(새 맵 및 캐릭터 유형)는 Microsoft Store를 통해 관리됩니다. 다른 스토어에서의 자격은 공유되지 않습니다.

    모든 플레이어가 같은 맵에서 플레이하기 위해서는 해당 스토어에서 유효한 자격을 얻어야 합니다. 구매하지 않은 캐릭터 유형은 표시되지만 해당 자격이 없는 플레이어가 플레이할 수 없습니다.

도전 과제

타이틀에는 플레이한 멀티 플레이 게임을 포함하여 멀티 플레이 활동을 기준으로 하는 여러 도전 과제가 있습니다. 이러한(그리고 이와 유사한) 도전 과제의 진행 상태에는 네트워크 간 멀티 플레이 게임 세션이 포함됩니다.

네트워크 간 게임 플레이로 제한되는 도전 과제는 타이틀에 포함되지 않습니다. Xbox One 타이틀 도전 과제에 대한 도전 과제 진행은 다른 타이틀 버전에서의 게임 플레이를 통해서도 가능합니다.

플레이어 진행 상태

플레이어 진행 상태는 모든 타이틀 버전 간에 공유됩니다. 사용자 지정 타이틀 계정에는 플레이어 진행 상태의 일부가 저장됩니다.

게임 DVR/브로드캐스팅

타이틀은 게임 DVR 및 스크린샷은 물론 네트워크 간 멀티 플레이 매치의 브로드캐스팅을 지원합니다.

순위표

타이틀의 순위표는 Xbox Live 순위표를 넘어서 광범위한 순위표 기능을 제공하는 타이틀 서비스를 통해 구현합니다. 서비스는 여러 개의 기본 순위표를 생성하고 이를 병렬로 업데이트합니다. 여기에는 각 플레이어 네트워크에 대한 하나의 순위표와 모든 플레이어 네트워크의 결과가 조합된 하나의 병합된 순위표가 있습니다.

네트워크 간 멀티 플레이가 활성화된 경우 병합된 순위표가 표시됩니다. 모든 플레이어는 멀티 플레이 로비에서 동일한 방식으로 표시됩니다.

병합된 순위표 이미지

Xbox Live 전용 순위표는 플레이어가 네트워크 간 게임 플레이 기능을 비활성화한 경우에 표시됩니다.

타이틀 특정 계정은 순위표 서비스에서 모든 플레이어를 내부적으로 식별하기 위해 사용됩니다. Xbox Live 플레이어의 외부 식별자는 쿼리 타이틀 인스턴스에 따라 달라집니다. Xbox Live 타이틀 인스턴스에서는 XUID가 반환되고 클라이언트가 조회를 수행하여 플레이어의 게이머태그 문자열을 확인합니다. Xbox Live 외부 타이틀 인스턴스에서는 플레이어의 게이머태그 또는 DisplayName 문자열이 직접 반환됩니다. 서비스는 Xbox Live에 대한 서비스 간 호출에서 이 문자열을 검색하고 이를 최대 4시간 동안 캐시에 보관합니다.