top of page

Features Implemented

Features Implemented

Battle Map

​​I created a basic battle map which the player uses to move from battle to battle.

​

Currently, the enemies on the map are randomly determined from a data table that contains different types of enemy parties. When a battle is completed, the map will update accordingly and allow for the player to move on. This is all contained in a simple actor component that is attached to the game state.

Battle Map Examples

Battlefield

I created the battlefield to manage the current state of the battle. It manages the effect of the player's  and enemy's abilities. 

​

The battlefield determines, with information of the currently selected ability, what enemies can be attacked, the ability hit chance and placement of the battle units etc.. It works together with the game state in order to have events play out properly and without any issues.

Battlefield Examples

Abilities

I created simple ability system that uses data stored in a data table to create the ability's appearance and effects.

​

The data table takes in multiple parameters like the location the ability needs to be performed from, where the ability can hit, if it applies any effects on hit etc. and uses these to create a new ability and the ability information that is shown in the UI.  The struct for the table has been created in C++. This allowed the ability to grey out certain input fields if they were not applicable to the abilities type.

Abilities Examples

User Interface

I created an UI that takes the selected ability and displays the related information to the player.

​

The UI also includes the health bar and status bar. The health bar is used to display the health of the unit to the player and the status bar informs the player of the status effects present on a unit. This is related to the DOT (Damage Over Time) and (De)buff effects.

User Interface Example

DOT and (De)buff components

I created two components that each manage the DOT (Damage Over Time) and (De)buff effects that are present on a unit.

​

When a unit is afflicted with one of these conditions, the respective component will take the information from the ability and update the currently present effects on the unit. For example: when a turn starts, the DOT component will inform the unit if it needs to take any damage from any currently present DOT effects.  Or if a unit is currently blinded, it will inform that unit and update it's To Hit chance when it wants to attack and remove the (de)buff when it is no longer relevant or cured.

Components Example

Enemy AI

I created basic utility based enemy AI that tries to adjust it's ability based on the the state of the battle.

 

Every enemy has a set of preference scores. These scores indicate if the AI should be more aggressive and attack or defensive and support. Additionally, every ability has AI modifiers that can influence if the AI's ability selection. Based on these scores, the AI determines what ability is best to use and performs it. 

AI Example

Future Improvements

Future Improvement

Balance

The current balance can be improved. I started off just making abilities similar to darkest dungeon to see if I could achieve a similar effect. And while I would say that I was successful, it did come at the cost of not balancing the abilities themselves. I am also not sure if the current way abilities are handled are the best way to do it. A UObject based ability system might have been better. That way the ability data would be better contained. I would need to reflect on this in the future however.

UI/UX

The UI/UX is quite basic and has some ugliness to it. Some abilities have images associated with them while others do not. Battle environments are just within the standard ThirdPersonCharacter level. All in all it can be polished to look nicer.

bottom of page