Las técnicas de Inteligencia Artificial pueden ser muy variadas y su aplicación tendrá más o menos sentido según la tipología del videojuego sobre el que estemos trabajando.
Por ejemplo, según ha ido madurando la tecnología, es cada vez más habitual ver personajes no jugadores que acompañan a los personajes jugadores. El éxito se mide simplemente porque no hay quejas ni menciones a «bugs» ocasionados por estas inteligencias artificiales.
Más información
Para complementar es recomendable consultar otros documentos como los que se puedan mencionar a continuación.
El contenido es una parte importante del diseño de videojuego. Al ser tan costoso de producir, o más bien por la necesidad de ofrecer una gran cantidad de contenido de manera que la experiencia individual de cada jugador sea diferente, resulta interesante la generación procedimental de contenido.
Más información
Para complementar es recomendable consultar otros documentos.
Existen distintos paradigmas de «Inteligencia Artificial», ya estemos considerando la posibilidad de pensar o actuar racionalmente de una máquina, o yendo más allá considerando la posibilidad de que la máquina piense o actúe como un ser humano.
Para avanzar y afrontar cuestiones más complejas, trataremos aquí algunos asuntos relativos a la implementación de la infraestructura que requiere un motor de IA real.
Las lecciones a tratar en este tema son:
Gestión de la ejecución
Interfaz del mundo
Herramientas de autoría
Referencias
Para complementar este tema es recomendable consultar otros documentos.
Cuando se trabaja sobre un entorno realmente complejo o con un grupo de agentes a la vez, es necesario una inteligencia de más «alto nivel», capaz de evaluar lo que está ocurriendo y de coordinar todas las acciones de los distintos agentes para tratar de optimizar el resultado de la operación.
Las lecciones a tratar en este tema son:
Puntos de ruta tácticos
Análisis táctico
Acción coordinada
Comunicación en lenguaje natural
Referencias
Para complementar este tema es recomendable consultar otros documentos como los siguientes.
La toma de decisiones es la tarea donde típicamente reconocemos más inteligencia y autonomía en un agente. Por eso es importante cubrir esta cuestión con un tema de este curso.
Las lecciones a tratar en este tema son:
Representación del conocimiento
Máquina de estados
Árbol de comportamiento
Reglas y planificación
Probabilidad y utilidad
Referencias
Para complementar este tema es recomendable consultar otros documentos.
Entre las características más importantes de un agente inteligente, está su capacidad de percibir lo que ocurre en su entorno. Y el movimiento es sin duda, de las manifestaciones más primarias de su inteligencia.
Las lecciones a tratar en este tema son:
Física y animación
Percepción
Comportamiento de dirección
Desplazamiento en grupo
Referencias
Para complementar este tema es recomendable consultar otros documentos.
Comienza una nueva edición de la asignatura de Inteligencia Artificial para Videojuegos del Grado en Desarrollo de Videojuegos de la Universidad Complutense de Madrid y es hora de actualizar la información correspondiente.
El material docente está disponible en esta página web:
Las clases teóricas serán los martes de 11:00 a 11:50 y de 12:00 a 12:50 en el Aula 13 de la Facultad de Informática. Las clases prácticas serán los jueves de 11:00 a 12:40 en los Laboratorios 2 y 3 de la Facultad de Informática. Las tutorías serán los jueves de 14:00 a 17:00, pudiéndose usar esta conexión de Google Meet como «aula virtual».
Para estar al tanto de todo lo relacionado con los videojuegos desde el punto de vista de la universidad, es recomendable unirse al grupo de Telegram Videojuegos UCM.
Para registrar su participación en las actividades, conviene que el alumno guarde en su teléfono móvil el enlace al formulario de participación que el profesor compartirá a través del campus virtual.
Lo antes posible hay que organizarse en grupos de 3 alumnos y actualizar la lista de alumnos y grupos que el profesor compartirá también, asignándose (en orden) un número de grupo. El resto de campos de dicha lista se rellenarán en el laboratorio.
Programa
Código
Título de la actividad
1
Introducción
1.1
Resolutor automático y agente inteligente
1.2
Generación procedimental de contenido
1.3
Aplicación según tipología del juego
2
Percepción y movimiento
2.1
Física y animación
2.2
Percepción
2.3
Comportamiento de dirección
2.4
Desplazamiento en grupo
P1
Percepción y movimiento
T1
Laboratorios y GitHub
T2
Unity
T3
C# / Visual Scripting
3
Navegación
3.1
Representación del entorno
3.2
Resolución de problemas en el espacio de estados
3.3
Búsqueda de caminos usando estrategias informadas
P2
Navegación
T4
Algoritmos
T5
A*
T6
Cola de prioridad
4
Decisión
4.1
Representación del conocimiento
4.2
Máquina de estados
4.3
Árbol de comportamiento
4.4
Reglas y planificación
4.5
Probabilidad y utilidad
P3
Decisión
T7
FSM Visual Scripting
T8
Behavior Designer
T9
Conditional Aborts
5
Evaluación y coordinación
5.1
Puntos de ruta tácticos
5.2
Análisis táctico
5.3
Acción coordinada
5.4
Comunicación en lenguaje natural
P4
Evaluación y coordinación
T10
Explicación juego base
T11
Políticas de juego
T12
Políticas de juego
6
Cuestiones avanzadas
6.1
Gestión de la ejecución
6.2
Interfaz del mundo
6.3
Herramientas de autoría
Código y título de los temas, lecciones, prácticas y talleres de la asignatura.
Mixamo es el nombre de una empresa surgida como spin-off de la universidad de Stanford que fue comprada en 2015 por Adobe Systems. Actualmente ofrece una herramienta web que permite descargar personajes 3D con el esqueleto y los aparejos de animación listos, más una librería de animaciones compatibles con estos personajes (por ejemplo se puede seleccionar al personaje Vanguard, una especie de marine espacial, y asignarle la animación Boxing).
La integración de estos recursos en Unreal Engine es uno de los modos más fáciles de tener personajes razonablemente animados para videojuegos (más rápido y sencillo que crearlos con MetaHuman, por ejemplo).
Hasta que un personaje no adquiere personalidad, no puede ser creíble. Sin personalidad, el personaje podrá hacer cosas divertidas o interesantes, pero si la gente no es capaz de identificarse con él, sus acciones parecerán irreales. Y sin personalidad, una historia no puede resultar verdadera para el público.
Walt Disney
Para esta práctica se propone partir de una jugabilidad de disparos y sigilo con vista 3D en primera persona, como lo desarrollado en prácticas anteriores, y mediante el uso de recursos de Starter Content y otros paquetes (ej. a través de Mixamo), conseguir personajes animados y múltiples efectos visuales. Principalmente se trata de que el protagonista y los enemigos manifiesten estéticamente una gran «ferocidad» en el combate y una gran capacidad de destrucción y espectacularidad al ser destruidos (luces, chispas, fuego, sonidos contundentes, etc.).
Los androides no sólo estarán animados de manera diferente según estén quietos, caminen o corran -al detectarnos y perseguirnos-, sino que también podrán golpear o incluso disparar (tanto al jugador como a ciertos obstáculos que necesiten apartar de su camino -puertas, por ejemplo-) y tendrán también animación específica de muerte. Al surgir de los generadores, por ejemplo, habrá mucha luz, sonido y descargas eléctricas. También saltarán chispas cuando sufren daños (e irán funcionando de manera más errática y lenta, al estar estropeados) y finalmente habrá explosiones y -con cierta probabilidad- incendios cuando un androide es destruido, que pueden propagarse y afectar a otros personajes.
Propuesta
La práctica consiste en ampliar y pulir el prototipo ejecutable de un videojuego de disparos 3D para un sólo jugador que habíamos hecho en la práctica anterior. De hecho, el punto de partida es el resultado de la práctica Invasión Androide, pudiendo usar el contenido de paquetes como Starter Content,Infinity Blade: Effects o M5 VFX Vol2. Fire and Flames, y de otras plantillas como Third Person.
Las características principales del prototipo son:
A. Algún androide (el protagonista o alguno de los enemigos) usará una malla esqueletal diferente para ser representado, incluyendo animaciones para estar quieto, caminando o corriendo.
B. Los generadores de androides tendrán algún tipo de animación, aunque sea sencilla y efectuarán un «espectáculo» de luz, efectos y sonido al producir un nuevo enemigo.
C. Algún androide tendrá la capacidad de atacar, ya sea golpeando o disparando algún tipo de proyectil. Estos ataques no serán únicamente contra el jugador sino que con cierta frecuencia veremos efectuarlos furiosamente sobre obstáculos de algún tipo (paredes, puertas, cubos o mobiliario sueltos, etc.).
D. Los androides irán recibiendo un daño gradual hasta su destrucción total, soltando quizá chispas al ser dañados y estropeándose cada vez más a nivel visual y funcional también.
E. Al ser destruido algún androide puede producirse una gran explosión, generándose un incendio de una duración determinada capaz de propagarse a otros elementos del juego y llegar incluso a afectar a otros personajes si entran en contacto durante suficiente tiempo con el fuego, tanto enemigos como al propio jugador.
Condiciones
A la hora de desarrollar el proyecto es obligatorio:
No utilizar herramientas o plugins de terceros, ni reutilizar código distinto del proporcionado por Unreal Engine o el propio profesor, a través de las sugerencias de este enunciado.
Limitarse a los recursos de las plantillas y paquetes mencionados. Personalizar el contenido con el número de grupo, nombre de los alumnos u otros rasgos inequívocos que subrayen la autoría sobre el resultado. Evitar en cualquier caso un uso excesivo de recursos audiovisuales que hagan el proyecto pesado o su ejecución lenta.
Documentar en el repositorio el proceso de producción, incluyendo los algoritmos y las estructuras de datos más importantes (mediante enlaces a Blueprints), así como el reparto del trabajo y el esfuerzo.
Programar los diagramas en lenguaje Blueprint de la manera más organizada, genérica y elegante posible. Sin olvidar los comentarios.
El prototipo debe ser funcional y su manejo usable, preferiblemente con mando y con teclado, e incluso teclas rápidas para reposicionar a nuestro avatar en zonas diferentes o hacerlo invencible, para poder realizar de manera rápida, intuitiva y frecuente todas las pruebas necesarias.
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 DEV22-G02, la del grupo 2 del curso Desarrollo de Videojuegos 2022-2023) donde se encontrarán los repositorios de las prácticas (DEV22-G02-P1, DEV22-G02-P2, DEV22-G02-P3 y DEV22-G02-P4).
Los entregables son:
Todos los ficheros de código fuente y recursos del proyecto Unreal Engine. Se incluirá un enlace a la carpeta compartida con el profesor de Google Drive (llamada por ejemplo DEV22-G02-P4) desde donde descargar todo lo que por peso o problemas de licencia no deba mantenerse alojado en GitHub vía Git LFS. Supone un 20% de la nota.
Documentación del proceso de producción según la estructura habitual, en el README.md. Supone un 10% de la nota.
Fichero con la versión ejecutable para Windows de 64bits (llamado por ejemplo DEV22-G02-P4 1.0.0.zip), publicada como lanzamiento en el repositorio. Cada característica del prototipo (A, B, C, D y E) correctamente implementada supone un 10% de la nota.
Enlace a un video oculto en YouTube (llamado por ejemplo DEV22-G03-P3), de menos de 5 minutos de duración, donde queden documentadas y comentadas por voz y/o subtítulos las pruebas realizadas. 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.
Cookson, A., DowlingSoka, R., Crumpler, C.: Unreal Engine 4 Game Development in 24 Hours, Sams Teach Yourself. Sams Publishing (2016).
Se pueden realizar ampliaciones para ir más allá en el aprendizaje.
Mejorar todo lo posible el contenido del juego, como el entorno, y la programación de la jugabilidad.
Utilizar técnicas de posprocesado para recrear un ambiente futurista y sombrío, contribuyendo a la estética de destrucción furiosa.
Incluir alguna cinemática inicial y final del juego.
Localizar el juego en dos idiomas seleccionables desde el menú: español e inglés. Se asume que habrá algunos mensajes de texto para guiar al jugador durante el juego.