Llevo un tiempo experimentando con diferentes versiones del tutorial de Patrick Loeber, Train an AI to Play Snake. Es mi proyecto favorito para relajarme: divertido, fascinante y educativo. Mientras yo he pasado horas viendo simulaciones del juego Snake, ustedes solo han podido ver capturas de pantalla. ¡Eso acaba de cambiar!

Animación del juego Snake

¡Visiten el sitio en vivo de Ax3l para ver más! :)

Detalles técnicos

  • Captura: Snake Lab, el servidor de las simulaciones, registra el estado del juego después de cada movimiento: posición de la serpiente, ubicación de la comida, puntuación y configuración del tablero. Son los datos fotograma por fotograma.
  • Selección: Entre todos los juegos de una simulación se conserva el que obtiene la puntuación más alta.
  • Almacenamiento: Cuando termina la simulación, los fotogramas de ese juego se guardan como registros JSON en MariaDB.

El proyecto Snake Web muestra el estado actual del experimento Ax3l. Cada 30 minutos actualiza el sitio web con nuevos resultados, incluidas las animaciones.

  • Recuperación: Snake Web solicita los fotogramas almacenados a Snake Lab mediante el protocolo de petición y respuesta de ZeroMQ, identificando la simulación por su ID único.
  • Renderizado: La biblioteca Pillow de Python convierte los fotogramas en un GIF animado, con los gráficos del tablero, la puntuación y una pequeña animación de la comida que recorre el cuerpo de la serpiente.
  • Publicación: Snake Web selecciona los mejores juegos del día, genera los GIF y automáticamente hace commit y push al repositorio GitHub del sitio, donde GitHub Pages los publica como imágenes estáticas.