Able Ability System Info and Support Thread

What is Able?

Able is a high performance, multi-threaded, data driven Ability system with network support, written from the ground up in C++ for Unreal Engine 4 and is available starting on March 23rd, 2017.
Technical Details

• Written entirely in C++.
• Multicore/Async support for Ability execution, cooldown updates, and various Task specific activities (such as calculating actor specific damage). Async support is automatically disabled on hardware with less than 2 cores.
• Network supported using a secure client-server model with minimal data sent across the wire.
• Abilities are purely functional and shared with only small scratchpad structures used for any state specific logic, keeping memory usage lean and efficient.
• 18 various Tasks to build your Ability with (Play Animation, Play Sound, Collision Query, Spawn Actor, Apply Damage, etc).
• 16 Events/Methods overrides available to Blueprints to allow further logic customization.
• Full AI Support (adds new AI Tasks and Decorators).
• Full Animation State Machine support (adds new Animation State Node).
• Custom Blueprint Editor - Ability Editor.
• Ability Validator testing framework.
• Intended for all Platforms (Tested PC and PS4).
• Built-in support for the UE4 Profiler.
• Extendable API for both the core system and editor.
• Fully documented code, tutorials, and system documentation.
• Available for UE 4.14 and 4.15

Video Tutorials

Further Documentation is available here.

You can find it on the Marketplace here.

This thread is primarily for helping users with any questions, concerns, or issues they may come across. All feedback is welcomed. :slight_smile:

Reserved for the future™

Its up!


So going forward I’m planning to do a weekly video that answers/does a tutorial using questions from the community. The YouTube comments have given me a few topics to cover, but if there if you have a question, or want to know “How can I do X in Able?” then please post your question here and I’ll add it to my list.

****!!! Oh man, this released before my check came T_T

On Topic:
I’ll be getting this soon, and once I do, I’m hoping that shifting the camera socket offset when performing an ability will be covered (like AOE attacks push the camera back for the duration of the ability for example),
As well as camera animation in sync with the ability like a summon in Final Fantasy.

Is it possible to make auras/dots/hots that are removable with other abilities?
Passive: Can only be completed naturally (cannot be interrupted or branched out of), or removed through Blueprint scripting. is what makes me think that it is not possible?
And can i make an ability that interupts the ability of my opponent?

Hey all,

New video up answering a question from the community on how Able works with something like Shooter Game (and what it is in general):

EDIT: Video moved to first post.

I’ve also submitted a ticket to update the plugin to v1.1. Notes below:

V1.1 Patch Notes:

  • Fixed a crash when changing Task dependencies around and then previewing the Ability.
  • Fixed a crash when previewing an Ability that itself calls ActivateAbility within Blueprints.
  • Fixed an issue where Montages wouldn’t play properly in the Play Animation task.
  • Cleaned up the Play Animation task code a bit.
  • Fixed an issue where some actions wouldn’t properly reset when looping.
  • Fixed an issue in the input conditional sometimes not finding the input mapping.
  • Added Camera as a Task Target option.
  • Removed last monolithic header include (4.15 version only).
  • Fixed a missing stat include that could occur when not using a unified build (4.15 version only).
  • Fix to Raycast Query Task queries being perpendicular to their shown debug position.

Next on my list is to add a per Ability/Task debug option that can print out various information to help people with debugging issues easier (rather than placing lots of Print Strings yourself in the Ability blueprint).

[MENTION=33476]Aumaan Anubis[/MENTION]

Right now I think the best way to do that is using a Timeline that has a camera and moves it as you want. You could then add a Custom Event task in Able that then calls that Timeline. I actually want to add a PlayTimeline task just to save you some blueprint work, but I need to research timelines a bit more as they are a bit special in UE4.


Yes, you could make an Ability that has some targeting logic, then have it apply some Ability (e.g. Cleanse) that plays a particle effect and then searches the character for specific abilities or abilities with certain tags and removes them. And yes, you can interrupt any ability (passive or active) - it’s just that, for passives specifically, the system internally doesn’t see it as an interrupt - just a normal completion. There’s special methods (OnAbilityInterrupted/OnAbilityBranched) that passives will never get that actives will. It’s a system limitation purposely added to keep bandwidth down (as a player probably has many more passives at one time but only one active), but there are way around it if you absolutely need that functionality.


Great Video! And thanks for the response.

Question: How do we create abilities that feature Choreographed Actions with multiple characters? (but really, just two characters)

For something like that you generally have a special synchronized animation system. But you could fake it and just have Able play one animation on the caster/self, and one on the target. You’d have to be careful with how your animation state machine is setup and block input during the animation (probably through setting a tag or calling some custom blueprint code), but it’s doable.

Thanks for the reply :slight_smile:

Also I have a feature request based on what I saw in video, I noticed in the Ability Editor, selected tasks aren’t highlighted, the only way to know which task you have selected is by looking at the properties, some kind of outline or overlay would be nice for more user feedback.

That is a great suggestion. Thanks! I’ll see if I can’t add a highlight or something with the next update.

Version 1.1 should now be live. Also the store page has been updated to include a link to the Able Shooter Game example. Enjoy and thanks to Epic for the quick turnaround!

My team bought this day one and it has not disappointed. You are only limited by your imagination it can do so many things. One of the best items on the market sooo worth $125.00. Matt is extremely helpful also.

Yay, so glad to see people happy with the system! :smiley:

So the plan this weekend is to do a video covering a simple combo Ability. That seems to be a fairly common question. Let me know if there is anything else you’d like to see and I’ll add it to my list

Branching combos. And charge attacks (holding down the input, before it auto releases)

Charging an attack (holding down the input for x amount of time) mid-combo to branch to a more powerful version of it.

On the input side of things, I have the events triggering taken care of via a combo system from the marketplace, but I want to see how this all would tie into the task system, animations, etc.

Hmm, I’ll see if I have any animations that could work for a charge up.

To do a charge up you simply create a “Charge up” ability that plays your animation (and loops the last 0.25 seconds or what not if you want the player to be able to hold the charge indefinitely) - then when that Ability ends (e.g., OnAbilityFinished) you queue up the appropriate Ability (Light/Med/Heavy) based on how far along the charge ability got (which you can query from the Blueprint). I’ll see if I can do an example.

I really like the ability designer! That’s super cool!

I noticed a lot of instances where you were just entering numbers into fields for different properties. One thing the UE’s GameplayAbilities framework had was a data driven Attribute system. Any plans on creating something like that?

You can data drive things like Damage calculations, collision filter logic, Ability condition logic, branch condition logic, Cooldown times (once the next update hits), and Max stacks in Able. :slight_smile: It’s just not necessary if you don’t want it.

I actually touch on this in the new community video, the next video I may do a deeper dive into that part of the system:

EDIT: Video moved to top post.

Hey, I just watched the video! Great upload!!! Seriously, I didn’t think branching would be so simple (I knew it would be easy, but it’s like REALLY easy).

Thanks for uploading, I look forward to your next one :smiley: