Una IA que aprende a jugar!!
#1
Cita
Cita:This Guy Wrote A Program That Teaches Itself To Play NES Games


This is amazing. Tom Murphy created a computer program that actually learns how to play classic NES games on its own, with a little instruction from Tom.


You can see the computerÔÇÖs progress (which begins near 6:10, after Tom's explanation of the program) in learning how to play Super Mario Bros. (and other games) in the video below. ItÔÇÖs a little hyperactive in the first version of the program, but Tom manages to iron out the intricacies to get it to play the game pretty damn well.

The project and accompanying research paper were created for the SIGBOVIK 2013 annual research conference. If youÔÇÖve got time, you should check out TomÔÇÖs research paper, which is fascinating though honestly a bit over my head.

If you donÔÇÖt have time for the full thing, hereÔÇÖs the basic explanation from Tom:


The basic idea is to deduce an objective function from a short recording of a player's inputs to the game. The objective function is then used to guide search over possible inputs, using an emulator. This allows the player's notion of progress to be generalized in order to produce novel gameplay.

If you watch the video long enough, you can even see the computer pull off some tricky moves in a couple of the games shown off. I repeat: this is amazing.

http://kotaku.com/this-guy-wrote-a-progr...-472451152




He FLIPADO en colores como hace años que no flipo. Tal cual. La IA aprendiendo a jugar(a veces incluso MUY bien, descubriendo bugs y aprovechándolos). Muy grande eso de pausar el Tetris porque va a perder en el siguiente movimiento y pasa de perder xD(con una grandísima referencia a Juegos de Guerra ahí ).

En serio. Esto es otro nivel.
#2
Cita
Está muy bien, parece bastante curioso e ingenioso, le echaré un ojillo al artículo a ver. Wink
Aunque según dice Tom, el programa consume un tiempo de CPU inmenso.

Nosotros investigamos en el entorno de la IA en juegos y es relativamente 'sencillo' obtener agentes que jueguen muy bien a un juego, sobre todo en niveles de dificultad intermedios.
Y por intermedios me refiero a muy chungos para un humano.

Os dejo un ejemplo de uno de nuestros agentes entrenado para jugar niveles de dificultad 3 de un clon de Super Mario:



Es tiempo real y no está trucado, si lo tocan varias veces (al ser grande o tener la flor de fuego) muere. ;D
De hecho, hay agentes muuucho mejores que este.

Existen competiciones en el entorno científico en muchos juegos, como Super Mario, Pac-Man, Unreal, StarCraft, Juegos de coches, etc. Y se pueden ver cosas muy curiosas.

Si os interesa este tema os remito a nuestro blog (http://geneura.wordpress.com/2013/02/07/863/) y a algunas de mis presentaciones en SlideShare (http://www.slideshare.net/Slidemora/presentations).
Ale, ya dejo de hacer publicidad, jeje.

Pero venía al pelo y como nunca se suele hablar de esto en el foro, pues aprovecho. Big Grin

Saludos.
#3
Cita
(12-04-2013 01:18)Samuso link escribió:Está muy bien, parece bastante curioso e ingenioso, le echaré un ojillo al artículo a ver. Wink
Aunque según dice Tom, el programa consume un tiempo de CPU inmenso.

Nosotros investigamos en el entorno de la IA en juegos y es relativamente 'sencillo' obtener agentes que jueguen muy bien a un juego, sobre todo en niveles de dificultad intermedios.
Y por intermedios me refiero a muy chungos para un humano.

Os dejo un ejemplo de uno de nuestros agentes entrenado para jugar niveles de dificultad 3 de un clon de Super Mario:



Es tiempo real y no está trucado, si lo tocan varias veces (al ser grande o tener la flor de fuego) muere. ;D
De hecho, hay agentes muuucho mejores que este.

Existen competiciones en el entorno científico en muchos juegos, como Super Mario, Pac-Man, Unreal, StarCraft, Juegos de coches, etc. Y se pueden ver cosas muy curiosas.

Si os interesa este tema os remito a nuestro blog (http://geneura.wordpress.com/2013/02/07/863/) y a algunas de mis presentaciones en SlideShare (http://www.slideshare.net/Slidemora/presentations).
Ale, ya dejo de hacer publicidad, jeje.

Pero venía al pelo y como nunca se suele hablar de esto en el foro, pues aprovecho. Big Grin

Saludos.
Te corrijo el video
Un saludo
#4
Cita
Como bien ha dicho Samuso, y no lo voy a hacer mejor que él porque no es mi campo, desarrollar agentes inteligentes no es muy complejo (aunque si que lo es optimizarlo). Aún me van contando cosas compañeros que pasaron a profesores en mi antigua Universidad y en 1º de carrera se hace un torneo de lógica donde, según tengo entendido se hace lo siguiente:

- Se acude con el agente inteligente (un Pac-Man) ya desarrollado (supongo que será la práctica de la asignatura).

- Durante todo el día se van haciendo mapas que se van subiendo.

- Cuando quieras puedes subir tu Pac-Man a un mapa que no sea tuyo y si lo supera ganas puntos.

- El que al final del día tenga más puntos gana (el que más mapas ha superado).

Se ha dicho muchas veces que hacer una buena IA no tiene que ser muy complejo, aunque como requiere de un largo periodo de desarrollo y pruebas no suele compensar.
Hago juegos para odiarlos luego.
#5
Cita
oye samuso, la verdad es que me ha intrigado un poco lo mucho que controlas del tema

a qué te dedicas?
#6
Cita
(12-04-2013 15:31)Corona Radiata link escribió:oye samuso, la verdad es que me ha intrigado un poco lo mucho que controlas del tema

a qué te dedicas?

Mismamente soy Doctor en Informática e investigador contratado en la Universidad de Granada.
Mi campo principal de investigación es la Inteligencia Computacional en videojuegos. ;D

Me centro en Super Mario, Unreal y un par de RTSs sencillos de pasados Google AI Challenges: Planet Wars y ANTS.

Es un tema que me encanta, aunque no puedo dedicarle todo mi tiempo, como me gustaría, jeje.

Si te interesa echa un ojo a mi presentación de "Ciencia y Videojuegos" en Slideshare y, si te sigue interesando (XD), te puedo pasar material a sacos. ;D

Un saludo.
#7
Cita
(13-04-2013 00:56)Samuso link escribió:Mismamente soy Doctor en Informática e investigador contratado en la Universidad de Granada.
Mi campo principal de investigación es la Inteligencia Computacional en videojuegos. ;D

Me centro en Super Mario, Unreal y un par de RTSs sencillos de pasados Google AI Challenges: Planet Wars y ANTS.

Es un tema que me encanta, aunque no puedo dedicarle todo mi tiempo, como me gustaría, jeje.

Si te interesa echa un ojo a mi presentación de "Ciencia y Videojuegos" en Slideshare y, si te sigue interesando (XD), te puedo pasar material a sacos. ;D

Un saludo.

A mí me interesa ese material a sacos! Estoy haciendo un RTS(bastante simplón) como proyecto de fin de carrera y uno de los objetivos es plantear una IA interesante. He escrito una muy simple para ir probando pero todavía no me he puesto en serio con ella y la verdad es que no tengo bagaje ninguno con eso y no tengo muy claro como plantearlo.
#8
Cita
(13-04-2013 11:09)Margaruga link escribió:A mí me interesa ese material a sacos! Estoy haciendo un RTS(bastante simplón) como proyecto de fin de carrera y uno de los objetivos es plantear una IA interesante. He escrito una muy simple para ir probando pero todavía no me he puesto en serio con ella y la verdad es que no tengo bagaje ninguno con eso y no tengo muy claro como plantearlo.

Para una IA así te recomiendo cosas simples como A* simplificados con heurísticas simples como distancia manhattan más distancia de visión. Cada iteración se desplaza y mira en la distancia si tiene un objetivo, sino va al más cercano prioritario (que suele ser el centro de mando enemigo más cercano).

Todo esto con visión absoluta del campo de batalla por parte de la máquina, como en los viejos tiempos. Para un proyecto de fin de carrera no te recomiendo que te metas en follones más grandes. Smile
Hago juegos para odiarlos luego.
#9
Cita
(13-04-2013 11:32)RGBCYMK link escribió:Para una IA así te recomiendo cosas simples como A* simplificados con heurísticas simples como distancia manhattan más distancia de visión. Cada iteración se desplaza y mira en la distancia si tiene un objetivo, sino va al más cercano prioritario (que suele ser el centro de mando enemigo más cercano).

Todo esto con visión absoluta del campo de batalla por parte de la máquina, como en los viejos tiempos. Para un proyecto de fin de carrera no te recomiendo que te metas en follones más grandes. Smile

Ahora mismo trabaja de una forma parecida, la máquina conoce la posición de todos los elementos enemigos y escoge un objetivo cercano. Luego existe otra unidad especial que tiene otro comportamiento pero a grandes rasgos la IA produce unidades y avanza hasta la base enemiga atacando a lo que se encuentra por el camino. La verdad es que podría valer, pero en los momentos en los que necesite un respiro de la redacción de la memoria intentaré darle una vuelta de tuerca. Algo de escolta de unidades amigas y control de zonas antes de lanzarse a por la base enemiga o lo que salga┬á roto2.

Gracias  Smile
#10
Cita
(13-04-2013 11:48)Margaruga link escribió:Ahora mismo trabaja de una forma parecida, la máquina conoce la posición de todos los elementos enemigos y escoge un objetivo cercano. Luego existe otra unidad especial que tiene otro comportamiento pero a grandes rasgos la IA produce unidades y avanza hasta la base enemiga atacando a lo que se encuentra por el camino. La verdad es que podría valer, pero en los momentos en los que necesite un respiro de la redacción de la memoria intentaré darle una vuelta de tuerca. Algo de escolta de unidades amigas y control de zonas antes de lanzarse a por la base enemiga o lo que salga┬á roto2.

Gracias  Smile

Te recomiendo entonces que le pongas un valor de "peso de ataque" (cada tipo tiene un valor) y que compare con el "peso de la defensa". Cuando ese valor es equivalente o cercano lanza un ataque con lo reclutado, es una forma de fusionar el típico problema de la mochila en un videojuego. Son truquillos que he ido aprendiendo a lo largo de años programando. X-D

De todas formas Samuso te dirá formas más correctas de hacerlo.
Hago juegos para odiarlos luego.
#11
Cita
Esa idea es muy buena, me la apunto  :-*
#12
Cita
me estoy fapeando con vuestras respuestas

la IA me parece algo importantísimo que debería explotarse cada vez más

Samuso, cuando dices Unreal, ¿hablamos del primero, donde los Skaarjs hacían cosas alucinantes para su época?


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)