Hoy en «hacer videojuegos es una noticia difícil»: el viaje de Respawn para rastrear un error que causó meses de problemas de audio en Apex Legends. Granadas que no explotan, armas que no disparan, daños que no tienen origen y meses de agonizante investigación, todo aparentemente causado por una sola línea de código agregada en la actualización de la Temporada 16 de Apex Legends.
«Esto no había ocurrido durante nuestra prueba de juego de la temporada 16, no se pudo reproducir internamente después de los informes iniciales y fue muy difícil de precisar usando videos de juegos en vivo, ya que la causa principal no siempre se mostraba en el punto de vista del jugador», dice la publicación.
Respawn manejó mejor el problema después de recibir informes similares sobre la falta de efectos especiales de sonido de armas y efectos de partículas. «Después de una investigación preliminar, se descubrió que el principal sospechoso era el sistema que utilizan nuestros servidores para enviar comandos de ‘inicio’/’detención’ para varios efectos (por ejemplo, ciertos sonidos, sistemas de partículas, impactos físicos, trazadores de balas, explosiones)».
Actualización del equipo de desarrollo: actualización de audio de r/apexlegends
Esencialmente, algo sucedía durante una partida que podía sobrecargar el límite del servidor para efectos especiales o partículas de sonido, lo que provocaba que algunos sonidos y efectos especiales se cayeran.
«A partir de ahí, la teoría era que algo podría estar inundando esta limitación del motor, ¡solicitando miles de efectos cada segundo!» dice la publicación. «¿Pero fue un problema sistémico o podría ser una sola entidad actuando? Cada actualización de temporada comprende miles de cambios en los activos, el código, el guión y los niveles. Lo que significó encontrar una aguja en un pajar».
Respawn recurrió a las métricas para ayudar a resolver el problema, pero nada en la telemetría indicó un problema claro. Esto le sugirió a Respawn que este error era una situación única que sus sistemas no habían visto antes.
«Esto nos dejó con un problema complejo que sabíamos que estaba afectando a nuestra comunidad, pero que era difícil de reproducir a pesar de los informes detallados, tenía mínimas pistas internas y no había métricas para demostrar definitivamente que se estaba alcanzando este límite».
¿Adónde vas desde allí? Respawn decidió probar su teoría de los efectos sobrecargados rompiendo intencionalmente los servidores de Apex Legends. El equipo hizo girar una versión de prueba y generó 50 personajes que dispararon armas al mismo tiempo y usaron infinitas habilidades para llevar la carga de efectos del servidor al límite. Funcionó: el equipo finalmente pudo reproducir caídas de audio similares a los informes de errores, pero aún era un misterio cómo les estaba sucediendo a los jugadores reales.
«Esto nos dio una prueba de que FX se eliminaría, pero solo con casos de prueba completamente irreales. Se investigaron varios aspectos del rendimiento de nuestro servidor, pero no se encontró nada definitivo».
Respawn siguió de cerca el problema a medida que avanzaba la temporada 16. El equipo finalmente notó que los informes de audio descartados tendían a provenir de juegos de alto nivel. Esto les dio la idea de implementar una actualización del servidor que permitiera a Respawn rastrear nuevas métricas en un subconjunto más pequeño de coincidencias, lo que instantáneamente condujo a un gran avance.
«Cuando finalizaba la actualización del servidor, lo encontramos. Se identificó que una sola línea de código era la causa principal del problema. La nueva arma de la temporada 16».
Esa arma es el Nemesis, el rifle de asalto de energía de disparo en ráfaga más nuevo de Apex. El Nemesis tiene una mecánica única en la que infligir daño «cargará» el arma y hará que dispare más rápido (como se demostró (se abre en una pestaña nueva) por YouTuber Dazs arriba). Este efecto de carga se representa visualmente en el arma mediante un arco eléctrico dentro del cañón. Respawn dice que una línea de código destinada a decirle a este efecto que «detenga» mientras el arma no estaba cargada o enfundada en realidad se repetía indefinidamente para todos los jugadores que tenían un Némesis en su inventario.
«Esto significa que cada jugador con un Némesis descargado crearía un efecto de ‘partícula de parada’ en el servidor en cada cuadro, y esta línea de código se llamaba incluso cuando el arma estaba enfundada».
Curiosamente, esto también explica por qué las caídas de audio ocurrían con más frecuencia en la reproducción de alto nivel. «14 clientes con un Nemesis funcionando a 180 fps serían suficientes para que FX comenzara a caer». Por una vez, fueron los jugadores de PC con las mejores especificaciones los que tenían un desventaja .
Respawn dice que esto también explica por qué sus pruebas internas no encontraron el error.
«Es posible que las compilaciones utilizadas para las pruebas no hayan tenido suficiente Némesis enfundado en juego, hayan tenido una correlación más rara con la falta de FX o no hayan tenido suficientes clientes a ese fps, algo que debemos tener en cuenta y mejorar para futuras pruebas».
Un parche implementado la semana pasada finalmente aplastó el error para siempre. Y ahí lo tienes: un error de audio entrometido con una causa raíz complicada que, a la larga, ayudará a Respawn a detectar errores similares antes de que lleguen a los jugadores. Respawn concluyó la publicación con un aparte sobre las pruebas, recordando a los jugadores que «¡un minuto de jugadores jugando Apex es el equivalente a 10 probadores jugando el juego durante un año!»