Cómo porté un juego de Amiga a Godot usando LLM en un fin de semana

Any Human Ever illustration
Ilustración del proyecto Any Human Ever

Hace pocas semanas me encontré con el código fuente de un juego de Amiga de 1993 que había quedado abandonado. Era un título de acción con scroll lateral que, en su día, hizo las delicias de los jugadores de la época. Decidí intenté portarándolo a Godot 4, el motor abierto que hoy domina el desarrollo indie, y la experiencia fue más sorprendente de lo que esperaba.

El mayor desafío no fue la traducción gráfica —Godot tiene herramientas decentes para importar sprites y tilesets antiguos— sino el código en ensamblador Motorola 68000 que el juego usaba para su motor de física y efectos de sonido. En lugar de pasar noches intentando descifrar punteros y tablas de memoria a mano, recurrí a un modelo de lenguaje grande (LLM) para ayudarme.

El truco fue estructurar la petición correctamente. En lugar de preguntar "qué hace este código", fragmenté el código en funciones pequeñas y pedí al LLM que explicara qué hacía cada bloque y, más importante, qué equivalencia tendría en el lenguaje C de Godot. Así, conseguí mapear las rutinas de colisión y los efectos de sonido originales a GDExtension functions en cuestión de minutos.

Lo que más me sorprendió fue qué tan bien el LLM manejó los registros y saltos del 68000. Sí, cometía errores ocasionales en el direccionamiento de memoria, pero con un par de iteraciones de "esto no funciona, revisa el error" logré corregir el rumbo. Al final, solo tuve que escribir desde cero unos 300 líneas de código C/GDScript que reemplazaban el núcleo del juego, mientras que el LLM me proporcionó aproximadamente el 70% de la lógica traducida.

El resultado funciona sorprendentemente bien. Los saltos de pantalla, la física del personaje y hasta el sistema de power-ups se comportan como en el original, pero ahora con las ventajas de Godot: soporte para shaders modernos, física basada en cuerpos y una comunidad activa. Publicé el proyecto en itch.io y en menos de un fin de semana tenía algo jugable.

¿Sirve esto para todo? Obviamente no. Juegos con mecánicas muy complejas o protección anti-copywall romperán cualquier traducción automática. Pero para código de videojuegos retro bien estructurado, un LLM puede ser un multiplicador de productividad de 3x a 5x. Si tienes un proyecto antiguo que te gustaría recuperar, no dates por vencido —prueba primero con una pequeña función y verás hasta dónde llega.

¿Has intentado recuperar algún proyecto antiguo? ¿Usarías IA para ayudarte? Cuéntame en los comentarios.