View a markdown version of this page

Definições - Lente da indústria de jogos

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á.

Definições

O AWS Well-Architected Framework é baseado em seis pilares: excelência operacional, segurança, confiabilidade, eficiência de desempenho, otimização de custos e sustentabilidade. AWS fornece vários componentes principais que permitem projetar state-of-the-art arquiteturas para suas cargas de trabalho de jogos. Nesta seção, apresentaremos uma visão geral das principais definições.

Para os fins deste paper, uma arquitetura de jogo engloba a infraestrutura técnica de back-end necessária para criar e operar um jogo. Alguns jogos podem não ter recursos sociais, multijogador ou outros recursos online e podem não exigir o uso de certos aspectos da infraestrutura técnica de back-end descritos neste paper. Para uma discussão detalhada dos diferentes tipos de cargas de trabalho que são frequentemente implantadas para dar suporte a uma arquitetura de jogo, consulte Cenários.

A Nuvem AWS infraestrutura é construída em torno de regiões e zonas de disponibilidade.

  • Uma região é um local físico no mundo em que temos várias zonas de disponibilidade.

  • As zonas de disponibilidade consistem em um ou mais data centers discretos, cada um com energia, rede e conectividade redundantes, alojados em instalações separadas.

Dependendo das características do seu jogo, talvez você queira implantar certos componentes da sua arquitetura de jogo em várias regiões por motivos como melhorar o desempenho dos jogadores ou oferecer experiências personalizadas aos jogadores, dependendo da localização.

Há muitos tipos diferentes de jogos, e a infraestrutura técnica de back-end necessária para suportar um jogo varia de acordo com o tipo de jogo que está sendo desenvolvido. Por exemplo, tipos populares de jogos podem incluir jogos de tiro em primeira pessoa (FPS), jogos de RPG (RPG), jogos online multijogador massivo (MMOG), battle royales (BR), jogos de esportes, jogos de quebra-cabeça e muito mais. Também existem diferentes modos de interação de jogo que influenciam a arquitetura do jogo, como jogo por turnos e simultâneo, com diferentes características de desempenho.

Os jogos são desenvolvidos para serem jogados em um ou mais sistemas de jogos, incluindo desktop, web, dispositivos móveis, consoles e modos de interação mais recentes, como realidade aumentada (AR), realidade virtual (VR) e soluções de streaming de jogos. Os jogos geralmente oferecem suporte à jogabilidade entre sistemas, o que significa que os jogadores podem salvar sua progressão no jogo e continuar a jogar em outros sistemas, bem como iniciar sessões de jogo com jogadores em outros sistemas.

A monetização de videogames permite que os editores de jogos gerem receita usando estratégias diferentes, como publicidade, compras de jogos digitais e de varejo, compras de conteúdo para download (DLC) no jogo, conhecidas como microtransações, e por meio de assinaturas pagas obrigatórias para jogar o jogo. Alguns dos principais indicadores de desempenho (KPIs) mais comuns na indústria de jogos incluem:

  • Usuários ativos diariamente (DAU)

  • Usuários ativos mensalmente (MAU)

  • Usuários simultâneos (CCU)

  • Duração da sessão

  • Custo por instalação (CPI)

  • Valor da vida útil do jogador (LTV)

  • Receita média por usuário (ARPU)

Sistema de jogo

Os videogames são desenvolvidos para serem jogados em um sistema de jogo que fornece controles de entrada ao cliente, gráficos, software cliente (conhecido como cliente do jogo) e hardware e, em alguns casos, recursos exclusivos do sistema para suportar a jogabilidade.

Os sistemas de jogos geralmente são separados nas seguintes categorias:

  • Consoles: sistemas de entretenimento desenvolvidos especificamente para jogos, incluindo exemplos populares como Sony, PlayStation Microsoft Xbox e Nintendo Switch. Os consoles oferecem a capacidade de jogar jogos instalando conteúdo físico ou distribuído digitalmente no hardware do console fabricado pelo fornecedor do sistema de jogos. Nessa definição, um console pode ser portátil ou estacionário e destinado a ser usado em um cenário de entretenimento doméstico.

  • Computador pessoal (PC): jogos que são jogados usando um software de computador instalado em uma máquina cliente que pode ser personalizado pelo jogador. Por esse motivo, os jogos para PC são populares entre os jogadores devido à flexibilidade e ao controle que oferecem.

  • Web: jogos projetados para serem jogados usando um navegador da Web e que geralmente oferecem o benefício de permitir que um jogador acesse o jogo independentemente do sistema operacional.

  • Celular: jogos desenvolvidos para serem jogados em um telefone celular, geralmente um sistema operacional de smartphone. Os jogos para celular geralmente são baixados de uma loja de aplicativos digitais e instalados no telefone.

Além dos sistemas mencionados anteriormente, também existem sistemas emergentes que ainda são relativamente novos e estão crescendo e têm uma participação de mercado muito menor em comparação com os sistemas mais predominantes. Exemplos de sistemas de jogos nessa categoria incluem AR, VR e streaming de jogos, às vezes chamados de jogos em nuvem.

O streaming de jogos envolve renderizar a jogabilidade na nuvem e transmitir para um thin client, normalmente um navegador. O streaming de jogos permite que um jogador jogue um jogo totalmente hospedado remotamente, normalmente na nuvem por um provedor de serviços de streaming de jogos. No streaming de jogos, o jogador se conecta a um jogo baseado em nuvem por meio de um navegador ou de um thin client fornecido pelo provedor de serviços de jogos em nuvem (sistema de jogos).

Servidor de jogos

Os servidores de jogos representam um dos aspectos mais importantes da infraestrutura computacional do seu jogo. Os servidores de jogos, às vezes chamados de servidores de jogos dedicados, são usados no desenvolvimento de um jogo multijogador ou quando é necessário o processamento autoritário de eventos de jogo pelo servidor. O servidor do jogo está no centro da arquitetura do jogo, servindo como o local onde a lógica central é executada, o que inclui o gerenciamento do jogador e do estado do jogo, bem como o gerenciamento das interações entre os clientes do jogo conectados e o servidor do jogo. O servidor de jogos geralmente é um dos aspectos mais sensíveis ao desempenho de uma arquitetura de jogo porque é responsável por processar as entradas do cliente de jogo de um jogador e distribuí-las adequadamente para outros jogadores conectados em tempo real. Um servidor de jogo com baixo desempenho afeta o desempenho geral da experiência de jogo. Portanto, você deve otimizar o desempenho do servidor de jogos e fornecer capacidade suficiente, especialmente no lançamento do jogo ou nos períodos de pico do jogo.

Para os fins deste documento, um servidor de jogos ou instância de servidor de jogos se refere à computação, como uma máquina virtual, que hospeda um ou mais processos do servidor de jogos. Um processo de servidor de jogos representa uma única instância da sua compilação de servidor de jogos hospedando uma sessão de jogo, que é uma instância do seu jogo em execução à qual os jogadores podem se conectar por meio de uma sessão de jogador. Por esse motivo, geralmente nos referimos ao processo do servidor do jogo ou à sessão do jogo de forma intercambiável devido à relação implícita de um para um entre uma sessão de jogo e o processo do servidor de jogo que a hospeda. Em AWS, há várias opções de computação para hospedar servidores de jogos, que fornecem acesso à capacidade escalável baseada em nuvem por meio do provisionamento elástico de recursos.

EC2 A Amazon fornece servidores virtuais baseados em nuvem, conhecidos como instâncias, com suporte para várias versões do Linux e do Windows. Você pode criar instâncias e gerenciá-las diretamente, como outro servidor ou máquina virtual. Normalmente, vários processos de servidor de jogos são implantados em uma instância para melhorar a eficiência e reduzir custos. EC2 A Amazon é uma boa opção para servidores de jogos se você deseja o máximo controle sobre a infraestrutura computacional.

GameLift A Amazon fornece uma solução totalmente gerenciada para hospedagem de servidores de jogos dedicados na nuvem, bem como recursos adicionais, como matchmaking com GameLift FlexMatch. GameLiftfornece uma camada de abstração sobre EC2 a Amazon para simplificar o gerenciamento de servidores de jogos e está disponível na maioria para que você Regiões da AWS possa hospedar servidores de jogos perto dos jogadores para reduzir a latência, obter alta disponibilidade e reduzir significativamente os custos usando instâncias spot. Embora GameLift possa ser integrado aos back-ends de jogos existentes, é especialmente útil para desenvolvedores de jogos que não desejam desenvolver suas próprias soluções de gerenciamento de servidores e matchmaking e preferem uma solução que seja gerenciada AWS e possa ser escalada à medida que o jogo cresce.

O Amazon Elastic Container Service (Amazon ECS) é um serviço de orquestração de contêineres totalmente gerenciado que você pode usar para executar contêineres baseados em Docker. Você também pode usar o Amazon Elastic Kubernetes Service (Amazon EKS) para executar contêineres baseados em Docker criados usando o Kubernetes. O uso de tecnologias de contêiner, como as fornecidas pelo Amazon ECS e pelo Amazon EKS, pode ajudá-lo a melhorar a utilização da computação ao agrupar com eficiência muitos processos de servidores de jogos ou outras instâncias de aplicativos de jogos em uma instância. EC2

O uso de contêineres também pode melhorar a produtividade do desenvolvedor hospedando aplicativos usando o mesmo tempo de execução operacional de imagem Docker usado pelos desenvolvedores em suas máquinas locais durante o desenvolvimento. Você pode reduzir ainda mais a sobrecarga operacional usando AWS Fargate, que é uma solução de computação sem servidor para executar contêineres e é compatível com o Amazon EKS e o Amazon ECS. O Fargate é mais adequado para casos de uso em que você deseja executar servidores de jogos em contêineres sem a responsabilidade de operar as instâncias subjacentes nas quais os contêineres são executados.

Você pode usar AWS Outposts para executar AWS infraestrutura e serviços em um data center ou instalação local, o que pode permitir que os jogos sejam executados em ambientes locais e AWS usar a mesma infraestrutura para apoiar uma estratégia de adoção da nuvem híbrida. AWS As Zonas Locais servem como extensões Regiões da AWS que permitem que seus servidores de jogos e outras cargas de trabalho sensíveis à latência funcionem mais perto de seus jogadores ou equipes de desenvolvimento. Além disso, para reduzir a latência da rede global para seus servidores de jogos, você pode usar o AWS Global Accelerator para melhorar o desempenho do tráfego de jogadores em seus servidores de jogos.

AWS Lambda é um serviço de computação sem servidor que executa código sem provisionar ou gerenciar servidores, o que o torna útil para casos de uso assíncronos de servidores de jogos, como jogos baseados em turnos ou aqueles que têm requisitos computacionais leves, uma pequena base de código e onde a funcionalidade de jogabilidade pode ser projetada usando uma arquitetura de microsserviços sem estado. É importante ter em mente que as funções do Lambda são executadas de forma orientada por eventos, por solicitação, em vez de executar um processo de servidor de jogos de longa duração. O Lambda fornece a maior abstração em tempo de execução das opções deste paper porque o aplicativo subjacente está prontamente disponível para os desenvolvedores escolherem hospedar seu código.

Ao selecionar sua abordagem para hospedagem de servidores de jogos, considere vários requisitos, incluindo sobrecarga operacional, bases de código antigas, requisitos de desempenho e escala. EC2instâncias e contêineres são boas opções para bases de código legadas, pois exigem a menor alteração para serem migradas para a nuvem, e você pode usar EC2 instâncias para dedicar os recursos de uma instância de computação, enquanto os contêineres podem simplificar o gerenciamento e a alta utilização. As funções sem servidor oferecem o mais alto nível de abstração, que você pode usar para definir um código que só é executado em resposta a eventos, o que pode reduzir custos.

Clientes de jogo

O cliente do jogo representa o dispositivo de software e hardware que o jogador usa para jogar um jogo. O cliente do jogo fornece o software para traduzir as entradas do jogador em mensagens que são enviadas a um servidor para processamento e é responsável por lidar com as respostas recebidas do servidor e renderizar saídas, como gráficos, para o jogador. Em jogos multijogador em rede em tempo real, o cliente do jogo geralmente mantém uma conexão de rede persistente com um servidor de jogo durante a sessão de jogo para reduzir a latência da rede e minimizar o tempo de processamento. No entanto, o cliente do jogo também pode interagir usando REST com um servidor de jogos ou serviços de back-end.

Sistema de mensagens

Normalmente, há três categorias principais de mensagens nos jogos: 

  • Mensagens de engajamento de jogadores direcionadas a um usuário específico ou grupo de usuários, como convites para jogos ou notificações push

  • Mensagens em grupo entre jogadores, como bate-papo no jogo

  • ervice-to-serviceMensagens S, como mensagens JSON usadas para integrar dois ou mais aplicativos

Uma estratégia comum para enviar e receber esses tipos de mensagens é usar padrões de arquitetura de processamento assíncrono e publicador-assinante. AWS fornece vários serviços que podem ajudá-lo a implementar mensagens em seu jogo.

  • Amazon Simple Notification Service (SNS): serviço gerenciado para entrega de mensagens entre editores e assinantes usando um padrão de arquitetura. pub/sub Os editores enviam mensagens usando uma API para o Amazon SNS, que entrega as mensagens de forma assíncrona aos aplicativos assinantes e pode entregar notificações push diretamente para clientes móveis ou desktops com suporte para alguns dos serviços de notificação push mais usados. O Amazon SNS pode ser usado para notificações push para clientes, bem como para casos de uso service-to-service de mensagens.

  • Amazon Simple Queue Service (SQS): um serviço de filas totalmente gerenciado que facilita a integração de servidores de jogos e seu jogo, independentemente da linguagem de programação usada em cada um. Muitas tarefas de jogos podem ser dissociadas e realizadas em segundo plano, como atualizar uma tabela de classificação ou valores de tempo de jogo em um banco de dados. Essa abordagem é uma forma eficaz de dissociar várias partes do jogo e escalar de forma independente os recursos voltados para o jogador do processamento de back-end.

  • Amazon Managed Streaming for Apache Kafka (MSK): um serviço totalmente gerenciado que simplifica a criação de streaming de dados e aplicativos para produtores ou consumidores usando o Apache Kafka, uma solução popular de código aberto. O Kafka é normalmente usado para ingerir e processar dados de streaming em tempo real e pode ser usado para enviar mensagens. service-to-service

  • Amazon ElastiCache (Redis OSS): fornece um armazenamento de dados na memória totalmente gerenciado que inclui suporte ao popular pub/sub recurso do Redis, comumente usado para desenvolver aplicativos de sala de bate-papo e mensagens de alto desempenho. service-to-service O Redis também oferece suporte a tipos de dados avançados, como listas e conjuntos, para que os desenvolvedores possam usar o Redis para enfileiramento de alto desempenho.

  • Amazon Pinpoint: fornece mensagens de engajamento do usuário por e-mail, SMS, voz e notificações push. Por exemplo, o Amazon Pinpoint pode ser usado para entregar mensagens de engajamento do usuário aos jogadores para convidá-los a voltar ao jogo e pode ser usado para casos de uso transacionais, como suporte a tokens de autenticação multifatorial, confirmações de pedidos e e-mails de redefinição de senha.

Operações de jogo ao vivo (Live Ops)

As operações de jogos ao vivo (Live Ops) são um estilo de gerenciamento e operações de jogos que trata um jogo como um serviço ao vivo e oferece continuamente novos recursos, atualizações, promoções, eventos no jogo e melhorias no jogo lançado para melhorar a experiência da comunidade de jogadores.

Tradicionalmente, os jogos eram entregues como produtos em vez de serviços, e novos conteúdos e recursos eram frequentemente incorporados em lançamentos ou sequências subsequentes, e não no produto lançado. Com uma abordagem Live Ops para gerenciamento de jogos, uma equipe de operações de jogos pode lançar um jogo e manter uma comunidade de jogadores engajada por meio de experimentação, promoções, eventos no jogo e inovação para manter os jogadores entretidos.

Embora essa abordagem tenha o benefício de desbloquear novas estratégias de engajamento de jogadores e fornecer fluxos de receita recorrentes, ela requer mais experiência operacional. Por exemplo, para implementar uma estratégia bem-sucedida de Live Ops, um desenvolvedor pode precisar se integrar aos serviços em nuvem ou operar sua própria infraestrutura técnica de back-end. Eles também precisam de uma forma eficaz de identificar e responder aos problemas que surgem no jogo ou na comunidade de jogadores, que podem impactar negativamente a experiência do jogador.