La creación de IA para NPCs en videojuegos sigue siendo a día de hoy una tarea bastante “artesanal”, en el sentido de que no es muy habitual utilizar en juegos comerciales técnicas derivadas de la investigación científica.
Existen campos de estudio, como la Inteligencia Computacional, las cuales ofrecen muchas herramientas y algoritmos que permiten generar o mejorar motores de IA.
La Inteligencia Computacional (IC) es una rama de la IA que aplica metaheurísticas y mecanismos bioinspirados para la resolución de problemas complejos, generalmente modelando sistemas adaptativos o cambiantes.
Para aplicarla a un videojuego, habría que modelar dicho juego (o una parte del mismo) como un problema de optimización, búsqueda o aprendizaje.
Ejemplos:
- Búsqueda de camino óptimo en un mapa.
- Predicción de resultado de combates.
- Definición automática de reglas de comportamiento.
- Ajuste de parámetros de comportamiento.
- Decisión de objetivos.
- Generación automática de contenidos
El objetivo de aplicar IC es conseguir IAs “menos débiles”, es decir, que pudieran evolucionar y adaptarse a cambios en el comportamiento del jugador, o aprender del mismo para ir mejorando y siendo cada vez más competitivas.
Entre las Metaheurísticas más utilizadas en IC en videojuegos (Miikkulainen et al., 2006; Lucas et al., 2013; Yannakakis and Togelius, 2014; Gonzalez-Pardo et al, 2015) están:
Algoritmo Genético (AG o GA)
Método inspirado en la evolución natural de las especies, que se puede emplear para optimizar, por ejemplo, los parámetros/condiciones de los que depende el comportamiento de un NPC.
Programación Genética (PG o GP)
Técnica inspirada también en la evolución natural; permite crear y evolucionar árboles (o conjuntos de reglas) para conseguir nuevos comportamientos que puedan resultar más eficientes frente a un jugador o de manera general en el juego.
Algoritmo de Optimización basada en Colonias de Hormigas (OCH o ACO)
Inspirado en el comportamiento de las hormigas naturales al buscar alimento. Se suele aplicar para búsquedas de caminos óptimos, pero a los que se les puede añadir dinamismo o funciones objetivo más complejas que a los algoritmos habituales (A* o Dijkstra).
Swarm Intelligence (SI)
Técnica inspirada en el comportamiento de grupos de animales (abejas, pájaros, peces) que permite optimizar la colaboración de grupos de agentes en el juego.
Monte-Carlo Tree Search (MCTS)
Algoritmo que permite hacer búsquedas muy eficientes en árboles de decisión complejos, como las posibles acciones que se despliegan en un juego de estrategia en tiempo real o en un juego de estrategia con cartas (como HearthStone, por ejemplo).
Lógica Difusa (FL)
Metodología que permite representar y manejar información no precisa, para realizar cálculos aproximados de manera eficiente y efectiva. Es una analogía de la manera de calcular que usamos los humanos, en la que no aplicamos fórmulas exactas ni manejamos valores con precisión. Por ejemplo: el cálculo de la trayectoria que seguirá un objeto que nos han lanzado para que lo cojamos.
Red Neuronal Artificial (ANN)
Permite definir funciones de decisión muy precisas, basadas en una serie de parámetros o pesos, que nos llevarán a determinar un valor objetivo o alcanzar una conclusión. Sirven por ejemplo para predecir el resultado de combates o clasificar enemigos/jugadores en perfiles según su comportamiento y rendimiento.
Aprendizaje por Refuerzo (RL)
Técnica que permite ajustar las reglas de comportamiento de un agente para conseguir un objetivo en base a recompensas a cada posible acción. Se puede aplicar en tiempo real para que los NPCs aprendan mientras juegan.
IA Generativa
Técnicas que permiten adaptar reglas y contenidos de manera dinámica, así como generar nuevas acciones y comportamientos para NPCs. Su flexibilidad permitiría a los NPCs aprender y adaptarse en gran medida al comportamiento del jugador.
Hay muchas líneas de investigación y aplicación abiertas (tanto en grupos de investigación españoles, como en universidades extranjeras), que se pueden sondear para encontrar propuestas interesantes que aplicar en nuestro videojuego.