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.
Esta página está licenciada bajo CC BY-NC-SA 4.0 por Laboratorios Narratech.