멀티 플레이어 관련 FAQ 및 문제 해결
타이틀에서 MPA(멀티 플레이어 활동)와 MPSD(멀티 플레이어 세션 디렉터리) 서비스를 함께 사용할 수 있습니까?
아니요, MPA 호출과 MPSD 호출을 타이틀에 혼합할 수 없습니다. 타이틀은 기능 요구 사항에 따라 사용할 서비스를 선택해야 합니다.
서비스에서 MPSD(멀티 플레이어 세션 디렉터리) API에 액세스하려면 어떻게 해야 합니까?
자세한 내용은 서비스 간 멀티 플레이어 세션 관리를 참조하세요.
타이틀이 하나 이상의 세션에 대한 변경을 구독할 수 있나요?
예, 타이틀은 연결당 최대 10개의 세션에서 변경사항을 수신하기 위해 등록할 수 있습니다.
네트워크 연결이 끊기거나 플레이어가 콘솔을 끄는 경우 플레이어가 즉시 제거되나요?
웹 소켓 연결을 통해 MPSD(멀티 플레이어 세션 디렉터리)가 클라이언트 연결을 신속하게 검색하고 클라이언트를 비활성 상태로 설정할 수 있습니다. 비활성 제거 제한 시간이 만료되는 즉시 세션 구성원이 제거됩니다. 자세한 내용은 "멀티 플레이어 세션 고급 항목" 항목의 세션 제한 시간 섹션을 참조하세요."
사용할 서비스 구성 ID(SCID), 세션 템플릿 및 샌드박스를 결정하려면 어떻게 해야 하나요?
이 정보가 작성되었을 때 타이틀의 초기 등록에 참여하지 않은 경우 이 정보에 직접 액세스할 수 없습니다. 이 데이터를 가져올 수 있는 DAM(Developer Account Manager)에게 문의하세요.
제 타이틀과 비교해 볼 수 있는 요청 본문 예시가 있나요?
MultiplayerSessionRequest(JSON)의 요청 구조를 참조하세요.
MPSD에 전화할 때 HTTP 403 상태 코드를 받으면 어떻게 해야 하나요?
이는 대체로 사용 권한 또는 범위 문제입니다. Collect Fiddler는 더 많은 정보를 추적한 다음 HttpResponse
본문의 일부분으로 반환된 메시지에서 일반적인 403 메시지를 확인합니다.
- "요청된 서비스 구성에 액세스할 수 없습니다."
- 샌드박스에 액세스할 수 있는 계정을 사용 중인지 확인합니다.
- 올바른 샌드박스에 있는지 확인합니다.
- 인증서 인증을 사용 중인데 이 오류가 표시된다면 DAM에게 문의하세요.
- “요청된 세션에 액세스할 수 없습니다. 호출 사용자에게 멀티 플레이어 권한이 있어야 하고, 비공개 세션은 세션 멤버만 읽을 수 있습니다.”
- 세션을 볼 수 없는 이유는 가시성이 Private인 세션에 액세스하려 하기 때문일 수 있습니다. 가시성이 Private으로 설정된 경우 세션의 멤버만 세션 문서를 읽을 수 있습니다.
참고 항목
새 세션을 등록하려면 플레이어에 Xbox Live Gold 계정이 있어야 합니다. 골드 계정 권한이 없으면 새 세션 등록 요청이 HTTP 403을 반환합니다.
- “요청 본문에 기존 멤버 참조가 있으려면 인증 주체에 서버가 포함되어 있어야 합니다.
- 다른 플레이어를 대신하여 세션에 참여할 수 없습니다. 초대만 가능합니다. 플레이어를 초대하려면 인덱스를
reserve_<number>
(으)로 설정하세요.
- 다른 플레이어를 대신하여 세션에 참여할 수 없습니다. 초대만 가능합니다. 플레이어를 초대하려면 인덱스를
MPSD에 전화할 때 HTTP 404 상태 코드를 받으면 어떻게 해야 하나요?
Fiddler 추적을 수집하여 자세한 내용을 확인한 후 다음 단계를 수행합니다.
-
HttpResponse
본문의 일부로 반환된 메시지에 대해 다음과 같은 일반적인 404 메시지가 있는지 확인하세요.- “요청된 서비스 구성이 유효하지 않거나 세션에 대해 구성되지 않았습니다.” 올바른 SCID를 사용하고 있는지 확인합니다.
- "요청한 세션을 찾을 수 없습니다." 가져오기 전에 세션이 생성되었고 해당 세션 템플릿이 올바른지 확인합니다.
PUT
호출로 세션을 생성할 수 있습니다.
- 사용 중인 URI를 확인합니다.
- 콘솔을 다시 시작하거나 다른 플레이어로 로그인합니다.
- 게임 개발자 포럼에서 오류 코드 또는 다른 솔루션을 확인합니다.
- 세션이 비어 있기 때문에 삭제되지 않았는지 확인합니다. 플레이어 시간이 초과되었기 때문에 세션이 빌 수 있습니다. 이 경우 대체로 모든 세션 멤버가 "준비" 또는 "비활성"과 같이 제한 시간이 적용되는 상태에 있기 때문입니다. 자세한 내용은 "멀티 플레이어 세션 고급 항목" 항목의 세션 사용자 상태 섹션을 참조하세요."
XblMultiplayerWriteSessionByHandleAsync 또는 XblMultiplayerGetSessionByHandleAsync를 호출할 때 HTTP/404 상태 코드가 표시되는 이유는 무엇인가요?
타이틀에서 핸들을 사용하여 핸들 ID가 포함된 조인 프로토콜 활성화에 대한 응답으로 MPSD 세션에 액세스하는 경우 다음 이유 중 하나로 인해 프로토콜 활성화의 핸들 ID가 오래되었을 수 있습니다.
- 타이틀이 참가를 초기화한 Xbox 셸의 UI 보기가 만료되었을 수 있습니다. 플레이어의 프로필 카드와 같은 일부 UI 보기는 조인 핸들을 여는 동안 자동으로 새로 고침하지 않습니다. HTTP 404 상태 코드를 받지 않으려면 타이틀에서 참가 전에 보기를 닫고 다시 열어 데이터를 새로 고침해야 합니다.
- 타이틀에서 참가 중인 플레이어가 타이틀에서 Xbox 셸 UI에서 참가 작업을 선택한 이후 활동 세션을 변경했을 수 있습니다. 이러한 이유는 흔하지 않습니다.
이 경우 타이틀 코드에서 참가 중인 플레이어에게 참가에 실패했음을 나타내는 오류 메시지를 표시해야 합니다.
MPSD에 전화할 때 HTTP 412 상태 코드를 받는 이유는 무엇인가요?
다음 요청은 세션이 이미 존재하는 경우 HTTP 412를 반환합니다.
PUT /serviceconfigs/00000000-0000-0000-0000-000000000000/sessiontemplates/quick/sessions/foo HTTP/1.1
Content-Type: application/json
If-None-Match: *
세션 ETag가 If-Match
헤더와 일치하지 않으면 다음 요청이 HTTP 412를 반환합니다.
PUT /serviceconfigs/00000000-0000-0000-0000-000000000000/sessiontemplates/quick/sessions/foo HTTP/1.1
Content-Type: application/json
If-Match: 9555A7DE-8B91-40E4-8CFB-0629312C9C7D
자세한 내용은 "멀티 플레이어 세션 디렉토리 개요" 항목의 세션 업데이트 동기화 섹션을 참조하세요."
MPSD에 전화를 걸 때 HTTP 400, 405, 409, 503 또는 유사한 상태 코드를 받는 이유는 무엇인가요?
Fiddler 추적을 수집하여 자세한 정보를 가져온 다음 HttpResponse
본문의 일부로 반환된 메시지를 확인합니다. 이 정보를 사용하면 오류를 식별하고 해결할 수 있습니다. 그렇지 않은 경우 개발자 포럼에서 솔루션을 검색합니다.
Xbox 서비스 API 문제 해결의 설명에 따라 Xbox 서비스 API(XSAPI)를 사용하는 경우에도 응답 본문을 받을 수 있습니다. 또는 코드에서 HCTraceSetClientCallback을 사용하여 타이틀 UI로 출력을 보낼 수 있습니다.
내 타이틀의 세션 서식 파일에서 변경할 수 있는 것과 변경해야 하는 것은 무엇인가요?
세션 템플릿은 세션에 대한 패턴이며, 템플릿에서 이미 설정된 상수를 무시할 수 없습니다. 하지만 템플릿에 새 속성을 추가할 수 있습니다. 자세한 내용은 멀티 플레이어 세션 템플릿 및 멀티 플레이어 세션 디렉토리 개요를 참조하세요.
세션이 초기화되지 않았다는 오류가 발생하는 이유는 무엇인가요?
다음은 오류 메시지를 수신할 수 있는 오류 메시지의 예입니다.
400 - \[ResponseBody\]: This session is configured for managed initialization requiring at least 2 members to start.
initialize
필드가 true
(으)로 설정된 세션 구성원 예약이 요청에 포함되어 있지 않으므로 세션을 만들 수 없습니다. 코드는 XblMultiplayerSessionAddMemberReservation 또는 XblMultiplayerSessionJoin의 initializeRequested
매개 변수를 사용하여 이 필드를 설정할 수 있습니다.
세션 템플릿에서 초기화가 지정된 경우 "initialize": true
이(가) 매치 메이킹 서비스 품질(QoS) 요구 사항을 통과하기에 충분한 구성원 예약을 설정했는지 확인하세요. 자세한 내용은 대상 세션 초기화 및 QoS를 참조하세요.
HTTP 204 상태 코드를 받을 때 세션이 생성되지 않는 이유는 무엇인가요?
이 상태 코드는 세션을 만들었을 때 세션에 추가된 플레이어가 없음을 나타냅니다. 세션을 만들 때 세션에 플레이어가 없고 세션 비어 있는 제한 시간이 0(기본값)이면 세션이 생성되지 않습니다.
세션을 만들 때 하나 이상의 플레이어가 포함되어야 합니다. 전용 서버 시나리오의 경우 매치를 생성하려는 플레이어 또는 매치를 생성해야 하는 플레이어를 확보하고 해당 플레이어를 매치의 최초 플레이어로 만듭니다. 또는 세션 비어 있는 제한 시간을 변경하거나 제거할 수 있습니다. 자세한 내용은 "멀티 플레이어 세션 고급 항목" 항목의 세션 제한 시간 섹션을 참조하세요."
언제 MPSD를 폴링해야 하나요?
타이틀에서는 MPSD 폴링을 피해야 합니다. 타이틀에서 MPSD 세션의 변경 사항을 찾아야 하는 경우 세션 변경 이벤트를 구독해야 합니다. 자세한 내용은 "멀티 플레이어 작업" 항목의 MPSD 세션 변경 알림 구독 섹션을 참조하세요.
XblMultiplayerQuerySessionsAsync를 사용하여 세션 찾아보기 또는 매치 메이킹을 구현할 수 있나요?
XblMultiplayerQuerySessionsAsync 메서드는 디버깅에 도움이 되는 빈도가 적은 호출을 위한 것입니다. 서비스 제한으로 인해 이 API의 세션 결과는 실시간이 아니며 더 자주 호출될 경우 불완전할 수 있습니다.
세션 찾아보기 기능을 구현하려면 멀티 플레이어 세션 찾아보기의 "검색 핸들" 섹션을 참조하세요. 매치 메이킹을 구현하려면 SmartMatch 메이킹 사용을 참조하세요.
예약되었거나 세션에 초대된 플레이어가 세션에 참가하지 않으면 어떻게 되나요?
플레이어가 게임 세션이 준비되었다는 알림을 받을 때 타이틀을 실행 중인지 여부에 따라 달라집니다.
플레이어가 타이틀에 있고 타이틀 UI에서 게임 세션 알림을 수락하지 않는 경우 타이틀은 Xbl MultiplayerSessionLeave 메서드를 사용하여 게임 세션에서 플레이어를 제거할 책임이 있습니다.
타이틀이 제한되거나 실행되지 않을 경우 슬롯을 사용할 수 있다고 플레이어에게 알리는 알림이 셸에 표시됩니다. 플레이어가 시스템 알림을 거부하거나 무시하는 경우 MPSD는 게임 세션에서 해당 사용자를 제거합니다.
생성된 세션을 매치 메이킹에서 찾을 수 없는 이유는 무엇인가요?
Xbox One에서 매치 메이킹에서 새 세션을 찾는 데 있어 세션을 만드는 것으로는 충분하지 않습니다. 매치 티켓을 만들어 매치 메이킹 서비스에 세션을 알리기 시작해야 합니다. 자세한 내용은 매치 메이킹 개요를 참조하세요.
게임 세션에 플레이어 슬롯이 열려 있고 참여 과정을 지원하는 경우, 게임을 시작한 후 세션을 찾을 수 없는 이유는 무엇인가요?
게임 세션이 시작되면 매치 메이킹 서비스에 더 이상 광고되지 않습니다. 세션 내에서 플레이어 슬롯이 사용할 수 있고 중재자(호스트)가 새 플레이어를 유치하려는 경우 중재자는 XblMatchmakingCreateMatchTicketAsync 메서드를 호출하여 진행 중인 세션에 대한 새 매치 티켓을 만들어야 합니다. 티켓은 세션을 다시 광고하고 더 많은 플레이어를 찾습니다. 자세한 내용은 매치 메이킹 개요를 참조하세요.
게임 세션이 열려 있는 경우, 방금 게임에 참여한 플레이어가 예약 대기하지 않고 세션에 참가하여 게임을 시작할 수 있나요?
네. 이는 특히 타이틀에서 여러 세션을 사용하여 게임 세션 내 플레이어의 하위 그룹을 추적하는 경우에 유용합니다. 참가 플레이어는 플레이어의 그룹을 나타내는 세션에 참여한 다음 더 큰 게임 세션에 참여해야 할 수 있습니다.
큰 게임 세션이 내 타이틀에서 재생 중일 때 게임 초대 알림이 모든 세션 구성원에게 표시되지 않는 이유는 무엇인가요?
타이틀에서 참가를 통해 세션에 플레이어를 추가할 때 타이틀은 항상 XblMultiplayerSessionMember의 InitializeRequested
멤버를 true
(으)로 설정합니다. 이 속성은 초기화 단계에서 게임을 이동하기 전에 나머지 세션 구성원을 기다리도록 MPSD에 지시합니다. 그렇지 않으면 플레이어는 매우 짧은 시간 동안 참여할 수 있고 세션 변경 알림을 놓칠 수 있습니다.