멀티플레이어 세션 템플릿
이 항목에서는 멀티 플레이어 세션 템플릿에 대해 설명하고, 멀티 플레이어 세션에 복사하고 수정할 수 있는 템플릿의 예를 제시합니다.
멀티 플레이어 세션 템플릿은 멀티 플레이어 세션을 만들기 위한 청사진입니다. 모든 세션은 미리 정의된 템플릿을 기초로 하여 생성해야 합니다.
템플릿은 그 템플릿으로 생성되는 모든 세션에 동일하게 적용되는 상수들을 정의합니다. 템플릿에서 세션을 만들 때 세션에 추가 데이터를 추가하고 수정할 수 있습니다. 그러나 템플릿에 정의된 상수는 수정할 수 없습니다.
자세한 내용은 멀티플레이어 세션 고급 항목의 세션 개요 섹션을 참조하세요.
멀티 플레이어 세션 디렉터리(MPSD)에서 서비스 구성 ID(SCID)에 적용되는 세션 템플릿의 목록과 특정 세션 템플릿의 내용을 확인할 수 있습니다.
세션 템플릿 정보
세션을 만들거나 수정할 수 있는 세션 템플릿은 HTTP PUT
요청과 동일한 형식을 사용합니다.
차이점은 템플릿에서 상수만 정의한다는 것입니다. 멤버, 서버 및 속성은 정의되지 않았습니다.
사용자 지정 섹션과 모든 종류의 시스템 상수를 포함한 모든 세션 상수를 정의할 수 있습니다.
세션 템플릿 버전
이 항목에서 정의하는 세션 템플릿은 템플릿 계약 버전 107을 사용하여 구성됩니다. 새 템플릿을 만드는 데 이를 사용할 경우 계약 버전이 107로 지정되어 있는지 확인합니다.
XSAPI(Xbox Services API)를 사용하여 디버거에서 결과 요청을 지켜보면 그 요청에 템플릿 계약 버전 105가 사용되는 경우가 있습니다. MPSD는 런타임 시 이 요청을 버전 107로 효과적으로 "업그레이드"합니다.
참고 항목
세션 템플릿의 계약 버전과 다른 계약 버전을 요청에 사용할 수 있습니다.
필요하다면 세션 템플릿을 버전 104 또는 105에서 버전 107로 변경해도 됩니다.
세션 템플릿 기본값
세션 템플릿으로 만든 모든 세션은 템플릿의 사본으로 시작합니다. 세션을 만들 때 템플릿에 지정되지 않은 값을 지정할 수 있습니다. 다른 값이 설정되지 않은 경우 기본값이 제공되기도 합니다.
계약 버전 107에 대한 기본 제한 시간 집합은 다음 예제에 나와 있습니다.
{
"constants": {
"system": {
"reservedRemovalTimeout": 30000,
"inactiveRemovalTimeout": 0,
"readyRemovalTimeout": 180000,
"sessionEmptyTimeout": 0
}
}
}
null
을(를) 지정하여, 값이 설정되지 않은 상태로 유지할 수 있습니다.
이 경우 모든 기본 설정이 재정의되고 세션 생성 시 값이 설정되는 것이 방지됩니다.
예를 들어, 빈 세션이 무기한으로 계속되도록 sessionEmptyTimeout
을(를) 제거하려면 세션 템플릿에 다음을 추가합니다.
{
"constants": {
"system": {
"sessionEmptyTimeout": null
}
}
}
Important
템플릿을 통해 설정되는 상수는 MPSD에 쓰기를 통해 변경할 수 없습니다. 이 값을 변경하려면 필요한 변경 사항이 적용된 새 템플릿을 만들어서 제출해야 합니다.
세션 템플릿의 예
이 섹션에서는 다양한 목적 및 네트워킹 토폴로지를 위한 세션 템플릿의 예를 제공합니다. 필요한 경우 템플릿을 변경하여 서비스 구성에 붙여넣을 수 있습니다.
표준 로비 세션
이 템플릿을 사용하여 게임에 대한 로비 세션을 만듭니다.
- 로비 세션에서 지원하려는 최대 플레이어 수로
maxMembersCount
값을 변경합니다. - 타이틀에서 함께 플레이하는 여러 플랫폼(예: Xbox 콘솔 및 Windows PC)의 플레이어를 지원하지 않는 경우
crossPlay
요소를 제거할 수 있습니다. - 다른 값도 변경할 수 있습니다. 무엇이 필요한지 잘 모르는 경우 다음 값으로 시작하는 것이 좋습니다.
{
"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
{
"constants": {
"system": {
"version": 1,
"maxMembersCount": 8,
"visibility": "open",
"inviteProtocol": "game",
"capabilities": {
"connectivity": true,
"connectionRequiredForActiveMembers": true,
"gameplay" : true,
"crossPlay": true,
"userAuthorizationStyle": true
}
},
"custom": {}
}
}
멀티 플레이어 서비스에서 QoS(서비스 품질) 검사를 처리하는 게임 세션 템플릿에 매치 메이킹 추가.
게임에서 매치 메이킹을 사용하도록 설정하려면 게임 세션 템플릿에서 memberInitialization
의 값을 지정합니다.
SmartMatch 호퍼를 만들 때 다음 템플릿을 호퍼의 대상 세션 템플릿으로 사용하세요.
{
"constants": {
"system": {
"memberInitialization": {
"joinTimeout": 20000,
"measurementTimeout": 15000,
"membersNeededToStart": 2
}
}
}
}
타이틀 관리 데이터 센터에서 QoS 검사를 처리하는 게임 세션에 매치 메이킹 추가
{
"constants": {
"system": {
"peerToHostRequirements": {
"latencyMaximum": 250,
"bandwidthDownMinimum": 256,
"bandwidthUpMinimum": 256,
"hostSelectionMetric": "latency"
},
"memberInitialization": {
"joinTimeout": 15000,
"measurementTimeout": 15000,
"membersNeededToStart": 2
}
},
"custom": {}
}
}
클라이언트/서버 게임 세션을 위한 기본 세션 서식 파일
피어 투 피어 통신 대신 클라이언트가 타사 호스팅 서버에 연결하는 타이틀에 다음 템플릿을 사용합니다.
{
"constants": {
"system": {
"version": 1,
"maxMembersCount": 12,
"visibility": "open",
"inviteProtocol": "game",
"capabilities": {
"connectionRequiredForActiveMembers": true,
"gameplay": true,
},
},
"custom": {}
}
}
피어 기반 네트워킹을 위한 로비 또는 SmartMatch 티켓 세션 템플릿
다음 템플릿을 사용하여 로비 세션 또는 SmartMatch 티켓 세션을 만들어 플레이어 그룹을 매치 메이킹으로 보냅니다.
이 템플릿은 피어 투 피어 또는 피어 투 호스트 네트워크 토폴로지를 사용하는 클라이언트에서 사용할 수 있습니다. 게임 세션을 구성하지 않습니다.
{
"constants": {
"system": {
"version": 1,
"maxMembersCount": 10,
"visibility": "open",
"capabilities": {
"connectionRequiredForActiveMembers": true,
},
"memberInitialization": {
"membersNeededToStart": 1
},
},
"custom": {}
}
}
QoS 템플릿
게임에서 매치 메이킹을 사용하고 QoS를 평가할 경우, 클라이언트와 협조하여 세션에 참가하는 사용자들을 관리하라고 MPSD에 알려주는 몇 가지 상수를 세션 템플릿에 추가해야 합니다. 이러한 협력은 사용자들에게 게임을 시작할 준비가 되었다고 알려주기 전에 연결 상태의 품질을 검사합니다.
클라이언트/서버 게임의 경우, 이 협력은 플레이어 그룹이 매치 메이킹에 들어오기 전에 연결 품질을 검사합니다.
QoS가 적용되는 피어 투 호스트 게임 세션 템플릿
다음 템플릿에서 QoS를 사용하여 피어 투 호스트 게임 세션을 만듭니다.
{
"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를 사용하여 피어 투 피어 게임 세션을 만듭니다.
{
"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를 사용하여 로비 세션 또는 매치 메이킹 세션을 만듭니다. 이 템플릿은 게임 세션을 구성하는 데 사용하면 안 됩니다.
{
"constants": {
"system": {
"version": 1,
"maxMembersCount": 12,
"visibility": "open",
"memberInitialization": {
"membersNeededToStart": 1
}
},
"custom": {}
}
}
Xbox One과 Windows 10 사이의 크로스 플레이를 위한 세션 템플릿
다음 템플릿을 사용하여 Xbox One 이상 및 Windows 10 사이의 멀티 플레이어를 교차 플레이할 수 있습니다.
선택적인
crossPlay
기능은 초대 플랫폼 간 초대 및 진행 중 참가와 같은 상호 작용을 지원함을 의미합니다.userAuthorizationStyle
기능은 Windows 10에 대한 액세스를 가능하게 해줍니다.
{
"constants": {
"system": {
"capabilities": {
"crossPlay": true,
"userAuthorizationStyle": true
},
},
"custom": {}
}
}