Crear un juego Javascript con ChatGPT
Una vez al año, en getDigital lanzamos nuestro infame puzzle de Pascua getDigitalPlanteamos más de 50 preguntas frikis con un nivel de dificultad cada vez mayor: Para la última pregunta, puedes esperar pasar varios días intentando resolverla. Sin embargo, puedes divertirte mucho incluso con las preguntas más sencillas y, al final, todos los participantes entrarán en un sorteo para ganar grandes premios.
Nos esforzamos mucho en crear las preguntas del puzzle con mucha antelación: crear una pregunta suele llevar más esfuerzo que resolverla, por lo que dedicamos más de 100 horas a ello cada año. Este año queríamos utilizar ChatGPT para una pregunta. La idea era crear un sencillo salto y carrera en Javascript que requiriera conocimientos de empollón además de habilidad. Primero hicimos una petición muy general a ChatGPT (versión 4):
El resultado aún no es muy convincente: Este salió (hacer clic con el ratón hace que el bloque salte por los aires, pero no puedes hacer mucho más). Así que estaba un poco confuso:
Ahora se puso realmente fascinante: ¡ChatGPT generó entonces el código para hacer que el bloque azul se moviera y saltara con las teclas de dirección! Así es como quedó el juego después.
Continuemos:
Se convirtió en esta versión.
En los siguientes pasos, añadí un temporizador de cuenta atrás y plataformas a las que el jugador puede saltar. Este es el aspecto que tenía después.
Como puedes ver, no funciona correctamente: el bloque del jugador flota sobre las plataformas y no las toca. Así que pedí a ChatGPT que arreglara el error y ahora las cosas se pusieron interesantes. ChatGPT intentó cambiar algo al azar en la función checkPlatformCollision() para arreglar el fallo, pero sólo lo empeoró:
Cada cambio que ChatGPT añadía sólo lo empeoraba. Al final, le pedí que revirtiera el código anterior a las correcciones y fui a buscar el fallo yo mismo: simplemente había un error lógico en el código de la función checkPlatformCollision() que determina si el jugador ha llegado a la parte superior de la plataforma. Para encontrar este error, sin embargo, tuve que examinar detenidamente la lógica y considerar qué comprobaciones serían correctas: Al parecer, ChatGPT era incapaz de hacer esto. En lugar de eso, cambiaba las cosas con relativa impotencia, lo que parecía más un ensayo y error salvaje que una verdadera reflexión.
El proceso continuó de la misma manera: funcionaba fascinantemente bien integrar más funcionalidades en el juego, pero siempre que había fallos que requerían un examen detallado de la lógica, ChatGPT fallaba. Otro ejemplo era un fallo en la detección de colisiones con los bloques enemigos: el código de ChatGPT sólo comprobaba las colisiones con el borde superior del bloque, mientras que el jugador podía tocar con seguridad el borde inferior. De nuevo, sólo lo descubrí comprobando cuidadosamente la lógica de colisión, ChatGPT sólo lo empeoraba cada vez que intentaba resolverlo. Incluso cuando escribí exactamente dónde estaba el fallo.
Creo que las limitaciones que observé son significativas: ChatGPT no es capaz de comprender realmente lo que produce. "Simplemente" sólo produce lo que se ajusta bien a lo que hay en la solicitud y a las respuestas producidas hasta el momento. Esto funciona sorprendentemente bien, pero no hay que cometer el error de pensar que ChatGPT desarrolla una comprensión real de lo que está escribiendo.
Utilizaremos el juego final con todos los errores corregidos por mí en el puzzle de Pascua de 2023. Tiene el siguiente aspecto.