Optimizing Ability Design in GAS: Distinguishing Between Normal Abilities and Basic Attacks

Hey,

My situation (see image for illustration) is that I have:

  • generic parent ability
  • generic character ability (ie, Commando) that’s inherited from the parent ability
  • leaf normal abilities and a leaf basicAttack ability (ie, GA_CommandoAbility1 and GA_CommandoBasicAttack)

part1

My issue is that I can’t systematically distinguish between GA_CommandoAbility1 and GA_CommandoBasicAttack because they don’t require the same attributes and method implementations

Normal abilities use cooldowns (like spells/abilities from mobas), BasicAttack use animation speed for frequency of attacks
I want to distinguish them through different attributes (animation based or cooldown based, range, base damage, etc)
I would like to do it systematically, like adding a single component or different inheritance logic so I don’t have to set everything by hand

My current solution is to have all the logic in the parent ability, set a boolean bIsBasicAttack to true and then set rest of the attributes manually:

  • setting AbilityTags and BlockAbilityTags with the appropriate gameplayTags
  • overriding specific parent functions only in the basicAttack Ability.

But there’s got to be a better/cleaner way, no ?

Any help/links would be much appreciated
Thanks

Bump

bump bump