Engines‎ > ‎Unreal‎ > ‎Plugin‎ > ‎

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
Comments