> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 멀티플레이어 FAQ 및 문제 해결

> MPSD, MPA, 세션 구독, 연결 끊김, SCID, 샌드박스를 포함한 XBOX 멀티플레이어에 대한 자주 묻는 질문과 문제 해결 팁입니다.

### 내 타이틀에서 Multiplayer Activity(MPA)와 Multiplayer Session Directory(MPSD) 서비스를 혼용할 수 있나요?

아니요, 타이틀에서 MPA와 MPSD 호출을 혼용하는 것은 불가능합니다. 타이틀은 기능 요구 사항에 따라 사용할 서비스를 선택해야 합니다.

### 서비스에서 Multiplayer Session Directory(MPSD) API에 어떻게 액세스할 수 있나요?

자세한 내용은 [서비스 간 멀티플레이어 세션 관리](/services/xbox-services/fundamentals/s2s-auth-calls/s2s-calls/s2s-call-patterns/live-mpsd-service-to-service)를 참조하세요.

### 내 타이틀이 둘 이상의 세션에 대한 변경 사항을 구독할 수 있나요?

예. 타이틀은 연결당 최대 10개의 세션에 대한 변경 사항을 수신하도록 구독할 수 있습니다.

### 네트워크 연결이 끊어지거나 플레이어가 콘솔을 꺼도 플레이어가 즉시 제거되나요?

웹 소켓 연결을 통해 Multiplayer Session Directory(MPSD)는 클라이언트 연결 끊김을 신속하게 감지하고 클라이언트를 Inactive로 설정할 수 있습니다. 세션 구성원은 Inactive 제거에 대한 시간 초과가 만료되는 즉시 제거됩니다. 자세한 내용은 "Multiplayer Session 고급 항목"의 [세션 시간 초과](/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details#session-timeouts) 섹션을 참조하세요.

### 사용할 서비스 구성 ID(SCID), 세션 템플릿 및 샌드박스는 어떻게 결정하나요?

이 정보가 생성된 시점인 타이틀의 초기 등록에 참여하지 않은 경우, 이 정보에 직접 액세스할 수 없습니다. 담당 개발자 계정 관리자(DAM)에게 문의하면 이 데이터를 제공받을 수 있습니다.

### 내 타이틀의 요청 본문과 비교할 수 있는 요청 본문 예제가 있나요?

[MultiplayerSessionRequest(JSON)](/reference/live/rest/json/json-multiplayersessionrequest)의 요청 구조를 참조하세요.

### MPSD를 호출할 때 HTTP 403 상태 코드가 발생하면 어떻게 해야 하나요?

이는 일반적으로 권한 또는 범위 문제입니다. Fiddler 추적을 수집하여 자세한 정보를 얻은 다음, `HttpResponse` 본문의 일부로 반환된 메시지에서 일반적인 403 메시지를 확인하세요.

* "The requested service configuration cannot be accessed."
  * 샌드박스에 액세스할 수 있는 계정을 사용하고 있는지 확인합니다.
  * 올바른 샌드박스에 있는지 확인합니다.
  * 인증서 인증을 사용 중이고 이 오류가 발생하면 DAM에 문의하세요.
* "The requested session cannot be accessed. The calling user must have multiplayer privilege, and private sessions can only be read by session members."
  * 세션을 볼 수 없습니다. 표시 여부가 Private인 세션에 액세스하려고 하기 때문일 수 있습니다. 표시 여부가 Private로 설정되어 있으면 해당 세션의 구성원만 세션 문서를 읽을 수 있습니다.
  > \[!NOTE]
  > 플레이어는 새 세션을 등록하려면 XBOX Live Gold 계정을 소유해야 합니다. Gold 계정 권한이 없으면 새 세션 등록 요청은 HTTP 403을 반환합니다.
* "The request body can't contain existing member references unless the authentication principal includes a server."
  * 다른 플레이어를 대신하여 세션에 참가시킬 수 없습니다. 초대만 할 수 있습니다. 플레이어를 초대하려면 인덱스를 `reserve_<number>`로 설정하세요.

### MPSD를 호출할 때 HTTP 404 상태 코드가 발생하면 어떻게 해야 하나요?

Fiddler 추적을 수집하여 자세한 정보를 얻은 다음, 다음 단계를 수행하세요.

1. `HttpResponse` 본문의 일부로 반환된 메시지에서 다음과 같은 일반적인 404 메시지를 확인하세요.
   * "The requested service config is either invalid or not configured for sessions." 올바른 SCID를 사용하고 있는지 확인하세요.
   * "The requested session wasn't found." 세션을 검색하기 전에 세션이 생성되었고 세션 템플릿이 올바른지 확인하세요. `PUT` 호출로 세션을 만들 수 있습니다.
2. 사용 중인 URI를 확인합니다.
3. 콘솔을 다시 시작하거나 다른 플레이어로 로그인합니다.
4. Game Developer Forums에서 오류 코드 또는 다른 해결 방법을 확인합니다.
5. 세션이 비어 있어서 삭제된 것은 아닌지 확인합니다. 세션은 플레이어가 시간 초과되면서 비어 있을 수 있습니다. 이 문제는 모든 세션 구성원이 Ready 또는 Inactive와 같이 시간 초과가 적용되는 상태에 있을 때 자주 발생합니다. 자세한 내용은 "Multiplayer Session 고급 항목"의 [세션 사용자 상태](/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details#session-user-states) 섹션을 참조하세요.

### [XblMultiplayerWriteSessionByHandleAsync](/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayerwritesessionbyhandleasync) 또는 [XblMultiplayerGetSessionByHandleAsync](/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayergetsessionbyhandleasync)를 호출할 때 HTTP 404 상태 코드가 발생하는 이유는 무엇인가요?

타이틀이 핸들 ID를 포함하는 참가 프로토콜 활성화에 대한 응답으로 MPSD 세션에 액세스하기 위해 핸들을 사용하는 경우, 프로토콜 활성화의 핸들 ID가 다음 이유 중 하나로 인해 오래된 것일 수 있습니다.

* 타이틀이 참가를 시작한 XBOX 셸의 UI 뷰가 최신 상태가 아닐 수 있습니다. 플레이어 프로필 카드와 같은 일부 UI 뷰는 열려 있는 동안 참가 핸들을 자동으로 새로 고치지 않습니다. HTTP 404 상태 코드를 받지 않으려면 타이틀에서 참가하기 전에 뷰를 닫았다가 다시 열어 데이터를 새로 고쳐야 합니다.
* 타이틀이 XBOX 셸 UI에서 참가 작업을 선택한 후 타이틀이 참가하려는 플레이어가 액티비티 세션을 전환했을 수 있습니다. 이 이유는 드뭅니다.

이러한 경우 중 어느 것이든, 타이틀 코드는 참가에 실패했음을 나타내는 오류 메시지를 참가하는 플레이어에게 표시해야 합니다.

### MPSD를 호출할 때 HTTP 412 상태 코드가 발생하는 이유는 무엇인가요?

다음 요청은 세션이 이미 존재하는 경우 HTTP 412를 반환합니다.

```uri theme={null}
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를 반환합니다.

```uri theme={null}
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
```

자세한 내용은 "Multiplayer Session Directory 개요"의 [세션 업데이트 동기화](/services/xbox-services/multiplayer/mpsd/live-mpsd-overview#synchronization-of-session-updates) 섹션을 참조하세요.

### MPSD를 호출할 때 HTTP 400, 405, 409, 503 또는 이와 유사한 상태 코드가 발생하는 이유는 무엇인가요?

Fiddler 추적을 수집하여 자세한 정보를 얻은 다음, `HttpResponse` 본문의 일부로 반환된 메시지를 확인하세요. 이 정보를 사용하여 오류를 식별하고 수정할 수 있어야 합니다. 그렇지 않으면 개발자 포럼에서 해결 방법을 검색하세요.

XBOX Services API(XSAPI)를 사용하는 경우 [XBOX Services API 문제 해결](/services/xbox-services/develop/troubleshooting/live-troubleshooting-apis)에 설명된 대로 응답 본문을 얻을 수도 있습니다. 또는 [HCTraceSetClientCallback](/reference/live/httpclient/trace/functions/hctracesetclientcallback)을 사용하여 코드가 출력을 타이틀 UI로 보낼 수 있습니다.

### 내 타이틀의 세션 템플릿에서 무엇을 변경할 수 있거나 변경해야 하나요?

세션 템플릿은 세션의 패턴이며, 템플릿에 이미 설정된 상수는 재정의할 수 없습니다. 그러나 템플릿에 새 속성을 추가할 수는 있습니다. 자세한 내용은 [멀티플레이어 세션 템플릿](/services/xbox-services/multiplayer/mpsd/concepts/live-session-templates) 및 [Multiplayer Session Directory 개요](/services/xbox-services/multiplayer/mpsd/live-mpsd-overview)를 참조하세요.

### 세션이 초기화되지 않았다는 오류가 발생하는 이유는 무엇인가요?

다음은 수신할 수 있는 오류 메시지의 예입니다.

`400 - \[ResponseBody\]: This session is configured for managed initialization requiring at least 2 members to start.`

`initialize` 필드가 `true`로 설정된 세션 구성원 예약이 요청에 충분히 포함되어 있지 않기 때문에 세션을 만들 수 없습니다. 코드에서 [XblMultiplayerSessionAddMemberReservation](/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayersessionaddmemberreservation) 또는 [XblMultiplayerSessionJoin](/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayersessionjoin)의 `initializeRequested` 매개 변수를 사용하여 구성원에 대해 이 필드를 설정할 수 있습니다.

세션 템플릿에 초기화가 지정된 경우, 매치메이킹 서비스 품질(QoS) 요구 사항을 통과하기에 충분한 구성원 예약에 대해 `"initialize": true`가 설정되어 있는지 확인하세요. 자세한 내용은 [대상 세션 초기화 및 QoS](/services/xbox-services/multiplayer/matchmaking/concepts/live-matchmaking-target-session)를 참조하세요.

### HTTP 204 상태 코드가 발생할 때 내 세션이 생성되지 않는 이유는 무엇인가요?

이 상태 코드는 세션을 만들 때 세션에 플레이어가 추가되지 않았음을 나타냅니다. 세션 생성 시 세션에 플레이어가 없고 세션 비어있음 시간 초과가 0(기본값)이면 세션이 생성되지 않습니다.

세션을 만들 때 최소 한 명의 플레이어를 포함해야 합니다. 전용 서버 시나리오의 경우, 매치를 만들려고 하거나 매치를 만들어야 하는 플레이어를 확보하여 해당 플레이어를 매치의 초기 플레이어로 지정하세요. 또는 세션 비어있음 시간 초과를 변경하거나 제거할 수 있습니다. 자세한 내용은 "Multiplayer Session 고급 항목"의 [세션 시간 초과](/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details#session-timeouts) 섹션을 참조하세요.

### 언제 MPSD를 폴링해야 하나요?

타이틀은 MPSD 폴링을 피해야 합니다. 타이틀이 MPSD 세션의 변경 사항을 찾아야 하는 경우 세션 변경 이벤트를 구독해야 합니다. 자세한 내용은 "멀티플레이어 작업"의 [MPSD 세션 변경 알림 구독](/services/xbox-services/multiplayer/mpsd/how-to/live-mpsd-how-tos#sfmscn) 섹션을 참조하세요.

### 세션 찾아보기 또는 매치메이킹을 구현하기 위해 XblMultiplayerQuerySessionsAsync를 사용할 수 있나요?

[XblMultiplayerQuerySessionsAsync](/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayerquerysessionsasync) 메서드는 디버깅에 도움이 되는 드문 호출에 사용하도록 되어 있습니다. 서비스 제한으로 인해 이 API의 세션 결과는 실시간이 아니며 더 자주 호출되면 완전하지 않을 수 있습니다.

세션 찾아보기 기능을 구현하려면 [멀티플레이어 세션 찾아보기](/services/xbox-services/multiplayer/concepts/live-session-browse)의 "검색 핸들" 섹션을 참조하세요. 매치메이킹을 구현하려면 [SmartMatch 매치메이킹 사용](/services/xbox-services/multiplayer/matchmaking/concepts/live-matchmaking-how-tos)을 참조하세요.

### 세션에 예약되거나 초대된 플레이어가 세션에 참가하지 않으면 어떻게 되나요?

플레이어에게 게임 세션이 준비되었음을 알림 시 타이틀이 실행 중인지 여부에 따라 다릅니다.

플레이어가 타이틀 안에 있고 타이틀 UI에서 게임 세션 알림을 수락하지 않는 경우, [XblMultiplayerSessionLeave](/reference/live/xsapi-c/multiplayer_c/functions/xblmultiplayersessionleave) 메서드를 사용하여 게임 세션에서 플레이어를 제거하는 것은 타이틀의 책임입니다.

타이틀이 제약된 상태이거나 실행 중이 아닌 경우, 셸은 플레이어에게 슬롯을 사용할 수 있음을 알리는 알림을 제공합니다. 플레이어가 시스템 알림을 거부하거나 무시하면 MPSD는 해당 플레이어를 게임 세션에서 제거합니다.

### 매치메이킹에서 생성된 세션을 찾을 수 없는 이유는 무엇인가요?

XBOX One에서는 세션을 만드는 것만으로는 매치메이킹에서 새 세션을 찾을 수 없습니다. 세션을 매치메이킹 서비스에 광고하기 위해 매치 티켓을 만들어야 합니다. 자세한 내용은 [매치메이킹 개요](/services/xbox-services/multiplayer/matchmaking/live-matchmaking-overview)를 참조하세요.

### 게임 세션에 열려 있는 플레이어 슬롯이 있고 참가 진행 중 참가를 지원하는데 세션이 시작된 후 플레이어가 세션을 찾을 수 없는 이유는 무엇인가요?

게임 세션이 시작되면 더 이상 매치메이킹 서비스에 광고되지 않습니다. 세션 내에서 플레이어 슬롯이 사용 가능해지고 중재자(호스트)가 새 플레이어를 유치하려는 경우, 중재자는 [XblMatchmakingCreateMatchTicketAsync](/reference/live/xsapi-c/matchmaking_c/functions/xblmatchmakingcreatematchticketasync) 메서드를 호출하여 진행 중인 세션에 대한 새 매치 티켓을 만들어야 합니다. 이 티켓은 세션을 다시 광고하고 더 많은 플레이어를 찾습니다. 자세한 내용은 [매치메이킹 개요](/services/xbox-services/multiplayer/matchmaking/live-matchmaking-overview)를 참조하세요.

### 게임 세션이 열려 있는 경우, 방금 게임에 참가한 플레이어가 예약을 기다리지 않고 세션에 참가하여 게임을 시작할 수 있나요?

예. 이는 타이틀이 여러 세션을 사용하여 게임 세션 내에서 플레이어의 하위 그룹을 추적할 때 특히 유용합니다. 참가하는 플레이어는 플레이어 그룹을 나타내는 세션에 참가한 다음, 더 큰 게임 세션에 참가해야 할 수 있습니다.

### 대형 게임 세션이 내 타이틀에서 진행 중일 때 왜 모든 세션 구성원에게 게임 초대 알림이 표시되지 않나요?

타이틀이 참가를 통해 플레이어를 세션에 추가할 때, 타이틀은 항상 [XblMultiplayerSessionMember](/reference/live/xsapi-c/multiplayer_c/structs/xblmultiplayersessionmember)의 `InitializeRequested` 구성원을 `true`로 설정합니다. 이는 초기화 단계에서 게임을 이동시키기 전에 나머지 세션 구성원을 기다리도록 MPSD에 알립니다. 그렇지 않으면 플레이어가 참가할 수 있는 시간이 매우 짧아지고 세션 변경 알림을 놓칠 수 있습니다.


## Related topics

- [MPSD(Multiplayer Session Directory) 개념](/ko/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-concepts-nav.md)
- [개념](/ko/services/xbox-services/multiplayer/mpsd/concepts/index.md)
- [XBOX 및 PC 멀티플레이어 설계 지침](/ko/services/xbox-services/multiplayer/overviews/multiplayer-design-guidance-xbox-pc-gdk.md)
- [크로스 플랫폼 멀티플레이어 설계 지침](/ko/services/xbox-services/multiplayer/overviews/multiplayer-design-guidance-cross-platform.md)
- [멀티플레이어 개념](/ko/services/xbox-services/multiplayer/concepts/live-multiplayer-concepts-nav.md)
