매치메이킹 프로세스가 시작되기 전에 매치메이킹 “스카우트”가 함께 매치메이킹을 시작하려는 사람들의 그룹을 나타내는 매치 티켓 세션을 설정합니다.
이 그룹의 모든 플레이어는 XblMultiplayerSessionJoin을 사용하여 세션에 참가합니다.티켓 세션이 만들어지고 플레이어로 채워지면, 타이틀은 XblMatchmakingCreateMatchTicketAsync를 사용하여 세션을 매치메이킹 서비스에 제출합니다.
이 메서드는 티켓 세션을 나타내는 매치 티켓을 만든 다음, 티켓 세션의 /servers/matchmaking/properties/system/status 필드를 searching으로 업데이트합니다.
자세한 내용은 Multiplayer 태스크 항목의 매치 티켓 만들기 섹션을 참조하세요.매치 티켓 생성 메서드의 응답은 XblCreateMatchTicketResponse 객체입니다.
응답에는 매치 티켓 ID가 포함되어 있습니다. 이는 티켓을 삭제하여 매치메이킹을 취소하는 데 사용할 수 있는 GUID입니다.
응답에는 또한 호퍼에 대한 평균 대기 시간도 포함되어 있어 플레이어의 기대치를 설정하는 데 사용할 수 있습니다.이 항목의 맨 위로 돌아가기.
타이틀은 매치 티켓 세션 내의 각 멤버에 대해 멤버별 특성을 지정합니다.
이러한 특성은 속성 이름 matchAttrs를 사용하여 XblMultiplayerSessionCurrentUserSetCustomPropertyJson을 호출하여 설정합니다.
이 호출은 티켓 세션 내의 각 플레이어의 /members/{index}/properties/custom/matchAttrs 필드에 특성을 배치합니다.매치메이킹 프로세스는 호퍼에 대한 XBOX 서비스 구성에서 해당 특성에 대해 지정된 flatten 메서드에 따라 멤버별 특성을 각각 단일 티켓 수준 특성으로 “평면화”합니다.
이는 Partner Center에서 구성됩니다.이 항목의 맨 위로 돌아가기.
티켓 세션 및 매치 티켓이 설정된 상태에서 매치메이킹 서비스는 대표되는 티켓 세션을 다른 그룹을 나타내는 다른 티켓 세션과 매칭한 다음, 매치 대상 세션을 만들거나 식별합니다.
서비스는 또한 대상 세션에서 매칭된 플레이어에 대한 예약을 만든 다음, 티켓 세션을 매칭됨으로 표시합니다.
Multiplayer Session Directory(MPSD)는 티켓 세션에 대한 이 변경 사항을 타이틀에 알립니다.그런 다음 타이틀은 충분한 수의 플레이어가 있는지 확인하기 위해 대상 세션을 초기화하는 단계를 수행해야 합니다. 타이틀은 플레이어가 서로 성공적으로 연결할 수 있는지 확인하기 위해 서비스 품질(QoS) 검사를 수행합니다.
초기화 또는 QoS가 실패하면, 타이틀은 다른 그룹을 찾을 수 있도록 티켓 세션을 매치메이킹에 다시 제출하도록 표시합니다.
자세한 내용은 대상 세션 초기화 및 QoS를 참조하세요.매치 활동 중에는 세션에 대한 JSON 객체에 다음과 같은 변경 사항이 적용됩니다.
preserveSession이 Always로 설정된 두 세션은 결합할 수 없기 때문에 서로 매칭될 수 없습니다. 타이틀에서 사용하는 매치메이킹 흐름은 이 점을 고려해야 합니다.
타이틀은 이미 진행 중인 게임에 참가할 더 많은 플레이어를 찾기 위해 기존 게임 세션을 매치 티켓 세션으로 재사용할 수 있습니다.
이를 활성화하려면, 타이틀은 XblMatchmakingCreateMatchTicketAsync를 호출할 때 preserveSession 매개변수를 XblPreserveSessionMode::Always로 설정하여 매치 티켓을 만들어야 합니다.
그러면 매치메이킹 서비스는 티켓에 사용된 기존 세션이 매치메이킹 프로세스 전반에 걸쳐 유지되고 결과 대상 세션이 되도록 합니다.이 항목의 맨 위로 돌아가기.
다음은 XBOX Compute 기반 게임에 플레이어를 매치메이킹하는 데 필요한 상위 수준의 단계입니다.
유사한 흐름이 타사에서 호스팅하는 게임에도 적용됩니다.
스카우트가 그룹을 나타내는 티켓 세션을 만듭니다. 이 세션에는 /constants/system/measurementServerAddresses의 세션 구성에 있는 잠재적인 데이터 센터 목록이 포함됩니다. 데이터 센터 목록이 정적인 경우 세션 템플릿에서, 또는 클라이언트가 XBOX Compute에서 처음 가져온 후 세션 생성 시 이를 작성하는 경우에서 가져옵니다. 이 세션에는 targetSessionConstants/custom/gameServerPlatform 객체에 gsiSetId, gameVariantId 및 maxAllowedPlayers 값도 포함됩니다.
그룹의 다른 모든 플레이어가 티켓 세션에 참가합니다.
그룹의 모든 멤버는 티켓 세션의 /constants/system 객체에서 measurementServerAddresses 값을 다운로드하고, 플랫폼 API를 사용하여 핑한 후, /members/{index}/properties/system/serverMeasurements에 정의된 대로 선호하는 데이터 센터의 정렬된 목록을 세션에 업로드합니다.
[!NOTE]
티켓 세션 객체에 일치하지 않는 상수가 있으면 티켓 만들기 메서드가 성공하지 못할 수 있습니다. 이를 방지하려면 호퍼에 MUST 규칙을 추가하여 일치하지 않는 상수가 있는 플레이어와의 매칭을 방지할 수 있습니다.
XblMatchTicketDetailsResponse::PreserveSession이 Never로 설정되면, 매치메이킹 서비스는 각 멤버의 서버 측정값을 티켓의 내부 표현으로 복사합니다.
티켓 멤버의 서버 측정값을 티켓에 대한 단일 서버 측정 컬렉션으로 평면화하며, 이는 티켓의 내부 표현에 special 티켓 특성으로 저장됩니다.XblMatchTicketDetailsResponse::PreserveSession이 Always로 설정되면, 서버 측정값은 사용되지 않습니다.
대신 매치메이킹 서비스는 세션의 /properties/system/matchmaking/serverConnectionString 값을 지연 시간이 0인 크기 1의 serverMeasurements 컬렉션으로 티켓의 내부 표현에 복사합니다.
매치메이킹 서비스는 다른 그룹을 나타내는 티켓 세션과 서버 측정 컬렉션을 고려하여 티켓 세션을 매칭합니다. 서비스는 그룹을 매우 선호하는 데이터 센터가 동일한 다른 그룹과 매칭하려고 시도합니다.
매칭된 그룹을 찾으면, 매치메이킹 서비스는 대상 세션을 만들거나 식별하고 함께 매칭된 티켓 세션의 모든 플레이어를 추가합니다. 서비스는 매칭된 그룹에 대한 최종 평면화된 서버 측정값을 /properties/system/serverConnectionStringCandidates에 씁니다. 대상 세션의 새로 추가된 각 멤버에 대해 원래 제출된 서버 측정값을 /members/{index}/constants/system/matchmakingResult/serverMeasurements에 씁니다.
모든 플레이어는 앞서 언급한 대로 대상 세션에서 초기화를 수행합니다. 그러나 플레이어가 XBOX Compute에 연결하므로, 연결을 확인하기 위해 서로 간에 QoS를 수행하지 않습니다.