Plug-in para Unreal: implante o jogo em frotas do EC2 gerenciadas
Nesse fluxo de trabalho, você usa o plug-in para modificar seu jogo para hospedagem em recursos computacionais baseados em nuvem gerenciados pelo Amazon GameLift. Você adiciona o código de jogo do cliente e do servidor para a funcionalidade do Amazon GameLift e, em seguida, carrega a versão do seu servidor para o serviçodo Amazon GameLift para implantação nos recursos baseados na nuvem. Quando esse fluxo de trabalho estiver concluído, você terá um cliente de jogo funcional que poderá se conectar aos servidores de jogos na nuvem.
Para iniciar o fluxo de trabalho gerenciado do Amazon GameLift no Amazon EC2:
Na barra de ferramentas principal do editor do Unreal, escolha o menu do Amazon GameLift e selecione Host com EC2 gerenciado. Essa ação abre a página do plug-in Implantar o Amazon EC2 Fleet, que apresenta um processo de seis etapas para integrar, criar, implantar e lançar seus componentes do jogo.
Etapa 1: configure o perfil
Escolha o perfil que você deseja usar ao seguir esse fluxo de trabalho. O perfil selecionado afeta todas as etapas do fluxo de trabalho. Todos os recursos criados 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.
Como definir um perfil do usuário
-
Selecione um perfil na lista suspensa de perfis disponíveis. Se ainda não tem um perfil ou deseja criar um, acesse o menu do Amazon GameLift e escolha Definir perfis de usuário da AWS.
-
Se o status do bootstrap não for “Ativo”, escolha o perfil do Bootstrap e espere que o status mude para “Ativo”.
Etapa 2: configurar o código do jogo
Nesta etapa, você faz uma série de atualizações no código do cliente e do servidor para adicionar a funcionalidade de hospedagem. Se você ainda não configurou uma versão original do editor do Unreal, o plug-in fornecerá links para instruções e código-fonte.
Se você integrar seu jogo para uso com uma frota de Anywhere, você não precisa fazer nenhuma alteração no código do jogo. Se você estiver usando o mapa do jogo de startup, isso também funciona com implantações do EC2.
Depois de criar seu servidor de jogos, conclua as tarefas a seguir para prepará-lo para ser carregado no Amazon GameLift.
Para empacotar sua compilação de servidor para implantação na nuvem
Na pasta WindowsServer
em que o editor do Unreal empacota os arquivos de compilação do seu servidor por padrão, faça as seguintes adições
Copie o script de instalação, incluído no download do plug-in, na raiz da pasta
WindowsServer
. Procure o arquivo[project-name]/Plugins/Resources/CloudFormation/extra_server_resources/install.bat
. O Amazon GameLift usa esse arquivo para instalar o servidor criado em cada recurso de hospedagem do EC2.Copie o arquivo
VC_redist.x64.exe
, incluído na instalação do Visual Studio, na raiz da pastaWindowsServer
. Esse arquivo geralmente está localizado emC:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Redist/MSVC/v142
.Copie as DLLs do OpenSSL da sua compilação de servidor de jogos na pasta
WindowsServer/MyGame/Binaries/Win64
. Certifique-se de que as DLLs sejam da mesma versão usada na compilação do servidor. Copie os arquivos a seguir:libssl-3-x64.dll
libcrypto-3-x64.dll
Etapa 3: selecionar o cenário de implantação
Nesta etapa, você escolhe a solução de hospedagem de jogos que deseja implantar no momento. Você poderá ter várias implantações do seu jogo, usando qualquer um dos cenários.
Frota de região única: implanta o servidor de jogos em uma única frota de recursos de hospedagem na região da AWS padrão do perfil ativo. Esse cenário é um bom ponto de partida para testar a integração do servidor da AWS e a configuração de compilação do servidor. Ele implanta os seguintes recursos:
frota (sob demanda) da AWS com a versão do seu servidor de jogos instalada e em execução.
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.
WebACL para controle de utilização excessiva de jogadores para o gateway da API.
Gateway de API + função do Lambda para os jogadores solicitarem um slot de jogo. Essa função é chamada
CreateGameSession()
se nenhuma 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.
Frota do FlexMatch: implanta seu servidor de jogo em um conjunto de frotas e configura um marcador de jogos do FlexMatch com regras para criar partidas de jogadores. Este cenário usa hospedagem spot de baixo custo com uma estrutura de várias frotas e vários locais para uma disponibilidade duradoura. Esta abordagem é útil quando se está pronto para começar a projetar um componente de matchmaker para a solução de hospedagem. Nesse cenário, você criará os recursos básicos para essa solução, que poderão ser personalizados posteriormente, conforme necessário. Ele implanta os seguintes recursos:
Configuração de marcação de jogos do FlexMatch e conjunto de regras de marcação de jogos para aceitar solicitações de jogadores e formar partidas.
-
Três frotas da AWS com sua versão de servidor de jogo instalada e funcionando em vários locais. Inclui duas frotas spot e uma frota sob demanda como backup.
-
Fila de posicionamento de sessões de jogo da AWS 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.
-
WebACL para controle de utilização excessiva de jogadores para o gateway da API.
-
Gateway de API + função do Lambda para os jogadores solicitarem um slot de jogo. Esta função chama
StartMatchmaking()
. -
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 Amazon DynamoDB para armazenar ingressos de criação de parcerias para jogadores e informações da sessão do jogo.
-
Tópico do SNS + Função do Lambda para lidar com eventos GameSessionQueue.
Etapa 4: configurar parâmetros do jogo
Nesta etapa, você descreve o jogo para upload na AWS.
Nome da compilação do servidor: forneça um nome significativo para a compilação do servidor de jogos. A AWS usa esse nome para se referir à cópia da compilação do servidor, que é carregada e usada para implantações.
Sistema operacional de criação de servidor: insira o sistema operacional no qual o servidor foi criado para ser executado. Isso informa a AWS que tipo de recursos computacionais usar para hospedar seu jogo.
Pasta do servidor do jogo: identifique o caminho para a pasta de criação do servidor local.
Compilação do servidor de jogo: identifique o caminho para o executável do servidor de jogos.
Caminho do cliente do jogo: identifique o caminho para o executável do cliente do jogo.
Saída de configuração do cliente: esse campo precisa apontar para uma 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
.
Etapa 5: implantar o cenário
Nesta etapa, você implanta seu jogo em uma solução de hospedagem em nuvem com base no cenário de implantação escolhido. Esse processo pode levar vários minutos enquanto a AWS valida a compilação do servidor, provisiona recursos de hospedagem, instala o servidor de jogos, inicia os processos do servidor e os prepara para hospedar sessões de jogo.
Para iniciar a implantação, escolha Implantar CloudFormation. É possível acompanhar o status de sua hospedagem de jogos aqui. Para obter informações mais detalhadas, você pode entrar na AWS em console de gerenciamento da AWS e visualizar notificações de eventos. Certifique-se de fazer login usando a mesma conta, usuário e região da AWS, como perfil de usuário ativo no plug-in.
Quando a implantação estiver concluída, você terá seu servidor de jogos instalado em uma instância do EC2 da AWS. Pelo menos um processo do servidor está em execução e pronto para iniciar uma sessão de jogo.
Etapa 6: Inicializar o cliente
Neste ponto, você concluiu todas as tarefas necessárias para iniciar e jogar o jogo multijogador hospedado com o Amazon GameLift. Para jogar, inicie uma instância do seu cliente de jogo.
Se você implantou o cenário de frota única, poderá abrir uma única instância de cliente com um jogador, entrar no mapa do servidor e se movimentar. Abra instâncias adicionais 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 espera que pelo menos dois clientes sejam colocados na fila para o posicionamento da sessão de jogo antes que os jogadores possam entrar no mapa do servidor.