As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Roteiro de desenvolvimento para hospedagem híbrida com a Amazon GameLift
Este roteiro orienta você sobre como desenvolver uma solução de hospedagem para seu jogo multijogador. A Amazon GameLift oferece várias opções de hospedagem de jogos; para obter mais informações sobre essas opções, consulte GameLift Soluções da Amazon.
Uma solução híbrida usa uma combinação de recursos de hospedagem, incluindo recursos baseados em nuvem gerenciados pela Amazon GameLift e seus próprios recursos de hospedagem autogerenciados. Para uma discussão mais detalhada sobre hospedagem híbrida, consulte este artigo: Hospedagem híbrida de servidores de jogos com o Amazon GameLift Anywhere
Uma arquitetura híbrida consiste nos seguintes componentes:
-
Uma ou mais frotas GameLift gerenciadas pela Amazon, que usam instâncias do Amazon Elastic Compute Cloud EC2 (Amazon) otimizadas para hospedagem de jogos multijogador.
-
Uma ou mais frotas do Amazon GameLift Anywhere, que usam seus recursos locais existentes ou outros recursos de hospedagem, incluindo seu gerenciamento de configuração e ferramentas de implantação. (Opcionalmente, você pode usar AWS Systems Manager o.)
-
Um único servidor de jogo construído, integrado ao GameLift servidor da AmazonSDK, para implantação em todas as frotas.
-
Um único cliente de jogo e serviço de back-end, integrado ao AWS SDK, para interagir com o GameLift serviço da Amazon e solicitar sessões de jogo.
-
Uma GameLift fila compartilhada da Amazon para colocar novas sessões de jogo com os servidores de jogos disponíveis e equilibrar a carga em todas as frotas.
-
O Amazon GameLift Agent, que é implantado com uma frota Anywhere, para simplificar as tarefas de gerenciamento de processos do servidor em todos os computadores em todas as frotas.
-
(Opcional) Um FlexMatch matchmaker para criar partidas multijogador e configurar sessões de jogo para elas.
Este roteiro apresenta um caminho simplificado para colocar seu jogo multijogador em funcionamento com sucesso em uma solução de hospedagem híbrida com a Amazon. GameLift Depois de instalar os componentes necessários, você pode continuar a iterar no desenvolvimento de jogos e personalizar sua solução de hospedagem. À medida que você se aproxima do lançamento, consulte-os Preparando seu jogo para o lançamento com a GameLift hospedagem da Amazon para obter ajuda na preparação de sua solução de hospedagem para uso em nível de produção.
Comece com o GameLift plug-in da Amazon
Se você estiver desenvolvendo projetos com o Unreal Engine ou o Unity, comece a configurar seu jogo para hospedagem com o GameLift plug-in da Amazon. Com o plug-in, você pode adicionar a Amazon GameLift SDKs ao seu projeto de jogo e usar os fluxos de trabalho guiados para criar uma versão funcional simples de uma solução de hospedagem híbrida com uma frota Anywhere e uma frota GameLift gerenciada pela Amazon. Em seguida, você pode usar esses fundamentos para desenvolver e personalizar conforme necessário.
Adicione funcionalidade ao seu servidor de jogos para que ele possa se comunicar com o GameLift serviço da Amazon quando for implantado para hospedagem. A mesma funcionalidade é necessária se o servidor do jogo estiver sendo executado em uma frota GameLift gerenciada pela Amazon ou em uma frota Anywhere.
-
Obtenha o GameLift servidor Amazon SDK (versão 5.x) para seu projeto de jogo. O servidor SDK está disponível em C++, C# e Go. Faça o download de um GameLift servidor da Amazon SDK
. -
Modifique o código do servidor do jogo para adicionar a SDK funcionalidade do servidor. Para obter orientações, consulte Integre jogos com servidores de jogos personalizados. No mínimo, faça o seguinte:
-
Adicione código para inicializar a Amazon GameLift SDK e estabelecer uma WebSocket conexão com o GameLift serviço da Amazon. Use a SDK ação do servidor
InitSdk()
. Inclua código para especificar os parâmetros do servidor ao executar em uma computação de frota Anywhere. -
Adicione código para reportar ao GameLift serviço da Amazon quando o processo do servidor estiver pronto para hospedar sessões de jogo. Use a SDK ação do servidor
ProcessReady()
. -
Implemente as funções de retorno de chamada necessárias
OnRefreshConnection()
OnProcessTerminate()
, e.OnStartGameSession()
Com essas funções, os processos do servidor de jogos podem manter uma conexão com o GameLift serviço da Amazon, iniciar uma sessão de jogo quando solicitado pela Amazon GameLift e responder a uma solicitação para encerrar o processo do servidor de jogos. -
Adicione um código para reportar ao GameLift serviço da Amazon quando o processo do servidor estiver encerrando uma sessão de jogo. Use a SDK ação do servidor
ProcessEnding()
.
-
-
Package a versão do seu servidor de jogo. Crie um script de instalação com seus arquivos de compilação, dependências e software de suporte. Consulte Criar um pacote dos arquivos de compilação do jogo. Recomendamos usar um bucket do Amazon Simple Storage Service (Amazon S3) para armazenar versões da versão do seu jogo.
-
Teste sua integração com o servidor de jogos. Para essa tarefa, recomendamos configurar uma Amazon GameLift Anywhere frota com uma estação de trabalho local, conforme descrito emConfigure testes locais com a Amazon GameLift Anywhere. Para esta etapa, instale manualmente a versão do servidor de jogos no dispositivo de teste e inicie um processo no servidor. Use o AWS CLI para solicitar uma nova sessão de jogo e verificar se o GameLift serviço da Amazon solicita com sucesso que o processo do seu servidor inicie uma sessão de jogo.
Crie uma forma de seu cliente de jogo solicitar a participação em uma sessão de jogo, obter informações de conexão e, em seguida, conectar-se diretamente a uma sessão de jogo hospedada. A abordagem mais comum é configurar a funcionalidade do serviço de back-end que serve como intermediária entre o cliente do jogo e o serviço da Amazon. GameLift Essa abordagem protege seus recursos de hospedagem e oferece maior controle sobre como os jogadores são colocados nas sessões de jogo.
-
Crie uma funcionalidade de serviço de back-end para hospedagem. O serviço de back-end se comunica com o GameLift serviço da Amazon e entrega informações de conexão a um cliente do jogo. Essa funcionalidade inclui iniciar sessões de jogo, colocar jogadores em jogos e recuperar informações da sessão de jogo. Para obter orientações, consulte Integre jogos com servidores de jogos personalizados. No mínimo, faça o seguinte:
-
Adquira o AWS SDK para a Amazon GameLift e adicione-o ao seu projeto de serviço de back-end. Consulte os GameLift SDKrecursos da Amazon para serviços ao cliente.
-
Adicione código para inicializar um GameLift cliente Amazon e armazenar as configurações da chave. Consulte Configure a Amazon GameLift em um serviço de back-end.
-
Adicione funcionalidade para chamar a AWS SDK ação
CreateGameSession()
e fornecer informações de conexão da sessão de jogo a um cliente de jogo. Consulte Criar uma sessão de jogo em uma frota específica.Ligar
CreateGameSession()
é um ponto de partida conveniente para solicitar novas sessões de jogo. Depois de instalar um sistema de posicionamento de sessões de jogo (consulte a Etapa 3), você substituirá esse código por uma chamada paraStartGameSessionPlacement()
(ouStartMatchmaking()
se estiver usando FlexMatch).Para obter orientação sobre como projetar seu serviço de back-end, consulteProjete seu serviço de cliente de jogos.
-
-
Adicione funcionalidade ao seu cliente de jogo para permitir que os jogadores participem de uma sessão de jogo hospedada. O cliente do jogo faz solicitações para seu serviço de back-end, não diretamente para a Amazon GameLift. Depois que o serviço de back-end fornece as informações de conexão da sessão do jogo, o cliente do jogo se conecta diretamente à sessão do jogo para jogar o jogo.
-
Teste sua integração com o cliente do jogo. Você pode usar a mesma Amazon GameLift Anywhere frota com uma estação de trabalho local para testes.
Durante a fase de desenvolvimento, se você quiser testar como sua compilação de jogos se comporta em uma frota GameLift gerenciada pela Amazon, recomendamos que você também configure um ambiente de teste baseado em nuvem. Essa solução do Amazon GameLift Toolkit imita o comportamento de uma frota gerenciada, mas permite que você atualize as compilações de servidores de jogos com o mínimo de tempo de resposta.
Personalize como você deseja que GameLift a Amazon processe solicitações para uma nova sessão de jogo e localize os servidores de jogos disponíveis para hospedá-las. A Amazon rastreia GameLift automaticamente a disponibilidade de todos os servidores de jogos em todas as frotas. Quando um cliente de jogo envia uma solicitação para participar de uma sessão de jogo, a Amazon GameLift busca a “melhor colocação possível” com base em um conjunto de prioridades definidas, como latência, custo e disponibilidade mínimos.
-
Crie uma fila de sessões de jogo para colocar uma nova sessão de jogo nos servidores de jogos disponíveis. As filas são o principal mecanismo para a colocação de sessões de jogo. Para obter orientações, consulte Criar uma fila de sessões de jogo.
-
No mínimo, adicione suas frotas Anywhere como destinos em sua fila. Todas as outras configurações são personalizações opcionais.
-
-
Em seu código de serviço de back-end, converta a
CreateGameSession()
chamada emStartGameSessionPlacement()
. Consulte Criar uma sessão de jogo em uma fila de vários locais. -
Crie um mecanismo para notificar um cliente de jogo quando uma sessão de jogo estiver pronta para entrar. Durante o desenvolvimento, você pode pesquisar o status da sessão do jogo usando uma chamada para DescribeGameSessionPlacement. Antes de usar uma fila para processar grandes volumes, no entanto, você precisará ativar as notificações de eventos. Consulte Configurar notificações de eventos para o posicionamento de sessões de jogo.
-
(Opcional) Adicione componentes de FlexMatch matchmaking. Para obter orientação, consulte o guia do GameLift FlexMatch desenvolvedor da Amazon.
Até agora, você estava trabalhando com dispositivos locais (registrados como Anywhere fleet computes) para testar e iterar os componentes do seu jogo. A próxima etapa é configurar o tipo de frota que você precisará para um sistema de produção. Comece com uma frota Anywhere e adicione o Amazon GameLift Agent para gerenciar algumas das principais tarefas de gerenciamento de host no computador. Para obter mais detalhes, consulte Trabalhe com o GameLift agente da Amazon.
-
Obtenha o Amazon GameLift Agent e adicione-o ao pacote de instalação do seu servidor de jogos. Obtenha e crie o código-fonte do Agent, disponível no repositório Github do Amazon GameLift Agent
. Coloque o JAR arquivo executável resultante no mesmo diretório do executável de compilação do jogo. -
Modifique seu script de inicialização para o Agente conforme necessário. Certifique-se de que o executável do Agente seja iniciado assim que a computação começar a ser executada. Consulte o arquivo readme no repositório do Agente para obter ajuda na instalação e execução do Agente em seus computadores de hospedagem. Seu comando de inicialização deve incluir opções para especificar, no mínimo, o ID da frota Anywhere Região da AWS, um local personalizado e um nome de computação.
O Agente gerencia automaticamente as seguintes tarefas para você. Portanto, se você estiver lidando com essas tarefas com scripts, poderá removê-las:
-
Chamadas
RegisterCompute()
para adicionar a computação a uma frota Anywhere. -
Chamadas
GetComputeAuthToken()
para autenticar servidores de jogos quando eles se conectam ao GameLift serviço Amazon. O agente gerencia a obtenção e a atualização do token de autenticação, que pode ser usado por todos os processos do servidor de jogos em execução na computação. -
Inicia novos processos do servidor na computação com base em um conjunto de instruções de tempo de execução.
-
-
Crie uma configuração de tempo de execução para computadores em sua frota Anywhere. No mínimo, especifique o caminho de lançamento para o executável do seu servidor de jogos. Você pode usar o GameLift console da Amazon ou o AWS CLI para criar ou modificar instruções de tempo de execução para a frota. O agente executa essas instruções e solicita periodicamente atualizações do GameLift serviço da Amazon.
-
Configure ou modifique sua fila de sessões de jogo conforme necessário. Crie uma nova fila (ou atualize uma existente) e designe um destino para a frota Anywhere implantada com o Amazon Agent. GameLift
-
Teste a integração do agente com suas frotas Anywhere. Verifique se o Agente está iniciando corretamente os processos do servidor com base na configuração do tempo de execução.
Crie uma EC2 frota GameLift gerenciada pela Amazon para complementar sua frota Anywhere. Se você configurou um ambiente de teste baseado em nuvem na Etapa 2 para acelerar o desenvolvimento, planeje criar uma frota gerenciada depois de concluir a maior parte do desenvolvimento e teste do jogo. Você precisa de uma frota totalmente gerenciada para definir e testar configurações adicionais, como o escalonamento automático da capacidade.
-
Package a construção do seu servidor de jogo e faça o upload para a Amazon GameLift. Crie um script de instalação com seus arquivos de compilação, dependências e software de suporte. Você pode usar o mesmo software de compilação com suas frotas Anywhere e gerenciadas. Consulte Implemente uma criação de servidor personalizada para GameLift hospedagem na Amazon. Você pode enviar sua compilação para a Amazon GameLift usando o console ou AWS CLI o.
Antes de enviar sua construção, decida em que Região da AWS você deseja criar a frota gerenciada. Você deve fazer o upload da compilação para a mesma região. Para saber mais sobre como escolher a localização da frota, consulteLocalização da frota.
-
Crie uma EC2 frota gerenciada. Você pode usar o GameLift console da Amazon ou o AWS CLI para criar uma frota gerenciada. Quando você cria uma frota, a Amazon GameLift imediatamente começa a implantar sua versão de servidor de jogos para hospedagem. Você pode configurar vários aspectos de uma frota gerenciada. Para obter orientações, consulte Crie uma EC2 frota GameLift gerenciada pela Amazon. No mínimo, faça o seguinte:
-
Dê um nome à frota e especifique qual versão de jogo enviada deve ser implantada.
-
Escolha instâncias sob demanda para sua frota e selecione um tipo de instância que esteja disponível na localização da sua frota. As frotas spot são uma opção valiosa, mas exigem design e configuração adicionais.
-
Crie uma configuração de tempo de execução com configurações semelhantes às usadas com a frota Anywhere. No mínimo, especifique o caminho de lançamento para o executável do seu servidor de jogos.
-
Especifique as configurações de porta para permitir que o tráfego de entrada acesse seus servidores de jogos.
-
-
Adicione a frota gerenciada à sua fila de sessões de jogo compartilhadas. Atualize a fila da Etapa 4 para que ela inclua destinos tanto para a frota gerenciada quanto para a frota Anywhere implantada com o Amazon GameLift Agent.
-
Teste a hospedagem de jogos com suas frotas gerenciadas. Nesse ponto, você deve ser capaz de testar todo o ciclo de hospedagem, com um cliente de jogo solicitando uma sessão de jogo, obtendo informações de conexão e se conectando com sucesso a uma sessão de jogo.
Ao se preparar para o lançamento do jogo, você precisará ajustar suas soluções de hospedagem. Algumas das decisões a serem consideradas incluem:
-
Para frotas do Anywhere, automatize o processo de iniciar e desligar computadores conforme necessário, incluindo a instalação e execução de software de servidor de jogos. A reciclagem de computadores é útil para garantir que eles sejam atualizados regularmente, e desligá-los pode economizar custos quando não são necessários.
-
Se o servidor do jogo precisar comunicar outros AWS recursos, configure IAM funções para gerenciar o acesso. Consulte Comunique-se com outros AWS recursos de suas frotas.
-
Determine onde geograficamente você deseja posicionar os servidores do jogo. Adicione locais remotos às suas frotas gerenciadas. Consulte Guia de design para frotas gerenciadas.
-
Para frotas gerenciadas, considere usar frotas Spot para reduzir custos. Consulte Tutorial: Crie uma GameLift fila da Amazon com instâncias spot.
-
Otimize o desempenho da frota selecionando configurações de recursos computacionais e, em seguida, configure suas instruções de tempo de execução para executar o número ideal de processos de servidor por computação. Faça isso tanto para frotas Anywhere quanto para frotas gerenciadas. Consulte Gerencie como o Amazon GameLift lança servidores de jogos.
-
Experimente as opções de posicionamento de sessões de jogo para frotas gerenciadas, incluindo a personalização das configurações de priorização. Consulte Criar uma fila de sessões de jogo.
-
Para frotas gerenciadas, configure o escalonamento automático da capacidade para atender à demanda esperada dos jogadores. Consulte Escalando a capacidade de hospedagem de jogos com a Amazon GameLift.
-
Para frotas em qualquer lugar, crie mecanismos para lidar com o escalonamento de capacidade manual ou automatizado para atender à demanda esperada dos jogadores.
-
Projete e implemente o failover para outros recursos, se necessário. Configure frotas em espera em outras Regiões da AWS e modifique as filas e o escalonamento automático para lidar com failovers, se necessário.
-
Configure ferramentas de hospedagem de observabilidade, incluindo análises e registros. Consulte Monitorando a Amazon GameLift. Crie grupos de métricas para agregar análises para todos os seus recursos de hospedagem.
-
Automatize sua implantação usando infraestrutura como código (IaC). Consulte Gerenciando recursos GameLift de hospedagem da Amazon usando AWS CloudFormation.
A Amazon GameLift oferece suporte ao uso de AWS CloudFormation modelos para qualquer configuração específica de implantação. Você também pode usar o AWS Cloud Development Kit (AWS CDK) para definir seus GameLift recursos da Amazon. Para obter mais informações sobre o AWS CDK, consulte o Guia do AWS Cloud Development Kit (AWS CDK) desenvolvedor.
Para gerenciar a implantação de suas AWS CloudFormation pilhas, recomendamos o uso de ferramentas e serviços de integração contínua e entrega contínua (CI/CD), como. AWS CodePipeline Essas ferramentas ajudam você a implantar automaticamente ou com aprovação sempre que você cria um binário de servidor de jogos. Com uma ferramenta ou serviço de CI/CD, a implantação de recursos para uma nova versão do servidor de jogos pode ter a seguinte aparência:
-
Crie e teste o binário do seu servidor de jogos.
-
Faça o upload do binário para a Amazon GameLift.
-
Implante novas frotas com a nova construção.
-
Adicione as novas frotas à sua fila de sessões de jogo e remova as frotas com a versão de compilação anterior.
-
Quando as frotas com a versão anterior não estiverem mais hospedando sessões de jogo ativas, exclua as AWS CloudFormation pilhas dessas frotas.
-