View a markdown version of this page

Hospedagem de servidor de jogos baseada em sessão com back-end sem servidor - 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á.

Hospedagem de servidor de jogos baseada em sessão com back-end sem servidor

Ao desenvolver uma arquitetura para seu jogo, considere os recursos e capacidades de que você precisa e o nível de sobrecarga de gerenciamento operacional que você está preparado para assumir. Para oferecer o melhor equilíbrio entre facilidade de operação e flexibilidade, você pode criar seu jogo usando serviços gerenciados de provedores de nuvem. Os serviços gerenciados oferecem a você o controle para desenvolver e personalizar seus próprios recursos de jogo personalizados, além de reduzir a carga de implantação e gerenciamento da infraestrutura.

Hospedar um jogo multijogador baseado em sessão requer uma infraestrutura de servidor para hospedar os processos do servidor do jogo, bem como um back-end escalável para matchmaking e gerenciamento de sessões. A arquitetura de referência a seguir mostra como a hospedagem GameLift gerenciada e um back-end sem servidor da Amazon podem ser usados para gerenciar seus jogos baseados em sessões.

Hospedagem GameLift gerenciada da Amazon para jogos baseados em sessões

Hospedagem GameLift gerenciada da Amazon para jogos baseados em sessões

O diagrama descreve o processo de fazer com que os jogadores entrem em jogos GameLift executados na hospedagem gerenciada de jogos. Inclui as seguintes etapas:

  1. O cliente do jogo solicita uma identidade do Amazon Cognito de um pool de identidades do Amazon Cognito. Opcionalmente, isso pode ser conectado a provedores de identidade externos.

  2. O cliente do jogo recebe credenciais de acesso temporárias e solicita uma sessão de jogo por meio de um Amazon API Gateway assinando a solicitação com as credenciais do Amazon Cognito.

  3. O API Gateway invoca uma AWS Lambda função.

  4. A função Lambda solicita dados do player de uma tabela do Amazon DynamoDB. A identidade do Amazon Cognito é usada para solicitar com segurança os dados corretos do jogador porque a identidade autenticada é fornecida nos dados de contexto da solicitação.

  5. Usando os dados corretos do jogador para obter informações adicionais (como o nível de habilidade do jogador), a função Lambda solicita uma partida por meio GameLift FlexMatch de matchmaking. Você pode definir uma configuração de FlexMatch matchmaking com documentos de configuração baseados em JSON. O cliente do jogo pode gerar métricas de latência fazendo ping nos endpoints do servidor em várias regiões, e os dados de latência podem ser usados para apoiar o matchmaking baseado em latência.

  6. Depois de FlexMatch combinar um grupo adequado de jogadores com latência adequada para uma região, ele solicita uma colocação na sessão de jogo por meio de uma GameLift fila. A fila contém frotas com uma ou mais localizações regionais registradas.

  7. Quando a sessão é colocada em um dos locais da frota, uma notificação de evento é enviada para um tópico do Amazon SNS.

  8. Uma função Lambda receberá o evento do Amazon SNS e o processará.

  9. Se a mensagem do Amazon SNS for um MatchmakingSucceeded evento, a função Lambda grava o resultado no DynamoDB com a porta do servidor e o endereço IP. Um valor time-to-live (TTL) é usado para garantir que os tickets de matchmaking sejam excluídos do DynamoDB quando não forem mais necessários.

  10. O cliente do jogo faz uma solicitação assinada ao API Gateway para verificar o status do tíquete de matchmaking em um intervalo específico.

  11. O API Gateway invoca uma função Lambda que verifica o status do ticket de matchmaking.

  12. A função Lambda verifica o DynamoDB para determinar se o ticket foi bem-sucedido. Se for bem-sucedida, a função Lambda envia o endereço IP, a porta e o ID da sessão do player de volta ao cliente. Se o ticket falhar, a função Lambda enviará uma resposta declarando que a partida não está pronta.

  13. O cliente do jogo se conecta ao servidor do jogo usando TCP ou UDP usando a porta e o endereço IP fornecidos pelo back-end. Ele envia o ID da sessão do jogador para o servidor do jogo, e o servidor do jogo o valida usando o Amazon GameLift Server SDK.

Como alternativa, você pode modificar a arquitetura anterior para usar o API Gateway WebSockets com a Amazon GameLift. Nessa abordagem, a comunicação entre o cliente do jogo e o serviço de back-end do jogo ocorre usando uma implementação WebSocket baseada. Essa implementação pode ser usada para que a função Lambda do backend do jogo inicie uma mensagem do lado do servidor para o cliente do jogo em vez de implementar WebSocket um modelo de pesquisa.