Inteligencia artificial en los videojuegos

Transcription

Inteligencia artificial en los videojuegos
Inteligencia artificial en los videojuegos
Juan Lorenzo Alonso Afonso
Alberto García Durán
Ing. de Telecomunicación
Universidad Carlos III Madrid
Ing. de Telecomunicación
Universidad Carlos III Madrid
[email protected]
[email protected]
ABSTRACT
En la actualidad, es muy frecuente oir hablar más y más acerca de la inteligencia artificial en distintos ámbitos. Tanto en ámbitos de nuestra vida, afectándola directamente (como incluirla en electrodomésticos, por ejemplo) o indirectamente (influenciando el disfrute de algunas de nuestras actividades de ocio, como lo puedan ser los videojuegos).
Hemos centrado nuestro trabajo en este último ámbito tan interesante del mundo de los videojuegos.
Keywords
AI games, Artificial Intelligence, Left 4 Dead.
1. INTRODUCCIÓN
1.1 ¿Qué es la IA?
Se denomina inteligencia artificial a la rama de la ciencia informática dedicada al desarrollo de agentes racionales no vivos. Es decir, a estudiar cómo máquinas pueden ser capaces de realizar tareas con racionalidad, entendiendo por este término a que el agente pueda percibir su entorno y deducir la solución a llevar a cabo que maximice las posibilidades de conseguir el resultado deseado.
De manera más específica: es la disciplina que se encarga de construir procesos que al ser ejecutados sobre una arquitectura física producen acciones o resultados que maximizan una medida de rendimiento determinada, basándose en la secuencia de entradas percibidas y en el conocimiento almacenado en tal arquitectura.
un sistema de percepción: un personaje podía ver a sus compañeros y reconocer si estaban muertos. Posteriormente se basaron juegos plenamente en esta técnica como Thief: The Dark Project [Looking Glass Studios, Inc., 1998] y Metal Gear Solid [Konami Corporation, 1998].
A mitad de los 90, los RTS (Estrategia en tiempo real) empezaron a desarrollarse. Warcraft [Blizzard Entertainment, 1994] fue uno de los primeros juegos que mostraron pathfinding (búsqueda de camino) y formaciones robustas con movimiento en acción.
Con el tiempo ha ido aumentando el número de juegos que basaban su razón de ser en la IA, como por ejemplo The Sims [Maxis software, Inc.,2000] o Black and White [Lionhead Studios Ltd.,2001].
1.3 Necesidades básicas de IA en videojuegos modernos
La IA en gran cantidad de juegos modernos satisface tres necesidades básicas: la capacidad de mover personajes, de tomar decisiones acerca de hacia dónde moverse, y la habilidad de pensar tácticamente o estratégicamente. A pesar de que hayamos pasado de usar máquinas de estado para todo (que se siguen usando en su mayor parte) a un amplio abanico de técnicas, todas ellas satisfacen las tres necesidades básicas citadas anteriormente.
1.4 Modelo de IA que usaremos
A pesar de que existan varios modelos de IA, el que usaremos es el siguiente:
1.2 Breve historia de la IA en los videojuegos
Pacman [Midway Games West, Inc., 1979]: A pesar de que ya habían salido modificaciones del Pong con el segundo jugador controlado por la máquina o innumerables juegos del tipo Space Invaders, Pacman tuvo definitivamente personajes enemigos que aparentaban conspirar en tu contra. Se movían como tú por el mapa y en resumen, te hacían la vida difícil. La IA del Pacman se basaba en una máquina de estados (ver apartado 3.3.2) para cada fantasma. Cada enemigo estaba o persiguiéndote, o huyendo de ti. Para cada estado, en cada intersección, el fantasma tomaba una ruta cuasi­aleatoria. Todo muy simple y muy 1979.
Goldeneye 007 [Rare Ltd., 1997] nos mostró cómo podría mejorar la IA el gameplay de un juego. Seguía basándose en personajes con estados bien definidos pero limitados; añadiendo Figura 1
El esquema separa la tarea de IA en tres secciones: movimiento, toma de decisiones y estrategia. Las dos primeras secciones contienen algoritmos que corren en cada personaje por separado, mientras que la última puede ser para un grupo de personajes.
No en todas las aplicaciones videojueguiles se requieren los 3 distintos tipos de IA. Por ejemplo, en un juego de ajedrez, sólo se requiere el nivel estratégico de la IA. Las figuras no tienen que preocuparse por hacer sus propias decisiones individualmente, ni tampoco acerca de cómo moverse, puesto que lo imponen reglas ya establecidas.
Por otro lado, no en todos los juegos se necesita el nivel estratégico. Escojamos por ejemplo un juego de plataformas, como el Jak and Daxter [Naughty Dog, Inc., 2001] o el Oddworld: sus personajes son puramente reactivos, haciendo sus propias simples decisiones y actuando sobre ellas. No hay ningún tipo de coordinación que se asegure de que los personajes enemigos hacen el mejor trabajo posible dificultando el avance al jugador.
1.4.1
juego. El comportamiento elegido puede ser ejecutado con IA de movimiento y tecnología de animación.
Reduciéndolo a lo más sencillo posible, un personaje puede tener reglas muy simples para seleccionar un comportamiento ante otros. Por ejemplo, los animales de granja de varios juegos de Zelda estarán quietos hasta que detecten la proximidad del jugador. Es entonces cuando se apartarán una pequeña distacia.
En otro extremo, los enemigos en Half­Life 2 [Valve, 2004] muestran complejas tomas de decisiones, donde intentarán varias estrategias para llegar al jugador, encadenándolo todo con acciones intermedias como pueden ser tirar granadas o tumbarse en el suelo durante fuego de cobertura del jugador para llegar a sus objetivos.
Movimiento
Con “movimiento” nos referimos a algoritmos que convierten decisiones en algún tipo de actividad motriz. Cuando un personaje enemigo sin un arma de fuego necesita atacar al jugador, en SuperMario Sunshine [Nintendo Entertainment, Analysis and Development, 2002], primero se dirige al jugador. Una vez se encuentre cerca de él, procederá a atacarlo. La decisión de atacar es llevada a cabo por un grupo de algoritmos de movimiento que orientan al personaje para que se aproxime a la posición del jugador. Sólo entonces se podrá activar la animación de ataque y se permitirá que la salud del jugador se vacíe.
Pero lógicamente, los algoritmos de movimiento van mucho más allá de simples acercamientos. En algunos juegos, un personaje puede tener que evitar obstáculos o atravesar una serie de habitáculos. Un guarda de seguridad en algunos niveles de Splinter Cell [UbiSoft Montreal Studios, 2002] responde a ver al jugador con la activación de la alarma. Esto puede requerir que el guarda se desplace hasta el interruptor de alarma más cercano, el cual puede estar a una larga distancia y pueda requerir de navegación compleja a través de obstáculos o pasillos.
Muchas acciones son llevadas a cabo usando la animación correspondiente del personaje directamente. Si un sim en Los Sims [Maxis, 2000], está sentado en una mesa con comida frente a él y quiere llevar a cabo una acción de comer, entonces se reproduce simplemente la animación de comer. Una vez la IA decide que el personaje debe comer, no se necesita más a la IA. En cambio, si el personaje está en la puerta de atrás y quiere comer en ese instante, la IA tendrá que guiarlo a la silla (o a una fuente de comida cercana).
1.4.2 Toma de decisiones
La toma de decisiones comprende que un personaje averigüe qué es lo siguiente a hacer. Típicamente, cada personaje tiene un rango de diferentes comportamientos que puedan escoger a realizar: atacar, quedarse quietos, esconderse, explorar, patrullar, etc. El sistema de toma de decisiones tiene que decidir cuál de estas posibilidades es la más apropiada para cada momento del Figura 2:Captura del Half­Life 2
1.4.3 Estrategia:
Se pueden llevar a cabo muchísimas cosas solamente con IA de movimiento y IA de toma de decisiones. De hecho, gran parte de los juegos tridimensionales usan estos dos elementos. Pero para coordinar un grupo entero, se requiere de IA de estrategia.
Con estrategia nos referimos a la forma en la que un grupo se acerca o avanza hacia sus objetivos o enemigos. En esta categoría hay algoritmos de IA que no sólo controlan un personaje, sino que influencian el comportamiento de grandes grupos de personajes. Cada individuo del grupo puede tomar decisiones por sí mismo y llevar a cabo algoritmos de IA de movimiento, pero en general, su toma de decisiones será influenciada por la estrategia de grupo.
En el Half­Life [Valve, 1998], los enemigos trabajaban como un grupo para rodear y eliminar al jugador. Con frecuencia, uno se posicionaría, corriendo, detrás del jugador para flanquearle. Esto se ha seguido usando en juegos más recientes como en Ghost Recon [Red Storm Entertainment, Inc., 2001] con sofisticación incremental acerca de los tipos de acciones estratégicas que un equipo de enemigos puede llevar a cabo.
2.2.1 Hacks
Hay un dicho que dice “Si algo parece un pez y huele como un pez, probablemente sea un pez”.Por tanto, esta opción está basada en el aprendizaje de la inteligencia humana para luego crear una máquina que lo replique, aunque esta opción está considerada como científicamente pobre. De ahí que por ejemplo, los juegos de ajedrez no se basan en técnicas que simulen comportamientos humanos, sino en algoritmos que buscan la mejor jugada mirando en una cierta cantidad de movimientos futuros.
Este tipo de IA es la utilizada por el archifamoso videojuego Los Sims.
2.2.1 Heurísticos
Figura 3: Captura del Splinter Cell: Chaos Theory
2. IA EN LOS VIDEOJUEGOS
2.1 La falacia de la complejidad
Un error común es pensar que cuanto más complejo sea el sistema de IA más humano parecerá el comportamiento de los personajes al jugador, pero en realidad lo que se debe buscar es asociar un cierto comportamiento al algoritmo correcto. De esta manera, una técnica muy simple usada correctamente puede dar resultados muy buenos. Al razonamiento de cuanto más complejo mejor, se le denomina la “falacia de la complejidad”. A continuación se expondrán varios ejemplos que ilustrarán esta falacia.
En el anterior punto se ha mencionado al conocido Pac­Man como uno de los primeros juegos con cierta IA. Este juego es un claro ejemplo de cómo un mecanismo simple, pero bien aplicado, da resultados óptimos. Su IA está basada en una máquina de dos estados, cuando el jugador está comiendo pepitas o cuando el jugador ha comido la pastilla que le permite ser inmune a los fantasmas.
En el primer estado los fantasmas se van moviendo en línea recta hasta que llegan a un cruce. Una vez ahí cada fantasma elige semialeatoriamente qué ruta seguir, o bien elegir la ruta que dirige hacia el jugador o bien elegir cualquiera de las otras rutas de manera aleatoria. La probabilidad de hacer una cosa u otra dependerá de un parámetro definido para cada fantasma. Los diferentes valores de este parámetro que hace a cada fantasma tender a hacer una cosa u otra es suficiente para convertirlos en una oposición significante para el jugador.
Al contrario, un ejemplo en donde una IA muy compleja dió malos resultados es el juego Black and White. Este juego conllevaba la enseñanza al personaje de qué hacer mediante la combinación de ejemplos y retroalimentación, de modo que si al principio le enseñabas malos hábitos acabaría siendo incapaz de hacer ni las más básicas acciones.
2.2 Modelos de IA en los videojuegos
Las diferentes técnicas de IA se podría englobar en 3 grandes grupos: hacks, heurísticos y algoritmos.
Es una aproximación que permite conseguir buenos resultados en muchas ocasiones, pero no siempre.
Este tipo de IA se basa por ejemplo en que los personajes de un videojuego realicen acciones que en el pasado les han resultado beneficiosas en una determinada situación. Un ejemplo de esto puede ser “si el enemigo está en inferioridad numérica, ataca”. Este tipo de inteligencia también la empleamos las personas en nuestras vidas, por ejemplo al pensar “nunca hay que confiar en un extraño”, no tenemos una base científica para pensar que hacer eso es lo mejor, pero sí creemos que en la mayoría de las ocasiones seguir esa intuición nos resultará beneficiosa. Heurísticos habituales pueden ser: “Haz la cosa más dificil primero” o “Intenta primero la acción más prometedora ”.
2.2.1 Algoritmos
Aunque, obviamente, los dos tipos de IA anterior son implementandos mediante algoritmos, con esta denominación nos referimos a aquellas técnicas como la nombrada anteriormente para un simulador de ajedrez, en donde se aprecia una inteligencia más “computacional”.
En este trabajo presentaremos un conjunto muy reducido de técnicas (seleccionadas por nosotros) pertenecientes a este último tipo de IA.
3. TÉCNICAS
3.1 Movimientos
Uno de los requisitos más fundamentales de IA es mover los personajes sensiblemente por el juego. Hasta los personajes controlados por IA más antiguos (fantasmas del Pac­Man o el palo contrario del Pong) tenían algoritmos de movimiento que no son tan distintos de los que a día de hoy están incluídos en los juegos que llenan las estanterías de establecimientos de venta. El movimiento forma parte de las técnicas de IA de más bajo nivel de nuestro modelo:
cinemático; no tiene en cuenta como los personajes aceleran o aminoran su velocidad.
Recientemente, se ha tomado mucho interés en los comportamientos de giro: no son cinemáticos, pero sí dinámicos. Estos algoritmos tienen en cuenta la velocidad instantánea del personaje, donde típicamente el algoritmo debe saber la velocidad actual del personaje, así como su posición. Los resultados que ofrece un algoritmo dinámico son fuerzas o aceleraciones, con el objetivo de cambiar la velocidad del personaje.
Figura 3
Todos los algoritmos de movimiento tienen la misma forma básica: toman los datos geométricos acerca de su estado y el estado del mundo, y obtienen un output geométrico representando el movimiento que querrían hacer. La siguiente figura muestra esto esquemáticamente:
Comparándolos, los algoritmos dinámicos introducen una nueva capa de complejidad. Por ejemplo, si un personaje tiene que moverse de un sitio a otro, con un algoritmo cinemático simplemente tendrías como output la dirección del objetivo, para que te muevas en esa dirección sin parar hasta que llegues (que será justo cuando el algoritmo ya no te indique una dirección en la que moverte). Por otro lado, un algoritmo dinámico necesita trabajárselo más: Primero tiene que acelerar en la dirección correcta, y luego cuando se acerca a su objetivo, necesita acelerar en la dirección opuesta, para que su velocidad se decremente a precisamente la tasa correcta para que pare nuestro personaje a exactamente el lugar deseado.
3.2 Pathfinding (cómo encontrar el camino)
Los juegos normalmente necesitan que los personajes puedan moverse a través del nivel. En ocasiones, los creadores lo predeterminan, fijando el movimiento a una ruta fija. Esto es útil, por ejemplo, en un juego en el que un personaje debe patrullar una zona siguiendo un recorrido fijo. Figura 4
Aquí, la velocidad del personaje se muestra como opcional puesto que sólo se necesita para determinadas clases de algoritmos de movimiento.
Algunos algoritmos de movimiento requieren muy pocos parámetros de entrada (Input): la posición del personaje y del enemigo al que perseguir, por ejemplo. Otros requieren mucha interacción con el estado del juego y la geometría del nivel. Un algoritmo de movimiento que evita chocarse con paredes, por ejemplo, necesita tener aceso a la geometría de la pared para comprobar posibles colisiones potenciales.
El output también puede variar. En la mayor parte de juegos es normal tener algoritmos de movimiento que den como resultado la velocidad deseada. Por ejemplo, si un personaje ve a su enemigo a su izquierda, su reacción debería ser dirigirse a la izquierda a toda velocidad. A menudo, en juegos antiguos, sólo había dos velocidades: máxima y estacionaria (sin moverse), donde en algunos casos toca añadir la velocidad normal de caminar. Por tanto, el único output o resultado a obtener era la dirección en la que moverse. Esto se llama movimiento ¿Cuál es el problema de este tipo de proceder? Pues que si el personaje en cuestión encuentra un objeto en su camino que no estaba previsto que hubiese sido movido ahí, se queda bloqueado. Ver personajes moviéndose porque sí puede dar la sensación de que no tengan un objetivo que cumplir, y pueden bloquearse fácilmente.
Personajes mucho más complejos no saben hacia dónde tendrán que moverse a continuación. Una unidad en un RTS (estrategia en tiempo real) puede ser ordenada por el jugador, en cualquier momento, que se desplace a cualquier punto del mapa. En un juego de sigilo, un guarda debe saber cómo llegar hasta el interruptor de activación de alarma si lo necesitase y en un plataformas un personaje puede requerir saber cómo perseguir al jugador a través de una serie de obstáculos.
Pathfinding puede ser usado simplemente para ver en qué dirección se ha de mover el personaje, mientras que otra parte de la IA decida cuál es ese objetivo al que debe aproximarse. También hay otro tipo de IA que fusiona ambos papeles: goal pathfinding, el cual se dedica tanto a decidir un objetivo como a indicar cómo dirigirse hacia él. La solución obtenida tiene que ser la más sencilla y directa. No tiene sentido que un personaje que está en la habitación anexa a la que tiene la puerta ­que da a parar hacia donde se quiere dirigir­, de una vuelta por todas las habitaciones de la casa hasta dar con la puerta deseada. En cuanto a implementación, la mayoría de juegos usan soluciones de pathfinding basadas en el algoritmo A*. Es eficiente y fácil de implementar, pero no puede trabajar directamente con los datos del nivel del juego: hay que representar el nivel en una estructura de datos particular: un grafo dirigido no negativo. Eso sí, si la conversión del nivel del juego a la simplificación usada por A* no es realizada con cuidado y sin omitir información necesaria, los resultados no serán los deseados. Y la culpa no será del algoritmo, sino de nuestra conversión.
del lado de la habitación al del pasillo es instantáneo. ¿Entonces no deberían todos los costes ser cero en este tipo de casos?
Por ello se tiende a medir distancia o retardo a través de un punto representativo en cada región. Así que escogemos el centro de la habitación y del pasillo como referencia. Así si la habitación es grande, es más probable que la distancia sea mayor.
Contemplemos en la siguiente figura lo aprendido hasta ahora:
Por tanto, vamos a revisar rápidamente los tipos de estructuras de grafos. Un grafo es una estructura matemática representada comúnmente con forma de diagrama:
Figura 5
Para pathfinding, cada nodo representa usualmente una región del nivel del juego, como una habitación, una sección de un pasillo, una plataforma o una pequeña región de espacio a la intemperie, etc.
Añadiendo un nivel de complejidad, incluyamos los costes a cada enlace entre nodos. Este coste es un factor que puede depender de parámetros como lo son por ejemplo el tiempo y la distancia. La utilidad de esta implementación está en determinar más fácilmente qué consecuencias tiene tomar un camino frente a otro de manera directa.
Figura 7
3.2.2 A*
Dedicaremos unas líneas a este algoritmo. A* es un algoritmo de búsqueda de grafos best­first que encuentra el camino de coste mínimo a partir de un nodo inicial y un nodo destino.
Usa una función heurística distance­plus­cost (usualmente denotada como f(x)) que determina el orden el que la búsqueda pasa por nodos en el grafo. Para el familiarizado con el algoritmo de Dijkstra, salvando las distancias, éste podría ser considerado hermano mayor de A*.
3.3 Toma de decisiones
Aunque hay muchas técnicas para la toma de decisiones, todas ellas persiguen lo mismo: que el personaje procese un conjunto de información del que dispone para, en base a eso, generar una acción. Esta información de la que dispone se puede dividir en dos grupos: conocimiento externo, y conocimiento interno. El primero es el procedente del entorno del juego que rodea al jugador (posición de enemigos, dirección del ruido...), y el segundo es información interna del personaje (salud, dónde estuvo hace dos segundos...).
Figura 6
3.2.1. Puntos representativos para cada región
Es especialmente importante saber qué punto de referencia estamos tomando, para poder interpretar costes y sus valores, en cuanto por ejemplo, distancia. ¿Por qué? Veamos, si dos regiones están conectadas (como una habitación y un pasillo), la distancia entre ellos es cero. Si estás en el umbral de una puerta, moverte 3.3.1 Árboles de decisión
Los árboles de decisión son rápidos, fácilmente implementables y sencillos de entender. Aunque sean el tipo de técnicas de toma de decisión más sencillas, pueden resultar bastante sofisticados con algunas extensiones/variaciones.
Como vemos en la Figura 8, está formado por un punto de decisión, que se denomina la raíz. Cuando llegamos a un punto de decisión, la bifurcación que elegimos depende del estado de entrada, esto es, de la información de la que se dispone en el momento en el que se ha iniciado el proceso de toma de decisión.
3.3.3 Combinación de máquinas de estado y árboles de decisión
Podemos combinar las dos soluciones vistas anteriormente sustituyendo las transiciones de un estado a otro con árboles de decisión. Esto permite en ocasiones conseguir implementaciones significativamente más rápidas.
3.3.4 Lógica difusa
En las técnicas anteriores siempre hablábamos de un estado u otro, una acción u otra, pero lo que nos gustaría es que hubiera una transición progresiva entre un estado y otro, entre una acción y otra.
Figura 8
Cuando el algoritmo de decisión llega a una determinada acción, entonces esa acción es llevada a cabo inmediatamente.
El árbol mostrado en la Figura 8 es muy sencillo con opciones de tipo binario (YES/NO), pero se podría complicar con opciones numéricas, vectores... Incluso añadir una componente aleatoria mediante estados alternativos a los que se acceden con una determinada probabilidad.
En esta lógica se definen un conjunto de estados y el jugador puede pertenecer a cada uno de ellos en un cierto grado de pertenencia. Por ejemplo, ahora un personaje puede estar herido con un grado de pertenencia de 0.5 o hambriento en un grado de 0.9, pudiendo pertenecer a distintos estados en niveles diferentes de pertenencia.
Sin embargo, estos grados de pertenencia sí deben tener cierta relación entre algunos de ellos. En el caso de estados excluyentes, por ejemplo herido­sano, alto­bajo, la suma de sus grados de pertenencia deben ser igual a 1.
3.3.2 Máquinas de estado
En estas máquinas a cada estado se le asocia un tipo de acción o comportamiento. Por tanto, un personaje mientras permanezca en un mismo estado estará realizando una misma acción.
Los distintos estados están conectados mediante transiciones, que se producen solamente si se cumplen unas determinadas condiciones asociadas para el paso de un estado a otro. Esto se ilustra en la Figura 9.
Figura 10
Una vez que ya tenemos el grado de pertenencia a los distintos estados, queremos lo contrario, convertir este conjunto de valores en un único valor de salida. Esto se puede hacer de muy diferentes maneras y criterios. Por ejemplo en la Figura 11 se ilustra un ejemplo en que se establecen unas ciertas fronteras que delimitan la velocidad del movimiento de un personaje.
2
Figura 9
Figura 11
3.4 Tácticas y estrategias
Las técnicas de toma de decisiones del punto anterior tienen dos grandes limitaciones: solo consideran a un personaje en solitario y no tratan de formar una predicción en base a la información que se tiene para intentar adelantarse al jugador. Las técnicas de estrategias y tácticas intentan ocupar este vacío, aunque estas técnicas no serán siempre necesarias, por ejemplo en un juego de plataformas no haría falta ningún tipo de estrategia, pero en otros como en Age of Empires [Ensemble Studios, 1997] será fundamental. Para explicar este apartado de la mejor forma, pondremos ejemplos pensando en un juego de género shooter (o FPS –First Person Shooter­). En este tipo de juegos habría que destacar tres tipos de localizaciones, puntos para cubrirse (cover), puntos desde los que disparar protegido (sniping points) y puntos ciegos (shadow points):
tenidos en cuenta en el momento que se toma la decisión de elección de un punto para llevar a cabo la estrategia, algo que se realiza durante unos escasos instantes.
Con una concepción parecida a la de la lógica difusa, una mejora de lo anterior sería catalogar a cada punto por un valor que indicase su pertenencia a una cierta categoría. Por ejemplo si un personaje está intentado huir y tiene igualmente alcanzables dos puntos, uno con cover=0.9 y otro con cover=0.6, el personaje se dirigirá al primero de los puntos. Una interpretación correcta de los grado de pertenencia a los estados nos podría proporcionar una gran mejora en la elaboración de tácticas, buscando puntos que cumplan ciertos requisitos de pertenencia a distintos estados. El inconveniente de esto es la necesidad de alamacenar una gran cantidad de memoria, ya que cada punto necesitaría tener tantos valores de pertenencia a cada estado como estados haya.
El problema de lo contado hasta ahora es que hemos considerado el problema sin tener en cuenta la posición del rival o los rivales. Por ejemplo, un jugador puede ir hacia un punto catalogado en principio como muy buen lugar para esconderse, pero esto no sirve de nada si justamente un rival se encuentra en las inmediaciones de ese punto, siendo fácilmente observable por él. De este modo antes de elegir el punto en donde esconderse es necesario hacer un paso más y decidir si ese punto es apropiado en función de la posición de los enemigos. Una opción simple podría ser estimar si los rivales, desde sus posiciones actuales, tendrían visión de los puntos estratégicos (ver Figura 13).
Este tipo de decisiones estratégicas pueden ser implementadas, como anteriormente, con árboles de decisión o máquinas de estado, en donde una vez establecido la localización de los enemigos, la calidad de los puntos estratégicos del entorno y otros tipos de información externa e interna, tomar una decisión en consecuencia.
Figura 12
Teniendo marcados este conjunto de puntos por parte del diseñador del juego ya se proporciona cierta inteligencia al comportamiento táctico. De esta manera ante ciertas situaciones el jugador buscaría la mejor posición (de las predefinidas) para intentar protegerse de un ataque o desde la de donde atacar estando protegido. Otras situaciones más complejas podrían ser la búsqueda de un buen sitio para realizar un ataque y una posterior huida, en este caso no sería sólo importante buscar un punto con buena visibilidad y que garantice cierta protección, sino que también tendría que tener en cuenta las posibles rutas de salida (lo que conlleva un análisis topológico). Estos factores han de ser Figura 13
Otro punto a tener en cuenta es la distancia del personaje a los distintos puntos estratégicos, algo que se calcula con técnicas de pathfinding (comentado anteriormente en el punto 3.2), que influirá notablemente en la elección del punto estratégico elegido.
3.5 Aprendizaje
3.5.5 ¿Qué aprender?
En principio, el aprendizaje IA tiene el potencial de adaptarse a cada jugador, aprendiendo sus técnicas y trucos suponiéndole un reto consistente siempre. Esto permite crear personajes más creíbles, personajes que pueden aprender del entorno y usarlo de la mejor manera posible.
En la mayoría de los juegos, la cantidad de información será enorme, pero el número de acciones realizables será bastante limitada. Por tanto es posible aprender reglas muy complejas para acciones en situaciones muy concretas, pero eso no es lo que se pretende, lo que se pretende es aprender lo general, no lo específico.
Debido a la complejidad y la extensión de este apartado nos centraremos en dar una pincelada de los conceptos que hemos considerado más interesantes.
3.5.1 Aprendizaje online u offline
En el primero de ellos el aprendizaje se realiza durante el juego, mientras el usuario está jugando, permitiendo a los personajes aprender del estilo del jugador para adaptarlo a él, suponiéndole un reto. Además, cuanto más juega el usuario, mejor capacidad de anticipación tienen los personajes del juego. El inconveniente de este tipo de aprendizaje es la predictibilidad y el testing, ya que como el juego está continuamente cambiando es difícil replicar problemas y bugs.
El segundo tipo de aprendizaje hace referencia al que se produce antes de que el juego deje las instalaciones de la empresa desarrolladora del juego. Aquí el aprendizaje se extrae del procesamiento de datos de juegos reales que permiten la extracción de estrategias o parámetros de ellos. En este tipo de aprendizaje no hay problemas de testeabilidad.
3.5.2 Sobreaprendizaje
Un problema común es el sobreajuste o sobreaprendizaje. Esto significa que si un aprendizaje IA es expuesto a un gran número de experiencias y aprende de ellas, puede perder capacidad de generalizar bien y solo es capaz de responder correctamente cuando vuelve a “vivir” esas experiencias. Y lo que se busca es precisamente el efecto contrario, que a partir del aprendizaje de unas cuantas experiencias, sea capaz de generalizar de forma correcta para un rango más amplio de nuevas situaciones. 3.5.3 Modificación de parámetros
Referidos a los algoritmos de aprendizaje que se basan en el cálculo de parámetros relacionados con distintos aspectos del juego (probabilidades, dificultad...) que provocan cambios sustanciales en el juego. Para el ajuste de parámetros se suelen emplear algoritmos de búsqueda.
3.5.4 Aprendizaje de decisión
Aquí lo que se quiere aprender es asociar cada opción individual de comportamiento con observaciones. Así, la IA puede aprender qué decisiones encajan con qué observaciones y poder mejorar su actuación.
4. ¿QUÉ NOS DEPARA EL FUTURO EN LA IA?
Especialmente, nos ha gustado el ejemplo del juego del Left 4 dead (L4D en adelante) [Valve, 2008]. Se trata de un shooter cooperativo. Hasta cuatro jugadores online o en LAN contra hordas y hordas de zombies. Pero aparte de lo que pueda resultar esto de por sí atractivo para los aficionados al género, hay un factor verdaderamente importante que ha hecho que este juego triunfe por todo lo alto: que cada partida sea distinta.
¿Cómo es esto posible? Pues, aunque los tipos de enemigos, los mapas o la música permanezcan iguales, la experiencia es distinta en el sentido que cada vez que juegas, los enemigos aparecen en sitios distintos o actúan de distinta manera. Cada vez es como si jugases por primera vez, forzándote el tener que estar alerta en todo momento, sin saber qué va a pasar. Algo de lo que muchos otros juegos no pueden decir lo mismo, puesto que muchos títulos basan gran parte de su experiencia en scripts. Por ejemplo, caminar por un pasillo y que de repente al llegar a un punto determinado del mismo, se rompa la pared a tu derecha y salga un enemigo a por ti. El factor sorpresa tras la primera vez, muere. Como en un largometraje de horror que sin tener una buena atmósfera, se basa plenamente en sus sustos. La primera vez que la ves puede impresionar, pero a la siguiente, si recuerdas cuándo pasaba qué, no.
Volviendo a L4D, lo que lo hace tan especial es “The Director” como sus creadores lo han querido llamar. Se trata de un ente de la IA que se ocupa de hacer aparecer enemigos (spawns): el dónde y el cuándo. También es adaptativo. ¿Cómo? Pues observando la vida restante de cada personaje. Si después del primer ataque de la horda zombie todos están moribundos, intentará bajar algo la dificultad de sus ataques (y aumentar la dificultad si han sobrevivido el ataque con creces).
También lo hace especial el hecho de que imponga el trabajo en equipo. En muchos títulos, a pesar de disponer de modo cooperativo, algunos jugadores se dedican a ir ellos solos por su cuenta ­por las razones que sean (ganar más puntos, aumentar estadísticas, etc.)­. Aquí, se ha hecho especial hincapié en evitar esto: aléjate del grupo de tus tres compañeros y The Director hará de las suyas. Probablemente, no volverás a repetir el irte tú solo por ahí. Simplemente, no sobrevives. ¿Por qué? Pues porque por muy bueno que seas, hay un tipo de enemigo que una vez se abalanza sobre ti, no puedes hacer nada para quitártelo de encima. Y sin alguien que te cubra, ahí se acaba tu aventura.
Por lo tanto, resumamos lo que hemos visto hasta ahora:
∙Adaptatividad a la habilidad de cada jugador (del grupo en conjunto)
∙Spawning de enemigos en lugares y en momentos según las circunstancias lo requieran.
∙Dinamismo, no se basa en scripts para el desarrollo de las fases.
∙Fuerza el trabajo en equipo: simplemente no hay otra manera de avanzar.
En conclusión, que se convierte en la experiencia definitiva. Desafío y tensión constantes, mezclado con trabajo en equipo y comunicación vía voz hacen de la inmersión una de sus mejores bazas. Definitivamente, una interpretación de la IA que hace uso de todo lo explicado anteriormente de una manera astuta e inteligente.
5.REFERENCIAS
[1] Ian Millington, 2006. Artificial Intelligence for Games. Published by Morgan Kaufman Publishing.
[2] http://en.wikipedia.org/wiki/Artificial_intelligence [3] http://en.wikipedia.org/wiki/A*_search_algorithm [4] http://www.left4dead411.com/ Capturas del L4D: primera de los superviventes con una cámara externa y segunda en primera persona.