Colocando servidores de jogo em contêineres e empacotando-os
Windows
No Windows, normalmente você empacota o executável do servidor de jogo e outros arquivos como arquivos zip e os carrega como ativos do jogo. Os ativos são combinados com uma imagem de contêiner para criar o build do servidor de jogo. A imagem de contêiner base fornece os arquivos do sistema operacional Windows e o ambiente de execução que permite que o jogo seja executado. O PlayFab fornece um conjunto de imagens de contêiner gerenciadas para uso em builds Windows. Quando um build Windows é criado pelo Game Manager ou por APIs como CreateBuildWithManagedContainer(), você especifica os ativos e onde eles devem ser montados no sistema de arquivos do contêiner. Você também especifica o comando de shell para iniciar o jogo (StartGameCommand), que pode ser semelhante ao mostrado abaixo.
StartGameCommand deve iniciar um aplicativo que use o PlayFab Game Server SDK para chamar ReadyForPlayers quando estiver pronto para atender clientes de jogo. O contêiner será encerrado e reciclado quando o processo do aplicativo for encerrado.
Linux
No Linux, você mesmo cria a imagem de contêiner empacotando o executável e os ativos do jogo. O uso de ativos combinados com a imagem de contêiner em runtime é opcional. Quando um build Linux é criado pelo Game Manager ou por APIs como CreateBuildWithCustomContainer(), você pode opcionalmente especificar os ativos e onde eles devem ser montados no sistema de arquivos do contêiner. A especificação do comando de shell para iniciar o jogo (StartGameCommand) também é opcional, pois esse comando também pode ser incluído na imagem de contêiner.
Confira esta página para obter mais informações sobre como criar imagens de contêiner Linux para o PlayFab Multiplayer Servers
Contêineres gerenciados para Windows
No momento, o PlayFab oferece suporte a um contêiner gerenciado: a imagem de contêiner do PlayFab Multiplayer, baseada no Windows Server Core. Você pode baixar esse contêiner pelo Docker Hub para que seu ambiente local corresponda ao ambiente de runtime no Azure. Há ferramentas de depuração que permitem percorrer a máquina de estado do servidor multijogador localmente na sua máquina de desenvolvimento. Para obter mais informações, confira Depurando servidores de jogo localmente e integração com o PlayFab. A imagem a seguir mostra os principais fluxos para carregar um servidor de jogo e combinar esse pacote com um contêiner selecionado.
Atualizações de contêineres gerenciados
Os contêineres gerenciados são a opção de integração mais fácil para projetos Windows e um bom ponto de partida se você não estiver familiarizado com contêineres. Um recurso importante dos contêineres gerenciados é que o PlayFab atualizará automaticamente a imagem base com correções de segurança críticas para garantir uma jogabilidade confiável. Em geral, as atualizações de segurança acontecem todo mês e não devem causar interrupção do serviço. Para saber mais, consulte Atualizações de patches do sistema operacional para Windows. Durante uma atualização, as sessões em espera que estão sendo recicladas naturalmente serão substituídas por uma imagem de contêiner atualizada e pelo mesmo pacote de servidor de jogo. Quando o PlayFab pretender atualizar uma imagem de contêiner gerenciada que você está usando, você receberá eventos do PlayStream.Integrando o PlayFab Game Server SDK
Saiba mais em: Integrando servidores de jogo com o PlayFab Game Server SDK (GSDK) O PlayFab Game Server SDK (GSDK) é fornecido em várias linguagens de programação, como C++, C# e Java. O GSDK conecta seu servidor de jogo a um agente local instalado na VM. Esse agente facilita as principais interações do servidor com a infraestrutura de controle do PlayFab.
ReadyForPlayers().
Depois que esse método é chamado, o servidor de jogo é colocado em um estado de espera e aguarda solicitações de alocação do seu serviço de matchmaking para o PlayFab por meio do método RequestMultiplayerServer.
A imagem exibida abaixo mostra os estados de um servidor multijogador do PlayFab.

ReadyForPlayers() é o único requisito para fazer seu servidor de jogo ser executado e continuar em execução. No entanto, há vários retornos de chamada/eventos que você pode querer processar para oferecer a melhor experiência ao usuário.
Scripts de servidor e variáveis de ambiente configuradas pelo PlayFab
Em alguns casos, talvez você queira que os servidores de jogo executem um script CMD, PowerShell ou bash (um “bootstrapper”), que então inicia o executável compilado do servidor de jogo. Esse script pode configurar o ambiente interno do contêiner, passar argumentos de linha de comando ao executável ou realizar qualquer outra tarefa que você não queira executar no próprio executável do servidor de jogo. Por conveniência, o PlayFab configura algumas informações do build como as seguintes variáveis de ambiente no contêiner. Elas também podem ser acessadas pelo GSDK, mas usar as variáveis de ambiente pode ser mais fácil a partir de um script.- PF_TITLE_ID: ID do título do host da sessão
- PF_BUILD_ID: ID do build do host da sessão
- PF_REGION: região do Azure do host da sessão
- PUBLIC_IPV4_ADDRESS: endereço IP público da VM
- PF_VM_ID: identificador exclusivo da VM (como ‘xcloudeau4u4yyxj4xymu:AustraliaEast:1E03_6f27ad88-9bc3-4ea3-8d16-75480aba4637:tvmps_0e05c37e0bbdca298a09fb0d597bd666eb7c5fd0ebcf1fed4c52e608a39a7c9c_d’)
- CERTIFICATE_FOLDER: pasta que contém os certificados do jogo
- PF_SERVER_LOG_DIRECTORY: pasta que contém os logs do jogo
- PF_SERVER_INSTANCE_NUMBER: número da instância do servidor. O primeiro servidor na VM é 0, o segundo é 1, o terceiro é 2 e assim por diante.
