De las primeras cosas que tengo que hacer para poder tener una propuesta de tesis es investigar y entender ambas caras de la moneda de la inteligencia artificial; el lado académico y el lado de juegos.

La inteligencia artificial académica busca resolver problemas de la mejor forma posible y, usualmente, de la manera más eficiente. Esto está bien porque se desea obtener el mejor resultado (de existir) y en la menor cantidad de tiempo posible (de nada me sirve una solución o respuesta cuando su tiempo de vida útil ya expiró).

Por su parte, la inteligencia artificial para juegos es un área que tiene sus similitudes y discrepancias con la I.A. académica. Primeramente porque sus orígenes provienen de la academia, pero al mismo tiempo tiene objetivos compartidos con el diseño de juegos; que pueden estar no alineados al plano académico.

Los algoritmos y técnicas más utilizados en el día a día de los juegos de video tuvieron su origen en la academia: Dijkstra, A*, Flocking, Autómatas Finitos, Árboles de Decisión, etc. Sin embargo, la inteligencia artificial, en los juegos, es el medio y no el fin; y ahí es donde su rol comienza a tener un enfoque más hacia el diseño de juegos que hacia encontrar la mejor solución.

El diseño de juegos es, en mi resumida opinión, la creación de experiencias. Por ende, no importa si el comportamiento de un agente no es realmente inteligente, sino que es una mezcla de los algoritmos conocidos más un poco de ingenio y “vueltas”; que al final trae como resultado no un agente, sino un personaje a la vida. Al final del día yo como jugador quiero un enemigo que me de la suficiente batalla para mantenerme inmerso en el juego, pero que también cometa errores -como pudiera cualquier persona cometerlos- y tener el placer del logro al superarlo.

En el diseño se tiene un personaje para cumplir una función. Mi tarea como desarrollador es tomar ésas características y estudiarlas a fin de encontrar las “piezas” que me permitan darle vida al personaje (y dar espacio/vías que permitan al diseñador hacer ajustes). Las piezas son: algoritmos, heurísticas y hacks; y así lo menciona Millington y Funge.

En nuestra experiencia, la I.A. para juegos es de partes iguales hacking (soluciones improvisadas y buenos efectos), heurísticas (reglas que funcionan en muchos casos, pero no en todos), y algoritmos (la manera “correcta”).

¿Por qué colocan correcta entre comillas? Por algo que ellos mismos, en su capítulo 2, llaman La Falacia de la Complejidad y que, en pocas palabras, consiste en saber en qué momento es necesario un algoritmo, heurística o un hack.

Saber cuándo ser complejo y cuándo mantenerse en lo simple es el elemento más difícil del arte de ser un programador de I.A. para juegos. Los mejores programadores de I.A. son aquellos que usan una técnica sencilla para dar la ilusión de complejidad.

Es importante destacar que para nada la idea es catalogarnos como programadores mediocres (aunque a veces pueda parecer así del lado académico), pero no es una cuestión que decidamos nosotros; es el jugador quien tiene la palabra final. Es probable que incluso con el algoritmo más fumado el jugador igual crea que te fuiste por la vía sencilla o quizás ni siquiera le guste. Luke Dicken lo dice bastante bien en su artículo How complex is complex enough?

El punto es que la naturaleza del sistema no es importante -lo que realmente importa es cómo el jugador percibe el sistema porque al final éso es lo que conduce la popularidad y ventas. Te puedes salir con la tuya con un sistema tonto pintándolo como algo más, igual nadie lo nota. De igual manera, puedes tener un sistema avanzado, basado en un rango de características y algoritmos sofisticados, pero si ése mismo comportamiento puede ser aproximado por algo más simple, es probable que la gente suponga que lo hiciste de la manera simple y no entienda los detalles de tu implementación.

Sin embargo, es interesante cómo se ha ido difuminando esta línea divisoria entre I.A. académica y para videojuegos con la aparición de  cada vez más trabajos de investigación enfocados en inteligencia artificial relacionados a juegos de video o, como se les puede llamar formalmente, simulación en tiempo real. Punto que abarcaré en la próxima entrada.

Personalmente, si bien estoy de acuerdo con que lo importante es lograr una experiencia genial para el jugador, las bases teóricas y formales proveen de herramientas que me dicen si existe un algoritmo que me ayuda a resolver el problema de fondo que quiero atacar, si es eficiente (incluso si mi improvisación o hack es eficiente), y si a efectos de resultado vale la pena el esfuerzo.

Edición: segunda parte de esta entrada.

Montaje: Christian Chomiak.
Créditos imágenes: GLaDOS es propiedad de VALVe Software y la ilustración por Alexander Sarif. El otro robot (desconozco el nombre) es propiedad de Stanford University y el curso de Machine Learning.