MultiplayerSession(JSON)
MultiplayerSession을 나타내는 JSON 개체입니다.
MultiplayerSession JSON 개체 사양은 다음과 같습니다.
멤버 | 유형 | 설명 |
---|---|---|
constants | 개체 | 세션 템플릿에 병합되어 세션에 대한 상수를 만드는 읽기 전용 설정. |
properties | 개체 | 세션 속성에 병합되는 변경 사항. |
members.me | 개체 | 해당되는 상위 항목과 같이 작용하는 상수 및 속성. PUT 메서드에서 사용자는 세션의 멤버여야 하고, 필요한 경우 사용자를 추가합니다. "me"가 null로 지정된 경우 요청을 한 멤버는 세션에서 제거됩니다. |
members | 개체 | 세션에 추가할 사용자를 나타내는 다른 개체로, 0부터 시작하는 인덱스로 키 지정됩니다. 세션에 이미 멤버가 포함된 경우에도 요청 내 멤버의 수는 항상 0부터 시작합니다. 멤버는 요청에 표시된 순서대로 세션에 추가됩니다. 멤버 속성은 멤버가 속한 사용자만 설정할 수 있습니다. |
servers | 개체 | 세션의 연결된 서버 참가자 집합에 대한 업데이트 및 추가 사항을 나타내는 값. 서버가 null로 지정된 경우 해당 서버 항목은 세션에서 제거됩니다. |
JSON 구문 예
{
"properties": {
"system": {
"turn": []
},
"custom": {
"KANWE": "MGMSY"
}
},
"constants": {
"system": {
"visibility": "open"
},
"custom": {}
},
"servers": {},
"members": {
"first": 0,
"end": 1,
"count": 1,
"accepted": 0,
"0": {
"next": 1,
"pending": true,
"properties": {
"system": {},
"custom": {}
},
"constants": {
"system": {
"xuid": 5500461
},
"custom": {
"8216": "WXMRJ"
}
}
}
},
"key": "8d050174-412b-4d51-a29b-d55a34edfdb7~integration~bcd0088d76a94c60be4b75f139243a1f"
}
요청 구조
이 JSON 사양과 관련된 요청 구조는 MultiplayerSessionRequest(JSON)를 참조하세요.
응답 구조
{
// The contract version of this rendering of the session. A function of the contract version of the request and constants/system/version.
"contractVersion": 107,
// The branch and change number of the session as of this rendering.
"branch": "bd6c41c3-01c3-468a-a3b5-3e0fe8133862",
"changeNumber": 5,
// Use for tracing.
// If an empty session is deleted and then restarted, the correlation ID will remain the same.
"correlationId": "0fe81338-ee96-46e3-a3b5-2dbbd6c41c3b",
// The time that the session began.
// If an empty session is deleted and then restarted, this time will be the time of the restart.
"startTime": "2009-06-15T13:45:30.0900000Z",
// If any timeouts are in progress, this is the time that the next one will fire.
"nextTimer": "2009-06-15T13:45:30.0900000Z",
// Present during member initialization.
// The "stage" goes from "joining" to "measuring" to "evaluating".
// If episode #1 fails, then "stage" is set to "failed" and the session cannot be initialized.
// Otherwise, when an initialization episode completes, the "initializing" object is removed.
// If "autoEvaluate" is set, "evaluating" is skipped. If neither "metrics" nor "measurementServerAddresses" is set, "measuring" is skipped.
"initializing": {
"stage": "measuring",
"stageStartTime": "2009-06-15T13:45:30.0900000Z",
"episode": 1
},
// Set after the "measuring" stage of initialization episode #1, if "peerToHostRequirements" is set and no /properties/system/host is set.
// Cleared once a /properties/system/host is set.
// Host candidates are device tokens listed in order, order of preference.
"hostCandidates": [ "ab90a362", "99582e67" ],
"constants": { /* Property Bag */ },
"properties": { /* Property Bag */ },
"members": {
// On large sessions, at most one entry is present, "me".
"1": {
"constants": { /* Property Bag */ },
"properties": { /* Property Bag */ },
// Only if the member has accepted. Optional (not set if no gamertag claim was found).
"gamertag": "stacy",
// This is set when the member uploads a secure device address. It's a case-insensitive string that can be used for equality comparisons.
"deviceToken": "9f4032ba7",
// This is set to "open", "moderate", or "strict" when the member uploads a V1.x secure device address.
"nat": "strict",
// This value is removed once the user does their first PUT to the session.
"reserved": true,
// If the member is active, this is the title in which they are active, in decimal.
"activeTitleId": "8397267",
// The time the user joined the session. If "reserved" is true, the time the reservation was made.
"joinTime": "2009-06-15T13:45:30.0900000Z",
// Present if this member is in the /properties/system/turn array, otherwise not.
"turn": true,
// Set when transitioning out of the "joining" or "measuring" stage if this member doesn't pass.
// In order of precedence, could be set to "timeout", "latency", "bandwidthdown", "bandwidthup", "network", "group", or "episode".
// The "network" value means the network configuration and/or conditions (such as conflicting NAT) prevented the QoS metrics from being measured.
// The only possible value at the end of "joining" is "group". (On timeout from "joining", the reservation is removed.)
// The "episode" value is set after a failed "evaluation" stage on all members of the initialization episode that didn't fail during "joining" or "measuring".
"initializationFailure": "latency",
// If "memberInitialization" is set and the member was added with "initialize": true, this is set to the initialization episode that the member will participate in.
// One is a special value used for the members added to a new session at create time.
// Removed when the initialization episode ends.
"initializationEpisode": 1,
// The next member's index, which is the same as 'next' below if there's no more.
"next": 4
},
"4": { "next": 5 /* etc */ }
},
"membersInfo": {
"first": 1, // The first member's index.
"next": 5, // The index that the next member added will get.
"count": 2, // The number of members.
"accepted": 1 // The number of members that are no longer 'reserved'.
},
"servers": {
"name": {
"constants": { /* Property Bag */ },
"properties": { /* Property Bag */ }
}
}
}