> ## Documentation Index
> Fetch the complete documentation index at: https://docs.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.

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)

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

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

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

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

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

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

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

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

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

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

## 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) (conteúdo)](https://docs.xbox.com/pt-BR/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-concepts-nav.md)
- [Configurando o serviço Multiplayer](https://docs.xbox.com/pt-BR/services/xbox-services/multiplayer/concepts/live-configure-the-multiplayer-service.md)
- [Convites entre versões de título do Xbox One Software Development Kit/GDK](https://docs.xbox.com/pt-BR/services/xbox-services/multiplayer/invites/concepts/live-multiplayer-xdkinvites.md)
- [Conceitos](https://docs.xbox.com/pt-BR/services/xbox-services/multiplayer/mpsd/concepts/index.md)
- [Modelos de sessão multiplayer](https://docs.xbox.com/pt-BR/services/xbox-services/multiplayer/mpsd/concepts/live-session-templates.md)
