Hydrofall
About
This game was made as part of my master thesis. The aim of was to explore
the idea of creating a survival & Action-RPG game spreading awareness of water pollution while also being
fun.
My Part
In this project I were primarily working on the implementation of the game.
I want to highlight the Ability System since that is the part I had the most fun in creating;
part because of the complexity of making such system part because I always wanted to make something like
this.
Ability system
The ability system takes inspiration from games like Diablo 4 and Path of Exile. The abilities in these games are often made to be 'standalone' in the sense that there is no deep interaction between the abilities.One of my explicit goals for the system was to make sure the creation of an ability was logical and designer friendly.
To achieve this I decided to design my system around Unity's Scriptable Objects.
The ability system evolved a lot over the development, but I ended up with the concept of an ability split up interaction these three parts:
- Ability Data
- This part could be seen as the chassis of the ability. It controls the rules for the ability, such as cooldown, resource cost etc.
- Ability Action
- This part defines what happens when the ability is cast. This could be firing of a projectile, an explosion around the caster, etc.
- Each Ability Data would only contain one Ability Action
- Ability Component
- This part is what describes the effects that can happen. The interface for the Ability Data & Ability Action both have parts where it is possible to add components to. A component could be application of damage, application of some status effect, throw another ability, something non-combat related like sounds or VFX.
The following video demonstrate how one would create a simple ability to fire a piercing projectile which do damage to all enemies it hits, but also on the first hit do an extra explosion that do damage.
An Alternative approach
While the result of the above approach fit our project very well, I felt it lacked some sort of flexibility. To create more flexibility I, in an experimental branch, introduced LUA-scripting to the system via MoonSharp, a framework that made it very easy.Scripting would allow for one to customize the casting behavior of an ability to a greater extend than before. The image below shows an example of a simple frontal melee attack ability.
An example of an ability script.
This approach, while increasing the customizability, also does require some knowledge of coding & LUA and are also more prone to errors that would not be present with the other approach. However I believe that some of these issues could be somewhat mitigated by creating a visual interface sort of like visual scripting.
This do require a lot more development time, which were out of scope for our thesis, but it is something to think about.