Integre o gateway do jogador em um jogo - Amazon GameLift Servers

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

Integre o gateway do jogador em um jogo

Depois de criar uma frota habilitada para o Player Gateway, você deve atualizar o cliente e o back-end do jogo para integrá-los ao Player Gateway. O back-end do jogo recupera os endpoints de retransmissão e os tokens do gateway do jogador e os fornece aos clientes do jogo. Os clientes de jogos enviam todo o tráfego UDP para esses endpoints de retransmissão.

A integração segue esse caminho de chamada:

  1. Seu back-end do jogo chama a GetPlayerConnectionDetails API para recuperar endpoints de retransmissão e tokens de gateway de jogador para cada jogador em uma sessão de jogo.

  2. O back-end do seu jogo envia os endpoints de retransmissão e os tokens do gateway do jogador para o cliente do jogo.

  3. Seu cliente de jogo anexa o token do gateway do jogador a todos os pacotes UDP de saída e envia os pacotes para os terminais de retransmissão.

  4. A rede de retransmissão valida o token do gateway do jogador e direciona o tráfego para o servidor do jogo.

  5. Seu servidor de jogo envia tráfego de volta ao seu cliente de jogo pelos mesmos caminhos de retransmissão.

Integração de back-end

O back-end do seu jogo deve chamar a GetPlayerConnectionDetails API para recuperar endpoints de retransmissão e tokens de gateway de jogador para os jogadores. O back-end então fornece essas informações aos clientes do jogo.

GetPlayerConnectionDetails API

A GetPlayerConnectionDetails API retorna detalhes de conexão para jogadores em uma sessão de jogo:

Endpoints e tokens de retransmissão

Quando o gateway do jogador está ativado e suportado no local, retorna:

  • Endpoints de retransmissão — Vários endpoints de retransmissão (endereço IP e porta) que variam entre os jogadores

  • Token de gateway do jogador — Token que o cliente deve anexar a todos os pacotes UDP (válido por pelo menos 3 minutos)

  • Expiração — Data e hora de expiração do token do Player Gateway

Conexão direta

Quando o gateway do jogador não está habilitado ou não é suportado no local, retorna o endereço IP e a porta do servidor do jogo

Seu cliente de jogo deve ser projetado para lidar com os dois tipos de conexão.

Exemplo de chamada de API:

// C++ example using AWS SDK Aws::GameLift::GameLiftClient client; Aws::GameLift::Model::GetPlayerConnectionDetailsRequest request; request.SetGameSessionId(gameSessionId); request.SetPlayerIds(playerIds); // Vector of player IDs auto outcome = client.GetPlayerConnectionDetails(request); if (outcome.IsSuccess()) { auto result = outcome.GetResult(); auto connectionDetails = result.GetPlayerConnectionDetails(); // Process each player's connection details for (const auto& detail : connectionDetails) { std::string playerId = detail.GetPlayerId(); // Get relay endpoints (IP address and port) auto endpoints = detail.GetEndpoints(); for (const auto& endpoint : endpoints) { std::string ipAddress = endpoint.GetIpAddress(); int port = endpoint.GetPort(); } // Get player gateway token auto token = detail.GetPlayerGatewayToken(); // Get expiration time auto expiration = detail.GetExpiration(); // Send endpoints and token to game client } }

Veja GetPlayerConnectionDetailsna Referência da Amazon GameLift Servers API.

Atualize os endpoints de retransmissão

Ligue GetPlayerConnectionDetails periodicamente para fornecer aos jogadores endpoints atualizados quando os endpoints de retransmissão ficarem insalubres. Recomendamos chamar a API a cada 60 segundos para todos os jogadores em uma sessão de jogo. Para otimizar o uso da API, agrupe vários jogadores IDs em uma única chamada de API.

Importante

Chamadas de atualização regulares são o principal mecanismo para fornecer endpoints atualizados aos jogadores. Embora os tokens do gateway do jogador permaneçam válidos por pelo menos 3 minutos, a atualização a cada 60 segundos garante que os jogadores recebam endpoints atualizados regularmente.

Integração com o cliente

Seu cliente de jogo deve anexar os tokens do gateway do jogador a todos os pacotes UDP de saída e enviar os pacotes para os terminais de retransmissão fornecidos. O SDK Amazon GameLift Servers do cliente para C++ e Unreal Engine fornece utilitários para simplificar essa integração.

Requisitos do cliente

Para rotear o tráfego pelo gateway do jogador, seu cliente de jogo deve:

  • Anexar tokens do gateway do player — Prefixe o token do gateway do player a todos os pacotes UDP de saída. Os tokens do Player Gateway não devem ser criptografados e devem aparecer no início de cada pacote. Pacotes sem um token de gateway de jogador válido serão descartados.

  • Enviar para terminais de retransmissão — Envie todos os pacotes UDP para os pontos finais de retransmissão fornecidos.

  • Manter a atividade de conexão — Certifique-se de que o cliente do jogo envie um pacote para o servidor do jogo ou que o servidor do jogo envie um pacote para o jogador, pelo menos uma vez a cada 30 segundos. Essa atividade mantém a conexão por meio da rede de retransmissão.

  • Gerencie atualizações de endpoints — aceite endpoints de retransmissão e tokens de gateway de player atualizados do seu back-end (recomendado a cada 60 segundos) e faça a transição para novos endpoints sem interromper a conexão.

SDK do cliente

O SDK Amazon GameLift Servers do cliente para C++ e Unreal Engine fornece utilitários para simplificar a integração do player gateway:

  • Gerenciamento de tokens — Anexa os tokens do gateway do player a todos os pacotes UDP de saída.

  • Seleção de endpoint — encaminha o tráfego para retransmitir endpoints usando um algoritmo configurável.

  • Atualização do endpoint — programa retornos de chamada periódicos para recuperar endpoints de retransmissão e tokens de gateway de player atualizados do seu back-end.

Algoritmos de seleção de terminais

O SDK do cliente fornece dois algoritmos integrados para selecionar qual endpoint de retransmissão usar:

Algoritmo de fallback

Usa um endpoint até que ele se torne insalubre e, em seguida, alterna para outro endpoint. Ideal para menus, lobbies e jogos baseados em turnos, onde breves interrupções são aceitáveis. Durante o failover do endpoint, os pacotes podem ser perdidos durante o período de tempo limite configurado (padrão: 2 segundos).

Algoritmo de rotação preditiva

Percorre continuamente todos os endpoints disponíveis e prevê falhas antes que elas ocorram. Ideal para jogabilidade em tempo real, como jogos de tiro em primeira pessoa e jogos de corrida, onde a entrega consistente de pacotes é fundamental. Requer que o servidor do jogo envie mensagens com uma frequência consistente.

Você também pode implementar algoritmos personalizados estendendo a classe de algoritmo base do SDK.

Recursos do SDK do cliente

Para obter instruções completas de integração e exemplos de código, consulte os seguintes recursos:

C++

Um SDK do cliente para C++ está Amazon GameLift Serversdisponível no SDK do cliente para C++.

Unreal Engine

Um plug-in para o Unreal Engine está disponível no SDK Amazon GameLift Servers do cliente para o Unreal Engine. O acesso requer ser membro da organização Epic Games em GitHub. Consulte Unreal Engine ativado GitHub para obter detalhes.

Teste a integração

Antes de implantar em uma frota, teste sua integração com o Player Gateway localmente usando a ferramenta de teste Player Gateway. Essa ferramenta simula a infraestrutura de proxy UDP do gateway do player e ajuda você a verificar se o cliente do jogo insere corretamente os tokens do gateway do player, roteia o tráfego por meio de vários endpoints e lida com a degradação da rede.

Para obter instruções de configuração e uso, consulte o aplicativo de teste do player gateway em GitHub.

Práticas recomendadas

Siga estas melhores práticas ao integrar o Player Gateway:

  • Atualize endpoints a cada 60 segundos — Ligue a GetPlayerConnectionDetails cada 60 segundos para garantir que os jogadores recebam endpoints atualizados regularmente.

  • Chamadas de API em lote — Ao chamar GetPlayerConnectionDetails vários jogadores na mesma sessão de jogo, agrupe as chamadas para reduzir a sobrecarga da API.

  • Mantenha a atividade de conexão — Certifique-se de que o tráfego flua entre o cliente do jogo e o servidor do jogo pelo menos uma vez a cada 30 segundos. Isso pode ser qualquer um client-to-server ou server-to-client o tráfego.

  • Gerencie as atualizações de endpoints com elegância — Quando seu cliente de jogo recebe endpoints atualizados do back-end, faça a transição para os novos endpoints sem interromper a conexão do jogador.

  • Escolha o algoritmo certo — Selecione o algoritmo de seleção de endpoint que melhor atenda aos requisitos do seu jogo. Use o algoritmo de fallback para jogos baseados em turnos e o algoritmo de rotação preditiva para jogos em tempo real.