Publicat per

Actividad R5 | Media para Videojuegos

Publicat per

Actividad R5 | Media para Videojuegos

En primer lugar, para llevar a cabo esta actividad, se exportaron todas las animaciones de ambos robots a Unity, verificando que el…
En primer lugar, para llevar a cabo esta actividad, se exportaron todas las animaciones de ambos robots a Unity,…

En primer lugar, para llevar a cabo esta actividad, se exportaron todas las animaciones de ambos robots a Unity, verificando que el rig fuera correcto en cada una de ellas.

Una vez completado este proceso para ambos robots, se procedió a crear el Animator Controller.

Animator controller

Dado que ambos robots comparten los mismos movimientos, sus máquinas de estados son muy similares. A continuación, se incluye una captura de la máquina de estados.

Máquina de estados robot 1

El primer estado es “Idle”, desde el cual se accede al resto de estados. Todos los estados regresan a “Idle”, excepto el estado “Death”, que marca el final de la partida.

Para gestionar las transiciones entre los estados, se han definido parámetros en la máquina de estados. Estos parámetros son:

Parámetros de la máquina de estados

Los parámetros definidos para la máquina de estados son Walk, Death, Punch y Block. De estos, Death y Punch son de tipo Trigger, ya que solo necesitan activarse una vez. En el caso de Punch, al finalizar la animación, el estado regresa a Idle. Por otro lado, Walk y Block son de tipo Boolean:

  • Walk reproduce la animación en bucle, simulando pasos continuos.
  • Block mantiene la posición mientras el jugador mantenga presionado el botón de bloqueo.

Para las transiciones entre estados, todas (excepto las relacionadas con Walk) tienen activado el “Exit Time”. Esto permite transiciones más suaves entre animaciones. Sin embargo, en el caso de Walk, no se ha activado “Exit Time” para que, durante el gameplay, el personaje comience a caminar de inmediato al pulsar la tecla correspondiente. A pesar de esto, la transición no es brusca, ya que los movimientos de Walk son pequeños y no muy diferentes del estado Idle.

En cuanto a la animación de muerte de ambos robots, fue necesario incluir un offset en el eje Y. Esto se hizo para evitar que los robots terminaran tumbados en el vacío, lo cual no era deseado.

Elementos del juego

Una vez creados los Animator Controllers de ambos robots, se desarrollaron el resto de elementos del juego. En primer lugar, se construyó un escenario utilizando el siguiente paquete de assets: Paquete.

Con estos assets, se diseñó un mercado en el desierto con un estilo moderno que incluye elementos como cámaras de seguridad y máquinas expendedoras. Además, se añadió una iluminación amarillenta para generar una sensación de calidez en el ambiente.

Posteriormente, se colocó la cámara y se posicionaron los robots enfrentados, simulando una jugabilidad estilo 2D pero con gráficos en 3D.

Para implementar el movimiento de los robots, cada uno tiene un script asociado que controla su componente Character Controller. Adicionalmente, se creó un script común para ambos robots que gestiona su vida y verifica si los golpes impactan contra el enemigo.

Para proporcionar al jugador feedback visual sobre la vida de los robots, se incluyeron dos barras de vida en la interfaz de usuario (UI), una para cada robot. Estas barras disminuyen y cambian de color conforme los robots reciben daño.

 

Barra de vida

Cuando la vida de un robot llega a 0, se cambia automáticamente a una nueva escena.

Después de implementar el gameplay, se diseñó un menú de pausa. Este menú, desactivado por defecto, se activa al presionar la tecla “Esc”. Al activarse, detiene la acción del juego y ofrece las siguientes opciones: reanudar la partida, regresar al menú principal o salir del juego.

Menú de pausa

Por último, se añadió un cielo utilizando un material de tipo Skybox, completando así la pantalla de gameplay.

Tras finalizar el desarrollo del gameplay, se incorporaron otras escenas:

  • Menú principal: consta únicamente de dos botones, uno para jugar y otro para salir.
  • Pantalla de fin: al concluir la lucha entre los robots, muestra qué jugador ganó y ofrece la opción de regresar al menú principal.

Finalmente, se añadieron efectos de sonido para enriquecer la experiencia. Cada escena tiene su propia canción, que se reproduce en bucle. Además, se incluyó un sonido de “clic” al interactuar con los botones, y efectos de sonido específicos para los golpes, bloqueos y animaciones de muerte de los robots.

Conclusiones y trabajo futuro

Con esto concluye todo el proceso creativo de la asignatura de Media para Videojuegos. Considero que ha sido muy enriquecedor conocer el proceso completo, desde la concepción del diseño en forma de bocetos para ambos robots hasta verlos en acción dentro de un juego. Durante este recorrido, se han realizado tareas de modelado, texturización, rigging y animación. Aunque el resultado es mejorable debido a la falta de experiencia, estoy seguro de que, si tuviera la oportunidad de empezar desde cero con el conocimiento adquirido durante este proceso, el resultado sería significativamente mejor. Aun así, estoy satisfecho con el aprendizaje obtenido.

Si contara con un equipo, este juego podría expandirse fácilmente. Algunas de las posibles mejoras incluyen:

  • Nuevos escenarios para las peleas, lo que añadiría variedad visual y jugable.
  • Movimientos adicionales para los robots, haciendo el combate más dinámico y variado.
  • Mejorar la interacción entre los robots, ya que actualmente los golpes solo reducen vida sin mostrar una respuesta visual en el otro robot.
  • Incorporar más robots, cada uno con características únicas que aporten diversidad al gameplay.
  • Mejorar el diseño, modelado y animaciones de los robots, logrando personajes más atractivos y con movimientos más fluidos y naturales.
  • Balancear los personajes para asegurar una experiencia justa y competitiva.

En cuanto a las plataformas ideales, considero que este juego, debido a su enfoque multijugador, encaja muy bien en PC, como está actualmente. Es ideal para partidas rápidas con un solo teclado. También sería una gran opción para la Nintendo Switch, ya que esta consola facilita la implementación del multijugador local, lo que la hace especialmente adecuada para este tipo de juegos.

Estoy convencido de que este proyecto tiene un gran potencial y que, con las mejoras mencionadas, podría convertirse en una experiencia de juego aún más completa y divertida.

Enlaces:

El juego se puede ver y jugar en el siguiente enlace:
https://simmer.io/@tortolavivo23/media-r5

Debat0el Actividad R5 | Media para Videojuegos

No hi ha comentaris.

Publicat per

R5 – Videojuego de Peleas en Unity

Publicat per

R5 – Videojuego de Peleas en Unity

1. Desarrollo en las Prácticas de Media para Videojuegos Durante la asignatura de Media para Videojuegos, participé en distintas prácticas que abarcan aspectos importantes del diseño y desarrollo de contenidos para videojuegos. Cada etapa permitió adquirir conocimientos básicos sobre modelado 3D, texturizado, rigging, animación y la integración de estos elementos en un juego sencillo. A continuación, detallo el progreso realizado en cada una de estas áreas. a. Modelado 3D En la primera práctica, aprendí los fundamentos del modelado 3D. Trabajé…
1. Desarrollo en las Prácticas de Media para Videojuegos Durante la asignatura de Media para Videojuegos, participé en distintas…

1. Desarrollo en las Prácticas de Media para Videojuegos

Durante la asignatura de Media para Videojuegos, participé en distintas prácticas que abarcan aspectos importantes del diseño y desarrollo de contenidos para videojuegos. Cada etapa permitió adquirir conocimientos básicos sobre modelado 3D, texturizado, rigging, animación y la integración de estos elementos en un juego sencillo. A continuación, detallo el progreso realizado en cada una de estas áreas.

a. Modelado 3D

En la primera práctica, aprendí los fundamentos del modelado 3D. Trabajé en la creación de personajes desde su boceto inicial hasta el modelo completo. Aunque los resultados no fueron demasiado complejos, logré entender cómo se construyen formas tridimensionales utilizando herramientas de modelado.

b. Texturas y Mapas de UV

Después de completar los modelos, realicé UV Mapping y creación de texturas. Este proceso consistió en desplegar las superficies del modelo para aplicar texturas. Aunque mis texturas eran sencillas, logré que los modelos tuvieran un aspecto más cercano al diseño original para el videojuego.

c. Rigging

El siguiente paso fue el Rigging, donde añadí esqueletos humanoides básicos a los modelos. Aprendí a colocar huesos y a vincularlos al modelo para que pudieran moverse. Aunque las deformaciones no fueron perfectas, logré que los personajes tuvieran una estructura funcional para realizar animaciones.

d. Animaciones

En cuanto a las animaciones, trabajé en ciclos básicos como caminar y “idle” y acciones como atacar, defender y morir. Aunque los movimientos eran algo rígidos, pude implementar acciones funcionales que daban vida a los personajes.

e. Videojuego de Peleas

Finalmente, integré todo lo aprendido en un juego de peleas sencillo en Unity. Configuré mecánicas básicas como ataques, defensas y detección de colisiones e integré una serie de interfaces para controlar el flujo del juego. Además, añadí sonidos para mejorar la experiencia del juego y aunque no era muy complejo, logré integrar bien mis modelos y animaciones para crear una experiencia funcional.

En general, este recorrido por las prácticas de la asignatura me permitió adquirir conocimientos fundamentales sobre la creación de contenido para videojuegos y aplicar lo aprendido en un proyecto básico.

2. Visión de Futuro

El juego actual, con sus mecánicas básicas de combate y menús funcionales, representa una base sólida para futuras mejoras. Aunque su diseño es sencillo, ofrece un potencial considerable para evolucionar hacia una experiencia más completa y atractiva. A continuación, se presentan algunas ideas de desarrollo futuro que podrían implementarse gradualmente.

  1. Mejoras en las Mecánicas de Juego: Ampliar el repertorio de movimientos de los jugadores, como ataques combinados o bloqueos avanzados, añadiría profundidad al sistema de combate.
  2. Nuevos Escenarios: Incorporar escenarios variados con elementos visuales y temáticos distintos enriquecería la experiencia de los jugadores. Aunque no interactivos, podrían servir como un cambio estético para mantener el interés en partidas repetidas.
  3. Variedad de Personajes: Crear personajes adicionales con diferencias leves en velocidad, fuerza o resistencia, permitiría diversificar las partidas.
  4. Polish Visual: Mejorar los efectos visuales de los ataques y las defensas, como destellos o pequeñas explosiones, incrementa la sensación de impacto en los combates.

En conclusión, el proyecto tiene un camino claro hacia la expansión agregando elementos que hagan el juego más dinámico y atractivo. Estas mejoras no sólo enriquecerán la experiencia actual.

Carregant...

3. Descripción del Animator Controller

El Animator Controller diseñado para el personaje en Unity está estructurado en dos capas principales, Movement y AttackDefend, cada una con roles específicos para gestionar las animaciones del personaje de forma modular y eficiente. A continuación, se detalla el funcionamiento de cada capa:

a. Movement

Esta capa controla las animaciones generales del cuerpo completo del personaje relacionadas con su movimiento y estado al ser derrotado.

1) BlendTree – Movement

  1. Dentro de la capa Movement, se encuentra un Blend Tree llamado Movement. Este árbol mezcla de manera fluida las animaciones de Idle, Movimiento hacia adelante y Movimiento hacia atrás según el parámetro moveInput.
  2. Parámetro moveInput: Este parámetro es de tipo float y representa la dirección e intensidad del movimiento.
    • Cuando moveInput está cerca de 0, el personaje permanece en el estado Idle.
    • Valores positivos de moveInput activan la animación de movimiento hacia adelante.
    • Valores negativos de moveInput activan la animación de movimiento hacia atrás (invertido)
      Carregant...

2) Animación de Derrota

  1. En esta misma capa, hay un estado separado para la animación fija del personaje siendo derrotado. Este estado no forma parte del Blend Tree y puede activarse según las condiciones específicas del juego, como la pérdida de vida del personaje.
    Carregant...

b. AttackDefend

La segunda capa, AttackDefend, controla exclusivamente las animaciones del tronco superior del personaje, permitiendo realizar acciones como atacar o defender sin interrumpir las animaciones de movimiento en la capa inferior.

Carregant...
  1. Configuración de la Capa
    La capa está configurada con un Override del tronco superior del personaje, de manera que las animaciones de esta capa sustituyen únicamente las de esa parte del cuerpo, mientras que las piernas y el movimiento continúan siendo controlados por la capa Movement.
  2. Estados y Transiciones
    1. Estado Idle: Es el estado base de la capa, donde el tronco superior permanece inactivo hasta que se recibe una acción.
    2. Triggers:
      1. Attack: Al activarse este trigger, el estado cambia de Idle a la animación de ataque.
      2. Defend: De manera similar, este trigger cambia el estado de Idle a la animación de defensa.
    3. Tras completarse cada animación (ataque o defensa), el estado regresa automáticamente a Idle.

Este diseño del Animator Controller permite un control claro y eficiente de las animaciones. La capa Movement gestiona los aspectos básicos del desplazamiento y los estados principales, mientras que la capa Attack Defend asegura que las acciones de ataque o defensa no interrumpan la continuidad del movimiento, creando una experiencia visual fluida y coherente para el jugador.

4. Enlace al Juego

En el siguiente enlace encontrareis un enlace a una pagina en la que se encuentra la build del juego para Windows con acceso público, la Build generada para Web no se ejecutaba correctamente debido a las limitaciones de los juegos Web, asi que he decidido hacer una version para PC (Windows):

Animal Robots’ Brawl

Debat0el R5 – Videojuego de Peleas en Unity

No hi ha comentaris.