Fortnite

Actualización de rendimiento de Battle Royale de Fortnite

30.10.2017
El rendimiento es lo esencial y, pese a que nos hemos mantenido firmes a la hora de mejorar diferentes apartados, últimamente hemos dado algunos pasos atrás en varios aspectos, y no es eso lo que queremos a largo plazo.

Desde el punto de vista del jugador, la demostración de los problemas relacionados con el rendimiento son los siguientes:

Cliente
  • Baja frecuencia de imágenes -> aumento de la latencia de entrada, gran delta entre imágenes
  • Latencia de imagen -> aumento de la latencia de entrada
  • Tirones (tiempos entre imágenes demasiado largos) -> imagen congelada seguida de un avance rápido
  • Frecuencia de imágenes inconsistente -> resulta difícil apuntar

Servidor
  • Baja frecuencia de actualización o de imágenes de la conexión de los jugadores -> ping aumentado
  • Tirones (tiempos entre imágenes demasiado largos) -> efecto elástico o rubber banding

Red
  • Pérdida de paquetes -> efecto elástico o rubber banding
  • Saturación de la conexión del ancho de banda -> efecto elástico o rubber banding
  • Ping elevado -> efecto elástico o rubber banding
  • Ruptura de paquetes (sobre todo con wifi) -> efecto elástico o rubber banding

En estos casos, rubber banding se refiere a las incongruencias entre el cliente y el servidor, que tienen como resultado una corrección inestable. Esto puede provocar que el movimiento de los demás jugadores sea errático, que la interacción con las puertas resulte extraño, etc.

Existen muchos problemas que pueden originar el rubber banding, y todavía más fuentes causantes. Nuestros servidores, por ejemplo, pueden pegar tirones debido a problemas con nuestro código. Otros de nuestros servidores que funcionan con el mismo dispositivo provocan un impacto negativo (el conocido como noisy neighbor) o los problemas con el sistema operativo del servidor o el hardware, lo que provoca un empeoramiento del rendimiento, pero no fallos completos (los gray failures).

Vuestra conexión con nuestros centros de datos es lo primero y lo que más se ve afectado por nuestra elección de ubicación de los centros de datos y sus pings asociados, pero el ping también varía mucho en función de las rutas que toman vuestros paquetes. También existe la posibilidad de que haya latencia adicional y pérdida de paquetes si usáis una conexión wifi.


Esto es lo que vamos a hacer o debemos hacer en el apartado de la monitorización:
  • Realizar un seguimiento del cliente de varias clases de tarjetas gráficas segmentado por los ajustes de resolución y gráficos de modo que podamos comprender el impacto de nuestros cambios.
  • Realizar un seguimiento de los tirones del cliente y medir la relevancia en función al impacto en la experiencia del jugador.
  • Realizar un seguimiento de los paquetes de red del cliente recibidos desde el servidor (y el tiempo entre estos) y lo mismo entre el servidor y el cliente.
  • Realizar un seguimiento del servidor y del número de imágenes perdidas. Nuestro objetivo inicial es alcanzar los 20 Hz de forma estable.
  • Realizar un seguimiento del rendimiento del servidor por cada máquina virtual para identificar las que funcionan mal y sacarlas del ciclo.
  • Realizar un seguimiento del ping y de los paquetes perdidos por cada región y proveedor de servicios de internet para informar y darles prioridad al detectar anomalías.
  • Realizar un seguimiento de las situaciones que terminaban en saco roto. Por ejemplo, los anchos de banda restringidos sumados a la pérdida de paquetes que tiene como resultado más tráfico, lo cual hace que se empeore todo.


Esto es lo que debemos hacer en el apartado del desarrollo:
  • Mejorar el rendimiento de ordenadores con las especificaciones mínimas (Nvidia GTX 460, AMD Radeon HD 5570, Intel HD 4000). Este es un apartado que hemos empeorado recientemente, pero ya hemos dado los primeros pasos para corregirlo en la v1.8. No vamos a detenernos ahí.
  • Vamos a corregir los cuelgues de las tarjetas gráficas en PC y continuar trabajando con los proveedores de tarjetas gráficas como NVIDIA, AMD e Intel para mejorar el rendimiento y la estabilidad.
  • Mejorar la latencia de entrada en consolas. Se han realizado mejoras en la v1.8; hacednos saber qué os parecen.
  • Mejorar el rendimiento en las consolas. Llevamos un seguimiento del porcentaje de sincronización vertical perdido y queremos que el porcentaje de imágenes perdidas sea inferior al 2%.
  • Reducir los tirones en partida. Definimos los tirones como una imagen que dura más de 60 milisegundos, lo que provoca que se pierda otra imagen completa. El objetivo es que aparezca menos de una por minuto y, por último, terminemos eliminando todos los tirones de más de 100 milisegundos.
  • Mejorar los tirones en los servidores dedicados. Si muchos jugadores saltan tarde, por ejemplo, esto puede provocar rubber banding en los jugadores que saltan al principio.
  • Optimizar el rendimiento del servidor de acciones comunes, como recibir daño.
  • Identificar la fuente de los tirones que se limitan a la primera hora de haber lanzado una actualización.
  • Optimizar nuestros códigos de servidor y de red para permitir que los jugadores envíen su estado a las 100 conexiones por imagen. Actualmente estamos actualizando 25 conexiones por imagen en la sala y 50 durante la partida. Esto implica que vuestra experiencia de juego sigue sin ser óptima hasta que quedan 50 jugadores. Este es un cambio importante que se está llevando en paralelo con otras optimizaciones.
  • Mejorar cómo arreglamos los casos extremos que pueden caer en saco roto.
  • Mejorar nuestro sistema de emparejamiento para orientar el tráfico a los centros de datos de una región en base a la ubicación. Consiste simplemente en contar con la posibilidad de optimizar el ping sin eliminar la capacidad de poder jugar con amigos.
  • Contratar a más gente inteligente y apasionada por estos tipos de desafíos técnicos.


Estas son las cosas que podéis comprobar e incluso abordar por vuestra parte:

Comprobar que los drivers de vuestra tarjeta gráfica están actualizados y, de no ser así, actualizarlos a la versión más reciente.

Actualmente, nuestros servidores funcionan en centros de datos AWS de todo el mundo que podéis visitar en http://www.cloudping.info/ y comprobar vuestro ping.
  • Estados Unidos: Virginia, Ohio
  • Europa: Fráncfort, Londres
  • Oceanía: Sídney
  • Brasil: São Paulo
  • Asia: Tokio

Riot Games alberga el servicio www.lagreport.com, que es una fantástica fuente de información general relativa a los proveedores de servicios de internet. Su aplicación para Fortnite puede variar.

Si utilizáis wifi y tenéis la opción de utilizar una conexión por cable, puede que merezca la pena que la probéis para mejorar la latencia, reducir la pérdida de paquetes y la ruptura de paquetes.

Vuestras opciones de televisión pueden suponer un impacto en la latencia también; además, existen varias guías disponibles online sobre cómo modificar estos ajustes. Aquí tenéis un ejemplo.

Para PC, podéis echar un vistazo a artículos como este para comprobar si tenéis procesos en segundo plano inesperados que tiran de recursos.