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

# Ciclo de vida de um servidor multijogador

> Ciclo de vida de uma sessão de servidor de jogo do PlayFab Multiplayer Servers, desde Initialize e ReadyForPlayers do GSDK até os estados ativo e encerrado e o carregamento de logs.

## Game Server SDK (GSDK) e o ciclo de vida do processo do servidor de jogo

O ciclo de vida do servidor de jogo no PlayFab Multiplayer Servers (MPS) está fortemente ligado aos métodos do [GSDK](https://github.com/PlayFab/gsdk) que seu servidor de jogo chama, bem como ao estado do processo do servidor de jogo.

<Note>
  Para obter mais informações sobre como integrar seu servidor de jogo ao GSDK, confira a documentação [aqui](/pt-BR/services/playfab/multiplayer/servers/integrating-game-servers-with-gsdk).
</Note>

No mínimo, seu servidor de jogo pode integrar o GSDK e funcionar muito bem no MPS apenas chamando o método **ReadyForPlayers** do GSDK. No entanto, recomendamos chamar também **Start** quando o processo do servidor de jogo for iniciado, para que o MPS saiba que o servidor de jogo está sendo inicializado. Chamar **Start** é importante no caso de um servidor de jogo que demora para iniciar, pois o MPS desligará o servidor se não receber pulsações em tempo hábil quando o servidor de jogo for iniciado.

## Estados de um servidor de jogo

Estes são os principais estados de um servidor de jogo no MPS:

* **Initializing**: o servidor de jogo passa para este estado quando chama o método **Start()** do GSDK. Neste estado, o servidor de jogo começa a carregar os ativos necessários. Neste estado, o GSDK começa a enviar pulsações ao MPS.
* **StandingBy**: o servidor de jogo passa para este estado quando chama o método **ReadyForPlayers()** do GSDK. Esse método deve ser chamado quando todos os ativos necessários do jogo tiverem sido carregados. Essencialmente, este estado sinaliza ao MPS que o servidor de jogo está pronto para ser alocado, para que os jogadores possam se conectar a ele.
* **Active**: o servidor de jogo passa para este estado quando é [alocado](/pt-BR/services/playfab/multiplayer/servers/allocating-game-servers-and-configuring-vs-debugging-tools) por meio da chamada à API [RequestMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.requestmultiplayerserver). Este estado implica que os jogadores podem se conectar ao servidor de jogo e aproveitar o jogo. O fato de o servidor de jogo estar ativo significa que ele não será desligado durante possíveis reduções de escala do build (ou seja, se o número de standingBy for diminuído).
* **Terminating**: este é o estado para o qual o servidor de jogo passa quando a API [ShutDownMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.shutdownmultiplayerserver) é chamada. Este estado implica que o servidor de jogo está sendo desligado e não estará disponível para a conexão de jogadores.

O processo do servidor de jogo pode ser encerrado normalmente ou por meio de uma falha. Isso pode acontecer em qualquer estado. O MPS vai:

* remover o contêiner/processo que executa esse servidor de jogo
* coletar e carregar os logs do jogo para que fiquem prontos para arquivamento ([mais informações](/pt-BR/services/playfab/multiplayer/servers/archiving-and-retrieving-multiplayer-server-logs))
* criar um novo contêiner/processo no lugar dele para substituir o que foi encerrado

<Note>
  Um servidor de jogo nunca pode voltar ao estado StandingBy quando está no estado Active. Depois que o estado do jogo for definido como Active, a única maneira de obter um novo servidor de jogo no estado StandingBy é o processo do seu servidor de jogo ser encerrado.
</Note>

### Tempo de vida máximo do servidor

As máquinas virtuais que hospedam os servidores do MPS têm um tempo de vida máximo de 10 dias, portanto, o tempo de vida de um servidor é limitado por esse tempo de vida. O tempo de vida de um servidor tem a garantia de ser de pelo menos 23 horas; o MPS não alocará servidores em uma VM que tenha menos de 23 horas restantes. O GSDK disparará o evento OnMaintenanceScheduled 23 horas antes de a VM ser encerrada à força, para que todos os servidores em execução na VM possam ser desligados normalmente a tempo. Se um servidor ainda estiver em execução na VM quando ela atingir seu tempo de vida máximo de 10 dias, o servidor será encerrado à força e nenhum log será carregado. Para garantir que o seu servidor não seja encerrado à força, verifique se as sessões dele sempre duram menos de 23 horas ou use o evento OnMaintenanceScheduled do GSDK para desligar o servidor normalmente e migrar os jogadores para outro servidor antes do prazo.

### Encerrando um processo de servidor de jogo

Quando a sessão de jogo terminar, você deverá encerrar normalmente o processo do servidor de jogo para obter um novo servidor de jogo. Se o processo do servidor de jogo falhar, o MPS criará um novo processo de servidor de jogo para substituir o que falhou. Caso o servidor de jogo esteja travado ou congelado, você sempre pode chamar a API [ShutDownMultiplayerServer](xref:titleid.playfabapi.com.multiplayer.multiplayerserver.shutdownmultiplayerserver) para encerrar manualmente o processo do servidor de jogo. Essa API só deve ser chamada quando o processo do servidor de jogo não puder ser encerrado por conta própria. Ao chamar essa API, você verá o servidor de jogo passar para os estados "Terminating" e "Terminated". Além disso, todos os servidores travados no estado terminating ou terminated serão substituídos pelo sistema após um período.

<Note>
  Há uma chamada de método no GSDK que, se usada, marcará o servidor de jogo como Unhealthy. No momento, ela é ignorada pelo MPS, mas isso pode mudar no futuro. Se esse recurso for essencial para você, deixe uma observação no repositório do GSDK [aqui](https://github.com/PlayFab/gsdk/issues).
</Note>

### Verificando a integração do GSDK com seu servidor de jogo

O MPS tem uma ferramenta de desenvolvedor para testar a integração do GSDK em servidores de jogo. A ferramenta se chama **LocalMultiplayerAgent**; você pode baixá-la [aqui](https://github.com/PlayFab/MpsAgent) e conferir a documentação [aqui](/pt-BR/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab) para obter mais informações.

### Exemplos do GSDK

Para conferir exemplos do GSDK que demonstram a integração com mecanismos de jogo populares, você pode consultar o repositório MpsSamples [aqui](https://github.com/PlayFab/MpsSamples).


## Related topics

- [Executar um script personalizado durante a criação da VM (versão prévia)](/pt-BR/services/playfab/multiplayer/servers/vmstartupscript.md)
- [Práticas recomendadas e lista de verificação de lançamento](/pt-BR/services/playfab/multiplayer/servers/best-practices.md)
- [Ciclo de vida de uma região de build de servidor multijogador](/pt-BR/services/playfab/multiplayer/servers/multiplayer-build-region-lifecycle.md)
- [Ciclo de vida dos builds de servidores multijogador](/pt-BR/services/playfab/multiplayer/servers/multiplayer-build-lifecycle.md)
- [Ciclo de vida do SDK](/pt-BR/services/playfab/sdks/c/lifecycle.md)
