다음을 통해 공유


멀티플레이어 세션 템플릿

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

멀티 플레이어 세션 템플릿은 멀티 플레이어 세션을 만들기 위한 청사진입니다. 모든 세션은 미리 정의된 템플릿을 기초로 하여 생성해야 합니다.

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

자세한 내용은 멀티플레이어 세션 고급 항목의 세션 개요 섹션을 참조하세요.

멀티 플레이어 세션 디렉터리(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": {}
      }
    }