Rockstar pagó 8.400 euros al modder que redujo el tiempo de carga en GTA Online
Anoche conocíamos que Rockstar implementará una mejora en el tiempo de carga de GTA Online desarrollada por un modder, y hoy hemos conocido que 't0st' no solo recibió un "gracias" por su trabajo, sino que recibió un propia de 10.000 dólares, cerca de 8.400 euros al cambio, por realizar una optimización en el código del juego que reduce el tiempo de espera de carga de las partidas en el modo mutijugador en prácticamente un 70 por ciento.
El pago de los 10.000 dólares se hizo a través del programa de recompensas por fallos de Rockstar, que normalmente sólo se utiliza para problemas de seguridad importantes. Por lo demás, si no conocía el problema, te recordábamos dónde estaba este problema y cómo se pudo solucionar.
El problema de los tiempos de carga en el GTA Online son causados en gran medida por un único hilo de código que provocaba un cuello de botella en la CPU. Esperemos que le den una buen propina al chaval, fuera del juego, claro.
"En primer lugar, el juego leía un archivo de texto con todos los objetos que se podían comprar en el juego, y después de cada uno de los 63.000 objetos, contaba de nuevo cada personaje en el archivo de texto de 10 MB. Hacer este recuento una vez no es gran cosa, pero hacerlo 63.000 veces supone un montón de tiempo de CPU desperdiciado", reveló Digital Foundry.
"En segundo lugar, para preparar todos los datos de los artículos que se han leído, el juego registra tanto los datos asociados a ese artículo (por ejemplo, su nombre, precio, categoría, estadísticas) como un hash de ese artículo (esencialmente una "huella digital" calculada que lo identifica de forma exclusiva). Cada vez que el juego almacena un artículo de la lista -lo que, recordemos, ocurre 63.000 veces- comprueba el valor hash del artículo que se almacena con el valor hash de todos los demás artículos que ya se han almacenado.
Al principio, esto no lleva mucho tiempo, pero a medida que el número de objetos cargados con éxito en el juego aumenta, esta comprobación lleva cada vez más tiempo. En total, t0st estima que se realizan 1.984.531.500 comprobaciones (¡casi dos mil millones!), lo que vuelve a consumir una tonelada de tiempo de la CPU. El juego hace esto para asegurarse de que no hay elementos duplicados en la lista final, pero dado que la lista está completamente vacía para empezar y el archivo que se carga no tiene duplicados, la comprobación es esencialmente inútil.
Para resolver los problemas, t0st escribió su propio código que sobrescribe algunas de las funciones del juego. Para resolver el problema de la "lectura de elementos", creó una caché básica que calcula la longitud de la lista de elementos una vez, y luego devuelve ese mismo valor sin volver a hacer el cálculo cada vez que el código de Rockstar le pide la longitud. Esto reduce el número de veces que hay que hacer la comprobación de 63.000 a una, ahorrando una enorme cantidad de trabajo innecesario.
La segunda solución es aún más fácil. Como t0st considera que no es necesario comprobar si hay elementos duplicados, su código simplemente inserta el nuevo elemento directamente, sin realizar la comprobación del hash. Esto significa que no es necesario realizar ninguna de las casi dos mil millones de comprobaciones, y la CPU puede acelerar el proceso.
Con ambas correcciones, GTA Online se carga mucho más rápido. En el PC de t0st, evitar la comprobación de objetos duplicados reduce el tiempo de carga de 6 minutos a 4 minutos y medio, y añadir la corrección de la carga de objetos también lo reduce aún más, a solo 1 minuto y 50 segundos. Esto supone una reducción del 69,4 por ciento en los tiempos de carga, lo cual es absolutamente increíble dado que sólo se han modificado dos funciones.
vía: PCG