Subí una captura (snapshot) de un famoso juego isométrico a Claude y le pedí (con algunos criterios muy específicos) que descompilara el juego a partir de ella y lo reescribiera por completo en BlitzMax, con la intención de que todo (menús, jugabilidad, sonidos, etc.) funcionara exactamente igual que en el juego original.
Madre mía. En poco más de una hora ya estaba listo, y el resultado es asombroso.
El código resultante de BlitzMax es fácil de seguir y está comentado.
Por si a alguien le interesa, este fue mi prompt (usando la configuración «Low» de Claude Opus 5.5):
hola.
descompila esto.
me gustaría portarlo a blitzmaxNG 0.165.3.61.
Porta TODO el programa a blitzmax.
Código muy simple, limpio, fácil de seguir y totalmente sin optimizar.
Intenta crear un sonido equivalente para cada sonido del programa.
Haz que se ejecute en una ventana de 1280x800, donde la pantalla del cpc esté escalada x 4.
sin optimización.
sin florituras.
solo un port directo 1:1.
nada de cosas raras de memoria para recorrer los datos, solo arrays simples donde sea posible.
la regla de oro es mantener el código de blitzmax LO MÁS SIMPLE POSIBLE, y lo más legible y fácil de seguir que se pueda.
en serio, ¡nada de florituras ni cosas «sofisticadas» para nada!
Básicamente el mismo juego, los remakes serán más fáciles de crear.
He probado con el código fuente de mi juego Bitume a migrarlo a mi framework de C++ con Direct2d (una actualización del framework de Direct3d que utilicé para el remake de Hurlements para Windows). Y funciona, por supuesto.
De nuevo, otro tipo de juego que intentaba recrear a mano en un proyecto (creando una especie de framework isométrico para CPC)… Tratando de aprender sobre la marcha (incluso conseguí un artículo de Jon Ritman al respecto para leer). Y la IA puede simplemente darme el código si quiero.
Pero no pasa nada, es solo «una implementación» entre muchas… Puedo seguir avanzando despacio (en lugar de a base de chapuzas de IA).
¿Tenías pensado editarlo y usarlo como base para otro juego? ¿O es simplemente por el placer de portarlo?
Siempre me ha interesado saber cómo se hacían los juegos isométricos, sobre todo teniendo en cuenta las limitaciones del hardware. Además, el código de BlitzMax es muy fácil de seguir y resultará sencillísimo aprender de él. La IA me ha dado la oportunidad de analizar y comprender de verdad cómo funciona.
Y tengo que decir que Jon Ritman es un genio absoluto. La relación de causa y efecto entre los objetos del juego, las interacciones entre personajes y objetos, personajes y superficies, y entre personajes entre sí, es extraordinariamente profunda y llena de matices. Nunca llegué a apreciar del todo lo ingenioso que es en realidad Head Over Heels. No es solo una obra maestra de la jugabilidad, sino también de la programación.
Head Over Heels es mi juego de CPC favorito de todos los tiempos, así que poder asomarme tras bambalinas es algo muy especial para mí. Estoy pensando en pedirle a Clause que porte Rasputin a continuación…
Desafortunadamente, el personaje del jugador es un revoltijo de píxeles y ninguna tecla de control hace que se mueva.
En cuanto se restablezca mi límite de uso, continuaré con ello.
Es una buena idea usar un sistema de juegos orientado a BASIC; el código debería ser más legible que convertido a C++ y mantener solo la lógica del juego.
El código BlitzMax resultante de los 3 juegos es, de hecho, muy fácil de entender y seguir. Todavía no sé qué pensar al respecto desde el punto de vista ético, pero como herramienta de aprendizaje es tremendo.
Ya existía un problema similar con los juegos desensamblados, pero eso aún requería una buena dosis de habilidad técnica en el contexto del desarrollo para CPC.
Es un muy buen punto… sin embargo, en este caso no me «gané» el derecho a examinar cómo funcionan los juegos. Simplemente, de repente (y de forma muy fácil), tengo la capacidad de entender los algoritmos utilizados en estos juegos de código cerrado.
Por supuesto, el código fuente original no está disponible y esto es una reconstrucción. Pero, en cuanto a los algoritmos, es probable que sea una representación muy válida de lo que crearon los desarrolladores originales. Se siente como hacer trampa.