La IA nos enseña cómo pasarse un juego de NES

La IA nos enseña cómo pasarse un juego de NES

Super Mario Bros lleva casi tres décadas entre nosotros. Durante este tiempo, ha sido explorado y escudriñado profundamente por los jugadores. El científico Tom Murphy, se propuso una tarea algo diferente: que el juego se supere a sí mismo.

Durante la feria científica SigBovik, celebrada anualmente para mencionar algunos avances computacionales algo especiales, Murphy presentó un programa que “resuelve” el Super Mario Bros y que incluso está en capacidad de hacer lo mismo con otros juegos para NES. A través de técnicas matemáticas y algoritmos, construyó un método para determinar el orden óptimo que debe presentar una serie de valores, permitiendo así que un juego pueda jugarse a así mismo.

Para lograrlo, diseñó dos programas: LearnFun y PlayFun. Luego se grabó jugando el primer nivel de Super Mario Bros. La NES genera 60 frames de 2048 bytes por segundo, por lo que dicha información fue ingresada al programa LearnFun. Todo lo que se almacena en la memoria de la consola: botones presionados, puntaje, ubicación de Mario y los enemigos o el número de vidas sirvió como información de entrada para dicho algoritmo.

Luego entra en acción PlayFun, que se vale del conocimiento almacenado en LearnFun para intentar elevar los valores que se interpretan como un avance dentro del juego, como por ejemplo el puntaje o que el personaje siempre se mueva hacia la derecha.

Tras este entrenamiento, los resultados asombran. Mario juega como si se tratara de una persona real, saltando sobre los enemigos y golpeando cajas para obtener monedas. El programa incluso saca ventaja de ciertos glitches, como la sincronización de los saltos. Esto porque Mario es invencible cuando esta cayendo, por lo que caer sobre un Goomba en esta etapa no mata al personaje sino que le da un pequeño impulso para saltar.

La IA nos enseña cómo pasarse un juego de NES

El método no es totalmente efectivo, pues comete errores “tontos” en ciertos lugares. En cierto punto del nivel, Mario se queda estancado, al no poder regresar sobre sus pasos e intentar una ruta diferente cuando se queda empantanado. Esto es una consecuencia de la simplicidad del método, que se basa en la necesidad de que el personaje siempre avance hacia la derecha, realizando ciertos saltos y movimientos para incrementar su puntaje.

A pesar de realizar ajustes constantemente, el juego nunca llega a finalizarse. Sin embargo, es notable lo conseguido si se toma en cuenta el poco tiempo de desarrollo. Así mismo, Murphy demuestra cómo extender el mismo concepto hacia otros títulos de los 8 bits de Nintendo, como Adventure Island o Karate Kid. Un ejemplo a destacar es lo conseguido en Bubble Bobble, donde los resultados son sorprendentes. También destaca su temeridad al jugar al PacMan.

El otro lado de la moneda se presenta al jugar Tetris, donde el método falla completamente. De acuerdo a la lógica de los algoritmos, el juego entiende que el camino más corto hacia un puntaje alto es apilar los bloques uno encima de otro de forma aleatoria. Cuando la pantalla se llena, la IA decide pausar el juego, por lo que el algoritmo determina que la única forma de ganar en el Tetris es simplemente no jugarlo.

La IA nos enseña cómo pasarse un juego de NES

Pero el experimento de Murphy no es el único que se ha realizado. Por ejemplo, cada año se celebra el llamado “Mario AI Championship“, en el que cada participante trabaja en base a un clon de Super Mario Bros implementado sobre el lenguaje Java. Sobre este programa se realizan varias competiciones como aprendizaje de rutas, generación de niveles e incluso un test de Turing. Luego, una audiencia mira en vivo a humanos e IA jugando el título. Cada asistente vota por el que piensa que es la entidad de IA. El ganador se obtiene al determinar que participante ha logrado engañar a un mayor número de personas.

Para el caso, los algoritmos de juego y aprendizaje son muy diferentes a los usados por Murphy, pues están mucho más relacionados con técnicas como búsqueda de caminos en lugar de abordarlo como un problema computacional, por lo que los resultados son diferentes pero igual de sorprendentes. Así mismo, los niveles generados por procedimientos son igualmente llamativos y son juzgados por su factor de diversión al jugarlos. Cuando ambas técnicas son combinadas, usualmente se producen resultados deslumbrantes, como cuando la IA determina cómo sortear un nivel que genera decenas de enemigos a intervalos regulares.

Para finalizar, les dejo en primer lugar con un video en el que Tom Murphy nos explica su experimento y nos muestra los resultados. Para los interesados, también es posible acceder al paper escrito sobre el tema, que incluye explicaciones mucho más técnicas. A continuación un par de videos de los concursantes del Mario AI Championship, donde se demuestra lo que se puede lograr tanto en la búsqueda de caminos como en la generación de niveles.

Fuente: wired.co.uk

1 comentario

  1. “The First Level of Super Mario Bros. is Easy with Lexicographic
    Orderings and Time Travel. . . after that it gets a little tricky.”

    Vaya nombre más largo para un paper. xD Que por cierto, ha sido fácil de encontrar en formato pdf: http://www.cs.cmu.edu/~tom7/mario/mario.pdf

    No lo he mirado ahora, pero le echaré un vistazo en algún momento. (El vídeo ha sido buen resumen, creo yo.)

    Sobre la competición de IA ya había oído hablar. Incluso habí visto algún vídeo similar al último que pones (con esas líneas indicando posibles alternativas). Me pareció muy interesante. De hecho, recuerdo que fue cuando salió a la luz la patente de Nintendo sobre la autoayuda para el jugador, que básicamente hace justo eso: la IA pasa a tomar el control del personaje y termina el nivel desde donde se haya quedado el jugador, tomando las decisiones en tiempo real (que yo sepa; no estoy seguro 100% de cómo funciona).

    Por cierto, en el último vídeo, en 0:45, ¿me lo parece a mí o Mario hace wall-jumping? D:

¿Te gustó lo que leíste? Anímate a dejarnos tus impresiones y comentarios

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s