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

# Constantes do modelo de sessão

> Referência das constantes predefinidas do modelo de sessão do MPSD (system, capabilities, metrics, memberInitialization, QoS) que configuram as sessões multijogador do XBOX.

<a id="top" />

Este tópico descreve os elementos predefinidos de um modelo de sessão multijogador, com base na versão 107 do modelo de sessão. Esses elementos definem as configurações de uma sessão multijogador.

**Conteúdo**

* [system](#system)
* [capabilities](#capabilities)
* [metrics](#metrics)
* [memberInitialization](#memberinitialization)
* [peerToPeerRequirements](#peertopeerrequirements)
* [peerToHostRequirements](#peertohostrequirements)
* [measurementServerAddresses](#measurementserveraddresses)
* [cloudComputePackage (preterido)](#cloudcomputepackage)
* [arbitration (preterido)](#arbitration)
* [broadcastViewerTitleIds](#broadcastviewertitleids)
* [ownershipPolicies](#ownershippolicies)

<a id="system" />

## system

| Constante do sistema | Descrição | Valores válidos | Valor padrão |
| - | - | - | - |
| `version` | A versão do modelo de sessão. | 1 - n | nenhum |
| `maxMembersCount` | O número total de vagas de membros da sessão com suporte para a atividade multijogador. | 1 - 100 para uma sessão normal, 101+ para uma sessão grande | 100 |
| `visibility` | O estado de visibilidade da sessão, que indica se outros usuários podem ver a sessão ou entrar nela. | "private", "visible", "open" | "open" |
| `inviteProtocol` | Definir essa constante como "game" permite que os convidados recebam uma notificação quando forem convidados para a sessão. | "game", "tournamentgame", "chat", "gameparty" | nenhum |
| `reservedRemovalTimeout` | O tempo limite de uma reserva de membro, em milissegundos. Um valor 0 indica um tempo limite imediato. Um valor `null` é considerado infinito. | 0 - n, `null` | 30000 |
| `inactiveRemovalTimeout` | O tempo limite para que um membro seja considerado inativo, em milissegundos. Um valor 0 indica um tempo limite imediato. Um valor `null` é considerado infinito. | 0 - n, `null` | 0 |
| `readyRemovalTimeout` | O tempo limite para que um membro seja considerado pronto, em milissegundos. Um valor 0 indica um tempo limite imediato. Um valor `null` é considerado infinito. | 0 - n, `null` | 180000 |
| `sessionEmptyTimeout` | O tempo limite de uma sessão vazia, em milissegundos. Um valor 0 indica um tempo limite imediato. Um valor `null` é considerado infinito. | 0 - n, `null` | 0 |
| `capabilities` | Especifica as funcionalidades da sessão. Para obter mais informações, veja a seção [capabilities](#capabilities) mais adiante neste tópico. | Não aplicável | Não aplicável |
| `metrics` | Especifica um conjunto de requisitos de Qualidade de Serviço (QoS) definidos pelo título, como latência e velocidade de largura de banda, que os membros da sessão devem atender. Para obter mais informações, veja a seção [metrics](#metrics) mais adiante neste tópico. | Não aplicável | Não aplicável |
| `memberInitialization` | Especifica os tempos limite e os requisitos de inicialização aplicados quando novos membros entram na sessão. Para obter mais informações, veja a seção [`memberInitialization`](#memberinitialization) mais adiante neste tópico. | Não aplicável | Não aplicável |
| `peerToPeerRequirements` | Especifica os requisitos de QoS de rede para conexões de malha ponto a ponto. Para obter mais informações, veja a seção [peerToPeerRequirements](#peertopeerrequirements) mais adiante neste tópico. | Não aplicável | Não aplicável |
| `peerToHostRequirements` | Especifica os requisitos de QoS de rede para conexões ponto a host. Para obter mais informações, veja a seção [peerToHostRequirements](#peertohostrequirements) mais adiante neste tópico. | Não aplicável | Não aplicável |
| `measurementServerAddresses` | Especifica uma coleção de datacenters em potencial usados para determinar as medições de QoS. Para obter mais informações, veja a seção [measurementServerAddresses](#measurementserveraddresses) mais adiante neste tópico. | Não aplicável | Não aplicável |
| `cloudComputePackage` (preterido) | Especifica as propriedades do pacote de nuvem do XBOX Live Compute a ser alocado. Para obter mais informações, veja a seção [cloudComputePackage](#cloudcomputepackage) mais adiante neste tópico. | Não aplicável | Não aplicável |
| `arbitration` (preterido) | Especifica os tempos limite para que os membros enviem os resultados de arbitragem em torneios. Para obter mais informações, veja a seção [arbitration (preterido)](#arbitration) mais adiante neste tópico. | Não aplicável | Não aplicável |
| `broadcastViewerTitleIds` | Especifica uma lista de IDs de título que devem sempre ter acesso de leitura à sessão. Para obter mais informações, veja a seção [broadcastViewerTitleIds](#broadcastviewertitleids) mais adiante neste tópico. | Não aplicável | Não aplicável |
| `ownershipPolicies` | Especifica as políticas relacionadas à propriedade da sessão. Para obter mais informações, veja a seção [ownershipPolicies](#ownershippolicies) mais adiante neste tópico. | Não aplicável | Não aplicável |

[Voltar ao início deste tópico.](#top)

<a id="capabilities" />

## capabilities

As funcionalidades são valores booleanos definidos opcionalmente no modelo de sessão.
Se nenhuma funcionalidade for necessária, uma propriedade `capabilities` vazia deverá ser definida no modelo para impedir que funcionalidades sejam especificadas na criação da sessão, a menos que o título precise de funcionalidades de sessão dinâmicas.

| Funcionalidade | Descrição | Valores válidos | Valor padrão |
| - | - | - | - |
| `connectivity` | Indica se a sessão oferece suporte à conectividade entre pares. Se esse valor for `false`, a sessão não poderá habilitar nenhuma métrica e os membros da sessão não poderão definir `secureDeviceAddress`. Essa funcionalidade não pode ser definida em sessões grandes. | `true`, `false` | `false` |
| `suppressPresenceActivityCheck` | Se `true`, desativa as verificações de presença. | `true`, `false` | `false` |
| `gameplay` | Indica se a sessão representa o jogo propriamente dito, em oposição ao tempo de configuração ou de menu, como um lobby ou o matchmaking. Se `true`, a sessão está no modo de jogo. | `true`, `false` | `false` |
| `large` | Indica se a sessão é uma sessão grande (mais de 100 membros). Sessões grandes não têm suporte para uso com o Multiplayer Manager. | `true`, `false` | `false` |
| `connectionRequiredForActiveMembers` | Indica se uma conexão é necessária para que um membro esteja ativo. | `true`, `false` | `false` |
| `cloudCompute` (preterido) | Permite que os clientes solicitem que uma instância de computação em nuvem seja alocada em nome da sessão. Preterido porque o XBOX Live Compute não está mais disponível como serviço. | `true`, `false` | `false` |
| `autoPopulateServerCandidates` | Calcula e define automaticamente `serverConnectionStringCandidates` a partir de `serverMeasurements`. Essa funcionalidade não pode ser definida em sessões grandes. | `true`, `false` | `false` |
| `userAuthorizationStyle` | Indica se a sessão oferece suporte a chamadas de plataformas sem identidade de título forte. Essa funcionalidade não pode ser definida em sessões grandes. | | |

Definir a funcionalidade `userAuthorizationStyle` como `true` faz com que os padrões da sessão para `readRestriction` e `joinRestriction` sejam `local` em vez de `none`. Isso significa que os títulos devem usar identificadores de pesquisa ou identificadores de transferência para entrar em uma sessão de jogo. | `true`, `false` | `false`
`crossPlay` | Indica que a sessão oferece suporte a crossplay entre dispositivos PC Windows, XBOX One ou XBOX Series. | `true`, `false` | `true`
`broadcast` | Indica que a sessão representa uma transmissão. O nome da sessão deve ser o xuid de quem transmite. Requer a funcionalidade `large`. | `true`, `false` | `false`
`team` | Indica que a sessão representa uma equipe de torneio. Essa funcionalidade não pode ser definida em sessões `large` ou `gameplay`. | `true`, `false` | `false`
`arbitration` | Indica que a sessão deve ser criada por uma entidade de serviço que adiciona a entrada de servidor `arbitration`. Requer `gameplay`, mas não pode ser definida em sessões `large`. | `true`, `false` | `false`
`hasOwners` | Indica que a sessão tem uma política de segurança baseada no fato de determinados membros serem proprietários. | `true`, `false` | `false`
`searchable` | Indica que a sessão pode ser a sessão de destino de um identificador de pesquisa. Se as funcionalidades `userAuthorizationStyle` e `searchable` estiverem definidas, `hasOwners` também deverá ser definida. | `true`, `false` | `false`

#### Exemplo: capabilities

```json theme={null}
"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  
},
```

[Voltar ao início deste tópico.](#top)

<a id="metrics" />

## metrics

Se as propriedades `metrics` não forem especificadas, o padrão serão os valores necessários para atender aos requisitos de QoS.

Se as propriedades `metrics` forem especificadas, os valores deverão ser suficientes para atender aos requisitos de QoS.

Este elemento só é válido se a sessão tiver a funcionalidade `connectivity` definida.

| Métrica | Descrição | Valores válidos | Valor padrão |
| - | - | - | - |
| `latency` | Indica se `latencyMaximum` está especificado no modelo de sessão | `true`, `false` | Veja esta descrição. |
| `bandwidthDown` | Indica se `bandwidthDownMinimum` está especificado no modelo de sessão | `true`, `false` | Veja esta descrição. |
| `bandwidthUp` | Indica se `bandwidthUpMinimum` está especificado no modelo de sessão | `true`, `false` | Veja esta descrição. |
| `custom` | Indica se métricas personalizadas estão especificadas no modelo de sessão | `true`, `false` | Veja esta descrição. |

#### Exemplo: metrics

```json theme={null}
"metrics": {
    "latency": true,
    "bandwidthDown": true,
    "bandwidthUp": true,
    "custom": true
},
```

[Voltar ao início deste tópico.](#top)

<a id="memberinitialization" />

## memberInitialization

Se a propriedade `memberInitialization` estiver definida, a sessão esperará que o sistema cliente ou o título realize a inicialização após a criação da sessão ou à medida que novos membros entrarem na sessão.

Os tempos limite e os estágios de inicialização são acompanhados automaticamente pela sessão, incluindo as medições de QoS se houver métricas definidas.
Esses tempos limite substituem os tempos limite de reserva e de "ready" da sessão para os membros que têm `initializationEpisode` definido.

`memberInitialization` não pode ser especificado em sessões grandes.

| Elemento | Descrição | Valores válidos | Valor padrão |
| - | - | - | - |
| `joinTimeout` | Indica o número de milissegundos que um membro tem para entrar na sessão. As reservas dos usuários que não conseguirem entrar são removidas. | | |

**OBSERVAÇÃO:** a duração padrão é suficiente para a execução normal do título, mas pode levar a tempos limite de entrada se um título estiver sendo depurado durante o fluxo do Multiplayer Session Directory (MPSD). Durante a depuração, substitua e aumente esse valor padrão para a sessão.| 0 - n | 10000
`measurementTimeout` | Indica o número de milissegundos que um membro da sessão tem para enviar as medições. Um membro que não conseguir enviar as medições é marcado com o motivo de falha "timeout".  | 0 - n | 30000
`evaluationTimeout` | Indica o número de milissegundos que uma avaliação externa tem para enviar as medições. | 0 - n | 5000
`externalEvaluation` | Se `true`, indica que o código do título realiza a avaliação de quem pode entrar com base nas medições de QoS. O serviço multijogador não executa nenhuma lógica de QoS, e o título é responsável por avançar o estágio de inicialização. Normalmente, os títulos não precisam disso. | `true`, `false` | `false`
`membersNeededToStart` | O número de membros necessários para iniciar a sessão, somente para o episódio de inicialização zero. | 1 - `maxMembersCount` | 1

#### Exemplo: memberInitialization

```json theme={null}
"memberInitialization": {
    "joinTimeout": 10000,
    "measurementTimeout": 30000,
    "evaluationTimeout": 5000,
    "externalEvaluation": false,
    "membersNeededToStart": 1
},
```

[Voltar ao início deste tópico.](#top)

<a id="peertopeerrequirements" />

## peerToPeerRequirements

| Requisitos de rede ponto a ponto | Descrição | Valor padrão |
| - | - | - |
| `latencyMaximum` | A latência máxima, em milissegundos, entre dois clientes quaisquer | 250 |
| `bandwidthMinimum` | A largura de banda mínima, em kilobits por segundo, entre dois clientes quaisquer | 10000 |

#### Exemplo: peerToPeerRequirements

```json theme={null}
"peerToPeerRequirements": {
    "latencyMaximum": 250,
    "bandwidthMinimum": 10000
},
```

[Voltar ao início deste tópico.](#top)

<a id="peertohostrequirements" />

## peerToHostRequirements

| Requisitos de rede ponto a host | Descrição | Valores válidos | Valor padrão |
| - | - | - | - |
| `latencyMaximum` | A latência máxima, em milissegundos, da conexão do par com o host | | 250 |
| `bandwidthDownMinimum` | A largura de banda mínima, em kilobits por segundo, para as informações enviadas do host para o par | | 100000 |
| `bandwidthUpMinimum` | A largura de banda mínima, em kilobits por segundo, para as informações enviadas do par para o host | | 1000 |
| `hostSelectionMetric` | Indica qual métrica é usada para selecionar o host | "bandwidthup", "bandwidthdown", "bandwidth" e "latency" | "latency" |

#### Exemplo: peerToHostRequirements

```json theme={null}
"peerToHostRequirements": {
    "latencyMaximum": 250,
    "bandwidthDownMinimum": 100000,
    "bandwidthUpMinimum": 1000,
    "hostSelectionMetric": "bandwidthup"
},
```

[Voltar ao início deste tópico.](#top)

<a id="measurementserveraddresses" />

## measurementServerAddresses

O conjunto de cadeias de conexão de servidor em potencial que devem ser avaliadas.
As cadeias de conexão devem estar em letras minúsculas.
`measurementServerAddresses` não pode ser especificado em sessões grandes.

As cadeias de conexão são definidas no formato a seguir.

`"<server name>": { "secureDeviceAddress": <device address> }`

em que o endereço do dispositivo é o endereço seguro do dispositivo do servidor codificado em base 64.

#### Exemplo: measurementServerAddresses

```json theme={null}
"measurementServerAddresses": {
    "server farm a": {
        "secureDeviceAddress": "r5Y="
    },
    "datacenter b": {
        "secureDeviceAddress": "rwY="
    }
},
```

[Voltar ao início deste tópico.](#top)

<a id="cloudcomputepackage" />

## cloudComputePackage (preterido)

Esta propriedade foi preterida porque o serviço XBOX Live Compute não está mais disponível e foi descontinuado.
Especifica as propriedades do pacote de computação em nuvem a ser alocado.

Requer que a funcionalidade `cloudCompute` esteja definida.

| Propriedade | Descrição |
| - | - |
| `titleId` | Indica o ID de título do pacote de computação em nuvem a ser alocado |
| `gsiSet` | Indica o conjunto de Global Security Infrastructure (GSI) do pacote de computação em nuvem a ser alocado |
| `variant` | Indica a variante do pacote de computação em nuvem a ser alocado |

#### Exemplo: cloudComputePackage

```json theme={null}
"cloudComputePackage": {
    "titleId": "4567",
    "gsiSet": "128ce92a-45d0-4319-8a7e-bd8e940114ec",
    "variant": "30ebca60-d96e-4629-930b-6957aa6bfbfa"
},
```

[Voltar ao início deste tópico.](#top)

<a id="arbitration" />

## arbitration (preterido)

Esta propriedade foi preterida porque o serviço XBOX Live Compute não está mais disponível e foi descontinuado.
Especifica os tempos limite do processo de arbitragem.

Requer que a funcionalidade `arbitration` esteja definida.

O horário de início da arbitragem é definido em uma sessão no elemento */servers/arbitration/constants/system/startTime*.

| Tempo limite | Descrição | Valores válidos | Valor padrão |
| - | - | - | - |
| `forfeitTimeout` | Indica o tempo, em milissegundos, a partir do horário de início da arbitragem. | 0 - n | 60000 |
| `arbitrationTimeout` | Indica o tempo, em milissegundos, a partir do horário de início da arbitragem, após o qual o resultado da arbitragem atinge o tempo limite. Esse valor não pode ser menor que o valor de `forfeitTimeout`. | 0 - n | 300000 |

#### Exemplo: arbitration

```json theme={null}
"arbitration": {
    "forfeitTimeout": 60000,
    "arbitrationTimeout": 300000
},
```

[Voltar ao início deste tópico.](#top)

<a id="broadcastviewertitleids" />

## broadcastViewerTitleIds

Especifica uma matriz com os IDs de título dos títulos que devem sempre ter acesso de leitura à sessão de transmissão.

#### Exemplo: broadcastViewerTitleIds

```json theme={null}
"broadcastViewerTitleIds" : ["34567", "8910"],
```

[Voltar ao início deste tópico.](#top)

<a id="ownershippolicies" />

## ownershipPolicies

Especifica como lidar com uma sessão quando o último proprietário sai dela.
Requer que a funcionalidade `hasOwners` esteja definida.

| Política de propriedade | Descrição | Valores válidos | Valor padrão |
| - | - | - | - |
| `migration` | Indica o que acontece quando o último proprietário sai da sessão. Se a política de migração estiver definida como "endsession", a sessão expira. Se a política de migração estiver definida como "oldest", o membro com o horário de entrada mais antigo é selecionado para se tornar o novo proprietário da sessão. | "oldest", "endsession" | "endsession" |
| `allowNonOwnerInviteHandles` | Indica o comportamento de convite dos membros da sessão que não são o proprietário. Por padrão, quem não é proprietário não pode enviar convites para uma sessão. | `true`, `false` | `false` |
| `nonOwnerModifiableSystemProperties` | Uma lista de nomes de propriedades do sistema que quem não é proprietário pode modificar em sessões com a funcionalidade `hasOwners` definida como `true`. | Lista de nomes de propriedades do sistema | Não aplicável |

#### Exemplo: ownershipPolicies

```json theme={null}
"ownershipPolicies": {
     "migration": "oldest",
     "allowNonOwnerInviteHandles": true,
     "nonOwnerModifiableSystemProperties": ["joinRestriction", "closed"] 
}
```

[Voltar ao início deste tópico.](#top)


## Related topics

- [Conceitos do Multiplayer Session Directory (MPSD)](/pt-BR/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-concepts-nav.md)
- [Configurando o serviço Multiplayer](/pt-BR/services/xbox-services/multiplayer/concepts/live-configure-the-multiplayer-service.md)
- [Convites multiplayer entre versões de título do XDK e do GDK](/pt-BR/services/xbox-services/multiplayer/invites/concepts/live-multiplayer-xdkinvites.md)
- [Conceitos](/pt-BR/services/xbox-services/multiplayer/mpsd/concepts/index.md)
- [Modelos de sessão multiplayer](/pt-BR/services/xbox-services/multiplayer/mpsd/concepts/live-session-templates.md)
