El valle inquietante

Hace tiempo, y no se muy bien a santo de qué, acabe dando con un fenómeno que me pareció bastante interesante y que es común ver en los videojuegos: El valle inquietante (O The uncanny valley como se llama en inglés).

Aquí un par de enlaces de la Wikipedia hablando sobre él:
Wikipedia: Uncanny Valley (Inglés)
Wikipedia: Valle Inquietante (Castellano)

En resumen, el valle inquietante intenta explicar por qué las réplicas casi perfectas de organismos vivos producen sensación de rechazo en las personas. Esto creo que lo ha experimentado casi todo el mundo: ¿Quién no ha visto el típico vídeo de robot japonés con cara de chica mona y rasgos totalmente humanos y se le han puesto los pelos como escarpias? Cuanto más reales son las réplicas, más notamos las pequeñas diferencias que los separan de los seres vivos (poses de brazos o manos, imperfecciones en la piel, gestos de la cara y los ojos, etc...). Sin embargo un robot con rasgos humanoides no produce esta sensación de rechazo.

En el caso de los videojuegos este problema también ha existido, pero se ha paliado en parte gracias a que hasta hace relativamente poco era casi imposible (por potencia) generar gráficos suficientemente realistas como para crear rasgos humanos suficientemente fieles. Estoy seguro de que más de uno recuerda cinemáticas con personajes humanos de look realista con animaciones faciales que dejaban una mala impresión, con piel plasticosa o con poses rígidas y poco reales. Sin embargo, esto no se produce con personajes de rasgos simplificados (como podría ser un dibujo animado de una persona), o simplemente con personajes no humanos con rasgos antropomorfos.

Como último apunte, es curioso como algunos detalles concretos pueden marcar la diferencia entre que un personaje parezca real o un muñeco. Ahora mismo ando jugando al Enslaved, y es impresionante el sistema de animaciones faciales que tienen montado; gracias a él los personajes parecen realmente humanos, aunque el protagonista sea básicamente un gorila hiperciclado de dos metros de altura.

Los ojos, junto con los músculos que los rodean, y los de la boca, aumentan el realismo de sus personajes mucho más de lo que cabría esperar. Otros dos ejemplos que se me vienen a la cabeza (por ser en tiempo real) son Half-Life 2 y Heavy Rain. En este último eran especialmente impactantes las pantallas de carga, centrando la cámara en la nariz y los ojos de un personaje, mientra este fruncía el ceño, parpadeaba y fijaba su atención en distintas direcciones.

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.

Comencemos por el principio

Hace unos cuantos años comencé a escribir un blog en el que hablaba de videojuegos, libros, películas y comics entre otras cosas (helo aquí). Un montonazo de tiempo después, me ha vuelto a entrar el gusanillo de recopilar pensamientos y divagar un poco sobre el mundo de los juegos y la narración, aunque desde un punto de vista un poco distinto.

Hace no mucho me leí "The Art of Game Design" por Jesse Schell (libro más que recomendable, que sacaré a colación en más de un post espero), en el que se hablaba de que en el fondo un libro, una película o un videojuego no son distintos entre sí, ya que estan orientados a producir una experiencia en el lector, espectador o jugador. Lo que quiero intentar hacer es tocar un poco distintos palos para hablar de cómo construir experiencias, ya sea con conclusiones propias o reflexionando sobre artículos interesantes que encuentre por ahí.

Es por eso que siempre que pueda nombraré fuentes y enlazaré vídeos y artículos, e intentaré extraer conclusiones para tener archivadas pequeñas observaciones sobre este complejo mundillo.

Y ahora lo más dificil, que es no abandonar esto a la primera de cambio.