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á.
Sinalizadores de ping UDP do Amazon GameLift Servers
Os sinalizadores de ping UDP fornecem uma maneira de medir a latência da rede entre os dispositivos dos jogadores e os locais de hospedagem do Amazon GameLift Servers. Com sinalizadores de ping, você pode coletar dados de latência precisos para tomar decisões informadas sobre o posicionamento do servidor do jogo e melhorar a combinação de jogadores com base nos requisitos de latência.
Como funcionam os sinalizadores de ping UDP
O Amazon GameLift Servers fornece endpoints UDP fixos (sinalizadores de ping) em cada local de hospedagem onde você pode implantar servidores de jogos. Como a maioria dos servidores de jogos se comunica usando UDP, medir a latência com sinalizadores de ping UDP fornece resultados mais precisos do que usando pings ICMP. Os dispositivos de rede geralmente lidam com pacotes ICMP de forma diferente dos pacotes UDP, o que pode levar a medições de latência que não refletem o verdadeiro desempenho que seus jogadores experimentarão.
Com sinalizadores de ping UDP, seu cliente de jogo pode enviar mensagens UDP para esses endpoints e receber respostas assíncronas, fornecendo medidas de latência que representam melhor as condições reais de tráfego do jogo entre o dispositivo de um jogador e possíveis locais de hospedagem. Os endpoints são permanentes e permanecem disponíveis desde que o Amazon GameLift Servers ofereça suporte à hospedagem de jogos nesse local.
Casos de uso comuns para sinalizadores de ping UDP
Você pode usar sinalizadores de ping UDP de várias maneiras para otimizar a experiência de rede do seu jogo.
Escolhendo os locais de hospedagem ideais
Colete dados de latência em diferentes regiões geográficas para identificar os melhores locais primários e de backup para hospedar servidores de jogos para sua base de jogadores.
Colocar sessões de jogo com base na latência do jogador
Inclua dados de latência do jogador ao solicitar novas sessões de jogo para ajudar a escolher locais que ofereçam a experiência de menor latência.
Otimizando a criação de partidas com base na latência
Forneça dados de latência do jogador ao solicitar a criação de partidas para ajudar a combinar jogadores com perfis de latência semelhantes e colocar as sessões de jogo em locais ideais para jogadores pareados.
nota
Ao criar solicitações de criação de partidas, você não deve fornecer informações de latência para locais onde você não tem frotas. Se você fizer isso, o Amazon GameLift Servers pode tentar colocar a sessão do jogo em locais onde não há capacidade da frota, resultando em falhas na solicitação de criação de partidas.
Obtenção de endpoints de sinalizador
Para recuperar informações do domínio e da porta do sinalizador de ping para locais Amazon GameLift Servers, use a operação da API ListLocations. O conjunto de locais retornados por essa API depende da Região da AWS que você especifica ao chamá-la (ou da sua região padrão, se você não especificar uma). Quando você chama de:
-
Uma região de origem de uma frota que suporta vários locais: a API retorna informações de todos os locais de hospedagem
-
Uma região de origem de uma frota que suporta um só local: a API retorna informações para aquele local
Observe que, se você chamar essa API usando um local que só pode ser remoto em uma frota multilocal, a API retornará um erro porque esse tipo de local não tem um endpoint de serviço.
Consulte a tabela de locais compatíveis em AWS Localizações suportadas para identificar as regiões de origem que oferecem suporte a frotas de um ou vários locais.
Exemplo
aws gamelift list-locations --region ap-northeast-2
Esta Região da AWS suporta frotas com vários locais, portanto, vários locais serão devolvidos. Veja o exemplo de um dos valores de retorno:
[...]
{
"LocationName": "ap-northeast-1",
"PingBeacon": {
"UDPEndpoint": {
"Domain": "gamelift-ping.ap-northeast-1.api.aws",
"Port": 7770
}
}
}
Importante
Armazene em cache as informações do sinalizador de ping em vez de chamar ListLocations antes de cada medição de latência. As informações do domínio e da porta são estáticas e a API não foi projetada para solicitações de alto volume.
Implementação de medidas de latência
Siga estas práticas recomendadas ao implementar medidas de latência usando sinalizadores de ping UDP:
-
Armazene as informações do sinalizador de ping usando uma dessas abordagens:
-
Codifique os endpoints do cliente do jogo.
-
Armazene as informações no backend do seu jogo.
-
Implemente um mecanismo de atualização periódica (diária/semanal) para atualizar as informações.
-
-
Envie mensagens de ping UDP:
-
Coloque o que quiser no corpo da mensagem, desde que não esteja vazio, e você manterá as mensagens abaixo do tamanho máximo de 300 bytes.
-
Observe os seguintes limites de tarifa para cada local:
-
Combinação de até 3 transações por segundo (endereço IP e porta) do remetente
-
1000 TPS por endereço IP exclusivo do remetente
-
-
-
Calcular a latência:
-
Envie vários pings para cada local para calcular uma latência média.
-
Considere enviar pings simultâneos para vários locais para obter resultados mais rápidos.
-
Use a lógica de repetição conforme necessário para enviar novos pacotes para qualquer pacote que não tenha sido devolvido em pouco tempo (normalmente de 1 a 3 segundos), pois o UDP não tem entrega 100% garantida.
-
Calcule a diferença de tempo entre enviar uma mensagem e receber a resposta.
-
Se uma grande parte dos pings UDP para um local consistentemente não obtiverem uma resposta, calcule a latência usando pings ICMP para nossos endpoints de serviço do Amazon GameLift Servers padrão como alternativa.
-
dica
Recomendamos que você inclua a porta 7770 sempre que documentar a lista de portas que seus players devem ter abertas na rede local. Esse é outro motivo pelo qual você deve ter um substituto para medir a latência (usando ICMP, por exemplo) caso essa porta esteja bloqueada.
Exemplos de código
Aqui estão alguns exemplos simples que mostram como enviar pings UDP e calcular a latência.