Categorías
Informática Universitario Videojuego

Aplicación según tipología del juego

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.

Categorías
Informática Universitario Videojuego

Generación procedimental de contenido

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.

Categorías
Informática Universitario Videojuego

Resolutor automático y agente inteligente

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.

Más información

Para complementar es recomendable consultar otros documentos.

Categorías
Informática Universitario Videojuego

Cuestiones avanzadas

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:

  1. Gestión de la ejecución
  2. Interfaz del mundo
  3. Herramientas de autoría

Referencias

Para complementar este tema es recomendable consultar otros documentos.

Categorías
Informática Universitario Videojuego

Evaluación y coordinación

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:

  1. Puntos de ruta tácticos
  2. Análisis táctico
  3. Acción coordinada
  4. Comunicación en lenguaje natural

Referencias

Para complementar este tema es recomendable consultar otros documentos como los siguientes.

Categorías
Informática Universitario Videojuego

Decisión

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:

  1. Representación del conocimiento
  2. Máquina de estados
  3. Árbol de comportamiento
  4. Reglas y planificación
  5. Probabilidad y utilidad

Referencias

Para complementar este tema es recomendable consultar otros documentos.

Categorías
Informática Universitario Videojuego

Navegación

Navegar no es sólo moverse, sino ser capaz de recorrer un entorno complejo en busca de uno o varios objetivos de forma inteligente.

Las lecciones a tratar en este tema son:

  1. Representación del entorno
  2. Resolución de problemas en el espacio de estados
  3. Búsqueda de caminos usando estrategias informadas

Referencias

Para complementar este tema es recomendable consultar otros documentos.

Categorías
Informática Universitario Videojuego

Percepción y movimiento

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:

  1. Física y animación
  2. Percepción
  3. Comportamiento de dirección
  4. Desplazamiento en grupo

Referencias

Para complementar este tema es recomendable consultar otros documentos.

Categorías
España Informática Universitario Videojuego

Inteligencia Artificial para Videojuegos 22-23

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:

Inteligencia Artificial para Videojuegos

Se puede consultar la ficha docente del curso 2022-2023.

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ódigoTítulo de la actividad
1Introducción
1.1Resolutor automático y agente inteligente
1.2Generación procedimental de contenido
1.3Aplicación según tipología del juego
2Percepción y movimiento
2.1Física y animación
2.2Percepción
2.3Comportamiento de dirección
2.4Desplazamiento en grupo
P1Percepción y movimiento
T1Laboratorios y GitHub
T2Unity
T3C# / Visual Scripting
3Navegación
3.1Representación del entorno
3.2Resolución de problemas en el espacio de estados
3.3Búsqueda de caminos usando estrategias informadas
P2Navegación
T4Algoritmos
T5A*
T6Cola de prioridad
4Decisión
4.1Representación del conocimiento
4.2Máquina de estados
4.3Árbol de comportamiento
4.4Reglas y planificación
4.5Probabilidad y utilidad
P3Decisión
T7FSM Visual Scripting
T8Behavior Designer
T9Conditional Aborts
5Evaluación y coordinación
5.1Puntos de ruta tácticos
5.2Análisis táctico
5.3Acción coordinada
5.4Comunicación en lenguaje natural
P4Evaluación y coordinación
T10Explicación juego base
T11Políticas de juego
T12Políticas de juego
6Cuestiones avanzadas
6.1Gestión de la ejecución
6.2Interfaz del mundo
6.3Herramientas de autoría
Código y título de los temas, lecciones, prácticas y talleres de la asignatura.

Calendario

FechaHoraLugarActividades
24/1/202311:00AulaPresentación + Lección 1.1
26/1/202311:00Aula (Auxiliar)Lección 1.2 + Lección 1.3
31/1/202311:00AulaEjercicios 1 + Lección 2.1
2/2/202311:00LaboratorioPresentación P1 + Taller 1
7/2/202311:00AulaLección 2.2 + Lección 2.3
9/2/202311:00Laboratorio (Gonzalo)Documentación P1 + Taller 2
14/2/202311:00AulaLección 2.4 + Ejercicios 2
16/2/202311:00LaboratorioImplementación P1 + Taller 3
21/2/202311:00AulaLección 3.1 + Lección 3.2
23/2/202311:00LaboratorioResultado P1 + Presentación P2 + Taller 4
28/2/202311:00AulaLección 3.3 + Ejercicios 3
2/3/202311:00LaboratorioDocumentación P2 + Taller 5
7/3/202311:00AulaLección 4.1 + Lección 4.2
9/3/202311:00LaboratorioImplementación P2 + Taller 6
14/3/202311:00AulaLección 4.3 + Lección 4.4
16/3/202311:00LaboratorioResultado P2 + Presentación P3 + Taller 7
21/3/202311:00AulaLección 4.5 + Ejercicios 4
23/3/202311:00LaboratorioDocumentación P3 + Taller 8
28/3/202311:00AulaLección 5.1 + Lección 5.2
30/3/202311:00LaboratorioImplementación P3 + Taller 9
Vacaciones de Semana Santa
11/4/202311:00AulaLección 5.3 + Lección 5.4
13/4/202311:00LaboratorioResultado P3 + Presentación P4 + Taller 10
18/4/202311:00AulaEjercicios 5 + Lección 6.1
20/4/202311:00LaboratorioDocumentación P4 + Taller 11
25/4/202311:00AulaLección 6.2 + Lección 6.3
27/4/202311:00Laboratorio (Clara)Implementación P4 + Taller 12 (+ Online: Ejercicios 6)
2/5/2023Fiesta de la Comunidad de Madrid
4/5/202311:00Laboratorio (Clara)Resultado P4 (+ Online Competición e Ideas Proyecto Final)
16/5/2023Documentación Proyecto Final
23/5/202317:00OnlineDefensa Proyecto Final (Implementación y Resultado)
30/6/20239:00OnlineDefensa Proyecto Final Extraordinario (Implementación y Resultado)
Fecha, hora y lugar de todas las actividades de la asignatura.
Categorías
Informática Universitario Videojuego

Furia y Fuego

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).
  • MetaHuman de Epic Games.
  • Mixamo de Adobe.
  • Romero, M., Sewell, B.: Blueprints Visual Scripting for Unreal Engine: The faster way to build games using UE4 Blueprints, 2nd Edition (2019).
  • Unreal Engine Documentation.

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.