Plug-in para Unity: implante o jogo em uma frota do EC2 gerenciada
Nesse fluxo de trabalho, use o plug-in para preparar seu jogo para hospedagem em recursos computacionais baseados em nuvem gerenciados pelo Amazon GameLift Servers. Você adiciona o código de jogo do cliente e do servidor para a funcionalidade do Amazon GameLift Servers e, em seguida, carrega a compilação do servidor para o serviço do Amazon GameLift Servers para hospedagem. Quando esse fluxo de trabalho estiver concluído, você terá servidores de jogo em execução na nuvem e um cliente de jogo funcional que pode se conectar a eles.
Para iniciar o fluxo de trabalho gerenciado do Amazon GameLift Servers no Amazon EC2:
No menu principal do editor Unity, escolha Amazon GameLift Servers e selecione Host com EC2 gerenciado. Este fluxo de trabalho apresenta um processo de seis etapas para integrar, compilar, implantar e iniciar os componentes do jogo.
Definir seu 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 que você cria 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.
-
Selecione um perfil na lista suspensa de perfis disponíveis. Se você ainda não tem um perfil ou deseja criar um, acesse o menu Amazon GameLift Servers e escolha Definir perfis de conta da AWS.
-
Se o status do bootstrap não for “Ativo”, escolha o perfil do Bootstrap e espere que o status mude para “Ativo”.
Integrar seu jogo com o Amazon GameLift Servers
Nessa tarefa, você atualizará o código do cliente e do servidor em seu projeto de jogo.
-
Os servidores de jogos devem se comunicar com o serviço do Amazon GameLift Servers para receber prompts para iniciar uma sessão de jogo, fornecer informações de conexão da sessão e relatar o status.
-
Os clientes do jogo devem obter informações sobre sessões de jogo, entrar ou iniciar sessões e obter informações de conexão para entrar em um jogo.
nota
Se você importou o jogo de exemplo, poderá ignorar esta etapa. Os ativos do jogo de exemplo já têm o código necessário para o servidor e o cliente.
Integrar o código do servidor
Ao usar seu próprio projeto de jogo com cenas personalizadas, use o código de exemplo fornecido para adicionar o código de servidor necessário ao seu projeto de jogo. Se integrou o projeto de jogo para testes com uma frota Anywhere, você já concluiu as instruções nesta etapa.
-
Nos arquivos do seu projeto de jogo, abra a pasta
Assets/Scripts/Server. Se não existir, crie-a. -
Acesse o repositório do GitHub aws/amazon-gamelift-plugin-unity
e abra o caminho Samples~/SampleGame/Assets/Scripts/Server. -
Localize o arquivo
GameLiftServer.cse copie-o para a pastaServerdo projeto de jogo. Ao compilar um executável de servidor, use esse arquivo como destino da compilação.
O código de exemplo inclui esses elementos mínimos necessários, que usam o SDK (versão 5) do servidor do Amazon GameLift Servers em C#:
-
Inicializa um cliente da API do Amazon GameLift Servers. A chamada InitSDK() com os parâmetros do servidor é necessária para uma frota do Anywhere do Amazon GameLift Servers. Essas configurações são definidas automaticamente para uso no plug-in.
-
Implementa funções de retorno de chamada exigidas para responder às solicitações do serviço do Amazon GameLift Servers, inclusive
OnStartGameSession,OnProcessTerminateeonHealthCheck. -
Chama
ProcessReady()para uma porta designada para notificar o serviço do Amazon GameLift Servers quando o processo do servidor estiver pronto para hospedar sessões de jogo.
Se quiser personalizar o código do servidor de exemplo, consulte estes recursos:
Integrar o código do cliente
Para clientes de jogo que se conectam a servidores de jogos baseados na nuvem, é uma prática recomendada usar um serviço backend do lado do cliente para fazer chamadas para o serviço do Amazon GameLift Servers, em vez de fazer as chamadas diretamente do cliente do jogo.
No fluxo de trabalho do plug-in para hospedagem em uma frota EC2 gerenciada, cada cenário de implantação inclui um serviço backend pré-criado que inclui os seguintes componentes:
-
Um conjunto de funções do Lambda e tabelas do DynamoDB usadas para solicitar sessões de jogo e recuperar informações sobre sessões de jogo. Esses componentes usam um gateway da API como proxy.
-
Um grupo de usuários do Amazon Cognito que gera IDs de jogadores exclusivos e autentica conexões de jogadores.
Para usar esses componentes, o cliente de jogo precisa da funcionalidade de enviar solicitações ao serviço backend para fazer o seguinte:
-
Criar um usuário jogador no grupo de usuários do AWS Cognito e autenticar.
-
Entrar em uma sessão de jogo e receber informações de conexão.
-
Entrar em um jogo usando criação de partidas.
Use os recursos a seguir como guia.
-
Integre o cliente com a classe GameLiftCoreApi
no repositório aws/amazon-gamelift-plugin-unity no GitHub. Essa classe fornece controles para autenticação do jogador e para recuperar informações de sessões de jogo. -
Para ver os exemplos de integrações de jogos, acesse o repositório aws/amazon-gamelift-plugin-unity
do GitHub, Samples~/SampleGame/Assets/Scripts/Client/GameLiftClient.cs. -
Integre a funcionalidade do cliente de jogos do Amazon GameLift Servers.
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 seu servidor de jogo em uma única frota de recursos de hospedagem na região padrão da AWS 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 criação de partidas do FlexMatch e conjunto de regras de criação de partidas 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.
Definir parâmetros de jogo
Nesta etapa, você descreve seu jogo para o qual fazer o upload da AWS.
-
Nome do jogo: forneça um nome significativo para o projeto de jogo. Esse nome é usado dentro do plug-in.
-
Nome da frota: forneça um nome significativo para a frota EC2 gerenciada. O Amazon GameLift Servers usa esse nome (junto com o ID da frota) ao listar recursos no console do AWS.
-
Nome da compilação: forneça um nome significativo para a compilação do servidor. A AWS usa esse nome para se referir à cópia da compilação do servidor que foi enviada ao Amazon GameLift Servers e usada nas implantações.
-
Parâmetros de inicialização: insira instruções opcionais para serem executadas ao iniciar o executável do servidor em uma instância de frota EC2 gerenciada. O tamanho máximo é de 1024 caracteres.
-
Pasta do servidor do jogo: forneça o caminho para uma pasta local contendo a compilação do servidor.
-
Arquivo do servidor do jogo: especifique o nome do arquivo executável do servidor.
Implantar um 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.
Iniciar o cliente do jogo
Quando sua frota for implantada com sucesso, você terá servidores de jogos em execução e disponíveis para hospedar sessões de jogo. Agora você pode compilar o cliente, iniciá-lo, conectar-se para participar da sessão do jogo.
-
Configure o cliente do jogo. Nesta etapa, você solicita que o plug-in atualize um ativo
GameLiftClientSettingspara o projeto de jogo. O plug-in usa esse recurso para armazenar determinadas informações que o cliente de jogo precisa para se conectar ao serviço do Amazon GameLift Servers.-
Se você não importou nem inicializou o jogo de exemplo, crie um ativo
GameLiftClientSettings. No menu principal do editor do Unity, escolha Ativos, Criar, Amazon GameLift, Configurações do cliente. Se você criar várias cópias doGameLiftClientSettingsno projeto, o plug-in detectará isso automaticamente e notificará qual ativo será atualizado. -
Em Iniciar o jogo, escolha Configurar cliente: aplicar configurações do EC2 gerenciadas. Essa ação atualiza as configurações do cliente do jogo para usar a frota EC2 gerenciada que você acabou de implantar.
-
-
Compile o cliente do jogo. Compile um executável de cliente usando o processo de compilação padrão do Unity. Em Arquivo, Configurações de compilação, altere a plataforma para Windows, Mac, Linux. Se você importou o jogo de exemplo e inicializou as configurações, a lista de compilações e o destino da compilação serão atualizados automaticamente.
-
Inicie o executável recém-criado do cliente do jogo. Para começar a jogar, inicie de duas a quatro instâncias do cliente e use a interface de usuário em cada uma para participar de uma sessão de jogo.
Se estiver usando o cliente de jogo de exemplo, ele tem as seguintes características:
-
Um componente de login do jogador. Ao se conectar a um servidor de jogo em uma frota Anywhere, não há validação do jogador. Você poderá inserir qualquer valor para entrar na sessão do jogo.
-
Uma interface de usuário simples para entrar no jogo. Quando um cliente tenta entrar em um jogo, ele procura automaticamente por uma sessão de jogo ativa com uma vaga de jogador disponível. Se nenhuma sessão de jogo estiver disponível, o cliente solicitará uma nova sessão de jogo. Se uma sessão de jogo estiver disponível, o cliente solicitará entrar na sessão de jogo disponível. Quando testar o jogo com vários clientes simultâneos, o primeiro cliente inicia a sessão do jogo, e os clientes restantes ingressam automaticamente na sessão de jogo existente.
-
Sessões de jogo com quatro vagas para jogadores. Você pode iniciar até quatro instâncias de clientes de jogo simultaneamente, e elas entrarão na mesma sessão de jogo.