Cómo funciona la inteligencia artificial en Unreal Engine

Talleres U-tad para universitarios y profesionales con conocimientos previos.
·

En un videojuego hay elementos muy visibles -como el diseño artístico- y otros de los que el jugador se suele dar cuenta solo cuando fallan, como los fallos gráficos. En este último apartado se encuentra la inteligencia artificial, de la que se suele hablar solo cuando afecta a la jugabilidad por exceso o por defecto. Unos enemigos demasiado "tontos" hacen aburrido y poco creíble a un juego pero unos enemigos demasiado inteligentes frustran al jugador. Sobre este apartado de la programación versó uno de los talleres online que ha estado impartiendo el Centro Tecnológico Digital U-tad, adscrito a la Universidad Camilo José Cela.

Cómo funciona la inteligencia artificial en Unreal Engine Imagen 2

Este taller, destinado a profesionales con conocimientos previos que deseasen ampliar sus conocimientos y a alumnos universitarios, estuvo impartido por Javier Lucas Gómez, programador de Inteligencia Artificial y Lead de Automatización en Mercury Steam. Aunque el estudio creador de Spacelords utiliza un motor propio, el taller versó principalmente sobre Unreal Engine (UE), que es uno de los motores más utilizados en el desarrollo de videojuegos. Lucas empezó diciendo que en videojuegos la IA "tiene que ser divertida, predecible. Para ello, tiene que entrar el equipo de diseño a poder tocar y parametrizar, no se trata de que gane al jugador. El jugador tiene que aprender, predecir el comportamiento y saber qué van a hacer los enemigos. Tampoco debe parecer estúpida, las animaciones tienen que ser fluidas y no parecer un robot. Si es un soldado, debe comportarse como un soldado, no tropezarse ni girar mal, el jugador debe creérselo y aprender a jugar contra la IA, pero que esta actúe correctamente".

Cómo funciona la inteligencia artificial en Unreal Engine Imagen 3

Eficiencia frente a diversidad y fluidez

Para lograrlo tiene que producirse un encuentro entre posturas que normalmente parten de posiciones contrarias: el programador quiere eficiencia y que el programa sirva para todas las IAs del juego, mientras que para el diseñador lo importante es que cada situación y enfrentamiento con un enemigo sea diferente y único mientras que los artistas se centran en que todo sea bonito y fluya. "En el equilibrio está el acierto", sentenció Lucas.

PUBLICIDAD
Cómo funciona la inteligencia artificial en Unreal Engine Imagen 4

Hay distintas maneras de implementar la IA en un videojuego; la primera es el scripting es pura programación y es el recurso que había en los años 80 y 90. Las Finite State Machines (FSM) o Máquinas de Estados Finitos dieron al diseñador más capacidad; este define el enemigo y su comportamiento y el programador crea los distintos estados y las transiciones que le dice el diseñador y realiza una interfaz para que el diseñador pueda implementarlo en el juego. Durante muchos años, dijo Lucas, este fue el estándar de los videojuegos.

Las Hierarchical Task Networkds (HTN) o Redes Jerárquicas de Tareas descomponen objetivos finales -como matar al jugador- en pequeños pasos (identificar al jugador, moverse hasta él y atacarlo) que tienen subtareas (usar sensores para localizarlo, activar una animación…), y no da todo el control al diseñador, hay un árbol jerárquico con los pasos que va dando la IA pero son automáticos. Los Behaviour Trees (Bts) o Árboles de Comportamiento se implementaron en Halo y son una evolución de las FSM; en los Bts el diseñador tiene el control pero con una implementación rápida adecuada para los programadores. Son árboles jerárquicos que deciden el flujo de las decisiones de la inteligencia artificial de un agente (un personaje). Los Bts, dijo Lucas, permiten "iteraciones más rápidas que otros sistemas" y se pueden extender nuevos nodos al árbol. Cada parte del árbol permite encapsular acciones que se pueden utilizar en cualquier IA o subrama de una IA; por ejemplo, se puede disparar corriendo o desde una cobertura.

Cómo funciona la inteligencia artificial en Unreal Engine Imagen 5

Hay dos elementos que son necesarios para programar una inteligencia artificial en un videojuego, sostuvo el profesor: un editor y un depurador, porque si el primero no se puede hacer nada y sin el depurador cuesta más encontrar problemas. En Mercury Steam solo se utilizan de terceros las librerías, todo lo demás se implementa desde cero en el estudio, lo que permite crear, dijo Lucas, "árboles y subárboles altamente configurables y, cuanto más se puedan configurara, mejor, puesto que esto nos permitirá reutilizar acciones para diferentes motivos". Además, el estudio madrileño tiene herramientas especiales para, por ejemplo, ver animaciones o abrir el árbol en ejecución de un enemigo específico lo que permite ver y depurar un punto concreto de un árbol que tenga, como se ha dado el caso, 8.000 nodos. En otros juegos grandes como The Division se utilizan sistemas de colores para ver qué nodos se están ejecutando o no.

Lucas contó que él se prepara un mapa de prueba pequeño, "que pese poco y tenga lo justo y necesario para probar esa IA", algo que es fácil de realizar en Unreal, y luego ya se lleva al mapa de verdad "porque para corregir bugs es mejor uno pequeño".

El pathfinding, cómo llegar del punto A al punto B

También trató buena parte del taller sobre el pathfinding, la búsqueda de un camino para llegar del punto A al punto B y que es clave en un videojuego. Según explicó Lucas, "para que una IA sea divertida tiene que hacer una serie de cosas, y la más importante es tomar decisiones. Una vez que decida que toma como target el jugador debe ir a por él". Para llevar a cabo esas decisiones, añadió el profesor, "los Behavioural Trees son el cerebro, el pathfinding son las piernas, la percepción son los ojos y los oídos, las UtilityFunctions son parte del cerebro, de la toma de decisiones, y la Collision Avoidance es esquivar". El pathfinding se puede hacer enviando rayos (ray tracing) que detecten dónde hay obstáculos estáticos, aunque este método no es óptimo porque se pueden dar demasiadas vueltas y tiene un coste en física. Para pintar cada frame de un juego, informó Lucas, hay 33 milisegundos, y lo que se suele hacer es asignar cuotas de ese tiempo a todo lo que ocurre en el juego: "por ejemplo, para decidir la física tienes 3 milisegundos, para la IA tienes 5 ms, para pintarlo todo tienes otros 5 y al final intentamos que cada uno consuma el menor tiempo posible y que todo vaya bien de rendimiento."

Cómo funciona la inteligencia artificial en Unreal Engine Imagen 6

Lucas afirmó que a veces es difícil saber en qué se quiere especializar uno ya que la informática incluso dentro de los videojuegos es amplia y comprende gráficos, IA, lógica, bases de datos, backend… y recomendó a los que quieran especializarse en inteligencia artificial que practiquen e investiguen en casa con distintos proyectos "en C++, en Javascript, en lo que sea".

Múltiples maneras de representar el mundo

El algoritmo más utilizado para esa búsqueda de caminos es A*. El pathfinding es un campo amplio y son múltiples las maneras de representar el mundo para utilizar el algoritmo que permita ir del punto A al punto B. Lucas repasó las representaciones más habituales que han ido avanzando en el tiempo a través de distintas investigaciones universitarias y que acaban llegando a los videojuegos: los regular grids más antiguos que puede tener un juego de estrategia, los Corner Graphs que colocan los puntos de navegación en los obstáculos reduciendo el número de nodos o los Waypoint Graphs, que coloca los nodos en los centroides de las habitaciones o esquinas.

En Castlevania, afirmó el profesor, se utilizaron los Circular Waypoint Graphs, una mejora de los Waypoint Graphs que generaba un grafo a partir de una semilla y establecía una circunferencia hasta que tocaba una pared. Es un método costoso que se realiza antes del juego y se guarda en estructuras de datos que sí se incluyen en el juego. En ocasiones los ordenadores tardaban más de una noche en realizar los cálculos necesarios pero, añadió Lucas, cuanta más memoria se gasta en este proceso a priori, "menos memoria necesito cuando se está ejecutando el juego".

Cómo funciona la inteligencia artificial en Unreal Engine Imagen 7

Todos estos métodos quedaron obsoletos con los mapas polígonales. Las NavMeshes son un conjunto de polígonos que modelan el espacio por el que camina el agente. Las inventó Mikko Mononen, un programador de IA en Crysis y sentó las bases que después han utilizado muchos juegos con algunas variaciones y evoluciones. Unreal utiliza NavMesh Bounds Volume

También forma parte de la inteligencia artificial la percepción, que se encarga de recoger información de los jugadores o el entorno para tomar conciencia de lo que rodea al agente y tomar decisiones; es lo que permite que un enemigo pueda ver o escuchar al personaje del jugador y la capacidad de actuar ante esta información y que esa reacción parezca realista.

Elegir siguiendo una serie de criterios

El penúltimo apartado tratado en el taller fueron las utility functions, que se utilizan para elegir de entre un conjunto de elementos el mejor siguiendo una serie de criterios como qué cobertura elegir o a qué enemigo atacar. Unreal tiene el Environment Query System, de momento experimental, que se puede orientar a las especificidades de cada juego.

Cómo funciona la inteligencia artificial en Unreal Engine Imagen 8

El último punto que expuso Lucas fue la esquiva de colisiones, Collision Avoidance, para no chocar contra objetos en movimiento en la que, dijo, se utilizan numerosas investigaciones publicadas de las Universidades ya que no hay un estándar establecido, aunque sí algunos modelos más utilizados y explicó cómo en Horizon: Zero Down tuvieron precisamente que recurrir a distintas versiones de estos papers para encontrar una variante que funcionase con movimientos circulares para las trayectorias de los robots enemigos. El futuro, apostó Lucas, "probablemente sea el aprendizaje automático, que los agentes aprendan a esquivar por su cuenta más que que les demos un algoritmo".

Open Days de los másteres en videojuegos

La semana que viene el Centro Tecnológicio va a celebrar jornadas online de puertas abiertas de los juegos que se han creado en U-tad. En estos Open Days se explicará en profundidad lo que ofrecen el Máster en Arte de Videojuegos, el Máster en Game Design y el Máster en Programación de Videojuegos del centro, incluyendo el desarrollo profesional en equipo, contarán su experiencia antiguos alumnos de U-tad que están trabajando en compañías como Splashdamage, Ubisoft, Genera Games, King o Amazon y se conocerá el modelo universitario, salidas laborales y el proceso de admisión. Los directores académicos estarán para resolver cualquier duda que se presente sobre las titulaciones.

Imágenes:

Otras noticias sobre:

En forosComentar en nuestros foros

En forosComentar en nuestros foros

Flecha subir