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á.
Arquitetura de back-end de jogos baseada em servidor
Muitos desenvolvedores de jogos não querem gerenciar a infraestrutura e, em vez disso, preferem criar seus jogos usando tecnologias que lhes permitam se concentrar no software. Uma arquitetura sem servidor é recomendada nesse cenário porque permite criar e liberar recursos mais rapidamente e com menos sobrecarga operacional. As arquiteturas sem servidor são projetadas usando serviços em nuvem que podem ser escalados dinamicamente com base na demanda, sem a necessidade de configurar, gerenciar e escalar servidores. A arquitetura de referência a seguir ilustra como criar um jogo usando uma arquitetura sem servidor.
Arquitetura de referência de back-end de jogos baseada em servidor
Essa arquitetura de referência ilustra um jogo de perguntas e respostas baseado na web que fornece recursos para um jogador e vários jogadores.
-
Autenticação do jogador: os jogadores se autenticam usando o Amazon Cognito, que fornece autenticação segura com um diretório de usuários para o gerenciamento da identidade do jogador.
-
Lógica do jogo como funções sem servidor: os recursos do jogo e a lógica de negócios de back-end são executados como AWS Lambda funções que são iniciadas em resposta a eventos, o que mantém os custos baixos porque você paga apenas quando a função é executada. O Lambda oferece a flexibilidade de escrever cada recurso do jogo como um microsserviço separado usando uma linguagem de programação de sua escolha. Por exemplo, você pode optar por desenvolver funções do.NET Lambda se tiver experiência no uso de C# para criar jogos Unity, ou pode optar por desenvolver funções Lambda do Node.js se desejar programar um front-end e um back-end para um jogo baseado na web em ambos. JavaScript
-
Armazenamento de dados NoSQL para dados de jogos e jogadores: use o DynamoDB para armazenar seus dados de jogadores e jogos, pois ele foi criado especificamente para armazenar grandes quantidades de dados de microsserviços. Conforme ilustrado nessa arquitetura, é uma prática recomendada usar armazenamentos de dados separados para as necessidades de armazenamento de dados de cada recurso do jogo, o que facilita o monitoramento e o gerenciamento dos recursos de forma independente. Isso também cria limites de separação se a propriedade de um recurso ou serviço mudar em sua equipe. Nessa arquitetura de referência, as tabelas do DynamoDB são usadas para armazenar dados como estado da conexão, detalhes do jogo, progresso do jogador e informações da tabela de classificação.
-
Jogabilidade para um jogador: os recursos para um jogador permitem que os jogadores realizem ações como selecionar e jogar um jogo e visualizar a tabela de classificação. Esses recursos são implementados como serviços de RESTful back-end hospedados com uma API HTTP do Amazon API Gateway que invoca a função Lambda apropriada para obter e definir dados nas tabelas do DynamoDB. Quando a jogabilidade termina, o back-end também envia notificações aos tópicos do Amazon SNS que iniciam as funções do Lambda de forma assíncrona para armazenar o progresso e as estatísticas do jogador.
-
Jogabilidade multijogador: os recursos do jogo multijogador exigem que os jogadores possam interagir com o jogo para se point-to-point comunicar, bem como transmitir e receber atualizações de outros jogadores conectados. Uma WebSockets implementação é adequada para point-to-point comunicação em um jogo leve, como curiosidades. Os jogadores podem estabelecer uma WebSockets conexão com o Amazon API Gateway WebSockets, que gerencia a conexão e só invoca as funções do Lambda quando há mensagens para enviar ou receber para um jogador. Para casos de uso em que a one-to-many comunicação é necessária entre jogadores, AWS IoT Core fornece suporte para o uso WebSockets de mensagens por meio do MQTT, o que permite que os clientes se inscrevam em tópicos e atuem de acordo com as mensagens recebidas. Nessa arquitetura, WebSockets mais de MQTT são usados para dar suporte a casos de uso, como transmitir atualizações ao vivo no jogo e fazer perguntas aos jogadores conectados. Como alternativa AWS IoT, você pode escolher Redis Pub/Sub para entrega de mensagens ou Redis Streams se precisar de retenção de mensagens.
-
Use funções Lambda habilitadas para VPC para acessar recursos em suas sub-redes privadas: configure funções Lambda habilitadas para VPC para acessar recursos nas sub-redes privadas da sua VPC, como a ElastiCache Amazon, que é usada para reduzir os tempos de consulta para conjuntos de dados de baixa latência, como tabelas de classificação ativas.
Para obter mais informações, consulte Orientações para hospedagem personalizada de back-end de jogos em AWS