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/20247 min read

A laptop displaying coding software rests on a desk illuminated by a soft blue light. In the background, a cityscape is visible through a large window, with buildings lit up against the night sky. The scene is calm and focused, emphasizing a workspace oriented towards programming.
A laptop displaying coding software rests on a desk illuminated by a soft blue light. In the background, a cityscape is visible through a large window, with buildings lit up against the night sky. The scene is calm and focused, emphasizing a workspace oriented towards programming.

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

black blue and yellow textile
black blue and yellow textile
a man riding a skateboard down the side of a ramp
a man riding a skateboard down the side of a ramp
group of people using laptop computer
group of people using laptop computer

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

black blue and yellow textile
black blue and yellow textile

I had an excellent experience! The service was outstanding.

Happy client

Mis contribuciones

¿Cuales han sido mis aportaciones a este proyecto?

Mecanicas Y sistemas
black blue and yellow textile
black blue and yellow textile
a man riding a skateboard down the side of a ramp
a man riding a skateboard down the side of a ramp
white concrete building during daytime
white concrete building during daytime

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.

black blue and yellow textile
black blue and yellow textile
Disparo

El movimiento se basa en 2 partes

  1. Un sencillo WASD para poder moverse por el mapa

  2. 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:

  1. El sistema se basa en un array de arrays de objetos.

  2. 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.

  3. 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.

  4. Basándonos en este proceso iteramos constantemente hasta que nos quedamos sin siguiente oleada.

  5. 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

black blue and yellow textile
black blue and yellow textile
black blue and yellow textile
black blue and yellow textile
black blue and yellow textile
black blue and yellow textile

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

black blue and yellow textile
black blue and yellow textile

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

text
text
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