Distortion.Ability

23 Jan 2026 • 2 min read

A modular, dynamically loadable Ability System.

Distortion.Ability

A modular ability system that allows for dynamic assignment and removal.

(2025)

Distortion.Ability is my Ability System that I developed for use within future personal projects. I went in with the idea that any designer could use this system to quickly and cleanly implement abilities that have minimal points of failure. It is also built to be performant and easily testable.

Tech I Used

  • Unity Engine
    • NUnit Automated Testing
    • Unity Package Manager
  • JetBrains Rider
  • Git
    • GitHub Actions
  • Jira

What is it?

To achieve the goals I set out with, there were a few limitations I put in place for how it had to work. Firstly, abilities were not going to be new components on the user. This was to ensure that any ability uses had to go through a designated handler and therefore was limited in what external factors could call or modify behaviours.

Secondly, I wanted the abilities to only have one MonoBehaviour to be passed through for any given behaviour. This was to encourage abilities to have a single purpose in any given execution and to avoid excessive memory allocation to one ability.

To further ensure good performance, I made the ability’s execution functions asynchronous by making them a Task instead of basic void or other typed functions.

To ensure straightforward testing capability, I developed it while following a Test Driven Development methodology. As all the base classes are already tested and covered, creating tests for the new functionality should be very simple.

The entire project has an integrated CI/CD pipeline, so any merged feature or update to the main branch will automatically test, version and reformat the project so anyone can install the system as a package within UPM through the package branch of the repository.

Start searching

Enter keywords to search articles.