Actualización de estabilidad de UEFN

¡Muy buenas!

Como muchos sabréis, la reciente actualización 32.00 de Fortnite trajo consigo problemas de estabilidad y regresiones. Entre ellos se incluyen errores graves de funcionamiento que provocaron que los jugadores no pudieran acceder a ciertos contenidos de UEFN y del modo Creativo, que el portal para creadores no estuviera disponible para los creadores y problemas en otras funciones.

En la versión 32.10 comprobamos que, durante varias horas, los contenidos y herramientas de UEFN estuvieron disponibles para los jugadores y creadores de forma intermitente.

Estas actualizaciones no han cumplido con nuestros estándares y han provocado muchos debates internos sobre cómo pasaron desapercibidos y qué podemos mejorar de cara al futuro.

Crear un ecosistema de Fortnite con una evolución tan rápida que conserve la estabilidad y compatibilidad en una amplia gama de funcionalidades y experiencias supone todo un reto, pero nos comprometemos a ponerle solución. Esto implica aprender de nuestros errores y admitir nuestra responsabilidad. También queremos ser transparentes con los graves problemas que han sufrido recientemente los creadores, nuestra respuesta y los cambios que aplicaremos.

Con esto en mente, os presentamos un resumen de los errores más graves de la actualización 32.00. Cada punto incluye el problema, el origen, el impacto que ha tenido y los cambios que vamos a implementar en función de lo que hemos averiguado.

Si bien estos errores no han sido los únicos de las versiones 32.00 y 32.10, sí que han tenido un gran impacto en el ecosistema y han activado el proceso interno de incidencias críticas de Epic.

Problema: degradación del servicio de contenido (32.00 y 32.10)

El servicio de contenido es nuestro sistema interno que registra todo el contenido creado en UEFN y en el modo Creativo. Incluye metadatos como versiones y estados de publicación. Básicamente funciona como nuestro “índice del metaverso”, y es esencial para el funcionamiento de Fortnite y UEFN.

A medida que ampliamos el uso de UEFN en Epic, también aumenta nuestra dependencia en el servicio de contenido.

En la actualización 32.00, los cambios en el cliente y servidor de Fortnite provocaron sin querer un aumento gigantesco del tráfico en el servicio de contenido, que llegó a estar diez veces por encima de su carga normal. Esta subida provocó varios errores cuando el servicio de contenido intentó ajustarse para gestionar la carga, lo que a su vez afectó a varios aspectos del funcionamiento de UEFN y del modo Creativo.

Los intentos de reconfigurar o calibrar el servicio no tuvieron éxito, y no pudimos modificar de forma inmediata el comportamiento del cliente ni del servidor. Por suerte, nuestro equipo de seguridad del ecosistema logró configurar el cortafuegos para reducir el tráfico a niveles razonables, lo que permitió que se recuperaran los servicios.

En la versión 32.10 solucionamos el problema de tráfico excesivo del cliente y de los servidores, pero el día del lanzamiento aún nos encontramos con un nivel de tráfico natural que afectó de nuevo al rendimiento del servicio de contenido. En esta ocasión, el servicio permaneció activo, pero el acceso a las características de las islas de creadores y de UEFN fue inestable durante varias horas. En este periodo, Recarga tampoco estuvo disponible.

Impacto: algunos contenidos de Fortnite, como Recarga, las pistas de improvisación o las islas de creadores, no estuvieron disponibles entre las 07:00 y las 18:00 CET del 2 de noviembre, el día de lanzamiento de la versión 32.00.

El 13 de noviembre, el día de lanzamiento de la versión 32.10, el acceso a las islas de creadores y a las funciones de UEFN se vio afectado desde las 13:00 a las 19:00 CET aproximadamente, y solo un 70 % de los jugadores pudieron acceder a las islas. En este periodo, Recarga no estuvo disponible.

Cambios: trabajamos a destajo para solucionar este problema de tráfico y creemos que se mantendrá en plena forma durante el resto del año.

También vamos a aumentar los análisis de tráfico del servidor y del cliente previos al lanzamiento en futuras actualizaciones para detectar más rápidamente los errores introducidos de manera accidental.

Problema: pérdida de persistencia (32.00)

Poco después de restablecer la funcionalidad del servicio de contenido, varios creadores que usaban la persistencia nos informaron de que a los jugadores les desaparecían determinados tipos de objetos de sus inventarios.

Nuestra investigación reveló que parte del contenido de Fortnite se había reorganizado en relación a una iniciativa que pensábamos implementar más adelante. Esta reorganización provocó que los objetos registrados, como los diamantes, por ejemplo, tuvieran una nueva ruta de recurso asignada, lo que los hacía aparecer como nuevos objetos en el inventario con una cantidad total de cero. A pesar de que Unreal Engine tiene un sistema de redirecciones para gestionar los recursos que se han movido, un error en el código de persistencia provocó que estas redirecciones se aplicaran.

Para resolver este problema, nos fijamos dos prioridades:

  1. Resolver el problema para evitar que los jugadores nuevos perdieran sus datos.
  2. Restablecer los inventarios de los jugadores que ya se habían visto afectados por el problema.

Para llevar a cabo la primera, tuvimos que crear, probar y poner en funcionamiento un nuevo servidor. Esto suele llevar menos de 24 horas, pero debido a una serie de factores, sobre todo nuestro deseo de implementar cambios para otros problemas, el nuevo servidor no estuvo en funcionamiento hasta el día 5 de noviembre, es decir, tres días más tarde. Somos conscientes de que este tiempo de reacción es inaceptable para un incidente de este nivel de gravedad.

La segunda tarea implicaba crear un script que nos permitiera restablecer los inventarios de los jugadores que habían jugado a la isla desde la llegada de la actualización 32.00 para corregir así esos problemas. En este caso, restablecer los inventarios era algo muy complicado, porque el impacto podía variar en función de la isla, y la decisión de si era mejor restablecer los datos o continuar con los nuevos dependía del impacto y de cuánto tiempo iba a tardar en realizarse este restablecimiento.

Ofrecimos a todos los jugadores que nos habían informado de este problema la posibilidad de restablecer sus datos y empezamos a hacerlo el 6 de diciembre a las 20:00 CET. Este proceso terminó el 7 de noviembre a las 21:00 CET.

Cambios: si bien es cierto que tenemos un proceso automatizado que nos informa cuando hay recursos que se han eliminado para que, por ejemplo, no desaparezcan objetos en las islas de creadores, este proceso automatizado no nos informaba en caso de que se movieran. Hemos actualizado esto para que ahora también se nos informe en ese caso.

Además, estamos contemplando otras opciones de automatización para que se nos informe cuando se produzca un error al cargar los objetos almacenados en los inventarios en nuevas versiones de Fortnite. Sin embargo, es más complicado, por lo que nos llevará un tiempo resolverlo.

Por último, queremos reiterar que sabemos que el tiempo que tardamos en poner en funcionamiento un servidor para corregir el problema fue inaceptable. Sin duda, mejoraremos este procedimiento.

Problema: inestabilidad del cliente general (32.00)

Enseguida nos dimos cuenta de que hubo un aumento significativo de los cierres inesperados del cliente en todas las plataformas.

La causa principal fue un cambio que se realizó en la actualización 32.00 para corregir los errores relacionados con la deshabilitación del daño de armas en zonas de mutación. Este cambio provocó una interferencia, ya que dos hilos podían acceder de manera simultánea a la misma tabla. Dependiendo de las acciones de los jugadores durante una reaparición y de cuándo se realizaban, esto podía provocar cierres inesperados.

Ya que estos cierres inesperados se producían en el cliente y no podían resolverse mediante ajustes en el servidor, tuvimos que sacar un parche para el cliente en todas las plataformas. Los parches en el cliente tardan más tiempo en crearse y requieren certificados para publicarse en ciertas plataformas, por lo que la actualización no estuvo disponible hasta el miércoles 16 de noviembre.

Impacto: los clientes de todas las plataformas sufrieron un incremento de inestabilidad con la actualización 32.00.

Cambios: durante el desarrollo de cada lanzamiento de Fortnite, localizamos y tomamos medidas para resolver estos cierres inesperados. En nuestras investigaciones no se dio este cierre inesperado, ni siquiera tras largas horas de prueba. Incluso una vez identificada la causa, no podíamos reproducirlo internamente.

El desafío de enfrentarse a problemas a gran escala no es algo nuevo. Por ejemplo, es posible que un cierre inesperado que sucede un 0,01 % de veces no ocurra durante el desarrollo, pero con un millón de jugadores diarios, esto puede resultar en 10 000 cierres inesperados al día.

Para hacer frente a esta situación, tenemos pensado incrementar el uso de versiones de “saneamiento” durante la fase de prueba. Estas versiones tienen un sistema mejorado de detectar problemas relacionados con el acceso a la memoria, incluso si no conllevan cierres inesperados de manera inmediata. Si bien no podemos saber a ciencia cierta si con este método hubiéramos podido detectar a tiempo este problema, es muy probable que nos sirva para impedir problemas similares en el futuro.

Problema: cierre inesperado del editor al cargar proyectos (32.00)

Cuando sacamos la actualización 32.00, enseguida recibimos informes de creadores que estaban sufriendo cierres inesperados del editor al intentar abrir sus proyectos. En primera instancia, sospechábamos que estos cierres inesperados estaban vinculados con la degradación del servicio de contenido que estaba en progreso, pero pronto nos dimos cuenta de que se trataba de un problema independiente.

Diagnosticar este problema supuso todo un desafío, ya que implicaba un cierre inesperado dentro de un complemento gráfico, un problema que suele dar poca información relacionada con la causa. Una vez identificamos esto, recomendamos a los creadores que cambiaran UEFN a Direct3D 11 como solución temporal.

Conseguimos rastrear la causa principal y estaba relacionada con los proyectos que tenían un número elevado de avisos mostrándose al inicio en el cuadro emergente que aparece en la esquina inferior derecha. Cada mensaje de aviso consumía una cantidad elevada de memoria para su renderizado y, cuando aparecían demasiados, el uso de memoria excedía los límites, lo que provocaba el cierre inesperado.

Por suerte, como podemos actualizar UEFN de manera independiente a Fortnite, pudimos lanzar una actualización al día siguiente.

Fue un caso frustrante, ya que un usuario interno de UEFN había tenido este mismo problema en una de las primeras versiones de la actualización 32.00, pero los desarrolladores no fueron capaces de reproducirlo, por lo que la incidencia se dio por finalizada.

Impacto: se dieron varios cientos de cierres inesperados de UEFN durante las ocho horas posteriores a su lanzamiento.

Cambios: tras un análisis retrospectivo, llegamos a la conclusión de que nuestros puestos de trabajo cuentan a menudo con especificaciones técnicas superiores a las de los equipos que utilizan normalmente nuestros consumidores, especialmente en lo que a memoria de vídeo se refiere.

Anteriormente, nuestras pruebas de compatibilidad se centraban en la nueva experiencia de usuario y no tanto en poner a prueba las capacidades de UEFN con proyectos de gran tamaño. De ahora en adelante, vamos a incrementar las pruebas en equipos con especificaciones técnicas mínimas y con especificaciones similares a las de los equipos de nuestros consumidores con proyectos internos más grandes, lo que nos permitirá identificar de manera más eficiente posibles problemas.

Esperamos que estas explicaciones os permitan entender mejor los problemas que hayáis podido experimentar desde el lanzamiento de la actualización 32.00. Ofrecer a los creadores un entorno estable para poder crear sus experiencias y dar un soporte que motive a los jugadores es algo que nos tomamos muy en serio.

Nuestro objetivo es seguir mejorando nuestros sistemas y procesos escuchando vuestros comentarios sobre los problemas que os encontráis y comunicar de manera regular las medidas que tomamos para mejorar UEFN y del modo Creativo para todos los usuarios.

Gracias,

Andrew