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 múltiples agentes 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 desarrollar un prototipo en el que el jugador controla el movimiento del flautista y todos los demás personajes son controlados mediante agentes inteligentes. Nuestro fiel compañero es un perro, que nos seguirá a todas partes, y también hay ratas merodeando por el pueblo. Podemos tocar o  no la flauta, y mientras lo hacemos, las ratas que nos oigan comenzarán a seguirnos, molestando al perro hasta el punto de hacerlo ladrar y huir si hay demasiadas cerca de él.

Este prototipo pone a prueba algoritmos de movimiento que siguen usándose de forma habitual en la industria, dando vida a toda clase de criaturas 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 dinámico 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: IAV-Movimiento. Para refrescar la programación de C# en Unity también se puede tomar como ejemplo la de este repositorio, a modo de Práctica 0.

Las características principales del prototipo son:

A. Hay un mundo virtual con obstáculos (Hamelín) donde se ubican tanto el avatar controlado por el jugador mediante el ratón (incluyendo el tocar la flauta con clic derecho), como el agente que lo acompaña y la bandada de agentes que lo siguen (sólo cuando está tocando). La interfaz permite introducir un número N y pulsar un botón para ajustar el número de agentes de la bandada, creando o destruyendo todos los que hagan falta.

B. El avatar (flautista) es acompañado por su perro, una persecución constante con predicción (dinámica) y control de llegada para quedarse a una cierta distancia del avatar. El perro encara según su movimiento.

C. Tu acompañante (perro) huye de las ratas, lo que sólo se vuelve notable cuando hay muchas ratas demasiado cerca de él.

D. Cada agente de la bandada (manada de ratas) merodea de manera individual (con un movimiento errático, desordenado), siempre y cuando el flautista no esté tocando la flauta.

E. Cuando el flautista toca la flauta, se produce el desplazamiento en bandada (hipnosis) de las ratas, con movimiento dinámico en formación (seguimiento, cohesión y separación) y control de llegada hasta las proximidades del flautista. Las ratas encaran al flautista si toca la flauta.

Revisión

Tener el repositorio a disposición de los profesores 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. Los profesores tendrá una lista con los datos de todos los grupos y los enlaces a las organizaciones en GitHub (por ejemplo IAV24-G02, la del grupo 2 del curso Inteligencia Artificial para Videojuegos 2023-2024) donde se encontrarán los repositorios de las prácticas (IAV24-G02-P1, IAV24-G02-P2 e IAV24-G02-P3).

Revisión de la documentación

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

  • Documento de producción 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 IAV24-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 producción el enlace a un video oculto en YouTube (llamado por ejemplo IAV24-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.
  • Añade varios flautistas y varios generadores 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.
  • 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 (más que persigan) 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.

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