Cómo un pequeño grupo de fanáticos de GTA diseñó GTA 3 y Vice City sin que (hasta ahora) se apagaran

Grand Theft Auto 3 y Vice City ahora tienen ingeniería inversa completa, un proyecto apasionante de un pequeño grupo de fanáticos que lleva años en desarrollo.

Significa que el código fuente creado por fans para ambos juegos ahora está disponible en GitHub. Cualquiera puede usar el código para jugar ambos juegos en PC, con la esperanza de que otros lo tomen y lo mejoren aún más.

Re3 (GTA 3 con ingeniería inversa) y reVC (Vice City con ingeniería inversa) ofrecen una serie de mejoras llamativas sobre los juegos originales que están disponibles para jugar oficialmente hoy en PC. El siguiente video muestra el trabajo y los cambios que se hicieron posibles.

Se han solucionado errores, hay un menú de depuración y una cámara disponibles, hay compatibilidad instantánea con los controladores actuales, no hay pantallas de carga entre islas y soporte de pantalla ancha con un HUD, menú y campo de visión correctamente escalados, entre otras mejoras. Incluso hay efectos mejorados de las versiones de PS2. Re3 también incluye un mapa de Liberty City en el menú de pausa, algo que falta en todas las versiones originales de GTA 3.

Es un desarrollo emocionante para la subcultura de ingeniería inversa de los videojuegos que hasta ahora ha evitado las represalias de Rockstar y su empresa matriz Take-Two.

«El código abierto de GTA probablemente ha sido un sueño para muchos de nosotros los fanáticos de GTA», dice el líder del proyecto Angelo «aap» Papenhoff a .

«Hemos estado inyectando nuestro código en los juegos durante muchos años para la modificación, pero por supuesto eso es algo tedioso y todavía estás limitado en lo que puedes hacer».

1

A lo largo de los años, ha habido varios intentos de recrear GTA 3, el juego de acción y aventuras de 2001 desarrollado por DMA Design y publicado por Rockstar Games.

Uno de esos intentos, denominado Open ReWrite u OpenRW, tuvo un desarrollo activo, pero ahora parece inactivo. También ha habido proyectos que recrearon Grand Theft Auto 3 en motores como Unity y Unreal. aap, sin embargo, estaba más interesado en realizar ingeniería inversa del código original en código fuente. En algún momento de 2016, aap comenzó a aplicar ingeniería inversa al código de GTA 3 de forma casual, llegando al punto en el que el jugador podía volar alrededor del mapa.

Aap luego se centró en la ingeniería inversa del código de física y de colisión, inyectándolo en el juego real para probarlo. Así empezó el proyecto re3. aap reemplazó las funciones del juego original hasta que todo fue reemplazado en la primavera de 2018.

«No tenía idea de si este proyecto se terminaría alguna vez», explicó aap. «Todavía estaba trabajando en él solo en ese momento, pero parecía la ruta más prometedora hacia un GTA de código abierto».

La habilidad, el tiempo y la energía necesarios para aplicar ingeniería inversa a un videojuego no deben subestimarse. Esto no es algo fácil de hacer para los profesionales, y mucho menos para los entusiastas. Hay una gran cantidad de código para trabajar y los errores son inevitables, especialmente si no resultan en un comportamiento incorrecto obvio en el juego. Es casi seguro que todavía hay errores en el código re3 que no son originales, admite la aap.

Aún así, es un logro notable. Así es como aap y co lo manejaron, en términos sencillos:

«GTA 3 y Vice City se escribieron originalmente en C ++», explica aap. «Los ejecutables compilados que se envían están en código de máquina. Por lo tanto, la tarea general es volver del código de máquina a C ++.

«El código de máquina se puede (más o menos) mapear 1: 1 a una forma legible por humanos llamada lenguaje ensamblador, pero sigue siendo muy tedioso de leer.

«Volver a C ++ no es de ninguna manera un simple mapeo 1: 1, pero en los últimos 10 años han aparecido descompiladores que ayudan con este proceso.

«Por lo tanto, lo que normalmente hacemos es trabajar con la salida del descompilador y volver a convertirlo en C ++ legible. Esto a veces es bastante fácil ya veces difícil, pero en cualquier caso es mucho código y es probable que cometa errores».

Afortunadamente, el código para GTA 3 en PS2 y Android incluye símbolos de depuración. Los símbolos de depuración contienen toda la información adicional necesaria para depurar un juego durante el proceso de desarrollo, pero a menudo se eliminan para los ejecutables de lanzamiento para evitar la hinchazón. Por alguna razón, Rockstar dejó estos símbolos, lo que le dio al equipo de ingeniería inversa una gran ventaja.

«Tuvimos mucha suerte de tener símbolos para los juegos», dice aap. «PS2 [GTA] 3 y todas las versiones de Android tienen nombres para las cosas globales (funciones y variables globales). Esto fue un enorme ayuda y no creo que estaríamos ni cerca de invertir GTA sin ellos «.

El video, a continuación, muestra a aap analizando el código de la basura que se encuentra en las calles virtuales de GTA 3. Es un reloj denso.

aap dejó de funcionar en re3 durante un año, luego lo recuperó en la primavera de 2019 y, en mayo de 2019, envió el trabajo a GitHub. Aproximadamente 15.000 líneas de código se invirtieron en ese momento.

Otros se dieron cuenta y se unieron al esfuerzo. El equipo central estaba formado por solo seis personas.

Después de que el trabajo se estancó en la segunda mitad de 2019, el proyecto se retomó nuevamente a principios de 2020 cuando los piratas informáticos descubrieron que tenían más tiempo libre debido a la pandemia de coronavirus. En abril de 2020, el equipo re3 tuvo su primer ejecutable independiente.

¿Por qué elegir GTA 3 en primer lugar? «Fue el primer juego de esa época, el más pequeño (menos código para revertir) y, en general, gustaba a todos en el equipo», explica aap. Después de GTA 3, Vice City fue el siguiente paso lógico. Es similar a GTA 3, después de todo, y le gustó mucho. reVC se inició a principios de mayo de 2020 y el equipo lo concluyó en diciembre de 2020.

Mirando hacia el futuro, aap dice que le gustaría ver la física de los juegos fijada a altas velocidades de fotogramas y, una vez que se solucione, un mod de realidad virtual «sería genial». Otro proyecto podría ver Renderhook, que trae el trazado de rayos a GTA, trasladado a re3. «Veremos …», dice aap.

Ya hemos visto algunos puertos interesantes de trabajo en progreso surgidos de re3, incluidas las versiones de Wii U, Nintendo Switch y PlayStation Vita. El siguiente video, de YouTuber Modern Vintage Gamer, muestra el puerto WIP Nintendo Switch de re3:

«El puerto de Wii U fue ciertamente una sorpresa», dice aap. «Creo que un puerto de Android tendrá que hacerse tarde o temprano, pero nadie del equipo tiene experiencia con Android, por lo que probablemente tendría que ser un tercero nuevamente.

«PS2 es algo que quiero absolutamente porque es la plataforma original para GTA, pero no veo a nadie más que a mí haciendo esto (al menos tengo un devkit de PS2). PS3 también es algo que me gustaría ver o incluso hacer yo mismo, pero no tengo tiempo (al menos yo, de nuevo, tengo un devkit) «.

Son tiempos ocupados en la comunidad de ingeniería inversa de GTA. Algunos de los piratas informáticos de PS Vita que trabajaron en re3 y reVC lograron que la versión de Android de Grand Theft Auto: San Andreas de 2004 se ejecutara en la computadora de mano de Sony (está aquí en GitHub). Este no es un código fuente de ingeniería inversa, pero la inspiración, dice aap, vino directamente de poder jugar GTA 3 y Vice City en la Vita. Otros juegos de Android se están portando a la Vita mientras hablamos.

Es natural preguntarse por qué Take-Two y Rockstar no han tenido al menos una palabra con aap sobre sus proyectos. re3 requiere activos de juegos de PC para funcionar, por lo que debe tener una copia de GTA 3. Y aap enfatiza en GitHub que el código solo debe usarse con fines educativos, de documentación y de modificación. «No fomentamos la piratería ni el uso comercial», dice aap.

Pero Take-Two y Rockstar tienen la reputación de tomar una línea dura con los remakes de los fanáticos y otros que juegan con su código. ¿Estaba el equipo preocupado por una intervención?

«Sí, estábamos muy preocupados por eso y tratamos de permanecer fuera del radar durante el mayor tiempo posible», dice aap.

«Recibimos mucha atención cuando ocurrió el puerto Switch, pero nada de Take-Two. Lo tomamos como una señal de que no les importa (o son realmente ciegos)».

1

aap y compañía consideran el hecho de que el proyecto de ingeniería inversa de Super Mario 64 todavía está en GitHub como una buena señal «porque Nintendo es tan agresivo como Take-Two en estos asuntos». Hasta ahora todo bien. ¿Pero por cuánto tiempo?

aap no está esperando para averiguarlo. Lo siguiente es reLCS, un proyecto de ingeniería inversa para el juego Liberty City Stories de 2005 de PlayStation Portable. El trabajo en esto comenzó en enero de 2021 y, una vez terminado, será la primera vez que el juego tenga un puerto de PC adecuado.

¿Y luego? Grand Theft Auto: Vice City Stories, que aap describe como «probablemente el santo grial de la reversión de GTA en este momento». VCS agregó funciones a LCS, pero nunca vio un puerto de Android. Debido a esto, no hay símbolos para él en su código. La ingeniería inversa del juego de PSP de 2006 es un gran desafío.

«Veremos qué podemos hacer al respecto cuando llegue el momento», dice aap.