Categorías
Informática Universitario Videojuego

Plaga de Ratas

La famosa leyenda de El flautista de Hamelín, recogida por los hermanos Grimm, nos sirve de inspiración para explorar el movimiento de agentes racionales en un entorno virtual. La historia nos habla de una manada de ratas que iban tras el misterioso flautista, a la par que molestaban a los demás animales y habitantes del pueblo.

Había una vez una pequeña ciudad al norte de Alemania, llamada Hamelín. Su paisaje era placentero y su belleza era exaltada por las riberas de un río ancho y profundo que surcaba por allí, y sus habitantes se enorgullecían de vivir en un lugar tan apacible y pintoresco. Pero un día, la ciudad se vio atacada por una terrible plaga: ¡Hamelín estaba lleno de ratas! Había tantas y tantas que se atrevían a desafiar a los perros, perseguían a los gatos, sus enemigos de toda la vida; se subían a las cunas para morder a los niños allí dormidos y hasta robaban enteros los quesos de las despensas para luego comérselos, sin dejar ni una miguita.

El flautista de Hamelin – Jacob y Wilhelm Grimm

Partimos de esta idea para plantear un escenario donde el jugador controla al flautista de Hamelin y todas las demás criaturas son controladas mediante IA; una de ellas es un perro, nuestro fiel compañero que nos seguirá a todas partes, aunque también hay ratas que merodean por todo el pueblo. El flautista puede tocar la flauta, y mientras lo hace, las ratas que le oigan comenzarán a seguirle. Estas pueden molestar al perro hasta el punto de hacerlo ladrar y huir, si tiene demasiadas ratas cerca.

Lo que se pretende con esta práctica es implementar algoritmos de movimiento comúnmente utilizados en la industria del entretenimiento para dar vida a toda clase de seres que se mueven tanto en solitario como “en bandada”.

Propuesta

La práctica consiste en desarrollar el prototipo de un entorno virtual con obstáculos y un avatar controlado por el jugador, donde representamos el movimiento de un perro y una manada de ratas. El perro persigue al flautista con control de llegada. Cada rata, si el flautista no toca su flauta, merodea por el escenario, y si la toca y esta lo escucha, se dirige hacia él, en formación con las demás ratas y controlando la llegada, hasta quedar “como hipnotizadas” a su alrededor.

El punto de partida propuesto para esta práctica, con la documentación e implementación (código y recursos audiovisuales) necesaria, se encuentra en este repositorio de GitHub: Hamelin – Base.

Las características principales del prototipo son:

A. El punto de partida se convierte en un mundo virtual con obstáculos (Hamelín) donde se ubican tanto el avatar del jugador como el agente que lo acompaña y la bandada de agentes que lo suele seguir. La interfaz tiene un botón para reiniciar la simulación; también permite cambiar entre tres cámaras: una general que está fija, otra que sigue al avatar en tercera persona y otra que sigue al acompañante; Además la interfaz también permite introducir un número N y, pulsando un botón, ajustar el número exacto de agentes que hay en la bandada, creando o destruyendo todos los que hagan falta hasta alcanzar esa cifra.

B. El avatar (flautista) es controlado por el jugador mediante el ratón. Si el puntero está más allá de cierta distancia del avatar, este camina en línea recta hacia la posición del puntero. Mientras se mantiene pulsado el clic izquierdo, el avatar corre más rápido, y si es el clic derecho, toca la flauta.

C. El acompañante (perro) persigue continuamente al avatar del jugador con predicción (dinámica, especialmente marcada si el avatar corre) y control de llegada hasta quedarse a una cierta distancia del avatar. El acompañante encara en dirección a su propio movimiento y cuando detecta 3 o más agentes de la bandada a menos de cierta distancia, deja de perseguir al avatar para pasar a ladrar como loco mientras huye de la bandada hasta no tener ningún agente de la bandada a menos de otra cierta distancia.

D. Mientras el avatar no está tocando la flauta, cada agente individual de la bandada (rata) merodea por todo el mundo virtual con obstáculos (con un movimiento errático y desordenado).

E. Mientras el avatar está tocando la flauta, los agentes de la bandada (manada de ratas) encaran rápidamente al avatar y se produce su desplazamiento en bandada (hipnosis), con movimiento dinámico en formación (combinando seguimiento, fuerte cohesión y débil separación) y control de llegada hasta quedarse a cierta distancia del avatar. El prototipo está implementado de manera eficiente para maximizar todo lo posible las métricas, que en este caso son el número de agentes de la bandada que se pueden ubicar en el mundo virtual con obstáculos y seguir al avatar mientras se mantiene un ratio estable de 30 ó 60 fotogramas por segundo.

Revisión

Tener el repositorio a disposición del profesor con todos los entregables, preparados en tiempo y forma por todos los miembros del grupo de manera equitativa, supone un 10% de la nota de la práctica. El profesor tendrá una lista con los datos de todos los grupos y los enlaces a las organizaciones en GitHub (por ejemplo IAV00-G02, la del grupo 2 del curso Inteligencia Artificial para Videojuegos 2000-2001) donde se encontrarán los repositorios de las prácticas (IAV00-G02-P1, IAV00-G02-P2 e IAV00-G02-P3).

Revisión de la documentación

En esta primera fase de revisión hay un único entregable:

  • Documento de diseño y desarrollo software según la estructura habitual, en el README.md. Supone un 10% de la nota.

Revisión del resultado

En esta segunda fase de revisión los entregables son estos:

  • Proyecto con todos los ficheros de código fuente y recursos del proyecto de Unity. Se incluirán enlaces a documentos compartidos en abierto (o con el profesor) mediante Google Drive, desde donde descargar todo lo que por peso o problemas de licencia no pueda mantenerse alojado en GitHub vía Git LFS. Supone un 20% de la nota.
  • Fichero con la versión ejecutable para Windows de 64bits (llamado por ejemplo IAV00-G02-P1 1.0.0.zip), publicada como lanzamiento (release) en el repositorio. Cada característica del prototipo (A, B, C, D y E) correctamente implementada supone un 10% de la nota, sumando un total de 50%. El ejecutable muestra por pantalla las métricas que permiten valorar la eficiencia de la implementación: en este caso, número de ratas y ratio de fotogramas por segundo.
  • Documental con las pruebas del juego, añadiendo al documento de diseño y desarrollo software el enlace a un video oculto en YouTube (llamado por ejemplo IAV00-G02-P1), de menos de 5 minutos de duración, donde queda documentado y comentado por voz y títulos de texto el banco de pruebas realizado. El documental tiene tantas secciones como características a probar (esto es A, B, C, D y E). Supone un 10% de la nota.

Más información

Además de la bibliografía recomendada, se pueden investigar las siguientes referencias. En ningún caso se debe replicar código de terceros sin entenderlo bien y «hacerlo nuestro», y siempre asegurándonos de que funciona exactamente como se requiere en esta práctica.

Se pueden realizar ampliaciones para ir más allá en el aprendizaje.

  • Coloca los obstáculos pseudoaleatoriamente en cada ejecución, utilizando una secuencia de Halton o generando procedimentalmente el terreno mediante el algoritmo de ruido de Perlin. La interfaz permitirá también introducir un número de obstáculos (incluso para distintos tipos de obstáculos) y modificar así el escenario, quitando o poniendo los que hagan falta.
  • Añade varios flautistas, varios perros por flautista y varios puntos de generación de ratas en el escenario, para que varios jugadores «compitan» a la vez con sus instrumentos por llevarse el mayor número de ratas tras ellos, quizá teniendo zonas propias.
  • Añade la posibilidad de añadir trozos de queso haciendo clic en cualquier parte del escenario, distrayendo a las ratas.
  • Añade percepción al perro mediante el sentido de la vista, para que huya (o incluso se evada) las ratas por verlas realmente y no únicamente por proximidad.
  • Añade percepción a las ratas mediante el sentido del oído, para que sigan el sonido de la flauta allí donde se produzca. También se puede hacer que huyan un poco de los ladridos del perro.
  • Haz que el perro y las ratas también eviten obstáculos con suficiente antelación. Puedes incluso desarrollar un gestor sensorial como se explica en la teoría para centralizar la percepción de todos los sentidos de todos los agentes.
  • Usa técnicas como Entity Component System (arquitectura software más paralelizable) o Shaders (código que se ejecuta en la GPU) para mover aquellas ratas que necesites mover de otra manera mucho más eficiente que con la lógica habitual en la CPU… y compara las métricas.

Esta página está licenciada bajo CC BY-NC-SA 4.0 por Laboratorios Narratech.