¡UGH! (port de la versión DOS)

Participación en código y lógica

Full Vibe-Code (la IA generó casi todo el código del juego)

Participación en recursos y pipeline

Desconocido (desarrollador externo

Notas del proyecto e indicaciones (prompts)

Se utilizó la herramienta REA para aplicar ingeniería inversa al binario de DOS a Python y, luego, VS Code con Claude Code junto con mi habilidad, archivos de conocimiento de CPC y herramientas preconstruidas para desarrollar el juego de forma iterativa.

3 Me gusta

ughr.dsk (199.8 KB)

1 me gusta

UGH-CPC-Manual-v1.0.pdf (2,4 MB)

2 Me gusta

Está entretenido de jugar, no recuerdo haberlo probado anteriormente en DOS , saludos !!!

2 Me gusta

sí, uno de mis juegos favoritos de DOS, puedes jugar con un amigo en el mismo ordenador, y además hay más o diferentes niveles (¡y hay MUCHÍSIMOS niveles!)

No lo he probado lo suficiente, probablemente sacaré una nueva versión con algunas mejoras, pero parece que es totalmente jugable.

Si encuentras algún error o tienes una petición de funcionalidad avísame; también publicaré el código fuente en algún momento, como referencia.

Y como esto ha resultado ser un experimento exitoso, quizás me ponga a trastear y modifique el juego / cambie la jugabilidad o introduzca nuevas funciones… potenciadores… esta es una de las cosas buenas que podemos hacer con la IA y la ingeniería inversa/recompilación de juegos => ¡también podemos ser creativos, no solo «vibe coding»!

A ver, ¿por qué alguien no jugaría a la versión de PC, que es infinitamente superior, en lugar de esta versión de CPC lenta, de aspecto aburrido y cocinada con IA? ¿Es algún tipo de fetiche? En plan: «rompamos algunos juegos y juguemos con ellos después de empeorarlos».

¿Y cuál es exactamente el logro aquí? ¿Acaso el «creador» rompió algún molde al teclear los prompts en su LLM? ¿Iba buscando el desafío del «prompt de hasta 256 palabras»? ¿Y qué viene después, 128 palabras? ¿64?

¡Bienvenidos a esta maravillosa era de la nada!

Edit: además, me encanta la mentalidad de «no jugué mucho, pero parece jugable». ¡Yuju, el progreso del intelecto humano!

Por favor, mantén la cordialidad.

He corregido las etiquetas y añadido una de «wip».

1 me gusta

@rexbeng Hola, hater de la IA sin argumentos válidos hasta ahora :slight_smile: — permíteme responder:

Entonces, ¿por qué alguien no jugaría la versión de PC, tan superior, en lugar de esta versión de CPC lenta, de aspecto aburrido y cocinada con IA? ¿Es un fetiche? ¿En plan «vamos a destrozar algunos juegos y a jugarlos después de empeorarlos»?

Bueno, espero que puedas entender que tu pregunta no tiene ningún sentido, especialmente en un foro de informática retro. Verás, nos encantan estas máquinas lentas y, aunque hay ordenadores más rápidos, de vez en cuando seguimos queriendo usar nuestro lento CPC. Y, por supuesto, en una máquina lenta, dependiendo de varios factores, puedes obtener juegos lentos, ¡aunque no creo que este port sea lento en absoluto! El movimiento es 1x para todo (en modo 1), con animaciones, transparencias, música, 2 jugadores…

¿Y cuál es exactamente el logro aquí? ¿Acaso el «creador» rompió moldes al teclear los prompts en su LLM? ¿Iba tras el reto de un prompt de «hasta 256 palabras de largo»? ¿Y qué viene después: 128 palabras? ¿64?

No estás entendiendo el punto, yo no presumo de haber logrado nada; solo estoy compartiendo una experiencia y un gran port de un juego que creo que la gente puede disfrutar. Además, la afirmación de que «tienes que esforzarte para que las cosas tengan valor» es terriblemente errónea por muchas razones que ahora no me voy a molestar en explicar. Pero, ya que estás tan interesado en el esfuerzo que dediqué, aquí tienes un breve resumen:

  • Creé un dev container con un entorno para que la IA pudiera hacer juegos de CPC en asm, proporcionándole: una base de conocimientos estructurada sobre diferentes temas, ejemplos de código, trucos, etc., que pude recopilar y organizar

  • En este contenedor añadí herramientas y scripts que pueden actualizarse automáticamente y compilarse desde el código fuente o descargar binarios (emulador headless adaptado para una depuración aún mejor por línea de comandos, compilador, herramienta de imágenes de disco, convertidores y reproductores de gráficos y arkos 3, código base para el cargador, etc…)

  • También añadí aquí archivos de habilidades (runbooks), siendo el principal el de las instrucciones sobre cómo crear un bucle para el desarrollo adecuado de juegos para z80 con depuración y pruebas mediante el emulador headless

  • Usé mis conocimientos sobre la plataforma CPC para redactar y ajustar los requisitos con el fin de hacer que el juego fuera viable y lo mejor posible en una plataforma más restrictiva como lo es el CPC, por lo que tuve que rediseñar y decidir la resolución, la paleta para cada sprite, la distribución de la memoria, decidir si el agua de color era más importante que el sonido, usar movimiento de 4px o 1px (velocidad frente a fluidez)…

  • Hice algo similar preparando el dev container listo para usar la herramienta REA e hice ingeniería inversa del juego de DOS a Python con los requisitos del juego en archivos de texto

(esto es solo lo que se me viene a la cabeza rápidamente, probablemente haya más…)

Dicho todo esto, probablemente me encantaría que la IA nunca hubiera existido, ya que considero que es un ARMA muy poderosa para la cual la humanidad no está preparada. Pero existió y no se puede detener.

1 me gusta

Gracias por la respuesta. Sin embargo, me reafirmo en lo dicho. Tras la época comercial, el objetivo de adaptar cualquier juego al CPC ha sido, hasta ahora, el esfuerzo de un desarrollador por demostrar su tesis (planteémoslo en términos académicos, ¿por qué no?) de que el ordenador es perfectamente capaz de ejecutar dicho juego sin más limitaciones que las puramente técnicas, o incluso mejorar el juego en algunos casos aplicando conocimientos avanzados de programación, gráficos, sonido e incluso hardware (para sortear esas limitaciones técnicas).

Alimentar un LLM con la propiedad intelectual de otras personas no se parece en nada a lo anterior. Afirmas haber dedicado todo ese esfuerzo a crear ese contenedor de desarrollo y, sin embargo, lo único que hiciste fue una conversión del código de otros. Por lo tanto, aunque con razón reconoces que «no lograste nada», también aseguras estar compartiendo experiencia; ¿seguro? Te limitaste a compartir lo que se generó. Y luego nos encontramos con la noción (que no creo haber mencionado en mi publicación, pero da igual) de que «está mal esforzarse para dar valor a las cosas» porque, claro, ¿para qué esforzarse si puedes meter el trabajo de otros en un LLM y generar el resultado mientras te to… eh… tomas un café?

En cuanto a los argumentos válidos y el odio a la IA, puedes llevarte eso a ese hilo, porque @Gryzor está hasta las narices de mis quejas y preferiría ahorrarle la molestia de tener que andar moviendo mensajes de un hilo a otro.

Así que, en serio, la pregunta es: ¿cuál es el sentido? ¿Qué tal si no publicas juegos generados por IA? ¿Has pensado en eso?

1 me gusta

Esto es lo que no tiene mucho sentido. Portar un juego hacia abajo demuestra… ¿qué, exactamente? ¿Lo bien que puede funcionar un LLM? Vaya, qué pasada. Sobre todo cuando se trata de un «no lo he probado de verdad, pero parece que está bien».

(De forma parecida, tampoco le veo sentido a portar hacia arriba desde sistemas inferiores, como solemos ver: ¿qué gracia tiene ver un juego de una máquina muy inferior al CPC corriendo en este último y viéndose exactamente igual?)

1 me gusta

Parafraseando a JFK: no hacemos estas cosas porque sean fáciles, las hacemos porque somos raros.

1 me gusta

Creo que es excepcionalmente difícil argumentar, si el único propósito es demostrar la tesis de que el CPC es capaz de ejecutar dicho juego, que la parte de «cómo se llega ahí» es prácticamente irrelevante.

Lo cual no significa que esté de acuerdo con la premisa anterior, sino simplemente que, si lo estás, entonces «el fin justifica los medios», por así decirlo.

Por supuesto que es relevante. El desarrollador tiene que averiguar «cómo llegar ahí» y equilibrar los objetivos, los recursos y los activos en consecuencia. Y compartir ese conocimiento para que otros lo lleven más lejos, etc.

Sin embargo, si tomara el código de Vespertino y se lo diera a un LLM para generar un juego que incluya, digamos, los coches de Outrun, no estaría demostrando nada nuevo ni generando conocimiento. Al menos no de una importancia significativa.

Me cuesta asimilar con qué facilidad algunas personas descartan los fundamentos de aportar valor a la actividad y al intelecto humanos. Es como si estuvieran aburridos de las mismas cosas que nos hacen humanos.

1 me gusta

¿En qué se diferencia eso de simplemente modificar los sprites de un juego existente, algo que se lleva haciendo durante años?

No estoy sugiriendo que debamos defender o apoyar el plagio de los proyectos de otros, pero pretender que los remakes/hacks de sprites/modificaciones de juegos existentes hechos por personas con conocimientos mínimos de programación son de algún modo «algo nuevo» es falso. Mira cuántos juegos hay en el hilo de conversiones de GX4000 y pregúntate si la mayoría de quienes los hacen podrían sinceramente haberlos creado completamente desde cero.

Estoy parcialmente de acuerdo con el primer párrafo: empecé con la programación retro allá por 2018, creo, después de más de 20 años, y disfruté muchísimo de las limitaciones y del desafío que te ponen por delante las máquinas antiguas. Realmente despierta la creatividad cuando tienes las manos atadas.

Pero un dato interesante es que cuando mi jefe de aquel entonces me preguntó: «¿Por qué quieres programar para Amstrad en 2018?», le respondí: «Porque cuando era joven solo podía hacer algunos juegos simples, pero siempre quise hacer juegos mucho mejores y ahora puedo cumplir mi sueño de la infancia, con mis más de 20 años de experiencia y nuevas herramientas, como compiladores cruzados, emuladores…». Y lo hice (creamos un juego sobre una IA malvada para cpcretrodev 2019: Ludic Break The Loop).

Pero eso fue en aquel momento. En la actualidad, creo que mi respuesta es la misma: «¡Siempre quise hacer juegos/software mucho mejores Y AHORA PUEDO!», ¡pero con aún más herramientas! La herramienta de IA me brindó esta posibilidad: puedo centrarme en el proceso creativo y no preocuparme por cuánto tiempo necesitaré para implementar o probar una idea. Recuerdo que dedicaba alrededor del 80 % del desarrollo para Amstrad a una tediosa depuración y optimización que, a menudo, exigía reescribir grandes partes del código. Aunque la sensación de resolver un problema difícil es genial, también podría aprovechar ese tiempo para otras cosas.

Ahora bien, todo esto ocurre cuando realmente creo algo, con o sin la ayuda de la IA, y este port de UGH no fue eso: aquí no creé el juego ni puedo atribuírmelo, obviamente (al fin y al cabo, es un port), pero sí creé y probé un proceso y herramientas que desarrollé yo mismo, ¡en un ejemplo del mundo real, un juego completo! Además, sí compartí de forma resumida la experiencia de lo que hice (muy brevemente) en mi primer mensaje, y para cualquiera que quiera saber más, aquí estoy.

Respecto a lo de que «no hace falta ningún esfuerzo para crear algo usando IA» => ¡eso no es verdad! (otro tema).

En este ejemplo (PORT de un juego), sí, mi esfuerzo fue pequeño, pero se debió a que todo era un experimento para comprobar:

(1) ¿Qué tan buena es la herramienta REA?
(2) ¿Es suficiente lo que genera REA para crear un port de Amstrad usando mi entorno?

Y fue un éxito.

Así que, para responder a tu pregunta (supongo que justa): «¿Cuál es el sentido?»: básicamente, jugar y ver qué es posible, y potencialmente utilizar la experiencia adquirida en el futuro cuando sea necesario. Y además, también tenemos un nuevo juego divertido.