Además de contenido nuevo como el modo extremo, la actualización del título 6.1 ha solucionado varios errores y problemas. Estas soluciones incluyen mejoras en varios problemas de sonido que habéis experimentado desde el inicio de vuestro viaje en The Division 2, como retrasos o ausencias del sonido de las armas, distorsiones sonoras o ausencia completa de sonido durante el juego.
Queríamos tomarnos nuestro tiempo para daros algunos detalles sobre lo que ha hecho el equipo técnico de sonido para abordar estos problemas tan complejos a lo largo de estos meses.

Instalación de parches de datos en PS4

Una de las características más inteligentes de PS4 es la capacidad de descargar una imagen de datos "básica" la primera vez y superponerla con sucesivos parches de datos "delta". Esto reduce el tamaño de descarga de los parches de datos, pero para que el juego reproduzca los recursos de sonido de forma eficaz, todos tienen que estar unos junto a otros en la imagen de datos.

Lo que descubrimos fue que, al actualizar la versión de PS4 del juego cada pocos meses, varios grupos de recursos de sonido se separaban, lo que afectaba al rendimiento del disco I/O de forma negativa en lo relativo al sonido. Al principio no podíamos verlo porque, durante el desarrollo, generamos una imagen de disco completamente nueva, de modo que esta separación no era aparente para los desarrolladores, solo para los testers internos y los jugadores.

Tras discutirlo, decidimos realizar algunas pruebas directas A/B en el laboratorio y conseguimos la prueba irrefutable de que el proceso de instalación de parches delta creaba problemas en la reproducción de recursos de sonido. Desde entonces hemos actualizado nuestro sistema de creación de parches de datos para que vuelva a parchear todos los recursos de sonido, hayan cambiado o no. Esto hace que los parches de datos sean algo más grandes, pero asegura que los recursos de sonido sigan agrupados pase lo que pase.

Fragmentación de memoria

Vamos a destacar un concepto muy importante: en The Division 2 tenemos un número mucho mayor de recursos de sonido que el primer juego. Uno de los retos a los que el equipo tuvo que enfrentarse fue utilizar la misma cantidad de memoria en las consolas de la generación actual, a pesar de trabajar con un presupuesto menor de memoria debido a otros factores como, por ejemplo, las animaciones de los personajes y el mundo, y otros sistemas de fondo que consumían memoria.

Para aprovechar mejor el presupuesto de memoria que teníamos, decidimos ser muy agresivos con lo que se carga y descarga mientras el juego está en ejecución. En cuanto la memoria está llena, para cargar un nuevo recurso de sonido hay que descargar uno antiguo, y en The Division 2, la mayoría de las veces esto se hace el doble de rápido que en la primera parte.

Para que os hagáis una idea de cómo funciona la adjudicación de memoria, imaginad que, al iniciar el juego, todo pareciese un aparcamiento abierto en el que todas las plazas están ocupadas de forma eficiente. Cuando un autobús se marcha del aparcamiento, puede ocupar su lugar un coche. Lo que ocurre en este caso es que no podrá aparcar un nuevo autobús en ese mismo sitio porque ahora lo está ocupando un coche.

El nuevo autobús tendrá que buscar otro puesto, lo que hará que el aparcamiento cada vez utilice el espacio de forma menos eficiente y, por tanto, pierda un poco de capacidad. A este tipo de degradación la llamamos "fragmentación de memoria".

Para cualquier memoria adjudicada y liberada directamente de Snowdrop, tenemos un sistema que lleva un registro y evita que se produzca esta fragmentación. Sin embargo, la gestión de recursos de sonido se realiza con middleware y funciona de una forma un poco distinta. Su funcionamiento sería ideal si nuestro motor de juego dedicase "puestos de aparcamiento" en la memoria a los cuatro tipos de datos distintos, pero no acaba de funcionar con una adjudicación de memoria moderna y dinámica como la nuestra.

Por ejemplo, lo que ocurría era que un jugador podía ejecutar el juego durante un par de horas, y acabaría llegando un momento en el que, al cambiar a un arma distinta, el disparo de esta dejaría de sonar, pues los recursos para la misma ya no podían cargarse. Una vez producida la fragmentación, la única solución consistía en reservar una "sección del aparcamiento" para los recursos de sonido al inicio y pasársela al sistema de gestión de recursos del middleware.

Microsoft Spatial Audio y Dolby Atmos

Somos uno de los primeros estudios que han trabajado con Microsoft Spatial Audio y, aunque la tecnología no tiene nada de malo, muchas empresas de periféricos de sonido con Windows 10 no estaban preparadas para nosotros. Por ejemplo, tuvimos un par de casos en el que una gama entera de auriculares se quedaba sin sonido al usar Dolby Atmos a través de Spatial Audio, a pesar de funcionar de forma adecuada en modo estéreo.

Por desgracia, y aunque probamos muchos auriculares, nadie se podía imaginar que con esa combinación, algunos no funcionarían adecuadamente. Esto sucedió porque algunas empresas no tenían nuestro juego y nosotros no teníamos sus auriculares.

A pesar de los esfuerzos para solucionar los problemas de este tipo que vimos durante la beta privada, seguía habiendo algunos auriculares que no funcionaban bien con Microsoft Spatial Studio. Probamos muchas soluciones distintas para mitigar estos problemas, como publicar soluciones provisionales que permitían al juego reiniciar su mezcla de sonido al entrar y salir de la ventana del cliente.

En agosto recibimos una actualización del firmware para Xbox One que hizo que el sistema de reproducción de Microsoft Spatial Studio afectase un poco más a la CPU y, desde entonces, The Division 2 funciona al límite del rendimiento máximo de esta consola. Este pequeño cambio alteró la fluidez de la reproducción para cualquier cosa que requiriese el espacializado. Ha sido una decisión difícil, pero, por el bien de los jugadores, hemos decidido retirar Microsoft Spatial Studio en esta plataforma y volver al Surround 7.1 estándar.

Precarga preventiva de recursos

En The Division 2 hay un flujo constante de contenido cargándose y descargándose, lo que somete a una considerable presión las capacidades de las plataformas en las que se ejecuta, sobre todo las consolas. Como resultado, el archivo I/O se satura con facilidad. Tenemos que asegurar un flujo de transmisión de datos óptimos con los discos duros, ya que no solo estamos hablando de recursos de sonido, sino también de animaciones y otros procesos del juego que se ejecutan en segundo plano. Un pequeño retraso al cargar recursos, a veces de milisegundos, puede provocar caídas en la frecuencia de imagen, bloqueos en las animaciones, desincronizaciones del sonido y otros problemas.

Hemos realizado ajustes, pero estos no siempre funcionan debido a distintos factores, como el sistema en el que jugáis o la edad de vuestras consolas o discos duros. Estos problemas no se presentaron en nuestros kits de desarrollo, ya que funcionan en condiciones distintas a las de, por ejemplo, las videoconsolas a la venta. En conclusión, no deberíamos considerar esto como fallos en sentido tradicional, ya que no es culpa del código, sino más bien un problema de solidez y longevidad del hardware.

A veces hay picos en términos de tráfico de datos y debemos considerar el nivel de importancia de algunos recursos sobre otros. Para que el sistema de carga funcione de forma adecuada, hemos de establecer prioridades. Trabajamos mucho con el equipo de equilibrado para intentar reequilibrar las prioridades porque no solo había problemas de sonido, sino también de texturas. Por ejemplo, podía pasar que un jugador entrase en un sótano y no se cargaran las texturas. Esto dejaba al jugador atrapado en un espacio vacío.

Parte del trabajo con las prioridades de los recursos se dedicó a precargar recursos de forma preventiva, lo que permitía que esa parte específica de los datos ya estuviese disponible antes de ser necesaria. Un ejemplo de precarga preventiva de recursos se da en la primera misión del tutorial, cuando oímos el primer ataque de mortero. Sin esa precarga, habríais oído la explosión del mortero con un retraso significativo de varios segundos. Por supuesto, cuando el juego lleva al jugador donde quiere o se reproduce una escena, es fácil predecir qué se necesita en la caché, pero durante una partida en el mundo abierto, esto no siempre está claro.

De cara al futuro

En la actualización 6.1, gracias al esfuerzo continuado con la precarga preventiva de recursos, las pruebas internas y vuestros informes, hemos mitigado distintos problemas de sonido. Sin embargo, sabemos que el trabajo aún no ha terminado, pues hay escenarios potenciales que podrían requerir ajustes específicos dada la ingente cantidad de variables que debemos tener en cuenta. Como resultado, puede que desaparezcan sonidos en el juego de vez en cuando.
Agradecemos vuestros informes porque nos ayudan a identificar más escenarios, sobre todo cuando incluyen detalles como el momento o el lugar donde os sucedió un problema concreto de sonido. Si encontráis más situaciones en las que se den problemas de sonido, hacédnoslo saber a través de nuestros foros de ayuda a los jugadores o el sitio web de asistencia de Ubisoft.

/El equipo de The Division