Publicat per

R5 Media para Videojuegos

Publicat per

R5 Media para Videojuegos

Documento explicativo R5 MPV Resumen del proyecto El proyecto se ha subido a SIMMER en la URL: https://simmer.io/@ddaher/r5-media-para-videojuegos Controles: Robot1: WASD para…
Documento explicativo R5 MPV Resumen del proyecto El proyecto se ha subido a SIMMER en la URL: https://simmer.io/@ddaher/r5-media-para-videojuegos Controles:…

Documento explicativo R5 MPV

Resumen del proyecto

El proyecto se ha subido a SIMMER en la URL: https://simmer.io/@ddaher/r5-media-para-videojuegos

Controles:

  • Robot1:
    • WASD para el movimiento en 3D
    • F para atacar y R para defenderse
  • Robot2:
    • IJKL para el movimiento en 3D
    • H para atacar e Y para defenderse

El proyecto en UNITY consiste en 2 escenas, una de menú principal y otra de la zona de mapa con los robots donde se produce el gameplay.

Se han creado varios scripts para implementar las mecánicas del juego. Script para que la cámara siga siempre a los 2 personajes y nunca se salgan de su visión, scripts de control de los menús y scrips de control del personaje.

Se ha implementado un menú de pausa que permite, mediante la tecla de ESC, pausar la partida, reiniciar o salir. Si se pulsa ESC de nuevo, se vuelve al juego.

Se ha implementado un sistema de vidas:

  • Cada robot cuenta con 3 vidas, son representadas visualmente mediante la interfaz
  • Cuando un robot ataca al otro, y el otro no se defiende, el que recibe el golpe pierde 1 vida.
  • Al llegar a 0 vidas, dicho robot pierde la partida. Al finalizar, sale un mensaje de victoria con el robot que gana la partida, se puede volver a empezar el gameplay o salir.

Las animaciones utilizadas para la partida se han exportado de maya y se ha adaptado su velocidad en UNITY, de cada clip, según fuera necesario para que el gameplay fuera fluido. Los clips son creados y tratados con las herramientas de unity, se han creado de tal forma de que puedan reproducirse en bucle (idle/walk por ejemplo) sin realizar movimientos bruscos. Los movimientos de atacar o defender, también se realizan de forma que no se vean saltos bruscos en los cambios de animaciones.

Se han añadido varios efectos sonoros al juego. Un audiosource con música de fondo, y efectos de sonido para atacar/defender/morir.

Animator controller

El animator controller de los 2 robots sigue la misma estructura. Un árbol de animaciones, hechas en maya en la entrega anterior, que transicionan entre sí dependiendo de unos parámetros del animator.

Para permitir que desde cualquier estado el robot pueda caminar, defenderse o atacar, se crean transiciones desde el Any State hacia las distintas animaciones en función del cambio de los parámetros. 

Estos valores se modifican mediante código, desde el script de control principal “CharacterRobotController”. Si se ejecuta el trigger Attack o Defend, el personaje atacará o se defenderá, si Speed es mayor que cierto valor el personaje caminará. 

El caso de la animación de muerte es un poco distinto, ya que si muere, no podrá transicionar a ninguna otra animación ya que al terminar la animación de muerte se destruirá mediante código el controlador del personaje. 

Para las transiciones, mientras el personaje está ejecutando la animación de muerte, también se tiene en cuenta que este estado no esté activo como condición. 

A nivel de código, las animaciones se controlan mediante corrutinas llamadas según el gameplay del juego. Por ejemplo del combate:

También tenemos en cuenta de si un robot se está defendiendo, entonces no recibirá daño del otro robot:

Visión de futuro

Para poder desarrollar este juego en algo más formal y con un equipo, estos son los puntos sobre los que evolucionaría:

  • Mayor cantidad de personajes/robots
  • Personalización de robots, estética
  • Habilidades especiales características de cada personaje, con sus animaciones correspondientes. Set de habilidades base a todos los personajes y luego las especiales.
  • Mejora del entorno, distintos mapas/localizaciones. Me lo podría imaginar como algo similar a los juegos tradicionales de Dragon Ball, distintos mapas en que los personajes puedan pelear.
  • Sistemas de vidas, escudo, maná más complejos. Que solo se pueda defender X veces en un tiempo determinado y que luego haya que esperar a que se recupere el escudo. Maná para las habilidades.
  • Lo plantearía como un juego de peleas, 1vs1. Tendría sentido que estuviera disponible en consolas portátiles, incluso móviles. Habría que configurar los controles para mando, y táctiles si fuera necesario.

Materiales de terceros y derechos audiovisuales

Los robots, las animaciones y los sprites de la interfaz son desarrollados por mí @ddaher (Daniel Daher Pérez)

La música de fondo y efectos sonoros, se han descargados de https://pixabay.com/ y son de libre uso.

Debat0el R5 Media para Videojuegos

No hi ha comentaris.

Publicat per

R4 Media para videojuegos

Publicat per

R4 Media para videojuegos

Los modelos se pueden ver en sketchfab en los siguientes enlaces: robot 1: https://skfb.ly/pswxz robot 2: https://skfb.ly/pswxA Las animaciones y todo el…
Los modelos se pueden ver en sketchfab en los siguientes enlaces: robot 1: https://skfb.ly/pswxz robot 2: https://skfb.ly/pswxA Las animaciones…

Los modelos se pueden ver en sketchfab en los siguientes enlaces:

  • robot 1: https://skfb.ly/pswxz
  • robot 2: https://skfb.ly/pswxA

Las animaciones y todo el proceso se ha realizado en Maya, siguiendo los tutoriales de la asignatura.

Las animaciones han sido pensadas como componentes estándar. Muerte mediante la caída al suelo, ataque cada robot con su habilidad (puñetazo y ataque con la boca), defensa como protegerse la cara, idle como movimiento base al estar quieto y caminar. Menos la muerte, el resto de animaciones se han hecho para que se puedan poner en bucle.

La parte de crear el control rig es lógica y fácil de entender. El problema empieza cuando tienes que trabajar con las animaciones, la timeline y varios clips.

Debido a complejidad, y falta de conocimiento, sobre la herramienta Maya y sus menús de animación, gran parte del tiempo invertido en esta práctica fue usado en el debug de errores extraños, la incapacidad de hacer lo que quería en cada momento y la dificultad/falta de información para poder crear varios clips/animaciones distintas.

Se hubiera agradecido en los tutoriales algún ejemplo del profesor en la creación de varios clips distintos en Maya, y su posterior exportación a Unity.

Proceso

Una vez definido el control rig, se facilita mucho la cración de movimientos complejos en las animaciones, ya que con el movimiento exclusivo de una extremidad se mueven todas sus dependencias.

Mediante el uso de keyframes en la barra de animación, podemos realizar la lógica de movimiento que queremos, añadiendo parones, distintas velocidades, movimientos de diferentes partes del cuerpo para darle una sensación más “viva”. Una vez listas nuestras animaciones para su uso en unity, realizamos el bake y podemos exportarlas.

 

En mi caso, me parecía más fácil (dentro de lo que me costó entender el proceso), realizar todas las animaciones en 1 misma timeline y luego ya en Unity podía crear clips distintos para separar las animaciones.

Vídeo

Para mostrar las distintas animaciones de cada robot, se ha grabado el siguiente vídeo: https://youtu.be/fMQDpchcjNo

Como el propio sketchfab permite reproducir las animaciones desde un mundo 3d con capacidad libre de movimiento, se ha aprovechado la misma herramienta.

Reflexión

Ya comenté al principio gran parte de mi opinión sobre esta práctica.

Me parece lo más complejo el trabajar con clips dentro del timeline de maya. He trabajado con otras herramientas de edición de vídeo y similares, y todas son de uso más intuitivo que esta. También se me bloqueó 3 veces MAYA y tuve que forzar su cierre, trabajando siempre con las animaciones y las distintas vistas.

El control rig me parece una muy buena herramienta para facilitar el diseño de las animaciones. Creo que cuando se hace el primer diseño del personaje, ya hay que tener en cuenta las posibles animaciones que podría tener, para facilitar así su desarrollo de una manera lógica.

Una vez entendido el proceso, fue de gran ayuda pequeños tips como el hecho de siempre seleccionar las distintas extremidades o puntos que vamos a trabajar y poner los keyframes de inicio y final iguales, para que así ya tengamos definido la misma posición de inicio y final.

 

Debat0el R4 Media para videojuegos

No hi ha comentaris.

Publicat per

R3 Media para videojuegos

Publicat per

R3 Media para videojuegos

Para la entrega del reto R3 se han creado los esqueletos necesarios de los 2 robots resultantes del reto R2. Pueden descargarse…
Para la entrega del reto R3 se han creado los esqueletos necesarios de los 2 robots resultantes del reto…

Para la entrega del reto R3 se han creado los esqueletos necesarios de los 2 robots resultantes del reto R2.

Pueden descargarse los robots.fbx en (drive compartido para la UOC): https://drive.google.com/drive/folders/19Eea0Z8B2gwiH8Tfq5uzE9X_aMmxDQR2?usp=sharing

Con el objetivo de dotar de capacidad de movimiento a los robots creados, se ha utilizado Maya para la creación de los esqueletos.

Siguiendo los tutoriales del aula, se han creado los esqueletos satisfactoriamente:

Se han tenido en cuenta el número y tipología de huesos necesario para una figura humanoide en Unity.

Para evitar la distorsión, producida por defecto, del resto de partes cercanas del cuerpo (al fusionar el skeleton y la skin), se ha decidido utilizar la técnica del peso de vértices en el menú de componentes. Esta forma me pareció mucho más “segura” y “controlable”, así podemos asegurarnos qué movimiento influye en qué pieza con un 100% de certeza.

Una vez creados los esqueletos, fusionado la skin y el skeleton, confirmado las dependencias de movimiento, se llevaron los .fbx de los robots a Unity para confirmar su funcionalidad correcta:

Teniendo en cuenta la jerarquía de los huesos, y los nombres para el mapeo automático en Unity, se ve que la exportación es satisfactoria a primera vista.

El siguiente paso fue confirmar la falta de distorsión con movimientos de distintas partes de los robots:

Como se aprecia en las imágenes, los movimientos son correctos y no causan distorsión alguna en otras partes del robot.

Mixamo y autorigger

Mixamo es una plataforma web que te permite realizar un autoriggin de los personajes humanoides que subas. En los casos de mi robot, ninguno de los 2 robots fueron aceptados por Mixamo en su plataforma, incluso probando con sus distintas opciones de configuración en relación a las manos. Razones posibles:

  • Falta de articulaciones o proporciones incorrectas. Se han hecho con forma bípeda y recordando a la humanoide, pero seguramente no fue suficiente para la herramienta automática de autorigger de mixamo.

Limitaciones de la herramienta:

  • Está clara. La limitación a una estructura clara y predeterminada, que es la que se asemeja con un ser humano.
  • Las herramientas automáticas estarán muy bien como manera de ahorrar tiempo, siempre y cuando se utilicen en su campo específico (como puede ser el caso de seres humanos y mixamo). Cuando sales un poco de ese molde, algo muy común en un entorno directamente relacionado con la imaginación como es el desarrollo de videojuegos, es necesario el desarrollo manual de estas características.

Debat0el R3 Media para videojuegos

No hi ha comentaris.

Publicat per

R2 Media para videojuegos

Publicat per

R2 Media para videojuegos

Para la R2 se han creado los UVs y texturas para los robots desarrollados en la R1. Los enlaces de Sketchfab son…
Para la R2 se han creado los UVs y texturas para los robots desarrollados en la R1. Los enlaces…

Para la R2 se han creado los UVs y texturas para los robots desarrollados en la R1.

Los enlaces de Sketchfab son los siguientes:

  • Robot 1: https://skfb.ly/prWB6
  • Robot 2: https://skfb.ly/prWAY

El primer trabajo en la práctica fue realizar el mapeado de UVs. Utilizando en partes simples el sistema automático, y aprovechando partes útiles, así como el UV en forma de plano para las distintas caras de los elementos. Para las partes esféricas (como los puños, rodillas o codos) y las partes cilíndricas (como los brazos o piernas) se utilizaron los mapeados de UVs correspondientes de la herramienta Maya.

Fue importante que los UVs fueran limpios, con pocas o ninguna distorsión y las costuras lo más simples posibles. También había que tener en cuenta los giros/flip necesarios para que se vean bien desde todos los ángulos y fiel a la textura.

Los UVs serían los siguientes (robot 1 y robot 2):

 

Quedando los robots con la textura de ejemplo/referencia siguiente:

 

El siguiente paso fue realizar las texturas. Para esta tarea no se utilizaron texturas externas, realicé las mías propias en Procreate (2048×2048):

Quedando de la siguiente manera en el modelo y la herramienta:

Conclusiones

El el texturizado del robot 1 el mayor problema fue que de la R1 quedaron caras internas de más. Al trabajar con el mapeado de UVs había caras que no localizaba en mi diseño, entre el mapa de UVs y la vista de Wireframe conseguí localizar estas caras y limpiar el modelo.

Tanto para los puños como para los codos (esferas) utilicé técnicas para que, aún teniendo un salto de las “costuras” (diferencia entre el UV de plano top-bot y el esférico lateral), fuera un efecto visual lógico respecto a la estructura del robot. Como si fueran discos/remaches que permitieran el movimiento de las esferas.

En el texturizado del robot 2 me centré en darle una textura “vieja/sucia/de ruina”. Formado por prismas principalmente, utilicé un patrón para las partes que serían inferiores/traseras del robot, simulando una sombra o parte del robot.

En ambos robots, las texturas son simétricas. No hay gran diferencia entre un brazo izquierdo y uno derecho por ejemplo, por esta razón las texturas de dichas partes comparten mapa de UV/textura.

Debat0el R2 Media para videojuegos

No hi ha comentaris.