Liam's Despair

Tipo de Proyecto Proyecto individual
Software Utilizado Unity
Lenguajes C#
Duración del Proyecto 1 month

Acerca de Liam's Despair

Liam's Despair es un juego que desarrollé para mi proyecto final de segundo año. En este proyecto quería sumergirme en la creación de un RPG de acción en tercera persona con una temática de magia arcana, inspirado por mi fanatismo por juegos como Dark Souls y Elden Ring. Queria descubrir como crear mecánicas como rodar, una barra de resistencia, reaparición de enemigos, IA enemiga...

Historia

El jugador se pone en la piel de un guerrero arcano de la facción Corek, llamado Liam, quien ha sido capturado por los Elder, una facción rival de los Corek. Debido a la experimentación en su cuerpo, su memoria ha sido parcialmente borrada y también ha perdido todos sus poderes y equipo. Una vez que despierte de su descanso, se encontrará en un lugar inhóspito y arruinado, poco a poco irá descubriendo dónde está, qué está pasando en ese lugar y por qué.

Atacar y rodar

Al desarrollar las mecánicas de combate, implementé una transición directa entre el ataque y rodar para suavizar la animación, ya que pasar al estado idle la hacía sentir mucho más torpe. Hay un número de frames en los que el jugador puede pulsar un ataque o rodar antes de que finalice la animación anterior para que la acción ocurra cuando finalice la animación actual. Esto lo hace más fácil de usar ya que sin esta característica tendrías que sincronizarlo perfectamente. La mecánica de rodar también otorga frames de invecibilidad al jugador. Una de las cosas que quería implementar en el juego pero no tuve tiempo era un combo de ataques, así como también que los enemigos quedaran ligeramente aturdidos por un corto período de tiempo después de los ataques.

Attack-roll-anim

Lanzar hechizos

Este no sería un juego de rol de temática arcana sin la capacidad de lanzar hechizos. Implementé un hechizo dañino que lanza 3 proyectiles que pueden rebotar en los objetos. El lanzamiento de hechizos está limitado por la cantidad de pergaminos que tiene el jugador.

Descansar en piedras rúnicas

Reposar en piedras rúnicas permite al jugador recuperar vida al máximo, rellenar las pociones y establecer una nueva ubicación de reaparición. Sin embargo, los enemigos en el nivel reaparecerán y recuperarán su salud al completo.

Cofres y pociones de vida

El jugador puede encontrar pociones curativas dentro de un cofre, estas curan por una porción de la salud del jugador, pero requiere algo de tiempo para realizar la animación, lo que hace que el jugador vulnerable a los ataques enemigos. Las pociones se recargan cuando el jugador descansa en una piedra rúnica.

Subir de nivel y recolectar azuri y reliquias.

El jugador puede obtener azuri (la moneda del juego que se muestra en la esquina inferior izquierda de la pantalla) al matar enemigos, destruyendo objetos o vendiendo reliquias. Esta moneda se puede utilizar para aumentar el nivel del jugador (que se muestra debajo del ícono del personaje). Subir de nivel aumenta el daño de ataque del jugador, el daño de los hechizos, la resistencia máxima y la salud máxima, pero no cura al jugador por esa cantidad.

Utilicé Pro Builder de Unity para crear todas las formas de los niveles, además de utilizar assets de la Unity Store para decorar el nivel e implementar algo de iluminación dinámica con el uso de candelabros de fuego azul. Mi objetivo era otorgar un aura decadente y arcana a la mazmorra.

Level-building Level-building-2

Ambiente del Nivel

Level-ambience Level-rocks Level-objects Level-cell

La celda contiene elementos y es visible que se puede acceder a ella siguiendo un camino secreto, esto informa al jugador de que vale la pena explorar el nivel en profundidad para revelar los secretos y saquear todos los objetos.

La IA enemiga es bastante simple, los enemigos tienen 3 estados: patrullar, perseguir y atacar. Por defecto, los enemigos están en estado de patrulla, si el jugador entra en el radio de persecución, el enemigo lo perseguirá, y si el enemigo atrapa al jugador y entra en el radio de ataque, el enemigo lanzará un ataque. Si el jugador sale del radio de persecución, el enemigo volverá a patrullar.

Para el movimiento del enemigo utilicé NavMesh de Unity, preparé el nivel para que los enemigos (que son agentes del NavMesh) pudieran elegir los caminos correctos y atravesar las puertas y evitar objetos mientras perseguían al jugador.

Al patrullar, los enemigos tienen un camino predeterminado. Cada enemigo tiene una serie de Waypoints (esferas en la imagen), una vez alcanzado un determinado Waypoint, el enemigo pasará al siguiente. Una vez que se hayan iterado todos, el array comenzará de nuevo. Si no se proporciona un array de Waypoints, el enemigo elegirá puntos cercanos al azar para realizar el patrullaje.

Enemy-waypoint

Menú principal

La primera pantalla que se muestra al ingresar al juego, desde aquí el jugador puede jugar, ajustar el volumen, ver los créditos o salir.

Menú de pausa

Al presionar "Esc" el tiempo se congelará y aparecerá el menú de pausa. Las opciones del menú de pausa son: reanudar el juego, reiniciar el nivel, opciones, volver al menú principal o salir del juego. Dentro del menú de opciones, el jugador puede comprobar los controles del juego, cambiar el volumen de los SFX y de la música, ajustar el brillo y la sensibilidad del mouse.

Muerte

Cuando el jugador muere, reaparecerá en la última piedra rúnica en la que descansó, si no ha descansado en una piedra rúnica, volverá al inicio del nivel.

Completar el nivel

Al completar el nivel, el jugador puede regresar al menú principal o salir del juego.

Level-complete