An ability system with focus on usability and expandability.

Genre: Gameplay/Tool

Platform: PC

Engine: Unity

Language: C#

Duration: 4 weeks

Team: 1 person

Ability System

With this project i wanted to create an ability system with the focus on scalability and ease of use.
I wanted to create the system with designers in mind.
My goal was to make it easy to create, edit and expand an ability.

As a foundation, I used a multiplayer brawler prototype that i previously had created. This gave me all the base functionality that i needed to get going.

Templates
I create the ability prefabs from templates and then link the prefabs ability settings to the corresponding template’s settings. This enables me to in editor, edit the properties during runtime for maximum flexibility and without the limitations of prefabs, save the changes instantly.

The templates are scriptable objects and holds all the properties for the prefab, which in turn runs all the logic.

The ability bar
At startup the ability bar checks for available prefabs and populates the bar and the ability library with the available abilities.

If there are more abilities than available slots you can easily swap using the ability library by right clicking on a slot.

The Abilities
The abilities consist of a prefab with a base ability script that I in turn can apply or remove modules on. The modules holds the logic for a specific functionality, for instance area of effect, projectile, ground targeting. Working like this enabled me to separate the code into manageable chunks, and also enables me to easily add extra functionality if a designer requests it. Either through editing an existing module or creating a new one. This, without invalidating previously created abilities.

The editor tool
I created an editor tool to easily access all properties and to make it easy to manage your abilities.

The tool is built in two parts: the Ability Manager and the Ability Editor

In the ability manager I handle creation and deletion of templates and the construction of ability prefabs. The manager also refreshes and populates necessary lists with the correct templates and prefabs.

The ability editor is where you edit your abilities.
You can edit the base properties but you can also add or remove modules and edit its corresponding properties with instant feedback in runtime.