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
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:
-
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.
-
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.
-
O API Gateway invoca uma AWS Lambda função.
-
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.
-
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.
-
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.
-
Quando a sessão é colocada em um dos locais da frota, uma notificação de evento é enviada para um tópico do Amazon SNS.
-
Uma função Lambda receberá o evento do Amazon SNS e o processará.
-
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.
-
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.
-
O API Gateway invoca uma função Lambda que verifica o status do ticket de matchmaking.
-
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.
-
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.