Pular para o conteúdo principal
Este artigo contém detalhes sobre como criar builds Linux no PlayFab Multiplayer Servers, tanto usando contêineres quanto usando processos.

Criar e implantar imagens de contêiner Linux

Esta seção descreve etapas específicas para ajudar você a criar e implantar imagens de contêiner Linux. Conforme descrito em Criar máquinas virtuais (VMs), ao usar nosso serviço, você configura as VMs para serem iniciadas automaticamente como servidores de jogo em todo o mundo, de acordo com seu orçamento e sua demanda. Para isso, você não cria VMs explicitamente, mas define parâmetros que determinam como elas são criadas em seu nome. Esse processo é chamado de implantação ou criação de um build. O PlayFab Multiplayer Servers pode implantar servidores de jogo baseados em Linux e em Windows. A forma como os builds são implantados para contêineres Linux é semelhante à dos contêineres Windows, com algumas diferenças importantes. Para saber mais, consulte Diferenças entre imagens de contêiner Windows e Linux. Se quiser usar PowerShell/API para gerenciar contêineres Linux, consulte Gerenciar imagens de contêiner Linux usando APIs. Ao usar servidores de jogo baseados em Linux, em vez de usar uma imagem de contêiner gerenciada, você precisa criar e carregar sua imagem de contêiner em um registro de contêiner. Para facilitar o carregamento de contêineres, sua conta inclui um registro de contêiner do Azure.

Conhecimento necessário

Configurar seu dispositivo de desenvolvimento Windows

Esta etapa só é necessária se você quiser usar um dispositivo de desenvolvimento Windows para criar imagens de contêiner Linux. Como alternativa, você pode usar dispositivos com sistema operacional Linux, VMs ou sistemas com dois sistemas operacionais que tenham o Docker instalado. O Subsistema do Windows para Linux (WSL) permite que você use seu dispositivo de desenvolvimento no ambiente familiar do Windows para criar e gerenciar imagens de contêiner Linux. Usar o WSL significa que você não precisaria da sobrecarga de uma máquina virtual Linux tradicional ou de uma configuração de inicialização dupla.
  1. Instale o WSL 2. Reinicie o computador e verifique se você está usando o WSL 2. Você também precisa instalar o pacote de atualização do kernel do Linux.
  2. Instale uma distribuição Linux que use o WSL. Embora nossas VMs usem o Ubuntu, você pode selecionar qualquer distribuição para sua imagem de contêiner. Considere usar o Ubuntu 20.04 Long-Term Support (LTS) ou versões posteriores.
  3. Instale o Docker Desktop para Windows com o WSL 2. Para o link de download direto, acesse Docker Desktop para Windows (externo).
Verificar a configuração do WSL 2
  • Abra o PowerShell
  • Execute wsl -l -v para verificar se os aplicativos docker-desktop e ubuntu estão executando o WSL 2 (versão 2)
Verificar se o Docker está configurado corretamente para o WSL
  • Abra o terminal do WSL
  • Execute docker version para confirmar que o Docker está instalado e que o sistema operacional usado é o Linux
Para desenvolver e depurar aplicativos C++ para Linux, use o WSL no Visual Studio 2019.

Obter as credenciais de entrada do registro de contêiner do PlayFab

A conta do registro de contêiner do Azure está associada à sua conta do PlayFab. Somente você tem acesso aos contêineres carregados nela. Esse registro de contêiner do Azure é gratuito.
  • No Game Manager, selecione o título do seu jogo e, em seguida, Multiplayer > Servers. Selecione New build para abrir a página de criação de build.
  • Selecione Linux como o sistema operacional da máquina virtual.
  • Anote as credenciais de entrada (nome, senha e customer5555555.azurecr.io), pois essas informações serão necessárias mais tarde
Novo build com a plataforma Linux selecionada Se quiser usar PowerShell/API, chame a API GetContainerRegistryCredentials para recuperar o endereço, o nome de usuário e a senha do registro de contêiner.

Criar imagens de contêiner Linux e enviá-las por push ao Registro de Contêiner do Azure

Estas etapas ajudam você a criar e enviar por push sua imagem de contêiner Linux personalizada.

Integrar seu aplicativo de servidor de jogo ao GSDK

Assim como ao usar servidores Windows, você precisa integrar o código do seu servidor de jogo ao PlayFab Multiplayer Server SDK (GSDK). A integração do GSDK pode fazer parte da sua imagem de contêiner. Para obter instruções, consulte Criar um build de servidor de jogo e Integrando seu título ao PlayFab Game Server SDK (GSDK).

Criar um Dockerfile

Um Dockerfile é um arquivo de texto sem extensão que contém todos os comandos necessários para criar uma determinada imagem de contêiner.
  1. Abra o Bloco de Notas ou qualquer editor adequado
  2. Adicione os comandos específicos necessários para executar e criar um contêiner. Para ver um exemplo desse arquivo, consulte o DockerFile fornecido no exemplo Wrapper. Para obter mais informações sobre como criar esse arquivo, consulte Formato do Dockerfile (externo) e Práticas recomendadas ao criar um Dockerfile (externo)
  3. Salve o arquivo como Dockerfile, de preferência em uma pasta/diretório vazio. Você deve adicionar a essa pasta os outros arquivos necessários para criar a imagem de contêiner.
Instruções para salvar ao usar o Bloco de Notas:
  • Selecione Arquivo> Salvar como… para abrir as opções de salvamento
  • Vá para a pasta em que deseja salvar o arquivo
  • Em Nome do arquivo:, use “Dockerfile”, incluindo as aspas.
  • Em Tipo:, selecione Todos os Arquivos
  • Selecione a codificação UTF-8
  • Select Save

Criar e carregar a imagem de contêiner Linux

  1. Abra o terminal do Linux com o Docker instalado.
  2. Execute os seguintes comandos do Docker usando as credenciais de entrada obtidas na etapa anterior. Em seguida, siga as instruções na tela para inserir seu nome de usuário e sua senha.
O docker sign in conecta você ao registro de contêiner do Azure, conforme mostrado no Game Manager.
  1. Crie a imagem de contêiner
Execute o comando a seguir para criar a imagem de contêiner usando o Dockerfile no diretório atual. Há um ”.” no final do comando docker build. O sinalizador -t especifica as informações de nome:marca da sua nova imagem de contêiner. O nome e a marca são usados se o build tiver êxito. Se houver erros de build, você precisará corrigi-los antes de passar para a próxima etapa. No exemplo a seguir, o nome do repositório é customer5555555.azurecr.io/pvp_gameserver e a marca é v1. Para obter mais informações, consulte a referência do comando docker build (link externo) e Criando o Dockerfile (link externo). Ao usar o WSL, a unidade C: do Windows é montada em /mnt/c.
  • Em seguida, execute cd /mnt/c/path/to/your/Dockerfile para alternar para o caminho em que está seu Dockerfile. Para obter mais informações, consulte Acessando a unidade C.
Ao usar o Linux, execute pwd para descobrir em qual diretório você está no momento.
  1. Carregue a imagem de contêiner
Execute os comandos para enviar a imagem por push ao seu registro de contêiner do PlayFab. Selecione uma combinação de nome:marca significativa e útil para a imagem de contêiner carregada. Para carregar seu contêiner no registro operado pelo PlayFab, use o docker push ou outro cliente de registro de contêiner.

Verificar se o contêiner foi carregado

Depois que o contêiner for carregado, volte à página New Build no Game Manager e selecione Refresh Images. Você poderá ver a imagem na lista e selecioná-la. Como alternativa, você pode usar a chamada de API ListContainerImages para listar as imagens de contêiner carregadas. Agora você está pronto para implantar servidores. Para obter instruções, consulte Portal do PlayFab: Game Manager e Usando PowerShell/API.

Diferenças entre imagens de contêiner Windows e Linux

Para muitos desenvolvedores, usar o contêiner Windows gerenciado é a escolha padrão e simples preferida. No entanto, as imagens de contêiner Linux implantadas em máquinas virtuais têm uma tarifa por hora mais barata.
Você pode personalizar totalmente seus servidores de jogo, quer use imagens de contêiner Windows ou Linux. Ao usar servidores Windows, você personaliza a imagem de contêiner gerenciada carregando ativos.
A tabela a seguir lista algumas diferenças ao criá-los e usá-los.

Gerenciar imagens de contêiner Linux usando APIs

Você pode usar APIs para gerenciar imagens de contêiner Linux. Para o restante do ciclo de vida do build (exibição do uso, atualização de regiões e de configurações de standingBy, exclusão), gerencie-as usando o Game Manager.
  • GetContainerRegistryCredentials: recupera o endereço, o nome de usuário e a senha do registro de contêiner
  • ListContainerImages e ListContainerImageTags: verifique se sua nova imagem e sua marca estão listadas (às vezes, pode levar alguns minutos para que a imagem seja totalmente registrada no sistema)
  • CreateBuildWithCustomContainer: cria um build com um contêiner personalizado. Especifique a imagem marcada que você carregou anteriormente. Verifique se as seguintes propriedades estão definidas na solicitação:
    • ContainerImageReference: o nome e a marca da imagem carregada anteriormente. Esses valores ficam visíveis em ListContainerImages e ListContainerImageTags.
    • ContainerFlavor - “CustomLinux”
    • ContainerRunCommand (opcional): se o seu contêiner não tiver um comando padrão, use esta propriedade para fornecer o comando a ser executado, junto com os argumentos.

Empacotando ativos para servidores Linux baseados em processo

Ao usar o Linux no modo de processo (em vez do modo de contêiner), você carrega seu servidor de jogo como um arquivo compactado de ativos, e não como uma imagem de contêiner. Esta seção aborda requisitos importantes de empacotamento.

Formatos de arquivo compactado com suporte

Os ativos devem ser carregados como arquivos .tar.gz ou .tar, para que as permissões de arquivo do Unix (como o bit de execução) possam ser preservadas durante a extração.
Arquivos .zip não preservam as permissões de arquivo do Unix no Linux. Se você carregar o executável do seu servidor de jogo Linux em um arquivo .zip, ele perderá a permissão de execução e não iniciará, com um erro “Permission denied”. Para contornar esse problema, use .tar.gz ou defina o comando de início como um script de shell que execute chmod +x no executável antes de iniciá-lo.

Requisitos de estrutura de arquivos compactados tar.gz e tar

Ao extrair arquivos .tar ou .tar.gz, o PlayFab Multiplayer Servers remove o primeiro nível de diretório do arquivo compactado (equivalente a tar --strip-components=1). Seu arquivo compactado deve conter um único diretório wrapper de nível superior com todos os arquivos do jogo dentro dele. Estrutura correta: arquivos dentro de um diretório de nível superior:
Crie o arquivo compactado com:
Se seus arquivos estiverem na raiz do arquivo compactado, sem um diretório wrapper, eles serão ignorados silenciosamente durante a extração. Seu servidor de jogo falhará com erros “No such file or directory”, porque o executável nunca é gravado no disco.

Definindo o comando de início

Para servidores baseados em processo, o comando de início deve ser relativo à pasta raiz de ativos após a extração (ou seja, relativo ao local em que os arquivos ficam depois que o diretório de nível superior é removido). Por exemplo, se o seu arquivo compactado contiver MyGameServer/MyGame.x86_64, após a extração o arquivo ficará na raiz da pasta de ativos. Defina o comando de início como:
Se o seu executável estiver em uma subpasta (por exemplo, MyGameServer/bin/MyGame.x86_64), defina o comando de início como:

Gerenciar builds Linux baseados em processo usando APIs

Você pode usar APIs para gerenciar builds Linux baseados em processo. Para o restante do ciclo de vida do build (exibição do uso, atualização de regiões e de configurações de standingBy, exclusão), gerencie-os usando o Game Manager.
  • CreateBuildWithProcessBasedServer: cria um build com o servidor de jogo sendo executado como um processo. Verifique se as seguintes propriedades estão definidas na solicitação:
    • OsPlatform - “Linux”
    • GameAssetReferences: a lista de ativos do jogo (carregados como arquivos .tar.gz ou .tar). Cada ativo exige um FileName que corresponda ao nome do ativo carregado.
    • StartMultiplayerServerCommand: o comando a ser executado quando o servidor de jogo for iniciado. O caminho deve ser relativo à pasta raiz de ativos após a extração (por exemplo, MyGame.x86_64 -server).
    • Ports: as portas a serem mapeadas para o build.
    • MultiplayerServerCountPerVm: o número de instâncias de servidor de jogo a serem hospedadas em uma única VM.
    • RegionConfigurations: as regiões nas quais implantar, com as contagens de servidores em espera e de máximo de servidores.

Confira também

Última modificação em 8 de outubro de 2026