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 I...
1 downloads 0 Views 768KB Size
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.