1. Gameplay Cue
    1. Encapsulates cosmetic effects
  2. Gameplay Effects
    1. Instant changes to the Attribute's base value.
    2. Temporary changes (often called "Buffs" or "Debuffs")
    3. Persistent changes applied over time, like a health regeneration effect
  3. Gameplay Attributes
    1. Inherit public UAttributeSet
      1. FGameplayAttributeData Health;
        1. They are generally modified by Gameplay Effects.
      2. Once you have created an AttributeSet, you must register it with the AbilitySystemComponent.
    2. Encapsulates 'state' in float values
  4. Revoking Abilities
    1. Execution lifecycle
      1. CanActivateAbility
      2. CallActivateAbility
      3. CommitAbility
      4. EndAbility
        1. Always call EndAbility to end correctly! Except when we CancelAbility.
      5. TryActivateAbility
    2. After being granted to an Actor's Ability System Component
  5. Granting access to Ability
    1. Ability System Component
      1. GiveAbility
      2. GiveAbilityAndActivateOnce
      3. ClearAbility
      4. SetRemoveAbilityOnEnd
      5. ClearAllAbilities
      6. Using the FGameplayAbilitySpecHandle that was returned when the Ability was granted
  6. Triggering with Gameplay Events
    1. Can trigger Ability with a payload GameplayEventData
  7. Some GameplayAbility properties
    1. Replication Policy
      1. Do Not Replicate
      2. Replicate
    2. Instancing Policy
      1. Non Instanced
        1. Doesn't spawn. Great for abilities that run frequently, like shoot • C++ only • Must not change member variables • Must not bind Delegates • Can not replicate variables or handle RPCs
      2. Instanced Per Actor
        1. Spawns once and reuse it for future executions. • Network efficient: no spawn/destroy • Can hold variables, have delegates bindings, RPC's, etc.
      3. Instanced Per Execution
        1. Spawns each time the ability runs.
    3. Net Execution Policy
      1. Local Predicted
      2. Local Only
      3. Server Initiated
      4. Server Only
    4. Net Security Policy
      1. Client Or Server
      2. Server Only Execution
      3. Server Only Termination
      4. Server Only
    5. Cancel Abilities Matching Tag Query
    6. Each Ability has Gameplay Tags
      1. Ability Tags
        1. The Gameplay Tags this ability has
      2. Cancel Abilities With Tag
        1. Cancels any already-executing Ability
      3. Block Abilities With Tag
        1. Prevents execution of any other Ability
      4. Activation Owned Tags
        1. Tags to apply to activating owner
      5. Activation Required Tags
        1. Only run ability if activating object has all of these tags
      6. Activation Blocked Tags
        1. Block ability if activating object has any of these tags
      7. Source Required Tags
        1. Only run ability if the source object has all of these tags
      8. Source Blocked Tags
        1. Block ability if the source object has any of these tags
      9. Target Required Tags
        1. Only run ability if the target object has all of these tags
      10. Target Blocked Tags
        1. Block ability if the source object has any of these tags
    7. Triggering a GameplayEffect when Ability is commited
      1. "Cost Gameplay Effect Class"
        1. Represents the cost
      2. "Cooldown Gameplay Effect Class"
        1. Represents the cooldown
    8. Ability triggers array
      1. Trigger Tag
      2. Trigger Source
        1. Gameplay Event
        2. Owned Tag Added
        3. Owned Tag Present