jueves, febrero 18, 2010

Tesis

Finalmente he terminado la tesis. Fueron unos meses muy ocupados, ¡pero ahora estoy tan relajado y feliz!

¿Y cuál fue el tema que mantuvo a Simón tan ocupado? El título de la tesis traducido al español es: "Un Oponente Interesante para Videojuegos de Pelea: Utilizando AI para Adaptar el Agene al Usuario".

Los videojuegos de pelas actuales son divertidos si juegas en contra de un amigo, pero no es tan divertido si juegas contra la computadora. Obviamente, hay un factor de socialización cuando juegas contra un amigo, pero nuestra hipótesis es que el hecho de que los oponentes humanos se pueden adaptar al jugador es una de las cosas que los hace más interesantes. Como la Inteligencia Articial (AI por sus siglas en inglés) que se usan en los juegos estándares es muy básica, estos oponentes no se pueden adaptar al jugador. Por lo tanto, con el propósito de hacer los juegos de pelea más divertidos cuando son jugados solos, decidimos crear un oponente que utilice AI para adaptarse al usuario (-: En este contexto adaptarse implica poner el oponente al nivel del usuario (ni muy difícil ni muy fácil) y que las acciones del oponente tomen en cuenta las acciones del usuario, adaptarse al comportamiento del jugador.

En los juegos de pelea hay varias acciones que se pueden ejecutar: realizar ataques simples (como puños o patadas), defensas (como bloquear), moverse (como caminar o saltar), ejecutar combos (una serie de ataques simples que generan daño extra) o combo-breakers (contra-ataque a los combos). El agente que se adapta se dividió en 3 sub-agentes: Main Sub-agent se encarga de los ataques simples, defensas y movimientos, además de decidir cuándo pasar el control a uno de los otros 2 sub-agentes; Executing Combo Sub-agent realiza combos; Receiving Combo Sub-agent realiza combo-breakers. Si uno divide un agente en varios sub-agentes, se espera que cada uno aprenda su tarea en menos tiempo.

¿Qué tipo de AI se utilizó? Main utiliza Profit-Sharing, un tipo de aprendizage por reforzamiento del que nunca había escuchado antes. Es posible que Profit-Sharing sea más conocido en Japón pues fue un profesor japonés quién encontró una ecuación que garantiza obtener soluciones racionales usando este método, pero dicho resultado sólo se publicó en japonés… Usando este aprendizage por reforzamiento, si el resultado de una pelea es favorable (la diferencia de los puntos es baja), las acciones que se usaron en esa pelea tenderán a ser más utilizadas en el futuro, si el resultado es desfavorable (gran diferencia, es decir, la AI fue muy difícil o muy fácil), esas acciones tenderán a no ser utilizadas. Receiving usa Pattern Mining, o minería de patrones; busca patrones en los combos ejecutados por el usuario y trata de predecir el siguiente combo, de modo de poder escoger el combo-breaker adecuado. Finalmente, Executing usa un poco de Data Mining y Hill Climbing para crear un conjunto de combos de una dificultad similar al conjunto de combos usados por el jugador.

¿Muy técnica la explicación? Posiblemente, pero dejémosla hasta aquí. Si están interesados pueden leer la tesis en inglés: An Interesting Opponent for Fighting Videogames: Using AI to Adapt the Agent to the User (algunas personas encontrarán los agradecimientos de interés). Si 48 páginas de contenido es demasiado, pueden leer el resumen de 8 páginas que llamaremos el paper de SIGGI. Si 8 páginas es mucho, pueden leer el resumen de 2 páginas que llamaremos abstract.

¿Funcionó la propuesta? Sí y no. No se pudo demostrar estadísticamente que el oponente se adapta, los datos que tomamos de los experimentos no fueron suficientes. Sin embargo, aquí hay 3 videos que quiero mostrar:

Primero, el juego de peleas que se desarrolló para probar la propuesta. Aquí pueden ver las acciones disponibles, como moverse, puños, patadas, etc. Hay combos, cuando un personaje está recibiendo un combo é cambia de color. También la plataforma es finita, caerse implica perder. Hay glitches de animación y los gráficos no son muy pulidos, pero la idea era probar AI, no hacer un juego bonito.



En el siguiente video el oponente que se adapta (el azul) se enfrenta a un oponente estático difícil (el blanco). Este video es la ronda #500:



En este otro video vemos al oponente que se adapta (azul) enfrentándose a un oponente estático fácil (blanco). Esta es la ronda #500:



Cómo pueden ver, la diferencia de los puntos de vida al final de las rondas es muy cerrada, además, se nota que el oponente que se adapta ha generado diferentes comportamientos dependiendo del nivel del jugador. En el caso del oponente difícil, el que se adapta ataca mucho, usa combos, se acerca. En el caso fácil, el que se adapta no usa tantos combos, se queda quieto muchas veces (hay se ven unos glitches de animación), etc. O sea, sí se adapta, pero los datos que grabamos de las pruebas con los 30 usuarios reales no nos permitía demostrarlo.

Esta tesis la entregué el viernes pasado. El martes hice la defensa. En Japón te otorgan 15 minutos (se lee "quince") para exponer todo lo que hiciste en 2 años, y luego hay 5 minutos de preguntas. Luego es el turno del siguiente aspirante a Magister.

Ya va, 20 minutos de defensa, 48 páginas de contenido, ¿¡que no es muy poco!?

Desde mi punto de vista occidental, sí, es poquísimo. En mi universidad en Venezuela las defensas tardaban lo que tuvieran que tardar, horas si es necesario. Tengo la impresión que mi tesis de grado era más larga que la de maestría. Sin embargo, noté un patrón.

La defensa de la tesis de grado de los estudiantes de pregrado se realiza de una manera aun más excéntrica que la de postgrado: los estudiantes preparan un póster sobre su investigación y se hace un poster session con todos los graduandos. Esa es su defensa.

Los poster session son muy comunes en conferencias académicas, y cuando a uno le toca presentar un paper en una de estas conferencia, normalmente te otorgan 15 minutos para hablar y 5 para preguntas. Me parece que las defensas están hechas de forma tal de preparar a los estudiantes para participar en conferencias. Después de todo, lo que se está haciendo es investigación, e investigación que no se publica no sirve de mucho.

De hecho, todos los estudiantes de pregrado y postgrado tienen que presentar su tesis en una conferencia, así sea local. En mi caso, en diciembre presenté resultados parciales en Human Agent Interaccion Symposium y en marzo presentaré en Information Processing Society of Japan: Game Informatics. Tal vez por tantos alumnos publicando es que las universidades japonesas le ganan por mucho a las hispanoamericanas en los rankings internacionales.

Otro patrón que noté durante las presentaciones es que las investigaciones son muy aplicadas, en contraste con investigaciones teóricas. La gente de maestría presentó cosas como: "Extracción de patrones de daño en celdas de combustible óxido sólido", "Estimación de distancia utilizando un sistema de imágenes de ojo-compuesto infra-rojo", y "Un estudio sobre el valor de la ventaja geográfica en el área citadina basado en la interacción entre regiones". Me imagino que mi método para videojuegos tiene sentido en Japón, pues aquí se producen muchos juegos de peleas.

Luego de mis 15 minutos de exposición en japonés, que se convirtieron en 14 porque hablé rápido, y aclararle a un profesor que los métodos de AI usados en ajedez no se pueden usar en juegos de peleas, que los patrones de los usuarios sí son importantes, y que el oponente se puede adaptar a los diferentes patrones del usuario, terminó satisfactoriamente mi defensa. En mi caso las preguntas las pude responder sin mucho problema, pero a otras personas les hicieron preguntas destructoras. Por ejemplo, un estudiante dijo que tal método que él propuso tenía una precisión de 75%, pero un profesor de estadística dijo que esas medidas están mal tomadas y mal analizadas, que eso no tiene sentido; el estudiante no pudo responder nada.

Un día después me enteré de que quedé de 4º lugar como mejor expositor (presentar de manera entendible lo que se hizo, ¡le gané a un montón de japoneses!) y de 1º como mejor tesis de maestría del departamento Informática y Ciencias Físicas :D

Por eso es que estoy muy feliz, y por haber terminado es que estoy muy relajado. Le doy muchas gracias a Dios de que todo ha salido bien.

Un oponente que se adapta al usuario es algo que quería investigar desde hace mucho tiempo, lo hice, logré algo que no es perfecto pero que va por buen camino y esto gracias a la beca MEXT del gobierno de Japón (pregunta en tu embajada más cercana).

Muy bien, ya recuperé mi libertad. Ahora empezarán los posts retrasados. El próximo viene como en una semana :D

16 comentarios:

  1. Hola Simón!

    Me alegro mucho por tí, todos tus amigos y lectores compartimos tu alegría y te deseamos lo mejor, es gratificante disfrutar de lo recogido a punta de trabajo duro, sigue así, muchos éxitos.

    Acerca de tus documentos de tesis, muy amable por subirlos, será agradable echarle una revisada, muy interesante además tu idea de tesis, ya que un problema común en los videojuegos de peleas es la clásica división del oponente en "Fácil - Medio - Difícil" brindando al oponente poca normal y gran dominio de movimientos y combos para atacarte respectivamente, el problema radica por ejemplo cuando UNO NO SABE JUGAR, no conoces los combos y movimientos, resultado: el oponenete es demasiado difícil y terminas perdiendo la pelea en 10 segundos, caso similar a cuando ya eres todo un master y ni siquiera en difícil la computadora es un oponente digno...


    Este trabajo tuyo es el inicio del camino a corregir eso, se aprecia claramente en los videos que el oponente se "adapta" sea que jueges mucho o muy poco, la pelea se mantiene "justa" como del mismo nivel y esto no sólo se demuestra en la poca diferencia de puntos de vida (la pelea va acorde al nivel) sino al comportamiento del oponente, interesante toda la implementación de AI, realmente te felicito, además pronto PG se convertirá en un lugar donde puedes crear, ayudar a mejorar y perfeccionar, los diferentes tipos de AI de los videojuegos.

    bueno que pena el comentario tan largo, pero es que me emocioné, un abrazo de tu amigo lenis mauricio, muchos éxtios y sigue posteando!

    ResponderEliminar
  2. ¡Felicidades!

    Todos tus esfuerzos han valido la pena. Además, eso de estar en los primeros lugares por exposición y contenido es genial. ¿Expusiste en japonés? Mis respetos.

    Cuídate mucho Simón.

    Saludos desde México.

    ResponderEliminar
  3. Muchas felicidades Simon.

    Después de tanto tiempo de leer el blog, ver que terminaste ya la tesis nos llena a todos de alegría.

    Yo también agradezco mucho los documentos de tesis y demás, este sera el primer paper de investigación que leeré en mi vida.

    salu2:)

    ResponderEliminar
  4. Simon, el haber terminado con semejante carga..imagino lo relajado que se debe sentir habersela sacado de encima.
    Ahora me gustaria si pudieras aclarar, brevemente, tu estancia en japon(academicamente hablando)... me refiero a que deacuerdo a la beca de posgrado se te otorga entre 1año y medio a dos años para hacer la investigacion que presentaste ante la embajada. Durante ese periodo uno puede aplicar para hacer una maestria-doctorado. En este ultimo post mencionas que la investigacion te tomo dos años... y tu estas en japon desde el 2007(4años aprox).En los primeros dos años que hiciste? :D, yo tengo esa duda, si al entrar a ser estudiante de maestria se olvida el proyecto anterior(el que se presento en la embajada) y se comienza uno nuevo o como es?.(espero se haya entendido la consulta)

    ResponderEliminar
  5. OMG!! FELICIDADES. Wiii realmente diste la cara por los latinos !!! Como Ingeniera en sistemas me parece muy interesante tu investigacion. Gracias por publicar tu tesis,sin duda la leere (必ず) y luego la comento =)

    Cada dia te conviertes mas en mi idolo!

    ResponderEliminar
  6. FELICIDADES POR TU TESIS!!!!!
    Me imagino que te costo mucho pero feliciades de nuevo y exito en tu vida!!!!

    ResponderEliminar
  7. Muchas felicidades!!! fue todo un logro el tuyo al ganarle a algunos cuantos japoneses.
    Una duda que tengo, el juego que hiciste es para PC? que lenguaje de programación usaste? esta en Opengl o Directx?

    ResponderEliminar
  8. Pedrito/Fan nº 124/2/10 11:24

    Dearly Shimon!
    CONGRATULATIONS!!!

    I'm to happy for ya! 'cuz you finished that, 'cuz you remembered us, 'cuz you thanked God, 'n finaly cuz you're free!! ALELUYAH!

    te cuento que estoy terminando mis vacaciones (60 dias aprox.) y es posible que abandone tu blog un poco, pero tomare en cuenta tu ejemplo, trataré de exprimir todo el tiempo que me quede para visitar tu blog, comentar, trabajar por la seccion de preguntas, y dedicarle tiempo para mi musica...

    yo tambien me quisiera especializar en AI, por supuesto la que corresponde a mi campo que es la parte de la automatizacion de procesos industriales y sin dudas la robotica, y ojala descubramos la manera de poder combinar nuestros trabajos algún día y hecer algo que revolucione la tecnología...

    eso es todo por el momento...

    pronto la sección de preguntas ( yo como que me voy apresurando por que lo que comentaste del venidero post, me asusto un pojo, jejeje!)

    See YA Shimon!

    (a proposito, tu nombre en el hebreo biblico casualmente es SHIMON jajajaja)

    ResponderEliminar
  9. Seccion de Preguntas25/2/10 10:11

    1) ¿cual es la cosa mas satisfactoria (a demas del tiempo libre) despues de haber culminado la tesis?

    2) ¿cuales son tus planes (personales y con el blog) ahora que tienes un tiempo de descanzo?

    3) ¿Haras un futuro post sobre tu graduación? o al menos ¿piensas publicar fotos de esta?

    4) ¿como te preparas para tu primer día de trabajo (¿creo que es en abril verdad?)?

    5) ¿cual es tu post favorito de tu blog?

    6) ¿cuales han sido las cosas mas extrañas que has visto en japon en los ultimos años?

    a todos los que siguen este blog les dejo mi twitter para que me sigan: @pedrojosse

    de todas formas si me siguen me avisan a traves del twitter para saber que son lectores de este blog...

    ResponderEliminar
  10. wow... Omedeto gozaimasu!

    jejeje aunque entendí poco la explicación técnica, los videitos sirvieron para entender :D ... Felicitaciones una vez mas Magister Simon, me alegre mucho leyendo este post, que a un hermano latino le haya ido tan binn por tierras niponas... ^_^ espero tener la misma suerte y pasar en la beca que ofrece MEXT este año. :D

    PD: uff ahora si mas post seguidos!! Ureshi!

    ResponderEliminar
  11. Mauricio_col86: gracias por tu comentario. Sí, tal como dices, esa división estática de la dificultad de oponentes no funciona muy bien. Ojalá que en Platinum Games me dejen experimentar con muchas más cosas.

    ayotl: gracias! Sí, en japonés. Bueno, ya llevo 3 años viviendo aquí, ya era hora.

    Jorge: jeje, está bien, ojalá que encuentres ese paper interesante (-;

    Anónimo; exactamente! Me siento muy relajado. De abril 2007 a abril 2010 hay 3 años. En el primer año (abril 2007 - abril 2008) estuve como estudiante de investigación además de tomar el curso intensivo de japonés. Durante ese año pedí la extensión de la beca para hacer una maestría, hice el examen de admisión y pasé. De abril 2008 a abril 2010 hice la maestría.

    Lo de cambiar de tema de investigación o no depende de tí y de tu tutor. Espero haber aclarado tu duda.

    Claire: como no, espero tus comentarios :D

    Jose: Muchas gracias, sí, se volvió un duro trabajo apartir de cierto punto, pero estoy feliz de que terminó bien.

    Edgar: El juego lo hice en Linux usando Crystal Space que es un game-engine Open Source. Gracias a este engine el juego debería poder correr en Mac y Windows sin ningún problema. Usé C++ y Crystal Space usa OpenGL.

    Pedrti/Fan No. 1: gracias por alegrarte por mi! Como no, sería fino hacer algo revolucionario, no? Lo de mi nombre en hebreo ya lo sabía :P pero gracias!

    Sección de respuestas a la sección de preguntas:

    1.- Lo más satisfactorio es saber que logré mi meta, que terminé sin problemas la maestría.

    2.- Plan personal: dedicarle todo el tiempo posible a un side-project que tengo por ahí. Una vez que lo termine les cuento. Plan del blog: escribir por lo menos una vez a la semana, para contar todo lo que no he podido contar por estar tan ocupado.

    3.- No lo había pensado, vamos a ver si es lo suficientemente interesante para aparecer en un post.

    4.- Sí, es el 1ro de abril. Como todavía es febrero no lo siento tan cercano. Quiero pulir un poquito más mi japonés cotidiano, así que tal vez me ponga a ver animé :D

    5.- Hummm... buena pregunta. De buenas a primeras no tengo un post favorito, pero recuerdo con agrado posts como el de Lección de Antropología, los posts sobre buscar trabajo y Los 188.

    6.- hombres disfrazados de mujeres en fiestas de halloween, y lo peor es que actuan muy femeninamente.

    melococ0: gracias por tu paciencia! pues si, ahora vienen posts más seguidos :D

    ResponderEliminar
  12. Simon felicitaciones por la tesis y que haya quedado excelente;

    Como te hace sentir, tener el 1º como mejor tesis de maestría del departamento Informática y Ciencias Físicas ??? Qué te dijeron por eso(el hecho de que un extranjero superara a los locales)? Por curiosidad qué evalúan para dar esa calificación, innovación, etc etc ?

    Sería interesante, si pudieras organizar un post sobre la disyuntiva de patentar o no el diseño de la tesis,

    No se que piensas...

    Saludos
    Ivan

    ResponderEliminar
  13. Anónimo8/3/10 03:48

    Felicidades!! :P Aunque no me he enterado de la mitad de las explicaciones de tu trabajo :)

    Saludos

    Paula

    ResponderEliminar
  14. Leo Kajioka Nardon11/3/10 23:59

    ご苦労さん!

    ResponderEliminar
  15. LadyMosca14/3/10 04:47

    Me sumo a las felicitaciones.
    Hace poco que he descubierto tu blog y ¡lo estoy leyendo entero!. Me gusta mucho, sobretodo la atención que le prestas a lo cotidiano, las pequeñas cosas del día a día japonés, son detalles muy difíciles de encontrar en otras bitácoras, quizás porque pasan desapercibidos para otros bloggers. Gracias por contar tanto y tan bien.

    Saludos ^^

    ResponderEliminar
  16. Iván: me siento muy feliz de que mi tesis haya sido productiva :D Nadie dijo nada al respecto de que yo sea extranjero, aunque en alusión a mis esfuerzos algunas personas dijeron que era de esperarse. No creo que haya un post sobre la patente. Resulta que luego de la investigación por parte de los abogados de la universidad, se consiguió que la idea en sí no es algo único ni novedoso, por lo que no se puede patentar.

    Paula: sí, supuse que eso pasaría :P Gracias!

    レオ:ありがとうございます!

    LadyMosca: Gracias! Jajaja, qué bueno que encuentres mis historias entretenidas :D Precisamente eso es lo que busco, contar el Japón cotidiano, el Japón de verdad a través de mis vivencias.

    ResponderEliminar