top of page

Tower Of Ascension

ROLE

Game Design, Level Design & Gameplay Programmer

DESCRIPTION

A smaller project where you play as a Girl that is a slave at the great tower where the Higher Begins rule. And you as the player need to fight your way up the tower in an attempt to flee this awful place.


The main goal for this project was for me and a team of originally 5 people to improve our skills and push each other to reach even higher heights.
Unfortunately most of the people had life and other personal matters getting in the way during the actual production which lead to many things missing and/or be cut from the original plan for the project as a whole.

Still learned a good amount of new skills both in areas I've earlier had my hands on. but also completely new once. All in all happy with the result and the sheer amount of things done during this project.

 

YEAR

2024

GENRE

Action Adventure

PLATFORM

PC

Engine

Unreal Engine 5

T_Title_edited_edited.jpg
Image by Vincentiu Solomon

Game Mechanics

The Vitality System

The core mechanic the combat revolves around is the idea of Vitality being a collectable resource. This spawned from the narrative side of the game where the weapons didn't hurt people physically, but instead drained the opponents vitality. The vitality drained is then stored in the weapons themselves. This evolved to an idea about the player being able to spend this stored vitality on special abilities.

The system I ended up making is a combination of systems found in the game World of Warcraft. The systems I took inspiration from was the rage building resource from the Warrior class, and the combo point system from the Rogue class. I then made these two variants playing well together with a classic stamina system found in most souls like/lite games. This created a sort of back and forth between using stamina on basic actions and special abilities, which resulted in a nice feeling combat loop.

The Vitality System - How it works

To generate Vitality Points. The player needs to perform attacks that connect with an opponent. The player have two types of attacks. A Light Attack and a Heavy Attack, each of which provide progress towards a Vitality Point up to a cap of a total of 3 Vitality Points at any given time. 

The Light Attack rewards the player with 1/3 of a Vitality point and the Heavy Attack rewards a full Vitality Point. These rewards are balanced with the stamina cost as well as how long it leaves the player vulnerable.

A note here when it comes to  balancing the combat. Each attack can hit multiple enemies at once, allowing the player to acquire Vitality Points faster.  This helps to keep the flow of combat when facing multiple enemies at once, as the player will have more resources at their disposal.

Special Abilities

Special abilities will be available to the player as soon as they have 1 or more Vitality Point. Unlike the normal attacks that use up x-amount of stamina, all available Vitality Points will be spent when using a Special Ability. The Effect will however be greater the more Vitality Points the player has when activated.

The original design and plan for the special abilities was to have about 8 or so abilities in total, but only allowing the player to have 4 of them available at any given time. This was to give players  a sense of choice and strategy. So for one boss you might want to bring ability x, y and z but for the next one you'd pick something else etc.

For this project we had to cut that part out unfortunately because of time constraints. And instead we settled for a total of 3 Special Abilities and not option to change them.

The Abilities

Heal

-

Heals the player for x-amount.

Damage Buff

-

Grants a x-damage buff to all sources of damage for the player for x-time.

Jump Attack

-

Performs a jump attack in facing direction delivering x-damage to opponents.

Heal

Damage Buff

Jump Attack

Target Lock-On

Taking a lot of inspiration from souls like games like Elden Ring when thinking about the combat a lock-on feature was a must have. The way it behaves is similar to that of Elden Ring, but the way to selecting and changing targets is where the more unique aspect comes in.

To Lock-on to a target, hold down the TAB key to enter target selection mode. While in selection mode, look at the target you want to lock-on to and release the TAB key. You are now lock-on to that target (indicated by the arrow above their head).

To change your current target simply repeat the same action again but this time look at the new desired target.

To cancel the lock-on, you press the TAB key whiles either looking at the current lock-on target, or face a direction where no lock-on target is in range or present.

Basic Abilities

The character also comes with some basic abilities including the earlier mentioned Light and Heavy attack, but there are some more that are connected to the traversal part of the game. (I'll let you in on a secret. There is also a sprint, even though there is no video of it).

Ledge Grabbing

Light Attacks

Grappling Hook Variant

Heavy Attack

Image by Vincentiu Solomon

The Enemies

For the enemies I had to take a bit more minimalistic and less innovative approach as I don't have to much experience with AI, Behavior Trees and the build in Perception system of Unreal Engine. Settled for 2 basic types of enemies, one melee and one ranged.  

Started off trying to refresh some basics and just get the AI to do something through some static/hard coded behaviors, things like move and then later attack the player. But I wanted a little bit more dynamic AI, one that would be perceived as some what "intelligent", and to do that I knew I had to get into the Behavior Trees.

But before even going into that I needed to make sure that the enemies could detect the player. I've done my own version of a system like this earlier but on a much smaller scale and very specific on what I needed. And being the first time I made anything like it... Let's just say it was functioning, but not great.

 

There is a built in system for this however in Unreal, which I decided to use this time around. The only reason I didn't use it instead of making my own version of it the first time around, was that posts and documentation I've read about it had given me the impression that a lot of C++ was needed to actually get something out of it. I was luckily proven wrong, as I stumbled upon a video on Youtube while browsing for things about Behavior Trees. In the video they didn't use any C++ and instead everything was done with Blueprints. And everything being almost completely new for me, found having something I felt comfortable working with a.k.a Blueprints was a big help.

The system had a lot of things build in that was really nice, and overall I saved a lot of time using this system instead of making it on my own from scratch. It was not easy though and I had to go back and rewatch the video about it, and find other places where they explained things differently. But eventually I got it up and running, and I could start on the next big challenge, getting it to work exactly how I wanted it to work.

Making small parts you stitched together work is one thing, but getting it to work exactly like you want it to without hiccups, now that is a different beast all on it's own. But after some sleepless nights, many grey hairs and fixing bugs that came to light after fixing another bug, I reach a point where I was happy with the result. Was it the best AI the world has ever seen? No, of course not. But it is also valuable to know when working with a deadline when to stop and move on to the next thing that's needs to be done. And in the end, we had 2 working enemies and like mentioned earlier am very happy with the result none the less.

Ranged Guard

The Ranged Guard is a Low Health, Extremely High amount damage type of enemy that uses a rifle to inflict damage to the player. It will path around the player finding a good position from where it can attack as well as trying to stay at a good distance from the player.

Melee Guard

The Melee Guard is a High Health, Medium amount of damage type of enemy that uses a sword to inflict damage to the player. It will path around the player within a closer distance to have a short route to get into range from where it can attack.

A more noticeable difference between the 2 types of enemies is that the Melee Guard has a Heavy Attack just like the player does. The chance of performing a Heavy Attack starts at a 10% chance, and for each consecutive attack not being a Heavy Attack increases this chance with an addiction 10%. 

Start at 10%, next time 20%, 30% and so on.

Image by Vincentiu Solomon

Level Design

The Mines

This level is the first level after the introduction level. And the first level the player is introduced to actual gameplay and all of it's mechanics.

The thought process for this one was to make a very linear experience forcing the player to interact with each mechanics the game have to offer at least once.

 

At the start I introduce the player to a corridor to force the player deeper in to the mines. The final goal of the level was introduced in a story beat just before the start of the level, which was to escape the mines. But to give the player a geographical idea on where to go, an elevator at the end of the corridor starts to move as soon the player leaves the mind shaft they are in, showing people going up and then disappear.

Then straight after I introduce the player to sword, and finding it early and in a none hectic environment where they can try out the attacks before actual having to use them in a more life threatening situation.

After that I placed a lot of enemies in close proximity of each other to invite a more tactical approach, and if not they would soon find out how fragile they are and how dangerous these enemies really are.

​

After some fighting I had the player arrive at a broken bridge, with the gap to wide to jump over. This created a nice vista where we could see where we started and how far we had come, but the real purpose was to introduce the the games variant of a Grappling Hook. 

Some more fighting after that for pacing and here I also opened up the first possibility to backtrack by allowing the player to open a gate that was closed earlier. 

​

Following the path further up I soon introduce another traversal mechanic, the Ledge Grab. Soon follow by another fight, but this time with the ranged enemies making sure the player had fought all the enemy types. 

After defeating the ranged enemies the player reached the elevator we saw in the beginning. Creating a fantastic vista where we can see the whole level looking back. As a bonus the elevator also works as a backtracking option. Here I opt for an easy way to show that some items needs to be picked up to interact with other items. A locked door blocking your access to a leaver which opens the gates blocking your path forward. In a room next to the locked door I left a key on a table which the player can pickup allowing them to open the locked door.

​

After pulling the lever the gats opens, leaving the path to another elevator that will take the player up and take them to the next level after a short fade out. 

Level Images

Playthrough with commentary

The Prison

​

The prison level was used twice to save both time and resources, but it did also add to familiarity and a real feel of moving up towards the surface. Which really was the whole goal of the game if we take it down to it's very core. 

The level was first made as an intro level only, so while I did not do the first iteration of this level, I did make the final version. Including adding things like the functionality to spawn and change the level state depending on some parameters, adjusting and adding things to make it believable and most importantly a playable level with an new beginning and an end, allowing combat and the other things we needed the level to provide when running through it a second time.

bottom of page