Session template constants
This topic describes the predefined elements of a multiplayer session template, based on the session template version 107. These elements define settings for a multiplayer session.
Contents
- system
- capabilities
- metrics
- memberInitialization
- peerToPeerRequirements
- peerToHostRequirements
- measurementServerAddresses
- cloudComputePackage (deprecated)
- arbitration (deprecated)
- broadcastViewerTitleIds
- ownershipPolicies
system
System constant | Description | Valid values | Default value |
---|---|---|---|
version |
The version of the session template. | 1 - n | none |
maxMembersCount |
The number of total session member slots supported for the multiplayer activity. | 1 - 100 for a normal session, 101+ for a large session | 100 |
visibility |
The visibility state of the session, which indicates if other users can see or join the session. | "private", "visible", "open" | "open" |
inviteProtocol |
Setting this constant to "game" enables invitees to receive notification when they're invited to the session. | "game", "tournamentgame", "chat", "gameparty" | none |
reservedRemovalTimeout |
The time-out for a member reservation, in milliseconds. A value of 0 indicates an immediate time-out. A value of null is considered infinite. |
0 - n, null |
30000 |
inactiveRemovalTimeout |
The time-out for a member to be considered inactive, in milliseconds. A value of 0 indicates an immediate time-out. A value of null is considered infinite. |
0 - n, null |
0 |
readyRemovalTimeout |
The time-out for a member to be considered ready, in milliseconds. A value of 0 indicates an immediate time-out. A value of null is considered infinite. |
0 - n, null |
180000 |
sessionEmptyTimeout |
The time-out for an empty session, in milliseconds. A value of 0 indicates an immediate time-out. A value of null is considered infinite. |
0 - n, null |
0 |
capabilities |
Specifies the capabilities of the session. For more information, see the capabilities section later in this topic. | Not applicable | Not applicable |
metrics |
Specifies a set of title-defined Quality of Service (QoS) requirements, such as latency and bandwidth speed, that members in the session must satisfy. For more information, see the metrics section later in this topic. | Not applicable | Not applicable |
memberInitialization |
Specifies the time-outs and initialization requirements that are enforced when new members join the session. For more information, see the memberInitialization section later in this topic. |
Not applicable | Not applicable |
peerToPeerRequirements |
Specifies the network QoS requirements for peer-to-peer mesh connections. For more information, see the peerToPeerRequirements section later in this topic. | Not applicable | Not applicable |
peerToHostRequirements |
Specifies the network QoS requirements for peer-to-host connections. For more information, see the peerToHostRequirements section later in this topic. | Not applicable | Not applicable |
measurementServerAddresses |
Specifies a collection of potential datacenters that are used to determine QoS measurements. For more information, see the measurementServerAddresses section later in this topic. | Not applicable | Not applicable |
cloudComputePackage (deprecated) |
Specifies the properties of the Xbox Live Compute cloud package to allocate. For more information, see the cloudComputePackage section later in this topic. | Not applicable | Not applicable |
arbitration (deprecated) |
Specifies the time-outs for members to submit arbitration results in tournaments. For more information, see the arbitration (deprecated) section later in this topic. | Not applicable | Not applicable |
broadcastViewerTitleIds |
Specifies a list of title IDs that should always have read access to the session. For more information, see the broadcastViewerTitleIds section later in this topic. | Not applicable | Not applicable |
ownershipPolicies |
Specifies the policies relating to session ownership. For more information, see the ownershipPolicies section later in this topic. | Not applicable | Not applicable |
Return to the top of this topic.
capabilities
Capabilities are Boolean values that are optionally set in the session template.
If no capabilities are needed, an empty capabilities
property should be set in the template to prevent capabilities from being specified on session creation, unless the title needs dynamic session capabilities.
Capability | Description | Valid values | Default value |
---|---|---|---|
connectivity |
Indicates if the session supports peer connectivity. If this value is false , the session can't enable any metrics and the session members can't set secureDeviceAddress . This capability can't be set on large sessions. |
true , false |
false |
suppressPresenceActivityCheck |
If true , turns off presence checks. |
true , false |
false |
gameplay |
Indicates whether the session represents actual gameplay, as opposed to setup or menu time such as a lobby or matchmaking. If true , the session is in gameplay mode. |
true , false |
false |
large |
Indicates if the session is a large session (more than 100 members). Large sessions aren't supported for use with Multiplayer Manager. | true , false |
false |
connectionRequiredForActiveMembers |
Indicates if a connection is required for a member to be active. | true , false |
false |
cloudCompute (deprecated) |
Enables clients to request that a cloud compute instance be allocated on behalf of the session. Deprecated because Xbox Live Compute is no longer available as a service. | true , false |
false |
autoPopulateServerCandidates |
Automatically calculate and set serverConnectionStringCandidates from serverMeasurements . This capability can't be set on large sessions. |
true , false |
false |
userAuthorizationStyle |
Indicates if the session supports calls from platforms without strong title identity. This capability can't be set on large sessions. Setting the userAuthorizationStyle capability to true causes the session defaults for readRestriction and joinRestriction to local instead of none . This means that titles must use search handles or transfer handles to join a game session. |
true , false |
false |
crossPlay |
Indicates that the session supports crossplay between Windows PC, Xbox One, or Xbox Series devices. | true , false |
true |
broadcast |
Indicates that the session represents a broadcast. The name of the session must be the xuid of the broadcaster. Requires the large capability. |
true , false |
false |
team |
Indicates that the session represents a tournament team. This capability can't be set on large or gameplay sessions. |
true , false |
false |
arbitration |
Indicates that the session must be created by a service principal that adds the arbitration server entry. Requires gameplay but can't be set on large sessions. |
true , false |
false |
hasOwners |
Indicates that the session has a security policy based on certain members being owners. | true , false |
false |
searchable |
Indicates that the session can be a target session of a search handle. If the userAuthorizationStyle and searchable capabilities are set, hasOwners must also be set. |
true , false |
false |
Example: capabilities
"capabilities": {
"connectivity": true,
"suppressPresenceActivityCheck": true,
"gameplay": true,
"large": true,
"connectionRequiredForActiveMembers": true,
"cloudCompute": true,
"autoPopulateServerCandidates": true,
"userAuthorizationStyle": true,
"crossPlay": true,
"broadcast": true,
"team": true,
"arbitration": true,
"hasOwners": true,
"searchable": true
},
Return to the top of this topic.
metrics
If the metrics
properties aren't specified, they default to the values that are needed to satisfy the QoS requirements.
If the metrics
properties are specified, the values must be sufficient to satisfy the QoS requirements.
This element is only valid if the session has the connectivity
capability set.
Metric | Description | Valid values | Default value |
---|---|---|---|
latency |
Indicates if latencyMaximum is specified in the session template |
true , false |
See this description. |
bandwidthDown |
Indicates if bandwidthDownMinimum is specified in the session template |
true , false |
See this description. |
bandwidthUp |
Indicates if bandwidthUpMinimum is specified in the session template |
true , false |
See this description. |
custom |
Indicates if custom metrics are specified in the session template | true , false |
See this description. |
Example: metrics
"metrics": {
"latency": true,
"bandwidthDown": true,
"bandwidthUp": true,
"custom": true
},
Return to the top of this topic.
memberInitialization
If the memberInitialization
property is set, the session expects the client system or title to perform initialization following session creation or as new members join the session.
The time-outs and initialization stages are automatically tracked by the session, including QoS measurements if any metrics are set.
These time-outs override the session's reservation and ready time-outs for members that have initializationEpisode
set.
memberInitialization
can't be specified on large sessions.
Element | Description | Valid values | Default value |
---|---|---|---|
joinTimeout |
Indicates the number of milliseconds that a member has to join the session. Reservations of users who fail to join are removed. NOTE: The default duration is sufficient for normal title execution, but it might lead to join time-outs if a title is being debugged during the Multiplayer Session Directory (MPSD) flow. While debugging, override and increase this default value for the session. |
0 - n | 10000 |
measurementTimeout |
Indicates the number of milliseconds that a session member has to upload measurements. A member that fails to upload measurements is marked with a failure reason of "timeout". | 0 - n | 30000 |
evaluationTimeout |
Indicates the number of milliseconds that an external evaluation has to upload measurements. | 0 - n | 5000 |
externalEvaluation |
If true , indicates that the title code performs the evaluation of who can join based on QoS measurements. The multiplayer service doesn't perform any QoS logic, and the title is responsible for advancing the initialization stage. Titles don't typically need this. |
true , false |
false |
membersNeededToStart |
The number of members needed to start the session only for initialization episode zero. | 1 - maxMembersCount |
1 |
Example: memberInitialization
"memberInitialization": {
"joinTimeout": 10000,
"measurementTimeout": 30000,
"evaluationTimeout": 5000,
"externalEvaluation": false,
"membersNeededToStart": 1
},
Return to the top of this topic.
peerToPeerRequirements
Peer-to-peer network requirements | Description | Default value |
---|---|---|
latencyMaximum |
The maximum latency, in milliseconds, between any two clients | 250 |
bandwidthMinimum |
The minimum bandwidth, in kilobits per second, between any two clients | 10000 |
Example: peerToPeerRequirements
"peerToPeerRequirements": {
"latencyMaximum": 250,
"bandwidthMinimum": 10000
},
Return to the top of this topic.
peerToHostRequirements
Peer-to-host network requirements | Description | Valid values | Default value |
---|---|---|---|
latencyMaximum |
The maximum latency, in milliseconds, for the peer to host connection | 250 | |
bandwidthDownMinimum |
The minimum bandwidth, in kilobits per second, for information sent from the host to the peer | 100000 | |
bandwidthUpMinimum |
The minimum bandwidth, in kilobits per second, for information sent from the peer to the host | 1000 | |
hostSelectionMetric |
Indicates which metric is used to select the host | "bandwidthup", "bandwidthdown", "bandwidth", and "latency" | "latency" |
Example: peerToHostRequirements
"peerToHostRequirements": {
"latencyMaximum": 250,
"bandwidthDownMinimum": 100000,
"bandwidthUpMinimum": 1000,
"hostSelectionMetric": "bandwidthup"
},
Return to the top of this topic.
measurementServerAddresses
The set of potential server connection strings that should be evaluated.
The connection strings must be lowercase.
measurementServerAddresses
can't be specified on large sessions.
The connection strings are defined in the following format.
"<server name>": { "secureDeviceAddress": <device address> }
where the device address is the base-64–encoded secure device address of the server.
Example: measurementServerAddresses
"measurementServerAddresses": {
"server farm a": {
"secureDeviceAddress": "r5Y="
},
"datacenter b": {
"secureDeviceAddress": "rwY="
}
},
Return to the top of this topic.
cloudComputePackage (deprecated)
This property is deprecated because the Xbox Live Compute service is no longer available and has been discontinued. Specifies the properties of the cloud compute package to allocate.
Requires that the cloudCompute
capability is set.
Property | Description |
---|---|
titleId |
Indicates the title ID of the cloud compute package to allocate |
gsiSet |
Indicates the Global Security Infrastructure (GSI) set of the cloud compute package to allocate |
variant |
Indicates the variant of the cloud compute package to allocate |
Example: cloudComputePackage
"cloudComputePackage": {
"titleId": "4567",
"gsiSet": "128ce92a-45d0-4319-8a7e-bd8e940114ec",
"variant": "30ebca60-d96e-4629-930b-6957aa6bfbfa"
},
Return to the top of this topic.
arbitration (deprecated)
This property is deprecated because the Xbox Live Compute service is no longer available and has been discontinued. Specifies the time-outs for the arbitration process.
Requires that the arbitration
capability is set.
The arbitration start time is defined in a session in the /servers/arbitration/constants/system/startTime element.
Time-out | Description | Valid values | Default value |
---|---|---|---|
forfeitTimeout |
Indicates the time, in milliseconds, from the arbitration start time. | 0 - n | 60000 |
arbitrationTimeout |
Indicates the time, in milliseconds, from the arbitration start time, that the arbitration result times out. This value can't be less than the forfeitTimeout value. |
0 - n | 300000 |
Example: arbitration
"arbitration": {
"forfeitTimeout": 60000,
"arbitrationTimeout": 300000
},
Return to the top of this topic.
broadcastViewerTitleIds
Specifies an array of the title IDs of the titles that should always have read access to the broadcast session.
Example: broadcastViewerTitleIds
"broadcastViewerTitleIds" : ["34567", "8910"],
Return to the top of this topic.
ownershipPolicies
Specifies how to handle a session when the last owner leaves the session.
Requires that the hasOwners
capability is set.
Ownership policy | Description | Valid values | Default value |
---|---|---|---|
migration |
Indicates what happens when the last owner leaves the session. If the migration policy is set to "endsession", expire the session. If the migration policy is set to "oldest", select the member with the oldest join time to become the new owner of the session. | "oldest", "endsession" | "endsession" |
allowNonOwnerInviteHandles |
Indicates invite behavior for session members that aren't the owner. By default, non-owners can't send invites for a session. | true , false |
false |
nonOwnerModifiableSystemProperties |
A list of system property names that non-owners can modify on sessions with capability hasOwners set to true . |
List of system property names | Not applicable |
Example: ownershipPolicies
"ownershipPolicies": {
"migration": "oldest",
"allowNonOwnerInviteHandles": true,
"nonOwnerModifiableSystemProperties": ["joinRestriction", "closed"]
}