Mejoran los tiempos de carga de GTA Online en un 70% con una simple corrección

Cuando los desarrolladores fallan, hazlo tú mismo: las modificaciones de juego cuestan diez centavos la docena, especialmente para Grand Theft Auto Online. Pero de vez en cuando, alguien viene con uno que es tan bueno y tan básico que uno se pregunta por qué el desarrollador no hizo lo mismo en un parche. Un hacker ha mostrado una solución para los tiempos de carga que es tan simple que se preguntará por qué Rockstar no se ocupó de ello hace años.

Sin lugar a dudas, los tiempos de carga de Grand Theft Auto Online son atroces. Una encuesta no científica realizada en Reddit el verano pasado reveló que la mayoría estaba esperando de tres a seis minutos para que comenzara el juego y más del 35 por ciento de los jugadores tenían tiempos de carga de más de seis minutos. En el peor de los casos, los tiempos de espera superaron los 15 minutos.

Un pirata informático que pasa por T0st investigó qué podría estar causando sus tiempos de carga de seis minutos. Después de volcar la pila de procesos, descubrió dos cuellos de botella que maximizaban un solo subproceso de la CPU. Una rutina mal escrita consistía en analizar de forma ineficaz un archivo JSON de 10 MB que contenía más de 63.000 elementos.

Resulta que el archivo JSON contenía elementos que se podían comprar a través de las tiendas del juego (que no deben confundirse con las microtransacciones). La rutina lee cada entrada en el archivo y luego la almacena en una matriz. Con cada pasada, vuelve a comprobar toda la matriz en busca de duplicados antes de insertar el nuevo elemento. Como se puede imaginar, este proceso se hace cada vez más largo a medida que crece la matriz.

Para solucionar el problema, T0st creó una DLL que elimina los dos cuellos de botella. La primera solución “almacena en caché” longitudes de cadenas largas.

Si se vuelve a llamar dentro del rango de la cadena, [devolverá] [el] valor almacenado en caché“, escribe T0st.

Dado que esta solución elimina las entradas repetidas, la comprobación de duplicados ya no es necesaria. Entonces, la segunda parte de la DLL simplemente inserta los valores en la matriz.

Los resultados de estos dos parches son bastante notables. Con solo la corrección de verificación de duplicación instalada, el tiempo de carga se redujo modestamente de seis minutos a 4.5 minutos. El analizador JSON fue mucho más efectivo, reduciendo la espera a dos minutos, 50 segundos e implementando ambos parches en la DLL mejoró el tiempo de carga en aproximadamente un 70 por ciento (o 1 minuto 50 segundos).

Los resultados pueden variar según la configuración del equipo, pero las optimizaciones deberían mejorar significativamente las velocidades de carga para cualquier configuración.

T0st publicó la prueba de concepto en GitHub si está interesado, aunque advierte que inyectarlo mientras está en línea podría hacer que lo suspendan. Su artículo sobre cómo encontró y solucionó el problema también es una lectura bastante buena. Espera que Rockstar se entere de su PoC y emita un parche oficial, que no es una pregunta irrazonable para la fuente de ingresos del estudio de siete años.

Si esto llega de alguna manera a Rockstar: los problemas no deberían tomar más de un día para que un solo desarrollador los resuelva“, escribe. “Por favor haz algo respecto a eso.

Si. Por favor, hazlo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *