> ## 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.

# 멀티플레이어 세션 템플릿

> MPSD 세션 템플릿이 멀티플레이어 세션을 만드는 청사진 역할을 하는 방식을 알아보고, 템플릿 버전과 복사하여 수정할 수 있는 예제를 살펴봅니다.

<a id="top" />

이 항목에서는 멀티플레이어 세션 템플릿에 대해 설명하고, 멀티플레이어 세션에 대해 복사하고 수정할 수 있는 템플릿의 예제를 제공합니다.

멀티플레이어 세션 템플릿은 멀티플레이어 세션을 만들기 위한 청사진입니다.
모든 세션은 사전 정의된 템플릿을 기반으로 만들어져야 합니다.

템플릿은 해당 템플릿으로부터 생성된 모든 세션에 대해 동일한 상수를 정의합니다.
템플릿에서 세션을 만들 때, 추가 데이터를 세션에 추가하고 수정할 수 있습니다. 그러나 템플릿에 정의된 상수는 수정할 수 없습니다.

자세한 내용은 [Multiplayer 세션 고급 항목](/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details#session-overview)의 세션 개요 섹션을 참조하세요.

서비스 구성 식별자(SCID)에 적용되는 세션 템플릿 목록과 특정 세션 템플릿의 콘텐츠를 Multiplayer Session Directory(MPSD)에서 가져올 수 있습니다.

## 세션 템플릿 정보

세션을 만들거나 수정하기 위한 세션 템플릿은 HTTP `PUT` 요청과 동일한 형식을 사용합니다.
차이점은 템플릿이 상수만 정의한다는 것입니다. 구성원, 서버, 속성은 정의되지 않습니다.

사용자 지정 섹션과 전체 시스템 상수를 포함하여 모든 세션 상수를 정의할 수 있습니다.

### 세션 템플릿 버전

이 항목에 정의된 세션 템플릿은 템플릿 계약 버전 107을 사용하여 구성됩니다.
새 템플릿을 만들 때 이를 사용하는 경우 계약 버전이 107로 지정되어 있는지 확인하세요.

XBOX Services API(XSAPI)를 사용하고 디버거에서 결과 요청을 확인하는 경우, 요청이 템플릿 계약 버전 105를 사용하는 것을 볼 수 있습니다.
MPSD는 이러한 요청을 런타임에 버전 107로 사실상 "업그레이드"합니다.

<Note>세션 템플릿의 계약 버전과 다른 계약 버전을 요청에서 사용할 수 있습니다.</Note>

필요한 경우 세션 템플릿을 버전 104 또는 105에서 버전 107로 변경할 수 있습니다.

[이 항목의 맨 위로 돌아갑니다.](#top)

## 세션 템플릿 기본값

세션 템플릿에서 만들어진 각 세션은 템플릿의 사본으로 시작됩니다.
템플릿에 지정되지 않은 값은 세션이 생성될 때 지정할 수 있습니다.
다른 값이 설정되지 않은 경우 기본값이 제공되는 경우도 있습니다.

계약 버전 107의 기본 시간 초과 설정은 다음 예제와 같습니다.

```json theme={null}
    {
      "constants": {
        "system": {
          "reservedRemovalTimeout": 30000,
          "inactiveRemovalTimeout": 0,
          "readyRemovalTimeout": 180000,
          "sessionEmptyTimeout": 0
        }
      }
    }
```

`null`을 지정하여 값이 설정되지 않은 상태로 유지되도록 강제할 수 있습니다.
이는 기본 설정을 재정의하고 세션 생성 시 값이 설정되지 않도록 방지합니다.

예를 들어 빈 세션도 무기한 유지되도록 `sessionEmptyTimeout`을 제거하려면, 다음을 세션 템플릿에 추가하세요.

```json theme={null}
    {
      "constants": {
        "system": {
          "sessionEmptyTimeout": null
        }
      }
    }
```

<Info>템플릿을 통해 설정된 상수는 MPSD에 대한 쓰기로 변경할 수 없습니다. 값을 변경하려면 필요한 변경 사항을 포함하는 새 템플릿을 만들어 제출해야 합니다.</Info>

[이 항목의 맨 위로 돌아갑니다.](#top)

## 세션 템플릿 예제

이 섹션에서는 다양한 목적과 네트워킹 토폴로지에 대한 세션 템플릿의 예제를 제공합니다.
적절한 템플릿에 필요한 변경 사항을 적용하고 서비스 구성에 붙여넣을 수 있습니다.

### 표준 로비 세션

이 템플릿을 사용하여 게임의 로비 세션을 만듭니다.

* 로비 세션에서 지원하려는 최대 플레이어 수로 `maxMembersCount` 값을 변경하세요.
* 타이틀이 서로 다른 플랫폼(예: XBOX 콘솔과 Windows PC)의 플레이어가 함께 플레이하는 것을 지원하지 않는 경우, `crossPlay` 요소를 제거할 수 있습니다.
* 다른 값도 변경할 수 있습니다. 무엇이 필요한지 확실치 않은 경우 다음 값이 시작하기에 좋습니다.

```json theme={null}
{
   "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 8,
            "visibility": "open",
            "capabilities": {
                "connectivity": true,
                "connectionRequiredForActiveMembers": true,
                "crossPlay": true,
                "userAuthorizationStyle": true
            },
        },
        "custom": {}
    }
}
```

### 매치메이킹이 없는 표준 게임 세션

익명 매치메이킹을 포함하지 않고 100명 이상의 구성원이 필요하지 않은 게임의 경우 이 템플릿을 사용하여 게임 세션을 만듭니다.

이 템플릿은 표준 로비 세션 템플릿에 지정된 값에 두 개의 새로운 값만 추가합니다.

* `constants.system.inviteProtocol : "game"`
* `constants.system.capabilities.gameplay : true`

```json theme={null}
{
   "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 8,
            "visibility": "open",
            "inviteProtocol": "game",
            "capabilities": {
                "connectivity": true,
                "connectionRequiredForActiveMembers": true,
                "gameplay" : true,
                "crossPlay": true,
                "userAuthorizationStyle": true
            }
        },
        "custom": {}
    }
}
```

### 게임 세션 템플릿에 매치메이킹을 추가하고, Multiplayer 서비스에서 서비스 품질(QoS) 검사가 처리되는 경우

게임에서 매치메이킹을 활성화하려면 게임 세션 템플릿에서 `memberInitialization`의 값을 지정하세요.

SmartMatch 호퍼를 만들 때 다음 템플릿을 호퍼의 대상 세션 템플릿으로 사용하세요.

```json theme={null}
{
   "constants": {
        "system": {
            "memberInitialization": {
               "joinTimeout": 20000,
               "measurementTimeout": 15000,
               "membersNeededToStart": 2
            }
        }
    }
}
```

### 게임 세션에 매치메이킹을 추가하고, QoS 검사가 타이틀 관리 데이터센터에서 처리되는 경우

```json theme={null}
{
   "constants": {
        "system": {
            "peerToHostRequirements": {  
                "latencyMaximum": 250,
                "bandwidthDownMinimum": 256,
                "bandwidthUpMinimum": 256,
                "hostSelectionMetric": "latency"
            },
            "memberInitialization": {
               "joinTimeout": 15000,
               "measurementTimeout": 15000,
               "membersNeededToStart": 2
            }
        },
        "custom": {}
    }
}
```

### 클라이언트/서버 게임 세션에 대한 기본 세션 템플릿

피어 투 피어 통신 대신 클라이언트가 타사 호스팅 서버에 연결하도록 하는 타이틀에는 다음 템플릿을 사용하세요.

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "inviteProtocol": "game",
          "capabilities": {
            "connectionRequiredForActiveMembers": true,
            "gameplay": true,
          },
        },
        "custom": {}
      }
    }
```

### 피어 기반 네트워킹용 로비 또는 SmartMatch 티켓 세션 템플릿

다음 템플릿을 사용하여 플레이어 그룹을 매치메이킹으로 보내기 위한 로비 세션 또는 SmartMatch 티켓 세션을 만듭니다.

이 템플릿은 피어 투 피어 또는 피어 투 호스트 네트워크 토폴로지를 사용하는 클라이언트에서 사용하기 위한 것입니다. 게임 세션을 구성하지는 않습니다.

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 10,
          "visibility": "open",
          "capabilities": {
            "connectionRequiredForActiveMembers": true,
          },
          "memberInitialization": {
            "membersNeededToStart": 1
          },
        },
        "custom": {}
      }
    }
```

[이 항목의 맨 위로 돌아갑니다.](#top)

### QoS 템플릿

게임에서 매치메이킹을 사용하고 QoS를 평가하는 경우, MPSD가 클라이언트와 조정하여 세션에 참가하는 사용자를 관리하도록 알리기 위해 세션 템플릿에 상수를 추가해야 합니다.
이 조정은 게임이 시작될 준비가 되었음을 사용자에게 알리기 전에 연결 상태의 품질을 검증합니다.

클라이언트/서버 게임의 경우, 조정은 플레이어 그룹이 매치메이킹에 진입하기 전에 연결 품질을 검증합니다.

#### QoS를 사용하는 피어-투-호스트 게임 세션 템플릿

다음 템플릿을 사용하여 QoS가 있는 피어-투-호스트 게임 세션을 만듭니다.

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "inviteProtocol": "game",
          "capabilities": {
            "connectivity": true,
            "connectionRequiredForActiveMembers": true,
            "gameplay" : true
          },
          "memberInitialization": {
            "membersNeededToStart": 2
          },
          "peerToHostRequirements": {
            "latencyMaximum": 350,
            "bandwidthDownMinimum": 1000,
            "bandwidthUpMinimum": 1000,
            "hostSelectionMetric": "latency"
          }
        },
        "custom": { }
      }
    }
```

#### QoS를 사용하는 피어 투 피어 게임 세션 템플릿

다음 템플릿을 사용하여 QoS가 있는 피어 투 피어 게임 세션을 만듭니다.

```json theme={null}
    {
    "constants": {
      "system": {
        "version": 1,
        "maxMembersCount": 12,
        "visibility": "open",
        "inviteProtocol": "game",
        "capabilities": {
          "connectivity": true,
          "connectionRequiredForActiveMembers": true,
          "gameplay" : true
        },
        "memberInitialization": {
          "membersNeededToStart": 2
        },
        "peerToPeerRequirements": {
          "latencyMaximum": 250,
          "bandwidthMinimum": 10000
        }
      },
      "custom": { }
     }
    }
```

#### QoS를 사용하는 클라이언트/서버 로비 또는 매치메이킹 세션 템플릿

다음 템플릿을 사용하여 QoS를 사용해 로비 세션 또는 매치메이킹 세션을 만듭니다.
이 템플릿은 게임 세션을 구성하는 데 사용해서는 안 됩니다.

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "memberInitialization": {
            "membersNeededToStart": 1
          }
        },
        "custom": {}
      }
    }
```

#### XBOX One과 Windows 10 간의 크로스플레이용 세션 템플릿

다음 템플릿을 사용하여 XBOX One(또는 이후 버전)과 Windows 10 간의 크로스플레이 멀티플레이어를 활성화하세요.

* 선택 사항인 `crossPlay` 기능은 플랫폼 간의 초대 및 참가 진행 중 참가와 같은 상호 작용을 지원합니다.

* `userAuthorizationStyle` 기능은 Windows 10에 대한 액세스를 활성화합니다.

```json theme={null}
    {
      "constants": {
        "system": {
          "capabilities": {
            "crossPlay": true,
            "userAuthorizationStyle": true
          },
        },
        "custom": {}
      }
    }
```


## Related topics

- [멀티플레이어 서비스 구성](/ko/services/xbox-services/multiplayer/concepts/live-configure-the-multiplayer-service.md)
- [멀티플레이어 역할](/ko/services/xbox-services/multiplayer/concepts/live-multiplayer-roles.md)
- [멀티플레이어 FAQ 및 문제 해결](/ko/services/xbox-services/multiplayer/mpsd/concepts/live-multiplayer-2015-faq.md)
- [세션 템플릿 상수](/ko/services/xbox-services/multiplayer/mpsd/concepts/live-session-template-constants.md)
- [MPSD(Multiplayer Session Directory) 개념](/ko/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-concepts-nav.md)
