Rockstar implementará una mejora en el tiempo de carga de GTA Online desarrollada por un modder
A Rockstar Games se le da muy bien exprimir a su gallina de oro para ganar dinero, GTA Online, pero parece que incluso los usuarios pueden aportar mejores soluciones de lo que ellos son capaces de hacer para mejorar la experiencia de juego, y es por ello que un modder conocido como 't0st' desarrolló un mod que permite reducir los tiempos de carga del juego en torno a un 70 por ciento en PC. Tal fue su desempeño y popularidad, que Rockstar agradeció su trabajo y lo integrará de forma nativa en una próxima actualización del juego.
"Después de una investigación exhaustiva, podemos confirmar que el jugador t0st, de hecho, reveló un aspecto del código del juego relacionado con los tiempos de carga para la versión de PC de GTA Online que podría ser mejorado. Como resultado de estas investigaciones, hemos realizado algunos cambios que se implementarán en una próxima actualización del título."
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