Laboratorio IA: Space Invaders desde 0

Creando mi primer videojuego con IA generativa 

Gráficos de alienígenas propuestos por ChatGPT para incluir en el juego de space invaders.


¿Te imaginas crear un videojuego sin experiencia previa en programación de juegos? En este workshop documentaré cómo he conseguido desarrollar un clon de Space Invaders utilizando ChatGPT y Claude 3.5 Sonnet, sin conocimientos previos de JavaScript y en tiempo récord.

Objetivos del laboratorio

  • Crear un juego funcional estilo arcade
  • Explorar las capacidades de las IAs generativas en programación
  • Documentar el proceso y sus limitaciones
  • Analizar el potencial futuro de estas herramientas

Desarrollo del proyecto

Fase 1: Desarrollo inicial con ChatGPT

Comencé el proyecto solicitando a ChatGPT que generara un código base para un juego tipo Space Invaders. La primera versión fue sorprendentemente funcional, aunque básica. Puedes probar esta versión inicial siguiendo el enlace de la sesión con ChatGPT que te comparto y descargando el primer código, guardarlo en un archivo con extensión .html y abriéndolo en tu navegador.

Primera versión de Space Invaders generada por ChatGPT. Muestra la pantalla de partida con las naves invasoras representadas por rectángulos rojos y el defensor como un rectángulo verde en la parte inferior de la pantalla.


Fase 2: Iteraciones y mejoras

Empecé el proceso de mejora del juego con la idea de hacerlo yo mismo con las indicaciones de la IA:
¡Prueba este prompt!

Te voy a ir dando indicaciones de cada aspecto a mejorar. En vez de generar una versión nueva completa del juego dame indicaciones de en qué punto del código debo tocar y dame el código nuevo; la idea es que yo pueda entender cómo está desarrollado el juego y que aprenda a modificarlo. Cuando acabes de darme indicaciones pídeme la siguiente mejora.

Primera mejora: Hay que hacer ajustes en el laser del defensor:

- Cuando se está disparando se bloquea el movimiento lateral; debería poderse desplazar y disparar al mismo de forma simultánea.

- Cuando se deja pulsada la tecla de disparo, genera un láser continuo lo que hace que sea muy fácil destruir a todos los invasores. Al dejar pulsada la tecla de disparo debe disparar constantemente pero dejando un intervalo entre disparo y disparo.



Al principio este enfoque funcionó muy bien y fui generando nuevas versiones que cada vez hacían más cosas. Como puedes ver en la sesión con ChatGPT compartida, llegó una modificación que no acababa de funcionar bien y tras dos intentos fallidos pruebo algo distinto. Para tratar de reconducirlo le pedí que generará el juego completo, pero generó una versión que no funcionaba en absoluto. En ese momento decido cambiar de IA. 

Fase 3: Optimización con Claude

Para superar los obstáculos, trasladé el proyecto a Claude 3.5 Sonnet. Subí la versión generada por ChatGPT y le pedí que la revisara:

Se muestran las mejoras propuestas por Claude tras revisar el código proporcionado.

¿Y qué hizo Claude?
  • Revisión detallada del código existente
  • Sugerencias de mejoras específicas
  • Ayudarme con la codificación de las mejoras

Desafíos encontrados

El principal reto fue la limitación de longitud en las respuestas de las versiones gratuitas que son las que yo utilizo. La solución fue:
  1. Guardar cada versión funcional como HTML
  2. Iniciar nuevas conversaciones para cada mejora
  3. Hacer prompts incluyendo la solicitud de mejora y a continuación el código html
Siguiendo esta técnica y con mucha paciencia llegué a mejorar los gráficos, añadir defensas e incluso poner efectos de sonido. Algunos de los cambios le supusieron mucho esfuerzo a la IA ya que tardó en responder e incluso llegó  a agotar el tiempo de respuesta máximo antes de finalizar. El resultado quedó bastante presentable:

Aspecto del juego mejorado por Claude; ha añadido defensas y ha mejorado el aspecto general del juego.



Reflexiones y perspectivas de futuro

Al final el resultado ha merecido la pena. La versión de Claude tampoco es el mejor arcade al que he jugado, pero sin duda es algo excepcional teniendo en cuenta mi nula experiencia previa con videojuegos. 

Lanzo algunas reflexiones para que le des una vuelta:
  • ¿Qué pasará si utilizamos una IA especialmente entrenada para programar? 
  • ¿Qué pasará si dicha IA programadora la utiliza un programador experimentado?
  • ¿Y si la IA puede conectarse a mi repositorio de código y puede adaptarse a mi personal estilo de codificación o incorpora mi framework de desarrollo o mis conceptos de negocio? (por ejemplo GitHub Copilot)
  • ¿Qué puede pasar dentro de 2 o 3 años cuando estas herramientas mejoren?
Si crees que tu jubilación llegará antes de que veas la gran revolución que suponen estas herramientas en el mundo del desarrollo del software, confío en que tengas más de 60 años porque de lo contrario estarás equivocado. 


Conclusiones

Este experimento demuestra el potencial transformador de la IA generativa en el desarrollo de software. A pesar de las limitaciones actuales, los resultados son prometedores incluso para usuarios sin experiencia en programación. La velocidad de evolución de estas herramientas sugiere que estamos ante el inicio de una revolución en el desarrollo de software.

Si quieres probar la versión de Claude envíame un mensaje. 

Comentarios

Entradas populares de este blog

Perplexity PRO: la IA que promete mucho pero convence poco

De principiante a experto: cómo mejorar tus prompts para IA generativa

¿Puede ser que José Mota tenga tanto talento como yo? ¡IA IA Oh!