Fortnite

Actualización de rendimiento de Batalla campal de Fortnite

30.10.2017
El rendimiento es importante. Si bien hemos ido mejorando las cosas con constancia, retrocedimos un poco y en general no estamos como nos gustaría a largo plazo.

Desde el punto de vista de los jugadores, los problemas de rendimiento que se manifiestan son:

Cliente
  • Baja velocidad de fotogramas -> mayor latencia de entrada, delta significativa entre fotogramas
  • Latencia de pantalla -> mayor latencia de entrada
  • Saltos (duración de fotogramas excesiva) -> la pantalla se congela, luego avanza de repente
  • Velocidad de fotogramas variable -> resulta difícil apuntar

Servidor
  • Baja velocidad de actualización de conexión de jugadores/baja velocidad de fotogramas-> aumento del ping
  • Saltos (duración de fotogramas excesiva) -> "rubber banding"

Red
  • Pérdida de paquetes -> "rubber banding"
  • Saturación del ancho de banda de conexión -> "rubber banding"
  • Ping alto -> "rubber banding"
  • Ráfagas de paquetes (sobre todo con WiFi) -> "rubber banding"

"Rubber banding" significa discrepancias entre el cliente y el servidor que provocan una conexión inconstante. El movimiento de los otros jugadores puede verse brusco y entrecortado, las interacciones con las puertas pueden lucir extrañas, etc.

Existen muchísimos problemas diferentes que pueden provocar esto y aún más causas de origen. Por ejemplo: nuestros servidores pueden provocar saltos debido a problemas con el código, otros servidores que se ejecutan en la misma máquina pueden causar un efecto negativo ("vecino ruidoso"), o bien ciertos problemas del sistema operativo o del hardware pueden degradar el rendimiento sin provocar un fallo total ("fallo gris").

Tu conexión con nuestros centros de datos se ve afectada, sobre todo, por la ubicación de los centros de datos y tu ping con ellos, pero también existen muchas variaciones en el ping según qué ruta tomen tus paquetes. También es posible que exista latencia adicional y pérdida de paquetes cuando usas WiFi.


Esto es lo que estamos haciendo o tenemos que hacer en lo que respecta a monitoreo:
  • Registrar el rendimiento de los clientes para varios tipos de hardware de GPU, segmentados por resolución y por ajustes de gráficos, para comprender el impacto de nuestros cambios.
  • Registrar los saltos de los clientes, ponderados según cuánto afectan la experiencia del jugador.
  • Registrar en el cliente los paquetes de red (y el tiempo entre ellos) recibidos del servidor, y hacer lo mismo con los recibidos del cliente en el servidor.
  • Registrar el rendimiento del servidor y la cantidad de fotogramas salteados: nuestra primera meta es operar a 20 Hz contantes.
  • Registrar el rendimiento en conjunto de los servidores por máquina virtual para identificar las máquinas que no funcionan bien y dejar de usarlas.
  • Registrar el ping y la pérdida de paquetes por región y por proveedor de servicio de internet para poder informar sobre las anomalías y enviarlas a un nivel jerárquico superior.
  • Registrar situaciones que provocan "abismos de desesperación". Por ejemplo: ancho de banda restringido más pérdida de paquetes, lo cual provoca que enviemos más tráfico y eso empeora la situación.


Esto es lo que estamos haciendo o tenemos que hacer en lo que respecta a desarrollo:
  • Mejorar el rendimiento en sistemas de PC con especificaciones mínimas (Nvidia GTX 460, Radeon HD 5570, Intel HD 4000). Esta es un área donde hace poco hemos empeorado la cosa, pero en la v.1.8 tomamos las primeras medidas para corregirlas. No nos detendremos aquí.
  • Solucionar los bloqueos de la GPU en PC y seguir colaborando con proveedores de tarjetas gráficas como NVIDIA, AMD e Intel para mejorar el rendimiento y la estabilidad.
  • Mejorar la latencia de salida en consolas. Presentamos mejoras en la v.1.8. Por favor, cuéntanos qué opinas.
  • Seguir esforzándonos por mejorar el rendimiento en consolas. Registramos el porcentaje de pérdida de sincronización vertical y queremos que ocurra (apenas) en menos de 2% de los fotogramas.
  • Reducir los saltos durante el juego. Definimos "salto" como un fotograma que dura más de 60 ms y, en consecuencia, se pierde. El objetivo es llegar a menos de uno por minuto y concentrarnos en eliminar totalmente los saltos de más de 100 ms.
  • Solucionar los saltos en servidores dedicados. Por ejemplo, cuando ingresan muchos jugadores, los jugadores que habían ingresado antes pueden sufrir "rubber banding".
  • Optimizar el rendimiento del servidor en acciones comunes, como recibir daño.
  • Identificar el origen de los saltos que se limitan a la primera hora del lanzamiento de una actualización.
  • Optimizar nuestro código de servidor y de red para que sea posible enviar el estado de los jugadores a todas las 100 conexiones por fotograma. En este momento, actualizamos 25 conexiones por fotograma en la sala y 50 durante el juego. Es decir, que la experiencia de juego no es como nos gustaría para los 50 jugadores restantes. Este es un cambio importante que se llevará a cabo en forma paralela con otras optimizaciones.
  • Registrar cómo lidiamos con los casos extremos que pueden provocar abismos de desesperación.
  • Mejorar nuestro sistema de emparejamiento para que envíe el tráfico en forma dinámica a los centros de una región según la ubicación. Básicamente, tener la capacidad de optimizar el ping sin perder la capacidad de jugar con amigos.
  • Contratar a más personas inteligentes que amen este tipo de desafíos técnicos.


Estas son algunas medidas que puedes tomar por tu parte:

Verificar si los controladores de tu tarjeta gráfica están actualizados. Si no lo están, actualizar a la última versión.

En este momento, ejecutamos nuestros servidores en centros de datos de AWS en todo el mundo. Puedes visitar http://www.cloudping.info/ para ver qué ping tienes con ellos.
  • NA - Virginia, Ohio
  • EU - Frankfurt, Londres
  • OCE - Sídney
  • BR - San Pablo
  • ASIA - Tokio

Riot Games ofrece www.lagreport.com, una excelente fuente de información sobre proveedores de servicio de internet. Puede no aplicarse a Fortnite en todos los casos.

Si estás usando WiFi, intenta con una conexión cableada si tienes la opción. Es posible que así mejores la latencia y reduzcas la pérdida y la ráfaga de paquetes.

Los ajustes de tu TV también pueden afectar la latencia. En línea existen varias guías que explican cómo modificarlos. Por ejemplo esta.

Para PC, puedes usar artículos como este para ver si existen procesos en segundo plano inesperados que consumen recursos.