

Hola a todos!!!
1. Introducción:
Lo primero que quiero comentar es que tuve muchos problemas de rendimiento a la hora de publicar en WebGL, el videojuego funciona al completo, pero se ve ralentizado y me he visto obligado a configurar el Shader para alcanzar un menor peso sacrificando mejoras como el Outline de los personajes, al inicio de esta entrada estará la versión de como corre una Build del videojuego para ordenador.
Aquí adjunto el link del videojuego en itch.io:
https://tortmac1.itch.io/bestias-del-metal
Aquí adjunto el link del videojuego en SIMMER:
https://simmer.io/@tortmac/bestias-del-metal
Algo que agregue a esta versión WEB fue el menú de pausa, se activa con clicar sobre el botón de pausa en el centro superior de la pantalla, esto algo que leí en los criterios de entrega y no fue ningún problema dedicar algo de tiempo a configurarlo.
Este proyecto consiste en un prototipo de videojuego de peleas, intenté crear la mayoría de Assets de manera manual, sin embargo para algunos detalles de audio y el botón de pausa necesite de assets externos de los cuales daré crédito mas abajo, con esto podemos empezar una descripción resumida del proceso para crear este prototipo.
2. Resumen del proyecto
2.1. Menu Principal:
Quería crear un menú sencillo para centrarme en el Gameplay del prototipo, se dispone la los botones para empezar una partida o salir del videojuego, la disposición del menú intente que fuera similar a la de los últimos videojuegos de Dear or Alive (considerando esto como un prototipo) ,estéticamente decidí hacer varios render de la robot conejo hasta encontrar uno que me gustara para el menú principal, también incluí un pequeño Script para el movimiento del fondo.
2.2. Gameplay:
2.2.1. Fondo y Camara:
Lo primero que considere para esta escena, es el funcionamiento del fondo, y la cámara, en los videojuegos de pelea es común que la cámara se centre en la distancia entre los dos personajes y sea capaz de desplazarse con ellos, a la vez que pueda acercarse y alejarse a la vez que lo hacen los personajes, el fondo lo cree usando la IA de DALLE-3, ya ha estado presente en otras entregas, pero esta vez se ajusta a la cámara y al nivel del suelo. Para funcionar la Cámara es controlada por otro GameObject usando un Script para hacer zoom, moverse y seguir a los jugadores, los cuales en medio de ellos tienen un objeto invisible que me sirve como objetivo para la cámara.
2.2.2. Iluminación:
En cuanto a la iluminación, solo modifique un poco la luz direccional y la configuración del Shader ya la tengo desde la entrega anterior, por lo que esta parte no tuvo muchos cambios.
2.2.3. Sistema de combate:
Esto sería fácilmente lo mas complejo del prototipo, así que describiré de forma general como funciona el combate en el videojuego y como fueron desarrolladas:
Lo primero que hice fue pensar como interactuarían las animaciones en el Animator, empezando con una comprobación de cada una.
Aunque ambos personajes usan diferentes Animator, las conexiones y parámetros de activación son los mismos, incluso los nombres. Los personajes pueden estar inactivos, caminando, defendiendo, atacando, recibiendo daño o muriendo, teniendo en cuenta estos estados se pueden determinar mas cosas como por ejemplo que un personaje puede recibir daño o incluso morir en cualquier momento del combate, esto se debe reflejar en el Animator y las condiciones de activación en los Scripts de los personajes.
Teniendo en en cuenta esta lógica, organice a los personajes con sus respectivos Colliers y físicas para poder recibir daño y desplazarse al ser golpeados, pero para lograr crear “golpes” tenía que estudiar como funciona un impacto en un juego de peleas al menos a nivel básico .
Encontré que puedo usar GameObjects con colisiones que se activen exclusivamente al impactar con un ataque, luego a nivel del Script se podría determinar si esta ataque fue “bloqueado” o “recibido”, si tuviera varios ataques a diferentes partes del cuerpo, podría usar mas Colliders para controlar sus rangos, sin embargo para el prototipo solo tengo un ataque.
Los propios estados de cada personaje deben tener efecto en el control del jugador, por ejemplo si estas recibiendo daño, no podrás mover a tu personaje mientras se ejecuta la animación de recibir daño, y al realizar un ataque, no se considera que has atacado hasta que la animación llega a su punto de “golpear” que son unos pocos Frames dentro de la animación, la mejor manera de controlar esto es usar eventos en la animación que permitan ejecutar funciones dentro del script del personaje, fue algo que me costo entender, pero el resultado marca una diferencia y permite controlar con mucha precisión lo que pasa mientras se ejecuta una animación.
Para dar algo de feedback al jugador, cuando se lanza un ataque y este impacta contra el oponente, se sueltan partículas rojas desde su punto de impacto, cuando el ataque es bloqueado sucede lo mismo pero con partículas de color blanco, esta es una forma simple de indicar al jugador fuera de las barras de vida.
En el prototipo las barras de vida funcionan como en la mayoría de juegos de pelea, al recibir un ataque, si el personaje es golpeado pierde una proporción de su vida haciendo que el slider de la barra se desplace, actualmente pierden un aproximado de una quinta parte de su vida por cada golpe, todo esto se controla desde el propio script del personaje, a nivel estético quería que se viera llamativo así que hice renders cómo foto de perfil de los personajes y use la fuente de Terminator que originalmente se uso en Dear or Alive 2 para que se viera mas moderno, la elección de colores fue por esta misma razón.
Cuando un jugador golpea a otro y disminuye su vida a 0, se lanza una pantalla de victoria con el personaje ganador en su animación de Idle y un fondo de victoria creado por IA, en este menú se dispone de botones para iniciar otra partida o volver al menú principal, el texto también cambia según el jugador ganador, esto se controla desde un GameObject con el script de Game Manager.
2.2.4. Sistema de Sonido:
Durante todo el juego disponemos de sonidos de terceros (créditos al final), que permiten dar vida a los personajes, música de fondo para el combate y para el menú principal, entre otros, la música es un apartado muy importante en los videojuegos, también las voces de los personajes, por eso considere importante agregar esto, los sonidos de fondo normalmente los asigno a la cámara, y los de personajes se encuentran dentro de ellos mismos, así puedo usarlos desde su script fácilmente.
2.3 Animator Controller:
Los Animator de los personajes los he explicado anteriormente en el sistema de combate, son muy similares entre sí porque en este caso busco que ambos jugadores tengan las mismas opciones, cuando el personaje se encuentre inactivo, caminando, defendiendo, atacando, recibiendo daño o muriendo, los parámetros son de suma importancia para activar los estados de animación desde el script de los personajes, como un dato adicional, he realizado pruebas con transiciones de animación y al parecer en los juegos de pelea es común que no hayan transiciones o sean muy bruscas para favorecer el tiempo de respuesta del jugador, en este caso decidí no usar transiciones de salida por este motivo, de por si las animaciones de mis personajes son lentas y están funcionando a 30 FPS en vez de los 24 originales porque se sienten mas fluidas, he realizado algunas modificaciones en la velocidad de las mismas para que el combate se sienta mas fluido.
Robot Coneja:
Robot Tiburona:
3. Conclusiones:
- Esta asignatura fue sin duda la que mas disfrute este semestre, me encanta el arte en los videojuegos, incluso el como se relaciona con la parte mas técnica de estos, esta practica consistió mas en programación y diseño de videojuegos, pero es justo esa variedad la que nos enseña lo útil que es lo que hemos aprendido, no se trata solo de crear un personaje, si no de como usarlo y integrarlo en un videojuego correctamente, por esto esta ultima practica es tan importante.
- Me gustaría que tuviéramos una segunda asignatura de Multimedia para cubrir mas temas como el Parallax en videojuegos, optimización de nuestro arte, los famosos LOD en videojuegos, realmente creo que el tiempo en relación con lo aprendido es excelente, pero sin duda es una asignatura que merece una segunda parte.
- Considero que como siempre, el limite de lo que aprenda cada estudiante dependerá de su empeño y cuanto quiera expandirse en los caminos que enseña el profesor, en mi caso siento que justo necesitaba entender mas de esta parte técnica de Unity, para sacar partido a futuros trabajos, estoy muy agradecido y contento con el progreso en las entregas, es algo realmente lindo cuando puedes ver tu avance y como cada una de las entregas fue una pieza mas de este rompecabezas que hoy podemos llamar prototipo de juego de peleas.
4. Visión de futuro para este proyecto:
- Quisiera contar con un programador con experiencia en Gameplay de combates, seguramente crear un sistema de combos, rondas y dar lugar a nuevas dinámicas entre personajes, sería algo ideal.
- Me gustaría contar con un equipo para desarrollar mas personas, con mas personalidad, nuevas facciones, algo que adoro de videojuegos como Guilty Gear, es el mimo con el que se trabaja cada personaje, de cierta forma logre algo con este prototipo, pero realmente quisiera aprender mas sobre animación de personajes y como se consigue un nivel como ese.
- Me gustaría crear un selector de personajes para los combates, donde al elegir a cada uno de ellos, tenga su animación propia de selección.
- Escenarios con zonas rompibles como los usados en Dear or Alive, poder romper a tu enemigo contra una pared, o ver como se va callendo el techo del escenario mientras peleas, son esa clase de detalles los que marcan una diferencia entre un simple fondo y un escenario de combate.
- Desarrollar una IA para combatir contra ella con diferentes modos de dificultad, esto también seria útil para el modo historia del videojuego.
- Teniendo varios personajes en varias facciones, sería genial crear un modo campaña para que los jugadores puedan conocer la historia de cada uno de estos particulares robots.
- Teniendo poco presupuesto la historia podría desarrollarse como una novela visual entre las peleas que vaya contando la historia, sin duda seria mas viable para un videojuego Indie.
- Creo que podría escribir todo el día sobre ideas a futuro, pero por ultimo quería decir que pese a ser un prototipo, realmente creo que podría salir un videojuego de peleas divertido a futuro, me gustaría darle una vuela mas cuando deba pensar en mi TFM, pero si alguien me lo preguntara, yo creo que es una buena idea, que vale la pena pulir y representar algún día.
5. Creditos:
Fuente de texto:
https://www.dafont.com/terminator.font?text=DEAD+OR+ALIVE+2&psize=s
Música y sonidos:
https://es.fiverr.com/davidkbd
Iconos:
https://assetstore.unity.com/packages/2d/gui/icons/modern-rpg-free-icons-pack-264706
6. Anexo:
Como considero muy interesante el Script de control del personaje lo pondré aquí por si alguien tiene curiosidad:
Muchas gracias por leer hasta el final !!!
Debatcontributions 1el R5 – Media para Videojuegos
Heu d'iniciar la sessió per escriure un comentari.
Las animaciones de los dos personajes son muy distintas entre sí y les dan muchísima personalidad, ¡enhorabuena!