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

# Modelos de sessão multiplayer

> Saiba como os modelos de sessão do MPSD funcionam como projetos para criar sessões multijogador, incluindo versões de modelo e exemplos que você pode copiar e modificar.

<a id="top" />

Este tópico descreve os modelos de sessão multijogador e fornece exemplos de modelos que você pode copiar e modificar para suas sessões multijogador.

Um modelo de sessão multijogador é um projeto para criar uma sessão multijogador.
Todas as sessões devem ser criadas com base em um modelo predefinido.

Um modelo define constantes que são as mesmas para qualquer sessão criada a partir dele.
Ao criar uma sessão a partir de um modelo, você pode adicionar e modificar dados adicionais na sessão. No entanto, não é possível modificar as constantes definidas no modelo.

Para obter mais informações, veja a seção Visão geral da sessão em [Tópicos avançados de sessões multijogador](/pt-BR/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details#session-overview).

Você pode obter do Multiplayer Session Directory (MPSD) a lista de modelos de sessão que se aplicam a um identificador de configuração de serviço (SCID) e o conteúdo de modelos de sessão específicos.

## Sobre os modelos de sessão

Um modelo de sessão para criar ou modificar uma sessão usa o mesmo formato de uma solicitação HTTP `PUT`.
A diferença é que o modelo define apenas constantes. Membros, servidores e propriedades não são definidos.

Qualquer constante de sessão pode ser definida, incluindo uma seção personalizada e toda a gama de constantes do sistema.

### Versões do modelo de sessão

Os modelos de sessão definidos neste tópico são construídos usando a versão de contrato de modelo 107.
Ao usá-los para criar um novo modelo, verifique se a versão de contrato está especificada como 107.

Se você usar a XBOX Services API (XSAPI) e observar as solicitações resultantes no depurador, poderá notar que as solicitações usam a versão de contrato de modelo 105.
Na prática, o MPSD "atualiza" essas solicitações para a versão 107 em tempo de execução.

<Note>Você pode usar na solicitação uma versão de contrato diferente da usada no modelo de sessão.</Note>

Se necessário, você pode alterar um modelo de sessão da versão 104 ou 105 para a versão 107.

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

## Valores padrão do modelo de sessão

Cada sessão criada a partir de um modelo de sessão começa como uma cópia do modelo.
Os valores não especificados no modelo podem ser especificados quando a sessão é criada.
Valores padrão são fornecidos em alguns casos quando nenhum outro valor é definido.

O conjunto padrão de tempos limite para a versão de contrato 107 é mostrado no exemplo a seguir.

```json theme={null}
    {
      "constants": {
        "system": {
          "reservedRemovalTimeout": 30000,
          "inactiveRemovalTimeout": 0,
          "readyRemovalTimeout": 180000,
          "sessionEmptyTimeout": 0
        }
      }
    }
```

Você pode forçar um valor a permanecer indefinido especificando `null`.
Isso substitui qualquer configuração padrão e impede que o valor seja definido na criação da sessão.

Por exemplo, para remover `sessionEmptyTimeout`, de modo que até as sessões vazias continuem indefinidamente, adicione o seguinte ao modelo de sessão.

```json theme={null}
    {
      "constants": {
        "system": {
          "sessionEmptyTimeout": null
        }
      }
    }
```

<Info>As constantes definidas por meio de um modelo não podem ser alteradas por gravações no MPSD. Para alterar os valores, você deve criar e enviar um novo modelo com as alterações necessárias.</Info>

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

## Exemplos de modelos de sessão

Esta seção fornece exemplos de modelos de sessão para várias finalidades e topologias de rede.
Você pode fazer as alterações necessárias em um modelo apropriado e colá-lo na sua configuração de serviço.

### Sessão de lobby padrão

Use este modelo para criar uma sessão de lobby para o seu jogo.

* Altere o valor de `maxMembersCount` para o número máximo de jogadores que você deseja suportar na sua sessão de lobby.
* Se o seu título não permitir que jogadores de plataformas diferentes (como um console XBOX e um PC Windows) joguem juntos, você poderá remover o elemento `crossPlay`.
* Você também pode alterar os outros valores. Os valores a seguir são bons para começar se você não tiver certeza do que precisa.

```json theme={null}
{
   "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 8,
            "visibility": "open",
            "capabilities": {
                "connectivity": true,
                "connectionRequiredForActiveMembers": true,
                "crossPlay": true,
                "userAuthorizationStyle": true
            },
        },
        "custom": {}
    }
}
```

### Sessão de jogo padrão sem matchmaking

Use este modelo para criar uma sessão de jogo para o seu jogo se ele não incluir matchmaking anônimo e não exigir mais de 100 membros.

Este modelo adiciona apenas dois novos valores aos especificados no modelo de sessão de lobby padrão.

* `constants.system.inviteProtocol : "game"`
* `constants.system.capabilities.gameplay : true`

```json theme={null}
{
   "constants": {
        "system": {
            "version": 1,
            "maxMembersCount": 8,
            "visibility": "open",
            "inviteProtocol": "game",
            "capabilities": {
                "connectivity": true,
                "connectionRequiredForActiveMembers": true,
                "gameplay" : true,
                "crossPlay": true,
                "userAuthorizationStyle": true
            }
        },
        "custom": {}
    }
}
```

### Adicionar matchmaking a um modelo de sessão de jogo, em que as verificações de qualidade de serviço (QoS) são feitas pelo serviço Multiplayer

Para habilitar o matchmaking no seu jogo, especifique valores para `memberInitialization` no seu modelo de sessão de jogo.

Ao criar seu hopper do SmartMatch, use o modelo a seguir como modelo de sessão de destino do hopper.

```json theme={null}
{
   "constants": {
        "system": {
            "memberInitialization": {
               "joinTimeout": 20000,
               "measurementTimeout": 15000,
               "membersNeededToStart": 2
            }
        }
    }
}
```

### Adicionar matchmaking a uma sessão de jogo, em que as verificações de QoS são feitas por um datacenter gerenciado pelo título

```json theme={null}
{
   "constants": {
        "system": {
            "peerToHostRequirements": {  
                "latencyMaximum": 250,
                "bandwidthDownMinimum": 256,
                "bandwidthUpMinimum": 256,
                "hostSelectionMetric": "latency"
            },
            "memberInitialization": {
               "joinTimeout": 15000,
               "measurementTimeout": 15000,
               "membersNeededToStart": 2
            }
        },
        "custom": {}
    }
}
```

### Modelo de sessão básico para sessão de jogo cliente/servidor

Use o modelo a seguir para um título cujos clientes se conectam a um servidor hospedado por terceiros em vez de usar comunicação ponto a ponto.

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "inviteProtocol": "game",
          "capabilities": {
            "connectionRequiredForActiveMembers": true,
            "gameplay": true,
          },
        },
        "custom": {}
      }
    }
```

### Modelo de sessão de lobby ou de tíquete do SmartMatch para rede baseada em pares

Use o modelo a seguir para criar uma sessão de lobby ou uma sessão de tíquete do SmartMatch para enviar um grupo de jogadores ao matchmaking.

Este modelo se destina a clientes que usam uma topologia de rede ponto a ponto ou ponto a host. Ele não configura uma sessão de jogo.

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 10,
          "visibility": "open",
          "capabilities": {
            "connectionRequiredForActiveMembers": true,
          },
          "memberInitialization": {
            "membersNeededToStart": 1
          },
        },
        "custom": {}
      }
    }
```

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

### Modelos de QoS

Se o seu jogo usa matchmaking e avalia QoS, você deve adicionar algumas constantes ao modelo de sessão para informar ao MPSD que ele deve se coordenar com o cliente para gerenciar os usuários que estão entrando na sessão.
Essa coordenação valida a qualidade do estado da conexão antes de informar aos usuários que o jogo está pronto para começar.

No caso de jogos cliente/servidor, a coordenação valida a qualidade da conexão antes que um grupo de jogadores entre no matchmaking.

#### Modelo de sessão de jogo ponto a host com QoS

Use o modelo a seguir para criar uma sessão de jogo ponto a host com QoS.

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

#### Modelo de sessão de jogo ponto a ponto com QoS

Use o modelo a seguir para criar uma sessão de jogo ponto a ponto com QoS.

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

#### Modelo de sessão de lobby ou de matchmaking cliente/servidor com QoS

Use o modelo a seguir para criar uma sessão de lobby ou de matchmaking usando QoS.
Este modelo não deve ser usado para configurar uma sessão de jogo.

```json theme={null}
    {
      "constants": {
        "system": {
          "version": 1,
          "maxMembersCount": 12,
          "visibility": "open",
          "memberInitialization": {
            "membersNeededToStart": 1
          }
        },
        "custom": {}
      }
    }
```

#### Modelo de sessão para crossplay entre XBOX One e Windows 10

Use o modelo a seguir para habilitar o multijogador com crossplay entre o XBOX One (ou posterior) e o Windows 10.

* A funcionalidade opcional `crossPlay` oferece suporte a interações como convites e entrada em jogo em andamento entre plataformas.

* A funcionalidade `userAuthorizationStyle` habilita o acesso ao Windows 10.

```json theme={null}
    {
      "constants": {
        "system": {
          "capabilities": {
            "crossPlay": true,
            "userAuthorizationStyle": true
          },
        },
        "custom": {}
      }
    }
```


## Related topics

- [Configurando o serviço Multiplayer](/pt-BR/services/xbox-services/multiplayer/concepts/live-configure-the-multiplayer-service.md)
- [Inicialização da sessão de destino e QoS](/pt-BR/services/xbox-services/multiplayer/matchmaking/concepts/live-matchmaking-target-session.md)
- [Tópicos avançados de sessões multiplayer](/pt-BR/services/xbox-services/multiplayer/mpsd/concepts/live-mpsd-details.md)
- [Perguntas frequentes e solução de problemas de multiplayer](/pt-BR/services/xbox-services/multiplayer/mpsd/concepts/live-multiplayer-2015-faq.md)
- [Funções no multiplayer](/pt-BR/services/xbox-services/multiplayer/concepts/live-multiplayer-roles.md)
