Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Amazon GameLift ServersBalizas de ping UDP
Las balizas de ping UDP proporcionan una forma de medir la latencia de la red entre los dispositivos de los jugadores y las ubicaciones de Amazon GameLift Servers alojamiento. Con las balizas de ping, puedes recopilar datos de latencia precisos para tomar decisiones informadas sobre la ubicación de los servidores del juego y mejorar el emparejamiento de jugadores en función de los requisitos de latencia.
Cómo funcionan las balizas de ping UDP
Amazon GameLift Serversproporciona puntos finales UDP fijos (balizas de ping) en cada ubicación de alojamiento donde puedes implementar servidores de juegos. Como la mayoría de los servidores de juegos se comunican mediante UDP, medir la latencia con balizas de ping UDP proporciona resultados más precisos que con pings ICMP. Los dispositivos de red suelen gestionar los paquetes ICMP de forma diferente a los paquetes UDP, lo que puede provocar que las mediciones de latencia no reflejen el rendimiento real que experimentarán los jugadores.
Con las balizas de ping UDP, tu cliente de juego puede enviar mensajes UDP a estos puntos finales y recibir respuestas asíncronas, lo que te proporciona mediciones de latencia que representan mejor las condiciones reales del tráfico del juego entre el dispositivo del jugador y las posibles ubicaciones de alojamiento. Los puntos finales son permanentes y permanecen disponibles siempre que se pueda alojar el juego en esa ubicaciónAmazon GameLift Servers.
Casos de uso habituales de las balizas de ping UDP
Puedes usar las balizas de ping UDP de varias maneras para optimizar la experiencia de red de tu juego.
Elegir las ubicaciones de alojamiento óptimas
Recopila datos de latencia en diferentes regiones geográficas para identificar las mejores ubicaciones principales y de respaldo para alojar los servidores de juegos para tu base de jugadores.
Coloca las sesiones de juego en función de la latencia de los jugadores
Incluye los datos de latencia de los jugadores cuando solicites nuevas sesiones de juego para ayudarte a elegir las ubicaciones que ofrezcan la experiencia de latencia más baja.
Optimizar el emparejamiento en función de la latencia
Proporciona datos de latencia de los jugadores cuando solicites el emparejamiento para ayudar a emparejar a jugadores con perfiles de latencia similares y colocar las sesiones de juego en ubicaciones óptimas para los jugadores emparejados.
nota
Al crear solicitudes de emparejamiento, no debes proporcionar información de latencia a ubicaciones en las que no tengas flotas. Si lo haces, Amazon GameLift Servers podrías intentar colocar la sesión de juego en ubicaciones donde no haya capacidad de flota, lo que provocará errores en las solicitudes de emparejamiento.
Obtener puntos finales de baliza
Para recuperar la información del dominio y el puerto de la baliza de ping para Amazon GameLift Servers las ubicaciones, utilice la operación ListLocationsAPI. El conjunto de ubicaciones que devuelve esta API depende de la Región de AWS que especifiques al llamarla (o de tu región predeterminada si no especificas ninguna). Cuando llamas desde:
-
Una región de origen de una flota que admite múltiples ubicaciones: la API devuelve información de todas las ubicaciones de alojamiento
-
Una región de origen de una flota que admite una sola ubicación: la API devuelve la información de esa ubicación
Ten en cuenta que si llamas a esta API desde una ubicación que solo puede ser una ubicación remota en una flota con varias ubicaciones, la API devolverá un error porque ese tipo de ubicación no tiene un punto de conexión de servicio.
Consulta la tabla de ubicaciones compatibles AWS Ubicaciones compatibles para identificar las regiones de origen que admiten flotas de una o varias ubicaciones.
Ejemplo
aws gamelift list-locations --region ap-northeast-2
Esto Región de AWS admite flotas con múltiples ubicaciones, por lo que se devolverán ubicaciones múltiples. A continuación, se muestra un ejemplo de uno de los valores devueltos:
[...]
{
"LocationName": "ap-northeast-1",
"PingBeacon": {
"UDPEndpoint": {
"Domain": "gamelift-ping.ap-northeast-1.api.aws",
"Port": 7770
}
}
}
importante
Almacene en caché la información de la baliza de ping en lugar ListLocations
de llamar antes de cada medición de latencia. La información del dominio y el puerto es estática y la API no está diseñada para solicitudes de gran volumen.
Implementación de mediciones de latencia
Siga estas prácticas recomendadas al implementar mediciones de latencia mediante balizas de ping UDP:
-
Almacene la información de las balizas de ping mediante uno de estos enfoques:
-
Codifica los puntos finales en el cliente del juego.
-
Guarda en caché la información en el backend del juego.
-
Implementa un mecanismo de actualización periódica (diaria/semanal) para actualizar la información.
-
-
Enviar mensajes de ping UDP:
-
Pon lo que quieras en el cuerpo del mensaje, siempre que no esté vacío, y mantén los mensajes por debajo del tamaño máximo de 300 bytes.
-
Respeta los siguientes límites de velocidad para cada ubicación:
-
3 transacciones por segundo (TPS) por combinación única de puerto y dirección IP de remitente
-
1000 TPS por dirección IP de remitente única
-
-
-
Calcule la latencia:
-
Envía varios pings a cada ubicación para calcular la latencia media.
-
Considere la posibilidad de enviar pings simultáneos a varias ubicaciones para obtener resultados más rápidos.
-
Usa la lógica de reintento según sea necesario para enviar nuevos paquetes para cualquier paquete que no se haya devuelto en poco tiempo (normalmente de 1 a 3 segundos), ya que UDP no garantiza la entrega al 100%.
-
Calcula la diferencia de tiempo entre el envío de un mensaje y la recepción de la respuesta.
-
Si una gran parte de los envíos de mensajes UDP a una ubicación no obtienen una respuesta constante, calcula la latencia utilizando los pings ICMP a nuestros puntos finales de Amazon GameLift Servers servicio estándar como alternativa.
-
sugerencia
Te recomendamos que incluyas el puerto 7770 siempre que documentes la lista de puertos que tus jugadores deben tener abiertos en su red local. Esta es otra razón por la que deberías disponer de una alternativa para medir la latencia (mediante ICMP, por ejemplo) en caso de que este puerto esté bloqueado.
Ejemplos de código
Estos son algunos ejemplos sencillos que muestran cómo enviar pings UDP y calcular la latencia.