La Inteligencia Artificial, La Cognición, y los Video Juegos

(Lo siguiente es la versión ensayo de la charla que ofrecí en el Primer Festival de Video Juegos en Puerto Rico, el 20 de julio de 2013.) 

A través de la historia de los juegos de video, el énfasis primordial, en un contexto evolutivo, ha sido el de mejorar las gráficas. Desde muy temprano se descubrió que el ojo domina en cuestiones de juzgar la calidad de los juegos. Si tomamos un juego de cada uno de los años, desde el 1980 hasta el 2013, uno puede apreciar la tendencia hacia juegos mas llamativos gráficamente.

Una selección de juegos, del 1980 hasta el 2013.

Claro, estos ejemplos son tomados del ámbito profesional, no de desarrolladores independientes. Esta tendencia de mejorar las gráficas ha sido posible por los avances tecnológicos de procesadores y tarjetas de video cada vez mas potentes. Cabe recalcar que los primeros juegos para las masas (juegos como Donkey Kong, PacMan, Mario Bros.), aún cuando sufrían limitaciones en cuestión de tecnología (4K de memoria era enorme para aquél entonces), dedicaban una gran parte de sus códigos para el despliegue de gráficas a la pantalla. Esta limitación y énfasis en gráficas obligaba a los programadores de aquél entonces a ponerse creativos al querer introducir otros elementos a los juegos. Piense, el juego Mario Bros., producido para el Nintendo Entertainment System (el cual corría un procesador MOS 6502 con no mas de 2K para la memoria), pero aún así, logró tener una gran variedad de enemigos (algunos de los cuales exhibían una inteligencia rudimentaria), y de niveles (o en buen castellano “tablas”), y también logró tener música. Esta creatividad al programar es la semilla de muchos algorítmos que hoy en día se conocen como “Generación de Contenido Programático” (o como se conoce en inglés “procedural content generation“), una técnica de la inteligencia artificial para introducir contenido a medida que corre el juego. Es decir, antes de prender el juego ese contenido no existe, y los códigos del juego crean el contenido (por ejemplo enemigos, niveles) dinámicamente.

El Fin de la Revolución Gráfica

Hay quienes que piensan que la revolución gráfica (por darle nombre a este movimiento) se acabará dentro de 10 años. A mi no me gusta hacer ese tipo de predicción, porque la tecnología es verdaderamente impredecible. Lo que sí me siento cómodo en decir es que en algún punto se acabará. L.A. Noire demostró lo que era posible para juegos de consolas. Varios juegos como Grand Theft Auto IV, y Skyrim (que fueron publicados en consolas como también para PC) han disfrutado de mejoras a la calidad de gráficas, impulsadas por comunidades de fanáticos de dichas franquicias. Pero llegará el día donde no se podrá mejorar más. Y entonces vuelvo a la pregunta que motivó esta presentación: ¿cuál es el próximo paso evolutivo?

El Inicio de la Revolución de la Inteligencia Artificial

Como ya saben, mi respuesta a la interrogante es: la inteligencia artificial. El problema es que tenemos que deshacernos del concepto que comúnmente se le atribuye a la inteligencia artificial en contextos interactivos. El problema no es uno de crear enemigos más difíciles para que el jugador sufra derrotas casi injustas; eso sería inteligencia artificial en el sentido mas grosero. Sino, el problema es el de la Ingeniería de la Experiencia – cómo asegurarte de que cada individuo pueda disfrutar de una experiencia interactiva, que cambie y evolucione con la jugadora, y que sea única cada vez que se siente a jugar.

Si son fanáticos de la ciencia ficción de los 80 y los 90, ya se habrán dado cuenta de que lo que estoy describiendo aparece prominentemente en la serie de televisión Star Trek: The Next Generation: la visión del Holodeck. Es muy posible que esta metáfora murió hace 10 años, tal que para aquellos que desconocen, el Holodeck era una computadora única, en la cuál uno podía programar un ambiente interactivo con representación fidedigna de la realidad, solo que era una simulación computarizada sofisticada. Como punto y aparte, mi área de investigación sueña con crear una computadora lo suficientemente avanzada como para crear el Holodeck.

Volviendo a la Ingeniería de la Experiencia – el problema de crear experiencias interactivas, únicas y cambiantes, cae en el dominio de la inteligencia artificial, lo cual provee la motivación para la revolución que se aproxima. Analicemos entonces las experiencias que la Inteligencia Artificial facilita:

El Efecto Catalizador de la Inteligencia Artificial para la Ingeniería de la Experiencia

He identificado cuatro áreas en las cuales pienso que la inteligencia artificial puede únicamente facilitar diferentes experiencias.  No quiero decir que estas son las únicas áreas, pero pienso que es un buen punto de  partida.  Para evitar que este escrito se convierta en una mini-tesis, proveeré enlaces para cada uno de los proyectos de ejemplo.

  1. Generación de Contenido Programático –  la programación de algorítmos que generan código para contenido dinámicamente.  Este contenido no existe antes de que comienze el juego como tal, sino que se genera a medida que la jugadora juega.  Ejemplos: PaSSAGE, Galactic Arms Race, Games by ANGELINA
  2. Análisis Conductual de Jugadores – el análisis de la conducta de los jugadores, que puede ser interpretada de diversas maneras. La data que se recopila puede ser utilizada para mejorar el juego, como también para generar contenido personalizado.  Ejemplos: Análisis Conductual de los Jugadores en League of Legends
  3. Modelaje de Situaciones Sociales Complejas – a medida que los juegos intentan simular aspectos de la vida real, se torna cada vez mas compleja la simulación.  Los algorítmos de la inteligencia artificial son capaces de lidiar con complejidad emergente, y han sido utilizados para crear juegos cada vez más sutiles.  Ejemplos: Façade, Prom Week, Versu
  4. Diseño Automatizado de las Mecánicas de los Juegos – el desarrollo de juegos de gran embergadura se torna cada vez mas difícil, dada la demanda para más contenido, y más interacción en los video juegos.  Esto crea una demanda para herramientas que puedan ayudar en el proceso de diseño, y que puedan razonar acerca de las reglas de los juegos, al igual que sobre el contenido que los jugadores enfrentarán.  Ejemplos: Ludocore, Tanagra

En conclusión, estamos empezando la revolución en la inteligencia artificial, demostrado por esta selección de experiencias únicas, las cuales no hubiesen sido posibles, sin avances en técnicas avanzadas.

La Cognición

Hay una comunidad, compuesta de desarrolladores e investigadores científicos de los video juegos, que piensan que el componente mas fundamental de un juego es su capacidad para proveer modos de interacción. En otras palabras, lo importante en un juego es lo que puedes hacer. La Dra. Janet Murray, catedrática de Georgia Tech y una eminencia en el estudio de juegos, proclamó que tu capacidad de intervención en un juego determina tu disfrute del mismo. Ella definió la capacidad de intervención como la potestad de poder actuar en un entorno interactivo y observar los efectos de las acciones; o sea, no basta con poder actuar, sino que también tu debes poder observar algún cambio en tu entorno, presumiblemente causado por ti.

Junto a varios colegas, retamos este punto de vista. Diseñamos un experimento en el cuál varias personas jugaron un juego de texto, similar al juego del antaño Zork. Los partícipes del experimento jugaron una de dos versiones del juego; en la primera, se les presentaba opciones para jugar como es de esperar de un juego de texto, y en la otra versión, se presentaban las mismas opciones, pero con una modificación simple: aún cuando presentaba las mismas opciones, eran falsas – no conducían a nada diferente. Como es de esperar, las personas en la versión modificada reportaron sentirse limitadas a través del juego.

Entonces, tomamos la versión modificada e introducimos otro cambio. En esta segunda ronda de experimentos, las dos versiones del juego producían la misma respuesta – es decir, todas las opciones para jugar resultaban en lo mismo. Lo único diferente es que ahora, en una de las versiones, el juego reconocía la acción, presentando un mensaje personalizado.Mi argumento es que la percepción y la cognición son clave para el desarrollo de experiencias interactivas.

Por ejemplo: tu empezabas el juego, y tenías la opción de escoger entre la espada o el arco y flecha, antes de continuar. Si decidías escoger la espada, lo único diferente en esta versión es que el juego te demostraba un mensaje como el siguiente: “Haz tomado la espada por el mango, y decides salir de tu casa.”

Aún cuando este cambio es relativamente insignificante, los partícipes del experimento reportaron sentirse significativamente más en control de la experiencia interactiva, de lo cual concluimos que no hace falta crear un juego complejo para presentar opciones de juego satisfactorias. Basta con crear la ilusión de control para que los jugadores estén conformes.

Mi Tesis:  Modelaje Cognitivo del Razonamiento Narrativo

Mi tesis intenta realizar el modelaje cognitivo a través de la inteligencia artificial. Me interesa modelar cómo es que uno interpreta los cuentos interactivos, a medida que uno los vive. En particular, yo me enfoco en la memoria como base cognitiva de diversos fenómenos narratológicos. En esencia, mi argumento es que la memoria es fundamental porque afecta tu capacidad de hacer inferencias, y da paso a sensaciones de suspenso, sorpresa, y hasta terror. Considera la escena donde el antagonista de la película Skyfall intenta tomarle la vida a la dirigente del MI6.

Cuando uno ve esa escena, la memoria de los eventos (el hecho de que el antagonista se encuentra de camino a “M” en todo momento que ella habla) y la capacidad de inferencias (el hecho de que uno sabe las intenciones del antagonista y puede extrapolar sus acciones) lleva a uno sentirse ansioso.

Comprensión Narrativa en los Video Juegos

Mi tesis no es en el contexto de las narrativas cinematográficas, sino que es en el contexto de los juegos. El contexto interactivo ofusca los fenómenos narratológicos, ya que los juegos llevan consigo ciertas expectativas (como parte del medio en el cual se realizan) que afectan los procesos de inferencia. Aún pienso que la memoria tiene que ver algo, pero es menos claro cómo. Mi tesis se dedicará a investigar la naturaleza de la interacción entre la cognición y los juegos.

En Resumen,

estamos en medio de una revolución de la inteligencia artificial (IA) en los juegos de video. Mi argumento es que la cognición esta al centro de la experiencia de juego. Mi tema de tesis intenta modelar la cognición con estructuras de datos tomadas de la IA.  La revolución artificial ha comenzado.  Espero que seas parte de ella.

* Si te interesa, puedes ver las transparencias que utilizé en mi charla.

Representaciones Alternas de un Rectángulo

Los otros días, mientras estudiaba cómo programar en el lenguaje de programación C, pensé acerca cómo es que nosotros abstraemos el mundo observable al mundo binario.  Las computadoras no entienden (por defecto) lo que nosotros entendemos con facilidad.  Si lo entienden, es porque nosotros las instruimos; les decimos qué tienen que saber.

Precisamente, medité acerca de ese proceso: cómo nosotros le decimos a las computadoras que un rectángulo es un rectángulo.  Nosotros les decimos a las computadoras que un rectángulo es un rectángulo porque lo tratamos como un objeto funcional.  Cuando vamos a los lenguajes de programación, usualmente (y como base de comparación me estoy utilizando como la norma) buscamos la manera mas simple, matemáticamente elegante y correcta para representar las cosas.  Para el rectángulo, por ejemplo, yo lo representaría como dos coordenadas.

Mi rectángulo

Si escojo dos coordenadas diagonalmente opuestas y las coloco sobre un plano de coordenadas en dos dimensiones, puedo representar un rectángulo.  Simplemente camino pasos ortogonales desde una coordenada hasta llegar al valor de la abscisa y la ordenada de la coordenada opuesta.

Hablemos entonces de utilizar ésta representación del rectángulo en un programa.  Asumamos que el programa en cuestión compara dos rectángulos para determinar cuál tiene mayor área.  Para poder utilizar mi rectángulo, el programa tendría que calcular el largo y el ancho del mismo.  Si el programa compara 100 veces, se calcularía el largo y el ancho 100 veces, resultando en 200 operaciones.  Seguramente, querido lector o lectora, estamos de acuerdo que mi intención es bella: yo necesito solo cuatro valores para representar un rectángulo.  Pero a la hora de utilizar mi representación en el programa, la belleza de mi intención no compensa por la computación excesiva que estamos realizando.  Realmente, esto es lo que se conoce como un “trade-off”, una decisión de diseño que prefiere un aspecto sobre otro.  En éste caso, yo prefiero usar menos memoria, pero estoy dispuesto a aguantar que mi computadora calcule los valores que necesito 100 veces.

Pensé en una representación alterna del rectángulo: una coordenada, el largo y el ancho.  Son cuatro valores, igual que la representación previa.  La solución quizás sea mas grande en memoria por que el largo y el ancho quizás son bastante grandes numéricamente.  Pero si necesito el largo y el ancho para comparar, ya lo tengo.  No gasto en poder computacional, y logro el mismo objetivo.  Piénsalo: ¿Qué es mas caro?  ¿Mas memoria de disco o más poder computacional?

La cosa es que, la segunda solución (la cual yo pienso más eficiente para el problema que tengo) no es mi primer pensamiento al intentar de representar el rectángulo.  La lección entonces (creo) es que lo elegante no siempre es lo más adecuado.  O quizás no tiene lección.  El punto es que tengo que seguir estudiando de C.

¿Tan simple? A veces.

Un gran maestro quién yo he tenido la dicha de conocer le relató a 3 compañeros y yo, un cuento que, por aquello de archivarlo y guardarlo, lo voy a escribir aquí en estructura de conversación.  A él le debo mucho más de lo que puedo escribir.  Con tono calmado y elegante, él nos comentó:

Él: Si uno desarrolla una solución para un problema ingenieril en un salón de clase, se espera mucho.  Les pregunto a ustedes, si ustedes son mis profesores y yo les presento que mi solución a un problema es: “y es igual a x por z” (y = x*z), ¿qué me dirían ustedes?

Yo: Que es muy simple.

Él: Exacto.  Por lo regular hay mucho cinismo en nuestro campo.  Se los digo porque yo diria lo mismo.  Pero me puse a pensar, ¿qué pasa si jugamos con la solución?  En vez de ‘y’, pongámosle otro nombre.  ¿Qué tal ‘v’?

Nosotros: De acuerdo.

Él: Bien.  Ahora, cambiemos las demás letras: en vez de ‘x’, llamémosla ‘i’, y en vez de ‘z’, llamémosla ‘r’.  ¿Qué tal de la solución ahora?

Nosotros: “v es igual a i por r”.  ¡La ley de ohm!

Con una sonrisa, se nos acercó.  Ajustando su postura en la silla pegada a la mesa donde nos encontrábamos, siguió:

Él: Correcto.  ¿Ha cambiado la ecuación? La fórmula sigue igual.  Sigamos con el ejercicio.  En vez de ‘y’, llamémosla ‘f’.  En vez de ‘x’, coloca la letra ‘m’, y en vez de ‘z’, coloca la letra ‘a’.  ¿Qué tal ahora?

Nosotros: “f es igual a m por a”.  Fuerza es igual a la masa por aceleración.

Él: ¿Ya ven el problema con nosotros profesores al evaluar soluciones de problemas?  ¿Cuánto habrá tardado Ohm, o Newton el sacar esas soluciones que hoy persisten como leyes?  Y hoy en día, nosotros como profesores, a veces perdemos noción de éso.  Esperamos que las soluciones que desarrollen los estudiantes en los cursos de diseño tengan muchas cosas exóticas, como si eso fuera a comprobar un conocimiento de ingeniería.  En la realidad, nosotros como ingenieros estamos para servirle a la sociedad.  Estamos para desarrollar soluciones inteligentes, al mas bajo costo.  No estamos para desarrollar soluciones exóticas para que puedan cumplir con la aprobación de ciertos profesores. Es más, continuemos el ejercicio una vez más.

Digamos que en vez de una variable ‘z’, yo digo que mi solución tiene una constante.

A éste punto, ya yo no podía contener mi emoción.

Él: Digamos que esa constante, yo la llamo ‘c’.  Nuevamente, hagamos que ‘x’ sea una variable ‘m’.  Ahora hagamos ‘y’ la letra ‘e’.  Entonces, vamos a decir, que para que la ecuación se mantenga, tengo que cuadrar la constante c.

Cuando dijo eso, no tuve remedio mas que sonreir.  Mis colegas estaban riéndose también.

Él: Por sus sonrisas, me imagino que ya saben para dónde voy.  ¿Cuánto trabajo sufrió Einstein para decifrar la relación de masa-energía? ¿Cuánto tuvo que pensar para poder decir que la energía se relacionaba a la masa por medio de la velocidad de la luz? Yo personalmente considero que,

Una solución fue hecha,
y tiene trabajo detrás,
¿qué importa todo lo demás?
¡Viene de mente con mecha!
Trabaja para la fecha.

La solución en mirilla,
que puede ser muy sencilla,
vale sobre quién utilizó,
un circuito que complicó,
para prender una bombilla.

Y con eso nos despidió.  Cerveza en mano y manos a la obra, que el maestro tiene razón carajo.