Plug-in para Unreal: implante o jogo em uma frota do contêiner gerenciada
Use esse fluxo de trabalho de plug-in guiado para criar uma imagem de contêiner para seu servidor de jogos e implantá-la em uma solução de hospedagem baseada em contêiner. Se você ainda não tiver integrado o código do jogo, consultePlugin para Unreal: Integre seu código de jogo. Quando você concluir esse fluxo de trabalho com êxito, seu servidor de jogos em contêiner estará sendo executado na nuvem e você poderá usar o plug-in para iniciar um cliente de jogo, conectar-se a uma sessão de jogo e jogar o jogo.
Antes de começar
Esse fluxo de trabalho pressupõe que você concluiu as seguintes tarefas.
-
Integre seu código do servidor de jogos com o SDK do servidor do Amazon GameLift Servers. Seu servidor de jogo hospedado deve ser capaz de se comunicar com o serviço do Amazon GameLift Servers para que ele possa responder às solicitações para iniciar novas sessões de jogo e relatar o status da sessão do jogo. Se você não concluiu essa tarefa, recomendamos que você siga primeiro o fluxo de trabalho do plug-in Host com o Anywhere. Para obter orientação sobre como preparar o código do servidor do jogo, consulte Atualize seu código de servidor de jogos. Para uma frota de contêineres gerenciada, você deve integrar seu jogo ao SDK do servidor versão 5.2 ou superior.
nota
Se você estiver usando o mapa do jogo de startup, essa tarefa já estará concluída.
-
Empacote o executável do seu servidor de jogos para rodar no Linux. Se você estiver desenvolvendo no Windows e integrando o SDK do servidor C++ versão 5.2.x ou anterior, precisará trabalhar com o kit de ferramentas de compilação cruzada Unreal.
Como alternativa, você pode configurar um espaço de trabalho Linux separado ou usar uma ferramenta como o subsistema Windows para Linux (WSL). -
Reúna arquivos para implantá-los com sua versão de servidor de jogos. Em sua máquina local, crie um diretório de trabalho para organizar os arquivos, que serão compilados em seu contêiner do servidor de jogos. Isso pode incluir dependências do jogo, um script para iniciar servidores de jogos e outros processos ao iniciar um contêiner, etc.
Adicione os arquivos da biblioteca do OpenSSL à compilação do servidor de jogos. Você pode pular essa etapa se seu servidor de jogos estiver integrado ao SDK do servidor 5.3 ou posterior.
Localize e copie manualmente as bibliotecas do OpenSSL para o diretório do pacote de compilação do jogo em
<YourGame>/Binaries/Win64. Você deve usar a mesma versão do OpenSSL que sua versão do Unreal Engine 5 usa. As compilações de jogos implantadas com as bibliotecas OpenSSL erradas não conseguirão se comunicar com o serviço do Amazon GameLift Servers.Para encontrar as bibliotecas do OpenSSL, procure na fonte do seu mecanismo de jogo. O local varia de acordo com o ambiente de desenvolvimento:
No Windows:
-
[ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libssl-1_1-x64.dll -
[ENGINE_ROOT_DIR]\Engine\Extras\ThirdPartyNotUE\libimobiledevice\x64\libcrypto-1_1-x64.dll
No Linux:
-
Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libssl.so.1.1 -
Engine/Source/Thirdparty/OpenSSL/1.1.1n/include/libcrypto.so.1.1
-
-
Integre seu código de cliente de jogo com o Amazon GameLift Servers. Uma forma de concluir essa tarefa é adicionar um ativo de amostra (incluído no plug-in) que já esteja integrado. Para obter orientação sobre como preparar o código do cliente do jogo, consulte Integre o mapa de jogo do seu cliente .
-
Instale o Docker na máquina local. Você precisa instalar essa ferramenta se quiser que o plug-in crie imagens de contêiner para você e as envie para um repositório ECR. Como alternativa, você pode realizar essas tarefas manualmente e instruir o plug-in a usar uma imagem de contêiner existente. Para obter mais informações sobre como criar sua imagem manualmente, consulte Criar uma imagem de contêiner para Amazon GameLift Servers.
Para iniciar o fluxo de trabalho de contêineres gerenciados pelo Amazon GameLift Servers:
Na barra de ferramentas principal do editor do Unreal, escolha o menu do Amazon GameLift Servers e selecione Contêineres Gerenciados. Essa ação abre a página do plug-in Host com contêineres gerenciados, que apresenta um processo passo a passo para criar uma imagem de contêiner da com a versão do seu servidor de jogos, implantá-la em uma frota de contêineres e lançar seu jogo.
Etapa 0: configurar seu perfil
Esta seção exibe seu perfil de usuário atualmente selecionado. Verifique se o perfil de usuário atual é aquele que você deseja usar para esse fluxo de trabalho. Todos os recursos criados neste workflow estão associados à conta do perfil da AWS e são colocados na região da AWS padrão do perfil. As permissões do usuário do perfil determinam seu acesso aos recursos e ações da AWS.
Talvez seja necessário modificar o perfil de usuário selecionado se:
-
Nenhum perfil está selecionado no momento.
-
Você deseja selecionar outro perfil ou criar outro perfil.
-
Você precisa inicializar o perfil selecionado (se o status de inicialização estiver inativo).
Para definir ou alterar o perfil de usuário selecionado
-
No menu Amazon GameLift Servers, escolha Credenciais de acesso aberto da AWS.
Etapa 1: avaliar a disponibilidade do contêiner
Antes de implantar seu servidor de jogo em uma frota de contêineres, você deve empacotá-lo em uma imagem de contêiner e armazená-lo em um repositório Amazon ECR. O plug-in pode concluir essas tarefas para você ou você pode fazer essas tarefas manualmente. Nesta etapa, forneça informações sobre o status da imagem do contêiner e do repositório ECR.
Use as perguntas de avaliação para dizer ao plug-in quais etapas ele precisa seguir:
-
Crie uma nova imagem de contêiner. Se você escolher essa opção, a próxima etapa solicitará a localização do diretório de compilação do servidor do jogo e do executável de compilação. O plug-in usa um modelo Dockerfile (fornecido pelo Amazon GameLift Servers) e o configura automaticamente para o seu jogo. É possível exibir o modelo em Criar uma imagem de contêiner para o Amazon GameLift Servers. Depois de escolher essa opção, indique onde você deseja que o plugin armazene a nova imagem:
-
Crie um novo repositório do Amazon ECR e coloque a imagem do contêiner nele. O plug-in cria um repositório ECR privado usando a conta da AWS e a Região da AWS padrão no perfil de usuário selecionado.
-
Empurre a imagem de contêiner para um repositório do Amazon ECR previamente criado. Se você escolher essa opção, a próxima etapa solicitará que você selecione um repositório Amazon ECR existente em uma lista. A lista inclui todos os repositórios Amazon ECR da conta da AWS e da Região da AWS padrão no perfil de usuário selecionado. Você pode selecionar um repositório público ou privado.
-
-
Use uma imagem de contêiner existente. Se você criou uma imagem manualmente, recomendamos que você use o modelo Dockerfile fornecido pelo Amazon GameLift Servers, que está disponível em Criar uma imagem de contêiner para o Amazon GameLift Servers. Depois de escolher essa opção, indique onde a imagem está localizada.
Uma imagem gerada pelo Docker armazenada localmente. Se você escolher essa opção, o plug-in cria um novo repositório privado do Amazon ECR e envia o arquivo de imagem local para ele. A próxima etapa solicitará um ID de imagem, que o plug-in usa para localizar o arquivo de imagem.
Uma imagem de contêiner que já está armazenada em um repositório do Amazon ECR. Se você escolher essa opção, a próxima etapa solicitará que você selecione uma imagem repositório Amazon ECR existentes em uma lista. A lista inclui todos os repositórios Amazon ECR da conta da AWS e da Região da AWS padrão no perfil de usuário selecionado. Você pode selecionar um repositório público ou privado.
Etapa 2: configurar implantação de imagens
Nesta etapa, forneça as informações de que o plug-in precisa para implantar sua imagem de contêiner em uma frota de contêineres. Essa etapa solicita as seguintes informações:
-
A localização da construção do seu servidor de jogos, da imagem do contêiner ou do repositório Amazon ECR, com base nas suas seleções na Etapa 1.
-
O cenário a ser usado para a implantação de seus contêineres gerenciados.
O caminho de saída da configuração do cliente. Selecione a pasta na compilação do cliente que contém sua configuração da AWS. Procure-o no seguinte local:
[client-build]/[project-name]/Content/CloudFormation.-
Configurações de implantação opcionais. Esta seção tem configurações que o plug-in usa por padrão. Você pode modificar esses valores ou manter os valores padrão.
O nome do jogo é definido como o nome do seu projeto de jogo por padrão. Todos os recursos do AWS que o plug-in cria fazem referência ao valor do nome do jogo.
O intervalo de portas, o limite de memória e o limite de vCPU são configurações para a frota de contêineres. Para obter mais informações sobre a personalização desses valores, consulte Configurar conexões de rede para o intervalo de portas de conexão e Definir limites de recursos para limites de recursos.
A tag de imagem de contêiner é usada para categorizar as imagens de contêiner no Amazon ECR. O valor padrão é
unreal-gamelift-plugin.Nome do repositório do Amazon ECR. Você pode editar esse campo para sugerir um nome personalizado somente quando o plug-in estiver criando um repositório ECR para você. O valor padrão é
unreal-game lift-plugin-ecr-repository.
Opções de cenário de implantação
Esse cenário implanta seu servidor de jogos em uma única frota de contêiner. É um bom ponto de partida para testar a integração do servidor da AWS e a configuração do contêiner. Ele implanta os seguintes recursos:
-
A definição de grupo de contêineres do Amazon GameLift Servers descreve como implantar e executar suas imagens de contêineres em uma frota de contêineres.
-
Frota de contêineres do Amazon GameLift Servers (sob demanda) com seu contêiner de servidor de jogos instalado e em execução, com alias.
-
Grupo de usuários e cliente do Amazon Cognito para permitir que os jogadores se autentiquem e iniciem um jogo.
-
Autorizador de Gateway de API que vincula o grupo de usuários às APIs.
-
Lista de controle de acesso (ACL) à web para controle de utilização excessiva de jogadores para o API Gateway.
-
Serviço de backend para fazer solicitações ao serviço do Amazon GameLift Servers em nome de clientes de jogos, como solicitar sessões de jogos e participar de jogos:
-
Gateway de API + função do Lambda para os jogadores solicitarem um slot de sessão de jogo. Essa função é chamada
CreateGameSession()se nenhuma entrada aberta estiver disponível. -
Gateway de API + função do Lambda para que os jogadores obtenham informações de conexão para sua solicitação de jogo.
-
Esse cenário implanta seu servidor de jogo em uma frota de contêineres, configura o posicionamento da sessão de jogo e configura a criação de partidas do FlexMatch. Esse cenário é útil quando você está pronto para começar a projetar um marcador personalizado de jogos para sua solução de hospedagem. Use esse cenário para criar os recursos básicos para essa solução, que poderão ser personalizados posteriormente, conforme necessário. Ele implanta os seguintes recursos:
-
A definição de grupo de contêineres do Amazon GameLift Servers que descreve como implantar e executar suas imagens de contêineres em uma frota de contêineres.
-
Frota de contêineres do Amazon GameLift Servers (sob demanda) com seu contêiner de servidor de jogos instalado e em execução, com alias.
-
Configuração de criação de partidas do FlexMatch e conjunto de regras de criação de partidas para aceitar solicitações de jogadores e formar partidas.
-
Fila de sessões de jogo da Amazon GameLift Servers que atende às solicitações de partidas propostas, encontrando o melhor recurso de hospedagem possível (com base na viabilidade, custo, latência do jogador etc.) e iniciando uma sessão de jogo.
-
Grupo de usuários e cliente do Amazon Cognito para permitir que os jogadores se autentiquem e iniciem um jogo.
-
Autorizador de Gateway de API que vincula o grupo de usuários às APIs.
-
Lista de controle de acesso (ACL) à web para controle de utilização excessiva de jogadores para o API Gateway.
-
Serviço de backend para fazer solicitações ao serviço do Amazon GameLift Servers em nome de clientes de jogos, como solicitar sessões de jogos e participar de jogos:
-
Gateway de API + função do Lambda para os jogadores solicitarem um slot de sessão de jogo. Essa função é chamada
StartMatchmaking()se nenhuma entrada aberta estiver disponível. -
Gateway de API + função do Lambda para que os jogadores obtenham informações de conexão para sua solicitação de jogo.
-
-
Tabelas do DynamoDB para armazenar ingressos de criação de parcerias para jogadores e informações da sessão do jogo.
-
Tópico do Amazon SNS + Função do Lambda para lidar com eventos GameSessionQueue.
Implantar frota de contêiner
Quando a configuração da frota estiver concluída, escolha o botão Implantar frota de contêineres para iniciar a implantação. Esse processo pode levar vários minutos enquanto o plug-in cria uma imagem de contêiner e a envia para o ECR, provisiona recursos de hospedagem para a frota de contêineres, implanta a frota e outros recursos da AWS para o cenário de solução de hospedagem selecionado.
Ao iniciar uma implantação, você poderá acompanhar o andamento de cada etapa. Dependendo da configuração, as etapas podem incluir as seguintes:
Configurando imagem de contêiner
Criação de um repositório do Amazon ECR
Como criar uma imagem e enviar para o Amazon ECR
Criar uma definição de grupo de contêineres
Criar uma frota de contêineres
Para obter informações de implantação mais detalhadas, escolha Exibir no console de gerenciamento da AWS. Quando a frota de contêineres atinge o status é ACTIVE, a frota está executando ativamente contêineres com processos de servidor prontos para hospedar sessões de jogo.
Quando a implantação estiver concluída, você terá uma frota de contêineres em funcionamento pronta para hospedar sessões de jogo e aceitar conexões de jogadores.
Você não pode interromper uma implantação em andamento. Se a implantação entrar em um estado ruim ou falhar, você poderá recomeçar usando a opção Redefinir implantação.
Iniciar um cliente
Neste ponto, você concluiu todas as tarefas para iniciar e jogar o jogo multijogador hospedado com o Amazon GameLift Servers. Para jogar seu jogo, escolha Start Client para iniciar uma instância local do seu cliente de jogo.
-
Se você implantou o cenário de frota única, abra uma instância de seu cliente de jogo com um jogador e insira o mapa do servidor para se movimentar. Você pode abrir uma segunda instância do cliente do jogo para adicionar um segundo jogador ao mesmo mapa de jogo do servidor.
-
Se você implantou o cenário do FlexMatch, a solução de hospedagem espera que pelo menos dois clientes do jogo façam solicitações de criação de partidas. Abra pelo menos duas instâncias do seu cliente de jogo com um jogador. Os dois jogadores serão emparelhados e solicitados a participar de uma sessão de jogo para a partida.
Atualizar uma frota de contêineres
Se você implantou com sucesso uma solução de hospedagem de contêineres gerenciados, poderá usar o recurso Atualizar implantação. Essa opção permite que você atualize as configurações de uma frota de contêineres implantada, sem precisar criar uma nova frota.
Ao atualizar uma implantação, você pode implantar uma imagem de contêiner com uma versão de servidor de jogo diferente, alterar o repositório do Amazon ECR, escolher um cenário de implantação diferente e personalizar as configurações opcionais.
Quando estiver pronto para implantar suas alterações, escolha Atualizar. O tempo necessário para uma atualização de implantação é semelhante ao de uma implantação completa. Para obter informações de implantação detalhadas, escolha Exibir no console de gerenciamento da AWS.
Limpe os recursos implantados
Como prática recomendada, limpe os recursos da AWS de sua solução de contêineres gerenciados assim que você não precisar mais deles. Você poderá continuar incorrendo em custos com esses recursos se não removê-los.
Exclua os recursos a seguir:
Pilha gerenciada de recursos de contêineres. Os recursos nessa pilha dependem do cenário de implantação selecionado. Para excluir a pilha inteira, use o console do CloudFormation. As pilhas geradas a partir do plug-in do Amazon GameLift Servers usam a seguinte convenção de nomenclatura:
GameLiftPluginForUnreal-{GameName}-Containers. Aguarde a conclusão do processo de exclusão da pilha antes de iniciar uma nova implantação de contêineres gerenciados no plug-in. Para obter mais informações, consulte Excluir uma pilha no console do CloudFormation.Repositório do Amazon ECR Se você usou o plug-in para criar um repositório para sua imagem de contêiner, talvez queira excluir os repositórios que não são mais necessários. Não é preciso excluir um repositório antes de redefinir uma implantação de contêiner gerenciado. Se você atualizar ou redefinir uma implantação, o plug-in usará automaticamente o mesmo repositório, a menos que seja orientado a usar outro. Para maiores informações, veja Excluindo um repositório privado no Amazon ECR.