Inteligencia Artificial (O el arte de engañar)

En el aspecto más teórico, la inteligencia artificial siempre ha sido un tema escabroso. De hecho todavía hay debate sobre que entendémos por inteligencia; a día de hoy existen programas que juegan al ajedrez mejor que cualquier humano, capaces de mantener conversaciones relativamente coherentes con personas o capaces de recomendar libros y discos con mucho acierto en función de historiales de compra, pero aún estamos a mucha distancia de conseguir algo que se asemeje a la inteligencia humana en toda su complejidad.

No obstante es un área con bastante desarrollo, y que tiene en su haber un montón de tipos de técnicas para tratar un montón de tipos de problemas distintos: algorítmos de búsqueda de caminos, redes neuronales, sistemas expertos, árboles de decisión, planificadores de tareas, sistemas de backtracking...

En el caso concreto de los videojuegos sin embargo, es necesario tomar un enfoque radicalmente más práctico. En este caso lo que se busca es proveer de una buena experiencia de juego, y la inteligencia artificial debe estar al servicio de la misma como cualquier otro componente. Esto significa que en muchas ocasiones, lo que realmente importa no es que la inteligencia artificial del juego (ya sea como contrincantes, compañeros, sistemas que ajusten parametros del juego...) sea realmente inteligente, si no que sirva adecuadamente a completar la experiencia de juego tal y como queremos. Esto es algo que en ocasiones se suele perder de vista en la vorágine tecnológica que supone implementar un sistema de inteligencia artificial relativamente complejo, y que puede llegar a ser peligroso al añadir complejidad necesaria a un sistema que ya lo es de por sí.

A modo de ilustración, hay tres anécdotas que tengo siempre muy presentes, dos de ellas sobre el Half-Life, y una sobre el Half-Life 2. No he podido encontrar los artículos que corroboren de buena mano los chascarrillos que voy a comentar (aunque en la última hay un vídeo que ilustra un poco el concepto), pero en cualquiera de los casos sirven perfectamente como parábolas para lo que intento destacar:
  •  En el primer Half-Life, los soldados tenían un supervisor para cada escuadrón, para poder llevar a cabo acciones coordinadas. Para evitar frustración en el jugador sin embargo, se dió a cada escuadrón dos slots de disparo, de forma que en todo momento solo dos soldados podían estar disparando a la vez al protagonista. Esto visto en el juego al principio resultaba algo extraño, ya que los soldados tomaban posiciones, e iban saliendo de dos en dos para disparar, quedando claro que realmente se estaban turnando.
    Para paliar esto, se tomó la decisión de añadir algunas acciones complementarias en los soldados. Cuando un soldado no dispara, intenta avanzar su posición y flanquear al objetivo, y cuando un soldado termina su cargador, reproduce un audio pidiendo cobertura y recarga.
    Estas reglas tan sencillas dan lugar a un comportamiento emergente francamente espectacular. Mientras que dos soldados disparan al jugador, el resto de la escuadra va tomando posiciones intentando flanquear al enemigo, y cuando estos terminan de disparar, piden a sus compañeros (ya posicionados) que disparen, mientras ellos recargan munición y avanzan a su vez. Un caso en el que un sistema relativamente simple da lugar a resultados que dan una impresión de inteligencia y coordinación muy altos.
  • En el caso de los soldados del Half-Life, también, se implementó un sistema para huir de las granadas que lanzaba el protagonista. Cada vez que una granada cae cerca de algún soldado, estos intentan buscar una ruta para alejarse de ella y ponerse a cubierto. Llegado un momento, vieron casos en los que algunos soldados se atascaban al intentar todos utilizar la misma ruta de escape. A uno se le podrían ocurrir cientos de soluciones (a cada cual más compleja) para atajar este problema, pero el equipo de Valve optó por una salida mucho más rápida. Si una granada cae, y algún soldado no puede encontrar una ruta de escape (por ir a colisionar con la ruta de escape de otro), se tira al suelo en una animación de cubrirse y espera a que la granada detone.
    Tan sencillo como eso. Una vez más, el resultado en la experiencia de juego es inmejorable: todo soldado acorralado por una granada hace lo más inteligente que cabría esperar, ponerse a cubierto y rezar para que la explosión de la granada no lo mate.
  • La última curiosidad viene del Half-Life 2. Una regla de oro en muchos casos en los shooters es evitar disparar al jugador si este no sabe que hay un peligro. En muchos casos, la solución mas rápida es hacer que ningún enemigo pueda disparar al jugador si el jugador no ha visto antes al enemigo. Esto es algo que es casi imposible de notar jugando al juego, pero que nos evita recibir disparos de enemigos que no hemos visto en la estancia. En el caso del Half-Life 2 no tengo claro si este sistema está implementado tal cual, pero viendo el siguiente vídeo seguro que tiene alguna variante del mismo.


Lo que pretendo sacar a relucir es que en un juego no importa la inteligencia genuína, lo que nos interesa es una falsa inteligencia lo suficientemente convincente como para reforzar la experiencia de juego y engañar al jugador.

Moraleja: La inteligencia artificial debe estar al servicio de la experiencia de juego, nunca al servicio de la tecnología por la tecnología o de la fidelidad. Es importante diseñarla e implementarla en función del papel que debe de cumplir, sabiendo siempre qué se necesita de la misma, por qué, y cuál es la manera más eficiente de conseguirlo.

3 comentarios:

Unknown dijo...

Interesante artículo.
Imagino que si haces la IA muy inteligente, terminarás teniendo que "atontarla" para poder permitir que el juego sea interesante y no un cruel sufrimiento para el jugador xD

Ánimo con el blog! :)

Kikoso dijo...

¿Qué ocurre cuando hay que hacer que la IA sea más inteligente a base de trampas? Me viene a la cabeza el ejemplo del Civilization, en el que los niveles superiores de dificultad se basan en proporcionar a la IA ventajas de manera invisible, con las que el jugador no podrá contar (i.e., ventajas en combate, en número de unidades o en cualquier otro aspecto).

Ese aspecto me parece de más difícil solución que "atontar" a la IA para hacerla más humana. ¿Cómo lo ves tu, Bruno?

Comodin dijo...

Hombre, soy de la opinión de que realmente hacer una IA más inteligente o más tonta no tiene que ver con el hecho de humanizarla o hacerla más creíble, si no que en el fondo sirve como un recurso mas para una buena experiencia de juego.

Supongo que en los juegos de estrategia es realmente complicado hacer una IA capaz de igualar a un ser humano jugando, tanto por el estado de las técnicas como de las tecnologías (aunque en el último caso la ley de Moore eche un cable en cada generación de hardware). Por regla general un jugador humano tiene mucha más capacidad de análisis e improvisación en sistemas complejos como son los juegos de estrategia (más si existen exploits o combinaciones ventajosas que la máquina no tenga en cuenta), por lo que lo más lógico para subir el nivel de dificultad es hacer que la IA haga trampas (ya sea en forma de ventajas, o accediendo a información "prohibida" como pueden ser qué recursos y tropas tiene el jugador humano, o saber de antemano la ubicación de recursos en el mapa).

En el caso de hacer trampas, eso sí, lo importante es que el jugador no se de cuenta, porque si no yo al menos mandaría el juego al carajo. Me da que en estos casos uno no busca saber si realmente la IA es lista o tiene ventaja, con tal de que suponga un reto.

Publicar un comentario