The Gameplay Abilities is a plugin to handle gameplay mechanics in C++ or Blueprints. It also handles the replication.
- 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.
- 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
- 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.
- The 'bool' flags of a actors game state.
- 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.
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.
- Revoke access to an Ability from an Ability System Component,
- Use ability
- Other 2
- Stop Ability
- EndAbility - All path must lead to Endability to clean up.
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.
- Instanced per Actor
- Instanced per Execution
- Local Predicted - Most players
- Local Only:
- Server Initiated
- Server Only
- 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.
- 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.
- UE4 Docs - Gameplay Ability System
- Gameplay Abilities in Action RPG
- GameplayAbilities and You
- Hero AI - Gameplay Abilities Meet Behavior Trees