Recreando Snake con Amazon Q CLI #BuildGamesChallenge
Durante este mes de junio, AWS lanzó el Build Games Challenge, una iniciativa para construir juegos clásicos utilizando su asistente de desarrollo con IA, Amazon Q Developer CLI. Quería aprovechar esta oportunidad para ver si realmente podía crear el juego sin tocar una línea de código, y aprovechar esto para participar.
Para este desafío, decidí recrear el icónico juego Snake 🐍.
¿Por qué Snake? Link to heading
Fue el primer videojuego que jugué en un teléfono móvil, no consigo recordar el modelo, pero tenía tapa. Recrearlo me hacía ilusión y me parecía un reto perfecto para probar Amazon Q CLI.
El Proceso de Desarrollo con Amazon Q Link to heading
Aquí es donde la IA entró en juego. Utilicé Amazon Q para generar el 100% del juego, desde la estructura inicial hasta los detalles más avanzados. Este fue un objetivo que me propuse: no escribir ni una línea de código.
1. Preparando el entorno Link to heading
La instalación fue sencilla. Solo tuve que instalar el Amazon Q Developer CLI y autenticarme con mi Builder ID:
❯ q login
✔ Select login method · Use for Free with Builder ID
Device authorized
Logged in successfully
Después, comprobé que todo funcionaba correctamente con:
❯ q doctor
✔ Everything looks good!
2. Primeros pasos: el prompt inicial Link to heading
El punto de partida fue un prompt claro y detallado. Cuanto más específico sea el contexto, mejores serán los resultados y menos iteraciones serán necesarias. Por ejemplo, en vez de pedir simplemente “Crea un Snake en Pygame”, preparé un archivo de requisitos con detalles como:
- El lenguage y librería a usar.
- Las reglas de crecimiento y colisión.
- La presencia de niveles y power-ups.
- El comportamiento esperado en cada dificultad.
Puedes encontrar este archivo en github.
A continuación, inicié la conversación con Q:
Antes de escribir el prompt, añadí el archivo de requisitos como contexto:
Y finalmente, le pedí a Q que generara el juego con un prompt como este:
❯ Crea un juego Snake en Python usando Pygame. Utiliza REQUIREMENTS.md para obtener los requisitos y reglas que debe cumplir el juego. Genera el código completo y asegúrate de que sea fácil de modificar para añadir nuevas funcionalidades.
Quieres poder editar tus prompts multilínea de una forma más fácil? Usa
/editor
3. Técnicas útiles Link to heading
Durante el desarrollo, fui aplicando varias técnicas que me ayudaron a sacarle el máximo partido a Amazon Q CLI y a agilizar el proceso de creación del juego:
- Iterar sobre el gameplay: Tras obtener una primera versión funcional, fui pidiendo mejoras incrementales, siempre aportando contexto actualizado (
/context add main.py
). - Prompts detallados para evitar contradicciones: En vez de pedir “Hazlo más difícil”, especificaba: “En el modo experto, la velocidad inicial debe ser 12 y aumentar 0.5 por nivel”.
- Solicitar explicaciones: Pedía a Q que comentara el código o explicara partes complejas, lo que me ayudó a entender si la lógica estaba bien implementada.
- Reutilizar y recargar contexto: Si algo no funcionaba, podía pedir: “Ignora los últimos cambios y vuelve al estado anterior usando este archivo como referencia”.
Algunos prompts utilicé:
- “Añade un menú interactivo al inicio del juego para seleccionar la dificultad (principiante, normal, experto) antes de empezar la partida. Asegúrate de que el menú sea visual y fácil de usar con el ratón.”
- “Implementa power-ups que aparezcan cada 5 puntos. Los power-ups deben tener los efectos descritos en el archivo REQUIREMENTS.md. Los power-ups durarán hasta que se consiga puntuar. Una vez puntuado se debe eliminar el efecto de los power-ups.”
- “Haz que el juego muestre en pantalla la puntuación actual, el nivel, la dificultad seleccionada y el tipo de power-up activo, si lo hay. Usa colores y fuentes que sean legibles sobre el fondo.”
- “Refactoriza el código para que sea sencillo añadir nuevos tipos de power-ups en el futuro, separando la lógica de cada power-up en funciones o clases independientes.”
- “Crea tests automáticos usando la librería pytest para comprobar que la serpiente crece correctamente al comer, que los power-ups aplican su efecto y que el juego detecta correctamente el final de la partida.”
4. Añadiendo funcionalidades avanzadas Link to heading
Gracias a la facilidad de iterar con Q, pude añadir:
- Boosters y power-ups: Como el doble crecimiento, confusión de controles, o cambios de velocidad.
- Aumento progresivo de velocidad: Según el nivel y la dificultad seleccionada.
- Pausa y reinicio: Con mensajes claros en pantalla.
Cada nueva funcionalidad la pedía con un prompt específico y, si era necesario, adjuntando el código actual para que Q lo tuviera en cuenta.
Afrontando Retos Clásicos con IA Link to heading
Uno de los mayores aprendizajes fue que, con una IA como Q, los retos clásicos de aprender una nueva librería o lenguaje pasan a un segundo plano. Ahora el foco está en el diseño del juego, la experiencia de usuario y la creatividad.
Pude dedicar más tiempo a experimentar con mecánicas nuevas, probar diferentes configuraciones y pulir detalles, en vez de pelearme con errores de sintaxis o documentación.
Resultado Final Link to heading
Todo el código fuente del juego está disponible en mi repositorio de GitHub: sbldevnet/build-games-challenge.
Es posible que vaya actualizando el código cada cierto tiempo para irle añadiendo cosas.
Conclusión Link to heading
Construir Snake con Amazon Q ha sido una experiencia divertida y reveladora. Me ha demostrado el potencial de las herramientas de desarrollo asistidas por IA para acelerar el proceso de creación, permitiéndome tener una versión inicial funcional en menos de una hora. Esto me permitió dedicarle un extra de tiempo para añadir boosters, el selector de niveles, o el aumento de la velocidad conforme se avanza en el juego, por hacer algo diferente.
Recomendaciones finales:
- Invierte tiempo en preparar buenos prompts y requisitos.
- No dudes en pedir explicaciones o refactorizaciones a la IA.
- Aprovecha la posibilidad de iterar rápido y experimentar.
- ¡Diviértete y deja que la IA te sorprenda!
¿Te animas a crear tu propio juego?