Chronicles of the arcane kight
Chronicles of the arcane kight fue una Demo que sirvió a modo de TFG en mi ultimo año cursando DAM y que me sirvió tanto para conseguir un sobresaliente. Como para familiarizarme con los conceptos mas esenciales del desarrollo en conjunto y de como organizar un equipo
5/8/202411 min read
Programación y videojuegos
Sobre el proyecto
El proyecto oficialmente comienza en noviembre de 2023. Cuando nuestro instituto de DAM da luz verde a los alumnos para que comiencen sus proyectos
Como ya hemos establecido este proyecto es un TFG el cual fue desarrollado durante 5 meses y que fue muy bien recibido por la mesa de profesores a finales de Junio de 2024.
Considero este un proyecto clave dentro de mi trayectoria. Ya que, aunque no fue mi primera vez desarrollando en equipo, si que fue el primer proyecto donde me encontraba siendo el que mas experiencia previa tenia entre mis compañeros. También fue el primer proyecto donde tuve que afrontar problemas organizativos como: ideas contradictorias dentro del equipo, compañeros teniendo que dejar el proyecto, migraciones y reorganizaciones a medias del proyecto.
Sobre el juego en si
Este es un shooter de vista isométrica donde controlas a un personaje con varias armas. Cada arma no solo tiene distintos atributos si no que tienen algún efecto especifico en el jugador que te obliga a jugar de distintas maneras. El juego se centra principalmente en la exploración de entornos y en la variedad de escenarios mas que en la progresión del personaje en si mismo.
Demo
Para la demo de este proyecto conseguimos incorporar:
1 Nivel
3 Enemigos
2 Armas
1 Boss final
También conseguimos añadir las siguientes mecánicas
Movimiento completo
Caminar
Salto
Dash
Checkpoints
Sistema de oleadas
Inventario de objetos
Cambios dinamicos de camara
La demo completa se encuentra jugable en nuestra pagina de Itch.io
I had an excellent experience! The service was outstanding.
Happy client
Mis contribuciones
¿Cuales han sido mis aportaciones a este proyecto?
Mecanicas Y sistemas
Diseñar y programar tanto el movimiento como la mayoría de acciones y varios sistemas
UI
Una interfaz sencilla y reconocible junto a un menú de opciones variadas
Visual Tech
Shaders, Post procesado, iluminación.
¡¡Y Mas!!
Mecánicas, Sistemas
Y Mi Implicación
En este apartado voy a contarte sobre mis decisiones a la hora de incorporar las mecánicas pertenecientes al jugador. Al menos las que diseñe yo.
La razón por la que diseñe las mecánicas principales es porque el proyecto se baso en un prototipo que tenia ya bastante tiempo apartado en el fondo de mi repertorio de Unity.
Por supuesto no todas las ideas fueron mías pero el concepto base de un juego en el que "la acción cambie dependiendo de el arma que uses" si que fue un concepto que "puse en la mesa" y que finalmente fue el concepto principal de juego
Mecánicas y Sistemas:
Camara
Las bases tanto del código de la cámara y de como sigue al jugador son bases que construí yo.
Con un sencillo código de seguimiento y usando variables serializadas y ordenadas en Unity conseguí crear una herramienta sencilla donde cualquiera seria capaz de modificar el Offset o inclinación de la cámara sencillamente
Eventualmente le pase esta responsabilidad a uno de mis compañeros que buscaba implementar un sistema por el cual en diferentes zonas el juego pueda reorientarse a diferentes planos.
Esta decisión de mi compañero de iterar sobre mi código acabo siendo un éxito el cual se puede apreciar en las principales zonas del juegos.
Disparo
El movimiento se basa en 2 partes
Un sencillo WASD para poder moverse por el mapa
Un sprint
De estos dos sistemas me hice responsable de el movimiento base usando WASD.
El desarrollo de esta mecánica tuvo una gran complejidad de diseño, no necesariamente por la propia mecánica en sí, sino por el desarrollo del Sprint.
A falta de poco tiempo de terminar el desarrollo de esta demo, pudimos ver claramente que el desarrollo del sprint se estaba atascando y que no daba el dinamismo a las escenas de acción que buscábamos.
Para intentar balancear esto, busqué darle más dinamismo al movimiento base, aumentando la aceleración y la velocidad máxima para intentar tanto recompensar a los jugadores que se mantuvieran en movimiento como dándole la posibilidad a los jugadores más calmados de hacer pequeños ajustes en su posición sin necesariamente irse demasiado lejos.
Finalmente logramos encontrar un balance en el que ni el inicio era demasiado lento ni el movimiento máximo demasiado rápido. A demás recontextualizamos de esta manera el sprint dándole utilidad a la hora de dejarte moverte a velocidad máxima desde el momento que lo pulsas. No teniendo que esperar a la aceleración
La mecánica de disparo es una muy sencilla y que prácticamente no trajo ningún problema de desarrollo.
El funcionamiento es simple:
Dependiendo de que arma tengas seleccionada el juego tiene preparado un tipo de disparo distinto en forma de un prefab. Cuando se dispara se coloca el disparo en frente de el arma correspondiente y el arma entra en cooldown. La propia bala es la que contiene toda la información relevante a partir de aquí
La información de cada bala dando por hecho nombres modelos y hit-boxes es la siguiente:
Velocidad de viaje
Tiempo en pantalla
Daño
Usando cada una de estas estadísticas se puede simular cualquier tipo de arma
Ej:
La pistola básica realiza 1 de daño y tiene una velocidad de viaje mediana y un tiempo en pantalla mediano. Esto la hace un arma que sirve bien en corta y media distancia con un daño promedio. No destaca en ningún aspecto pero a excepción de intentar disparos en demasiada distancia es bastante confiable
La escopeta tiene un daño de 0.5 y una velocidad de viaje media con un tiempo en pantalla muy bajo. Si bien puede parecer que tiene un daño bajo, eso es solamente el daño por bala. Al disparar 5 balas simultáneamente la realidad es que dependiendo de la distancia y tu puntería el daño puede variar entre 0.5 y 4.5 de daño. La velocidad media y el tiempo en pantalla bajo se cambian perfectamente para solo dejarte realizar disparos a corta distancia
Movimeinto
Oleadas
Este sistema se creó con la intención de añadir una mayor variedad de gameplay al juego. Si bien solo la usamos en una sección, creo que esa sección realmente apoya al gameplay de cara a una presentación, que era nuestro objetivo en ese momento.
Este sistema nos dejó tener un espacio plano donde mostrar las capacidades del gameplay de forma aislada, dejándonos margen para hablar más sobre diseño en otras secciones con bien mapas más complejos. O de tecnologías de sonido y gráficas en secciones más calmadas.
El propio sistema es uno muy sencillo. El funcionamiento es el siguiente:
El sistema se basa en un array de arrays de objetos.
Cada oleada se colocan los objetos enemigos del array actual en una zona aleatoria del área designada, dando preferencia a las áreas mas cerca de los bordes.
Cuando todos los enemigos de un array han sido derrotados el sistema reconoce el fin de la oleada actual y pasa al siguiente array para dar inicio a la siguiente oleada.
Basándonos en este proceso iteramos constantemente hasta que nos quedamos sin siguiente oleada.
En este momento el sistema da fin a las oleadas y realiza el evento que se le halla dictado. En este caso abrir la puerta de salida
UI
En este proyecto fui el principal encargado de la mayoría de aspectos relacionados a gráficos. Esto incluye la UI la cual diseñe e implemente gracias a una gran cantidad de feedback de mis compañeros.
El diseño grafico no es mi pasión por lo que realizar esta tarea, una vez que los sistemas ya estaban implementados y las opciones interactuaban con el juego como deberían, fue un reto muy grande. Creo que finalmente aunque simple conseguí realizar algo reconocible y un cierto grado de personalidad propia
Menús
El menú principal de este juego se conforma de 4 partes:
Jugar: Te lleva a la demo
Créditos: Muestra una pantalla con los miembros del proyecto
Salir: Cierra el juego
Opciones: Abre el menú de opciones
Colores
Como color primario para los menús decidimos usar un tono azul oscuro.
Decidí este color ya que es el color principal del personaje. Al ser el color principal del personaje no existen assets en el entorno que tengan un color parecido a este y, por lo tanto, al abrir el menú y pausar la experiencia no existe ninguna duda sobre qué es parte de la interfaz y qué no.
Por supuesto, usamos más formas de darlo a saber, como el tono del gameplay comparado con los colores más claros de la interfaz o los márgenes en los menús.
Pero creo que cada decisión consciente de separar visualmente interfaz y gameplay que pudiéramos implementar era un buen añadido.
Una vez decidido ese color y viendo que estaría mas cerca de ser un tono oscuro decidí que las opciones de los menús se mantuvieran en un blanco con letras negras.
Creo que aunque debatiblemente aburrido crea la mayor claridad visual posible. Que era justo lo que buscábamos con este proyecto el cual se mostraría junto a paginas web y aplicaciones de móvil
Interfaz de Gameplay
Este Juego usa una interfaz muy sencilla. Mi aportacion a esta interfaz fue una barra de vida basada en cartas de Poker. Decidimos usar cartas de poker en lugar de margenes o bloques normales ya que considerabamos que a la interfaz le faltaba alguna forma de llamar la atencion. De esta forma al mirar la barra tienes una buena idea de el porcentaje restante pero al ver en que carta estas tambien sabes el nº exacto de vida que tienes


Visual Tech
En este proyecto fui el principal encargado de la mayoría de aspectos relacionados a gráficos. Esto incluye efectos visuales como partículas o postprocesos y otros procesos como las animación. Por motivos organizativos también añadiremos sonidos a este apartado
Esta fue una tarea muy interesante ya que aunque involucro mucho conocimiento técnico y provoco bastantes retoques en el código. No es una tarea que originalmente asociase con un programador. Después de tomar este rol creo que estoy capacitado de tomar una mayor variedad de desafíos a la hora de escribir código para un proyecto
Particulas
Animacion
Post-Procesado
Iluminacion
Sonidos y Musica
Para este proyecto ya que teníamos una gran base de assets que usar no fueron necesarios realizar a mano demasiados efectos de partículas. Los pocos que hicimos a mano fueron efectos de niebla para crear un mejor entorno y los efectos relacionados a las acciones. Yo me encargue de estos ultimas.
En este proceso mi trabajo no fue tanto de crear las partículas ya que debido al estilo de el juego nos pudimos permitir que estas fueran bastante simples. Si no de conseguir alinearlas con las acciones y el estado actual de el jugador. Esto acabo siendo mas complicado de lo que pensábamos al comienzo de el proyecto ya que debido a nuestra falta de experiencia no vimos lo erráticos que pueden ser los movimiento y acciones de un jugador
Particulas Disparo
Particulas explosion
Particulas correr
Las partículas de el disparo fueron la primera y por bastante la mas fáciles de todas. Estas se basan en una cantidad muy baja de partículas las cual alineadas con la punta de el arma esconden la aparición de la bala y le dan mas impacto al momento.
Estas partículas no funcionan por si solas si no que tuvimos que sincronizarlas con un efecto de luz que aumentaba el efecto de impacto y una vez mas escondía el origen de cada partícula
Basándonos en las partículas de disparo. Nuestras partículas de explosión fueron una iteración de la misma pero cambiada para añadir lo siguiente
· Mayor tamaño
· Mas partículas
· Mayor densidad
El resultado lo implemento uno de mis compañeros y lo alineo con las animación de uno de los enemigos con un resultado bastante gratificante
Aunque estas partículas no fueron añadidas a el juego debido a nuestra limitación de tiempo, veo conveniente hablar de ellas por el reto que supuso.
Las partículas de caminar también fueron una iteración en las partículas de disparo con la modificación de que estas serían tanto más grandes como más densas, a la vez que constantes mientras el jugador se movía.
La implementación de estas planteó una gran cantidad de dudas y problemas. Ya que simbolizaban un rastro en el suelo mientras el jugador caminaba, de repente había más condicionantes que en las otras partículas, las cuales solo entendían de acciones. Para estas teníamos que tener en cuenta tanto si el jugador se estaba moviendo, como si estaba en contacto con el suelo, a dónde miraba el personaje, y si el personaje se estaba moviendo al mismo lado donde estaba mirando.
Aunque por cuestiones de tiempo tuvimos que quitar estas partículas del juego, conseguimos quedarnos a las puertas de conseguir responder todas estas preguntas dentro del código del juego y, aunque no se tuvo en cuenta en la valoración final, es algo de lo que estamos orgullosos dentro del equipo por la experiencia que nos ha proporcionado.
Desde nuestro equipo no animamos ninguno de los modelos como se ve en el juego. Sin embargo si que usamos las herramientas de animación propias de el motor de Unity para sincronizar las acciones de el juego con las animaciones en cuestión
La implementación de estas animación supuso un gran esfuerzo visual, ya que trabajábamos con material ajeno no podiamos contar con que cada movimiento seria completamente como quisimos. Para compensar esto nos apoyamos en otras herramientas como partículas, luces u otros modelos para tapar dichas imperfecciones
Como se puede ven en el juego y en los clips de el mismo tanto el esfuerzo para modificar las transiciones correctamente como los apoyos en otros términos visuales acabaron dando un resultado creíble y satisfactorio a la hora de jugar


Desde nuestro equipo no animamos ninguno de los modelos como se ve en el juego. Sin embargo si que usamos las herramientas de animación propias de el motor de Unity para sincronizar las acciones de el juego con las animaciones en cuestión
La implementación de estas animación supuso un gran esfuerzo visual, ya que trabajábamos con material ajeno no podiamos contar con que cada movimiento seria completamente como quisimos. Para compensar esto nos apoyamos en otras herramientas como partículas, luces u otros modelos para tapar dichas imperfecciones
Como se puede ven en el juego y en los clips de el mismo tanto el esfuerzo para modificar las transiciones correctamente como los apoyos en otros términos visuales acabaron dando un resultado creíble y satisfactorio a la hora de jugar