Gameplay Ability

The Gameplay Abilities is a plugin to handle gameplay mechanics in C++ or Blueprints. It also handles the replication.

Setup

    • To use the Gameplay Ability System attach the AbilitySystemComponent to any actor that implements the IAbilitySystemInterface.
    • Easy way is to CreateDefaultSubObject<UAbilitySystemComponent>(TEXT("AbilitySystem"));
    • The Component will activate abilities, store attributes, update effects, and handle interactions between actors.
    • GiveAbility
    • For pawns after possession call AbilitySystem->InitAbilityActorInfo().
      • Owner - The actor responsible for the abilitysystem.
      • Avatar- The actor through witch the ability system use abilities from.
      • RefreshAbilityActorInfo, BindAbilityActivationToInputComponent

AttributeSet

    • The float values of an actors game state.
    • Each FGameplayAttribue is described with UPROPERTY.
    • Functions to supervise any attemts to modify them, they are modified using GameplayEffects.
      • PreAttributeBaseChange / PreAttributeChange - Use to clamp values.
      • PreGameplayEffectExecute - Use to trigger actions from attribute change.
      • PostGameplayEffectExecute - Use to modify or discard the values passed into an effect execution.
    • AttributeSet needs to register with the ability system component. Set it as a subobject of the component owning actor or use the components GetOrCreateAttributeSubobject.
    • Use AbilitySystem::InitStats to init with a datatable.

GameplayTags

    • The 'bool' flags of a actors game state.
    • RegisterGamePlayTagEvent

GameplayEffects (GE_)

    • Implemented as data-only Blueprints (of base class UGameplayEffect).
    • Gameplay Effects are designed to be configured purely through variables.
    • 'Buffs' / 'Debuffs'.
    • ApplyGamePlayEffectToTarget, ApplyGameplayEffectoToOwner
    • Have tags
    • Modify attributes.
    • Add/remove tags.
    • Blocked by tags on owner or target.
    • Handle stacking of effects and overflow the stack
    • Trigger events
    • Can be instant, duration or infinite.
      • Instant: Direct changes to the Attribute's base value, like taking away health points from an Actor that has received damage.
      • Infinite: Persistent changes that are applied over time, like regenerating a certain amount of magic points per second over a period of several seconds (or indefinitely).
      • Had Duration: Temporary changes, like granting a boost to movement speed for a few seconds.

GameplayEffectSpecs

GameplayCues (GC_)

Gameplay Abilities (GA_)

    • C++ or Blueprint children of something with GameplayAbility as a ancestor.
      • GameplayAbility - Basic ability.
      • GameplayAbility_Montage - Ability that play a montage.
    • WaitTargetData node at the beginning to allow the player to visualize aiming.
    • Cooldown and cost will be applied when CommitAbility is used.
    • Before an Actor can use an Ability, its Ability System Component must be granted that Ability.
      • GiveAbility
      • GiveAbilityAndActivateOnce
    • Revoke access to an Ability from an Ability System Component,
      • ClearAbility
      • SetRemoveAbilityOnEnd
      • ClearAllAbilities
    • Other
      • CanActivateAbility
    • Use ability
      • CallActivateAbility
      • TryActivateAbility
    • Other 2
      • CommitAbility
      • ActivateAbility
    • Stop Ability
      • CancelAbility
      • CanBeCanceled
      • EndAbility - All path must lead to Endability to clean up.

Tags

This section can use tags to cancel abilities, block abilities, set tags and require/block the ability based on the activating, source or target actor/component (*).

    • Cancel Abilities With Tag Abilities with these tags are canceled when this ability is executed.
    • Block Abilities With Tag Abilities with these tags are blocked while this ability is activated.
    • Activation Owned Tags Tags to apply to activating owner while this ability is activated.
    • * Required Tags Ability can only be activated if the * actor/component has all of these tags.
    • * Blocked Tags The activation is blocked if the * actor/component has any of these tags.

Instancing Policy

    • Non-Instanced
    • Instanced per Actor
    • Instanced per Execution

Replication

    • Local Predicted - Most players
    • Local Only:
    • Server Initiated
    • Server Only

Other

    • Triggers: Makes it possible to execute the ability when a event is received, when a tag is added or activated/deactivated when a tag is added/removed.
    • Cost gameplay effect class: When the ability is commited this can be used to drain the (mana, stamine, etc) cost of the ability.
    • Colldown gameplay effect class: Applied when the ability is commited. The ability can not be used again until this has expired.

FGameplayAbilitySpec

FGameplayAbilitySpecHandle

Ability Tasks

    • They perform asynchronous work during a Gameplay Ability's execution, and have the capability to affect execution flow by calling Delegates (in native C++ code) or moving through one or more output execution pins (in Blueprints)
    • Ability Tasks can self-terminate by calling the EndTask function, or it can wait to be terminated automatically when the Gameplay Ability that ran it ends.

Gameplay Events

References