Actions

Overview

From Able Ability System Wiki

This page serves as an overview of the Able Ability System

What is Able?[edit]

The Able Ability System (Able, for short) is a data-driven system for repeatable gameplay logic wrapped up in what is commonly referred to as an ability. When someone hears the term "Ability", they may think of some attack, magic spell, or special move from their favorite game. But if you break that down further, an "Ability" is really just a container that has some internal pieces of logic.

When I press my Attack button :

  • I want to find any enemies in front of me.
  • I want to apply 6 points of damage to them.
  • I want to play this animation / sound / particle effect while that's happening.

Each time you press Attack, you're just re-running those steps again. However, Abilities don't have necessarily "do damage" or have visual elements. You could have a bunch of hidden volumes in a stage that apply different GameplayTags to the player, using Abilities. If the player has all the Tags, you open so secret chamber (the door opening animation and effects could be an Ability as well). It's entirely up to the developer on how they wish to use the system. Able doesn't make any assumptions as to the type of game you are making or how Able is being used.

Common Concepts[edit]

Here are some of the common concepts you'll see when using Able.

Ability[edit]

A container for Tasks that has some basic logic on it. Abilities allow you to assign rules when they can be used (Cooldown, Targeting, Channeling Conditions, etc) and other global parameters like Play Rate. The Ability is also used as a method for communication when Tasks need to ask the game for some logic. See Ability.

Task[edit]

Tasks are the steps that make up an Ability. They are discrete bits of code with one purpose each; "Do a Collision Query", "Play a Particle Effect", "Call this Blueprint method", etc. See Tasks.

AblAbilityComponent[edit]

The component that runs all Abilities and logic on the character. If your Actor does not have an AblAbilityComponent - it will be unable to use Abilities.

Ability Editor[edit]

The custom Blueprint editor used to create Abilities. Tasks are visually arranged on a Timeline that you can play, pause, scrub, etc., to get your Ability looking/behaving just right. See Ability Editor.

Dynamic/Bindable Properties[edit]

Tasks and the Ability itself will sometimes have a + option next to a field, this means the property is Bindable. Bindable properties create Blueprint methods on the Ability that Able will call at runtime when the Task/Ability is executing. You can use this to adjust your logic based on whatever gameplay logic you want ("I want the change the animation / vfx if the user has a fire sword", "I want the query to be based on the character's strength stat", etc).

Ability Context[edit]

This is a snapshot of the environment the Ability is running in, it's create when an Ability is created and is kept around until the Ability is finished. See Ability Context.

Scratchpads[edit]

Small, temporary storage that is allocated when an Ability or Task is about to execute. Scratchpads are a key concept in Able as they allow Able to avoid instantiating the larger Ability / Task objects by default, thus keeping memory and network traffic very light. There are currently 2 main types of Scratchpads.

That's it! You're ready to start your journey into Able. A good next step is to visit the page on Ability, Ability Editor, or Examples