Schott's Documentation/Contribution
GASP Dynamic Additive Overlay (DAO) - Project Manual
This manual consolidates information about the GASP Dynamic Additive Overlay (DAO) project, an Unreal Engine template, based on video descriptions and transcripts from the UnrealDevOp channel. It covers the project overview, core components, data assets, item management, animation layers, implementation details, project setup, version history, tools, and additional tips.
Table of Contents
Version Updates & Key Changes (Chronological) (Includes versions 1.49 down to 1.24) The Following are Missing:
Detailed Mechanics (Integrated from Video Reference Guide) 9.1. Item and Held Objects System (
AC_HeldObject_Master
,AC_Gun
) 9.2. Slot and Holster System (AC_SlotManager
) 9.3. Animation and Layering System 9.4. Character Setup & Retargeting 9.5. Specific Gameplay MechanicsTools & External Software
Additional Topics and Tips
1. Project Overview & Philosophy
The GASP Dynamic Additive Overlay (DAO) project by UnrealDevOp is an advanced character animation and interaction system for Unreal Engine, built upon the Game Animation Sample Project (GASP) and its motion matching capabilities. It emphasizes a highly data-driven architecture using Data Assets, Chooser Tables, and Gameplay Tags to manage character states, animation layering, item handling (weapons, flashlights, etc.), and live retargeting for diverse character anatomies. Key features include a custom dynamic additive overlay system for realistic weapon holding during movement, a precise aim offset system (including distance-based compensation), a robust item slot and holstering mechanism, and progressively implemented network replication.
1.1. Developer Resources
BuyMeACoffee: https://buymeacoffee.com/j0hnc0nn0r
Project Files (Ko-fi): https://ko-fi.com/unrealdevop
Official Documentation (GitBook): https://unreal-devop.gitbook.io/gasp-dynamicadditiveoverlay
Discord: https://discord.gg/38ceaJ67Eu
Key Videos: Links to the Discord are in most video descriptions.
1.2. Educational Purpose & Licensing
Description: The project is primarily intended as an educational tool to demonstrate advanced animation techniques within Unreal Engine, particularly building upon the Game Animation Sample Project (GASP). While educational, it's released under an MIT license, which is generally permissive. However, the creator has implemented a EULA via Ko-fi that requires attribution (credit via a BSD 3-Clause style notice) if used in a compiled game, and restricts reselling the source code.
Key Video: "Unreal Engine 5; GASP-DAO (Major Changes And Why)" (discusses the move to Ko-fi and the EULA).
1.3. Evolving Project
Description: The creator consistently emphasizes that GASP-DAO is an actively evolving project. Features are frequently added, refactored, and improved. This means that specific Blueprint setups, variable names, or even entire sub-systems might change between versions. Users should expect this and refer to the latest overview videos for the most current information.
Key Videos: This is a recurring theme in most update overview videos (e.g., "Unreal Engine 5 - GASP DAO (Update 1.10)", "Unreal Engine 5; GASP DAO (v1.3x) series", etc.).
1.4. Data-Driven Approach
Description: A cornerstone of GASP-DAO is its heavily data-driven architecture. This primarily involves:
Primary Data Assets (PDAs): Used to store configurations for items, weapons, IK offsets, layering settings, etc. (e.g.,
PDA_ActionData_Weapon
,PDA_HeldObjectSettings
).Chooser Tables: Unreal Engine's Chooser system is used extensively to select appropriate Data Assets at runtime based on context (e.g., character type, equipped item, character state). This allows for dynamic selection of animation sets, IK settings, and more.
Gameplay Tags: Widely used for identifying states (character states, item states, stances), item types, and as keys in maps within Data Assets (e.g., for selecting montages or IK offsets).
Purpose: This approach promotes flexibility, reduces hardcoding, makes it easier to add new content (characters, weapons) with varied behaviors, and manage complex interactions.
Key Videos: "GASP DAO V1.47 (Item Handling System)" (excellent example for item and character data), "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (general data asset usage), "Unreal Engine 5; GASP DAO (V1.31 Overview)" (Chooser usage for Live Retargeting assets).
1.5. Dynamic Additive Overlay (DAO) System
Description: This is the custom animation layering system built by the creator, inspired by concepts from the Advanced Locomotion System (ALS). It allows for complex character animation by dynamically layering poses (like holding a weapon) with base locomotion and other additive animations. It's the foundation for how weapons, items, and different states are visually represented on the character.
Key Videos: "Unreal Engine 5 - Advanced Motion Matching Dynamic Overlay Layering (Coming Soon)" (introduces the concept), "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (explains layering setup), "Unreal Engine 5.4 - Motion Matching; Dynamic Additive Layering (Part 1)" (detailed setup).
1.6. Motion Matching Integration
Description: The entire system is built upon and enhances Unreal Engine's Motion Matching, as provided in the Game Animation Sample Project (GASP). Familiarity with GASP's core motion matching principles is beneficial.
Key Videos: This is foundational to almost all videos. "Unreal Engine 5 - ALS vs Motion Matching (Performance Profiling)" discusses performance aspects.
1.7. Replication
Description: Network replication for multiplayer has been progressively added and refined. Initial versions might have had limited replication. Features like item handling, aiming states, traversal, and projectile spawning have seen specific replication updates. The creator sometimes used plugins like SmoothSync for testing but these are not included in the project.
Key Videos: "Unreal Engine 5; GASP DAO (v1.33 Overview)" (mentions traversal replication refactor), "Unreal Engine 5; GASP DAO (v1.25 Overview)" (discusses aim offset replication, projectile replication with SmoothSync for testing), "GASP_DynamicAdditiveOverlay(1.37)" (Distance Based AO replication, ItemsInHand replication refactor).
1.8. Project Management & Access
GitHub Repository:
Details: The GASP-DAO project was moved to a GitHub repository to facilitate version control, updates, and community access. Initially, it was a private repo, then public using Git LFS (Large File Storage) for larger assets. Later, the project was refactored to reduce overall size and remove the dependency on LFS, making it more accessible. The setup process involves cloning the DAO repo and then copying over files from a base Game Animation Sample Project.
Key Videos: "Unreal Engine 5; GASP DAO (New GitHub Repo)", "Unreal Engine 5; GASP DAO (GitHub Setup)", "Unreal Engine 5; Gasp-DAO (v1.40 Overview)" (new setup process without LFS).
Ko-fi:
Details: Used for distributing project files (both direct downloads and repo access) and for users to support the project's development. The creator implemented a paywall and EULA via Ko-fi for legal protection and to ensure attribution.
Key Videos: This is mentioned in the description of almost all recent videos as the source for project files. "Unreal Engine 5; GASP-DynamicAdditiveOverlay (Major Changes And Why)" explains the move to Ko-fi.
2. Initial Project Setup
The initial project setup, especially when using the GitHub repository, involves the following steps:
Clone the Repository:
Use GitHub Desktop or the command line to clone the repository:
https://github.com/JC0NN0R/GASP-DynamicAdditiveOverlay
.Note: The project might use Git LFS (Large File Storage). Ensure Git LFS is installed.
Create a Base GASP Project (Game Animation Sample Project):
In the Epic Games Launcher, create a new "Game Animation Sample Project" using the compatible engine version (e.g., UE 5.x, check project specifics for exact version).
Copy GASP Files to Cloned Repository:
Copy the contents of the newly created GASP project folder into the cloned repository folder.
Attention: When copying, if prompted to replace files in the
Config
folder, DO NOT REPLACE the files in the cloned repository. The cloned repository'sConfig
files contain DAO-specific settings like Gameplay Tags.
Project Configuration in Unreal Engine:
Open the
.uproject
file from the cloned repository.World Settings: Set the
Default Pawn Class
toCBP_SandboxCharacter_DAO
(located inContent/DAO/CharData/
or similar).Gameplay Tags: Verify in
Edit > Project Settings > Gameplay Tags
that the DAO tag tables are loaded (e.g.,GT_DAOHeldObjectStatesStances
,GT_MetaHumanTags
). If not, add them. Tables are usually inContent/DAO/Blueprints/Data/GameplayTags/
or character-specific data folders.Virtual Bones (for UEFN Mannequin):
Open the Skeletal Mesh of
UEFN_Mannequin
(usually inContent/Characters/UEFN_Mannequin/Meshes/
).Add the following Virtual Bones if they don't exist:
VB foot_root
(Source:root
, Target:root
)VB foot_l
(Source:foot_l
, Target:foot_l
)VB foot_r
(Source:foot_r
, Target:foot_r
)VB hand_r
(Source:hand_l
, Target:hand_r
)VB hand_l
(Source:hand_r
, Target:hand_l
)
Sockets (for Retargeted/MetaHuman Characters):
For custom characters (MetaHumans, Character Creator, etc.), add a socket named
HeldObject_R
to the right-hand bone (e.g.,hand_r
) andHeldObject_L
to the left-hand bone (hand_l
). The transforms of these sockets can be adjusted in the character-specificLiveRetargeting
Data Asset.
NavMesh: Add a
Nav Mesh Bounds Volume
to your level for AI and some movement mechanics to function correctly.
3. Core Character & Animation Blueprints
3.1. CBP_SandboxCharacter_DAO
(Character Blueprint)
CBP_SandboxCharacter_DAO
(Character Blueprint)Role: The primary player character Blueprint. It inherits from GASP's
SandboxCharacter
(or a similar base) and is responsible for:Input handling (Enhanced Input Actions).
Managing character states via Gameplay Tags (e.g.,
HeldObjectState
,StanceState
,DAO.HeldObject.State.Rifle
,DAO.HeldObject.Stance.Aim
).Initiating actions like firing, reloading, equipping/holstering items, traversal, and contextual animations.
Communicating necessary data to the
ABP_SandboxCharacter_DAO
(e.g.,IsAiming
,CurrentHeldObjectStateTagContainer
).Managing the
AC_SlotManager
component for item inventory/holstering.Handling replication for character states and actions.
Calculating and applying Distance Based Aim Offset (DBAO).
It's the central hub for character-related logic.
Location:
Content/DAO/CharData/CBP_SandboxCharacter_DAO.uasset
(or similar path, may vary slightly by version)Key Features to Edit/Implement Here:
Input Actions: (Located in
Content/Input/
) Mapped inIMC_Sandbox_DAO
. Logic for these actions (e.g., switching weapons, firing, aiming, interacting) is implemented in the Event Graph ofCBP_SandboxCharacter_DAO
.Video Reference: "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (00:18:15 Input), "Unreal Engine 5; GASP DAO (v1.38 Overview)" (00:08:00 InputActions hotkey in bubble).
Held Object/Weapon Logic: Switching weapons, managing
HeldObjectState
(Gameplay Tag), initiating fire/reload. Replication of held object states.Video Reference: "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (00:41:56 Switching Held Object States), "Unreal Engine 5; GASP DAO (v1.25 Overview)" (Projectile Replication).
Live Retargeting Setup (for this character type): While individual character assets have their own IK Retargeters,
CBP_SandboxCharacter_DAO
(and its children) manage whichPDA_LiveRetargeting_Settings
orDA_HOS_IK_Offset
Data Assets are used based on the equipped item, stance, and character type (often via Choosers).Video Reference: "Unreal Engine 5 - GASP DAO (Update 1.08 Live Retargeting)", "Unreal Engine 5 GASP DAO (V1.31 Overview)" (Choosers for Live Retargeting Assets).
Traversal Logic: Initiating GASP's traversal system and handling item auto-holster/equip during traversal.
Video Reference: "Unreal Engine 5; GASP DAO (v1.33 Overview)" (Traversal replication refactor), "GASP_DynamicAdditiveOverlay(1.48)" (Traversal interruption fixes).
Contextual Animations: Initiating and managing contextual animation scenes (e.g., pistol pickup, takedowns).
Video Reference: "Unreal Engine 5; Pistol Pickup Part 3 (Setup)", "Unreal Engine 5; Player Take Down Part 2 (Setup)".
Distance Based Aim Offset (DBAO) Calculation: Logic for calculating the DBAO is in this BP.
Video Reference: "Unreal Engine 5; Gasp-DAO (Distance Based AO)".
Key Video References (General):
General Logic & Input: "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (00:21:30 Blueprint Intro, 00:18:15 Input)
Item & State Handling: "Unreal Engine 5 GASP DAO (V1.31 Overview)" (HeldObjectState Gameplay Tag), "Unreal Engine 5; GASP-DAO v1.46 (Overview)" (Pickup Logic)
3.2. ABP_SandboxCharacter_DAO
(Main Animation Blueprint)
ABP_SandboxCharacter_DAO
(Main Animation Blueprint)Role: The primary Animation Blueprint for the main character. It integrates GASP's Motion Matching with DAO's custom layering systems. It drives:
GASP Motion Matching for base locomotion.
The custom Dynamic Additive Overlay system for layering poses (e.g., weapon holding) onto locomotion.
Aim Offset calculations and application (Universal AO and Custom Per-Weapon AO).
IK (Hand & Foot), including Hand IK for weapon holding and Foot IK for ground alignment.
Playing animation montages on various slots (
OverlayFullBody
,OverlayUpperBody
, etc.).Linking to specialized
ALI_...
(Anim Layers) for item-specific animation logic.
Location:
Content/DAO/CharData/ABP_SandboxCharacter_DAO.uasset
(or similar path)Key Features to Edit/Implement Here:
Dynamic Additive Overlay Layering: The core layering logic is in the AnimGraph. Settings are driven by Data Assets selected via Choosers.
Video Reference: "Unreal Engine 5.4 - Motion Matching; Dynamic Additive Layering (Part 1)", "Unreal Engine 5 - GASP DAO (Update 1.10)" (Layering Expansion).
Aim Offset Logic: Applying pitch and yaw rotations for aiming. Can switch between Universal AO and Custom AO poses.
Video Reference: "Unreal Engine 5 GASP DAO (V1.30 Overview)" (Universal Aim Offset), "GASP_DynamicAdditiveOverlay(1.43)" (Custom Aim Offsets reintroduced), "Unreal Engine 5; GASP-DAO V1.44 (HotPatch Overview)" (Offset Root Bone interaction with Aim Offset for responsiveness).
Hand IK: Two-Bone IK setup for left/right hands, often using Virtual Bones as targets. Includes the "Procedural Offset Hack" for stable hand placement.
Video Reference: "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (01:32:27 Socket Based Offsets / Procedural Offset Hack), "Unreal Engine 5 - GASP Dynamic Additive Overlay (Overview v1.16)" (HandIK section).
Foot Locking & Foot IK: Integration of GASP's foot placement and locking.
Video Reference: "GASP_DynamicAdditiveOverlay(1.48)" (Foot Locking Reintroduced).
Montage Slots: Defining and using animation slots (
OverlayFullBody
,OverlayUpperBody
, etc.) for playing montages.Video Reference: "Unreal Engine 5 - GASP DAO (Update 1.15)" (New slots).
Custom Idle & Turn In Place: Logic for custom idle states and alternative Turn-In-Place mechanics.
Video Reference: "Unreal Engine 5 - GASP DAO (Update 1.20)", "Unreal Engine 5; GASP DAO - Custom Idle & TurnInPlace (Breakdown)".
Key Video References (General):
Overall Structure: "Unreal Engine 5 - GASP Dynamic Additive Overlay (Overview v1.16)" (0:24:25 Animation Blueprint)
4. Data Assets & Configuration
Central to DAO's data-driven design.
4.1. Primary Data Assets (PDAs) for Items/Actions (e.g., PDA_ActionData_Weapon
, PDA_ItemCharData
, DA_AD_Weapon_M9
)
PDA_ActionData_Weapon
, PDA_ItemCharData
, DA_AD_Weapon_M9
)Location: Various subfolders under
Content/DAO/Blueprints/Data/
,Content/DAO/Characters/[CharType]/Data/
, orContent/DAO/Blueprints/HeldObjects/[WeaponName]/Data/
. Older versions might haveContent/DAO/Blueprints/Data/ActionData/
.Role: Store configuration for weapons, items, and actions. This includes:
Skeletal Mesh for the weapon.
ItemID
(Gameplay Tag identifying the item).LinkedAnimLayerClass
(e.g.,ALI_Pistol_DAO
).Animation Montages (equip, unequip, fire, reload) looked up by Gameplay Tags.
HeldObjectOffset
settings (offsets for hand placement, often per stance, leading toDA_HOS_IK_Offset
assets).Define item properties, animation montages (equip, unequip, fire, reload), linked anim layers, and character-specific IK offsets.
Editing: Modify these to change weapon meshes, animations, or character-specific holding offsets.
Key Videos: "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (Action Data, 00:27:27), "GASP DAO V1.47 (Item Handling System)" (Item Char Data and Choosers).
4.2. Data Assets for Layering (PDA_OverlayLayering
, e.g., PDA_OverlayLayering_Rifle_IdleAim
)
PDA_OverlayLayering
, e.g., PDA_OverlayLayering_Rifle_IdleAim
)Location:
Content/DAO/Blueprints/Data/LayeringData/
Role: Define how the Dynamic Additive Overlay system behaves for different states (e.g., Idle Aiming, Running Ready). Controls blend weights and spaces (Mesh/Local) for legs, pelvis, spine, arms, head.
Editing: Adjust these to change how stiff or dynamic the character appears when holding items in various states.
Key Videos: "Unreal Engine 5.4 - Motion Matching; Dynamic Additive Layering (Part 1)", "Unreal Engine 5 - GASP DAO (Overview v1.16)" (Layering Data Assets, 0:45:45).
4.3. Data Assets for Live Retargeting (PDA_LiveRetargeting_Settings
, DA_HOS_IK_Offset
, e.g., DA_HOS_IK_Offset_MetaHumanTall_M9_Aim
)
PDA_LiveRetargeting_Settings
, DA_HOS_IK_Offset
, e.g., DA_HOS_IK_Offset_MetaHumanTall_M9_Aim
)Location: Typically character-specific, e.g.,
Content/DAO/Characters/MetaHumans/Rigs/[CharName]/HeldObjects/[WeaponName]/
or within broader Data Asset folders.Role:
PDA_LiveRetargeting_Settings
: Stores IK chain adjustments (FK, IK, Speed Planting) for live retargeted characters.DA_HOS_IK_Offset
: Stores the precise X,Y,Z location and Pitch,Yaw,Roll rotation offsets for the character's hands (L/R) for a specific weapon in a specific stance. Fine-tuned using the in-game debug widget.
Editing: Crucial for correcting hand placement and aim for different characters using the same animations.
Key Videos: "Unreal Engine 5 - GASP DAO (Update 1.08 Live Retargeting)", "Unreal Engine 5; GASP DAO (v1.21 Overview)" (Data Asset Hand Correction Overview, 07:47), "Unreal Engine 5; GASP DAO (v1.3x) (Custom Character Setup)".
4.4. Chooser Tables (CHT_...
)
CHT_...
)Location:
Content/DAO/Blueprints/Data/Choosers/
(main ones), or character-specific data folders.Role: Dynamically select Data Assets at runtime. For example, a Chooser selects the correct
PDA_OverlayLayering
based on current character state (e.g.,HeldObjectState
,Stance
,IsMoving
). Another Chooser selects the correctPDA_LiveRetargeting_Settings
orDA_HOS_IK_Offset
based on character type and equipped item.Editing: Modify Choosers to change which Data Assets are loaded for specific contexts.
Key Videos:
Layering Settings: "Unreal Engine 5 - GASP Dynamic Additive Overlay (Overview v1.16)" (Chooser for Layering Data, 0:56:26 Updating Layering Data)
Live Retargeting Assets: "Unreal Engine 5 GASP DAO (V1.31 Overview)"
Item Character Data: "GASP DAO V1.47 (Item Handling System)" (00:04:35 Char Data Chooser)
4.5. Gameplay Tags (GT_...
)
GT_...
)Location: Managed in Project Settings and stored as Data Table assets (e.g.,
GT_DAO_States
,GT_MetaHumanTags
) usually inContent/DAO/Blueprints/Data/GameplayTags/
(or similar, project settings also manage these). Tags are often organized into separate tables.Role: Identify states (character states, item states, stances like
DAO.HeldObject.State.Rifle
,DAO.HeldObject.Stance.Aim
), item types, character types, and serve as keys in Data Asset maps.Editing: Add new tags in Project Settings or by editing the Data Table assets.
Key Videos: "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (Gameplay Tags, 00:34:53), "Unreal Engine 5; GASP DAO (v1.38 Overview)" (Gameplay Tags separated into tables, Tag separation).
5. Item & Slot Management
5.1. AC_HeldObject_Master
& AC_Gun
(Actor Components)
AC_HeldObject_Master
& AC_Gun
(Actor Components)Location:
Content/DAO/Blueprints/HeldObjects/Components/
(or similar).Role: These components are attached to item Blueprints.
AC_HeldObject_Master
: Base component for all equippable/interactable items. ManagesItemID
(Gameplay Tag),DisplayName
, attachment socket names, physics replication, and the core equip/unequip event-driven logic via Montage Notifies. Fires events for equip/unequip lifecycle.AC_Gun
: Child/Inherits fromAC_HeldObject_Master
, adds firearm-specific logic like firing and reloading.
Editing: Extend these to add new item types or modify core item behaviors. The actual equip/unequip montage logic is largely driven by this component interacting with the
AC_SlotManager
.Key Videos:
Detailed Breakdown: "GASP DAO V1.47 (Item Handling System)" (deep dive into these components)
Refactor for Item Logic: "Unreal Engine 5; GASP-DAO v1.46 (Overview)" (refactor of these components)
5.2. BP_HeldObjects_Master
(Base Item Actor)
BP_HeldObjects_Master
(Base Item Actor)Location:
Content/DAO/Blueprints/HeldObjects/BP_HeldObjects_Master.uasset
(or similar).Role: The base/Parent Blueprint class for all physical pickupable item actors in the world (weapons, flashlights). Must have a PrimitiveComponent (Static or Skeletal Mesh) as its root for proper physics and pickup. It includes the
AC_HeldObject_Master
component.Editing: Create children of this BP for new items.
Key Videos:
Refactor: "Unreal Engine 5; GASP-DAO v1.46 (Overview)" (refactor to use components)
Interaction: "Unreal Engine 5; GASP DAO v1.35 (Project Setup & Intro '1')" (08:46 Handling Items)
5.3. AC_SlotManager
(Actor Component on CBP_SandboxCharacter_DAO
)
AC_SlotManager
(Actor Component on CBP_SandboxCharacter_DAO
)Location: Attached to
CBP_SandboxCharacter_DAO
. Can also be found inContent/DAO/Blueprints/Components/AC_SlotManager.uasset
(or similar).Role: Manages item slots (holsters) on the character. Handles attaching/detaching items and Slot Actors to character sockets. Defines which items can go into which slots using Gameplay Tags. Manages the character's item slots, attachment of items to these slots, and the logic for drawing and holstering items.
Editing: Configure
ItemSlots
array inCBP_SandboxCharacter_DAO
'sAC_SlotManager
component details to define new holsters or attachment points.Key Videos:
Detailed Explanation: "Unreal Engine 5; GASP-DAO (Slot Manager and Item Handling)"
Slot Actor Setup: "Unreal Engine 5; GASP-DAO (Slot Actor Setup Explained)"
Refactoring for Event-Driven System: "Unreal Engine 5; Gasp-DAO V1.45 (Overview)"
5.4. BP_Slot_Master
(Base Slot Actor)
BP_Slot_Master
(Base Slot Actor)Location:
Content/DAO/Blueprints/HeldObjects/Slots/BP_Slot_Master.uasset
(or similar).Role: Parent/Base Blueprint class for visual holsters or attachment points that are themselves actors in the world (and can be picked up from v1.38+). These are attached to the character by
AC_SlotManager
and items are then attached to theseBP_Slot_Master
instances. Contains anAC_HeldObject_SlotActor
component.Editing: Create children of this for new holster types.
Key Videos: "Unreal Engine 5; GASP-DAO (Slot Actor Setup Explained)".
6. Specialized Animation Layers & Poses
6.1. Linked Anim Layers (ALI_...
, e.g., ALI_Pistol_DAO
, ALI_Rifle_DAO
)
ALI_...
, e.g., ALI_Pistol_DAO
, ALI_Rifle_DAO
)Role: Specialized Animation Blueprint Layers that provide item-specific animation logic (state machines for idle, locomotion, aiming, firing) that gets linked into the main
ABP_SandboxCharacter_DAO
. Child ALI classes can be created for specific weapons to override poses.Location:
Content/DAO/Character/Animations/LinkedAnimLayers/
(or weapon-specific subfolders, may be item-specific).Editing: Duplicate and modify these to create animation sets for new weapon types or to customize existing ones.
Key Video References:
Setup: "Unreal Engine 5 GASP DAO (V1.30 Overview)" (Linked Anim Layer Child Classes)
Data Flow: "Unreal Engine 5; GASP DAO (v1.23 Overview)" (06:04 Linked Anim Layers)
Caching MainAnimBP values: "GASP_DynamicAdditiveOverlay(1.48)"
Output warnings fixed: "Unreal Engine 5; GASP DAO (v1.33 Overview)"
6.2. Control Rig Poses (CR_...
, various pose assets PA_...
)
CR_...
, various pose assets PA_...
)Location: Poses are often stored near their related animations or in dedicated "Poses" folders (e.g.,
Content/DAO/Character/Animations/UEFN/Poses/
).Role: Control Rigs (e.g.,
CR_UEFN_Mannequin_Body
) are used within Sequencer to create/modify static poses. These are then baked into single-frame animation sequences orPoseAsset
files. Used for idle stances, aiming poses, Aim Offset poses, etc.Editing: Use Sequencer with the appropriate Control Rig to create or adjust poses.
Key Videos: "Unreal Engine 5 - GASP DAO; Adding States (Part 1)" (modifying one-handed poses), "Unreal Engine 5; GASP DAO - Fixing Animations For Custom Guns" (modifying rifle poses).
6.3. Pose Drivers & Corrective Animations
Location: Often part of a Post Process AnimBP (e.g.,
ABP_CorrectivePoseDriver_Metahuman
).PoseAsset
files store the target poses.Role: Used to drive corrective bone adjustments based on the rotation of a source bone (e.g., forearm twist based on hand rotation) to improve deformation.
Editing: Modify the
PoseAsset
or thePoseDriver
node settings in the Post Process AnimBP.Key Videos: "Unreal Engine 5; Post Process Corrective Bone Pose Drivers".
7. Implementation Guide
7.1. Project Summary
The GASP Dynamic Additive Overlay (DAO) project by UnrealDevOp is an advanced character animation and interaction system for Unreal Engine, built upon the Game Animation Sample Project (GASP) and its motion matching capabilities. It emphasizes a highly data-driven architecture using Data Assets, Chooser Tables, and Gameplay Tags to manage character states, animation layering, item handling (weapons, flashlights, etc.), and live retargeting for diverse character anatomies. Key features include a custom dynamic additive overlay system for realistic weapon holding during movement, a precise aim offset system (including distance-based compensation), a robust item slot and holstering mechanism, and progressively implemented network replication. The project is intended for educational purposes but has evolved into a comprehensive template suitable for third-person action games.
7.2. Main Classes & Blueprints (Implementation Context)
This section lists the primary Blueprints and assets involved in the DAO system, reiterating their roles in the context of implementation. For full details on each, refer to their respective sections earlier in this document.
CBP_SandboxCharacter_DAO
(Character Blueprint): Central logic for input, state management, item interaction, traversal, contextual animations, replication, and DBAO.ABP_SandboxCharacter_DAO
(Main Animation Blueprint): Drives Motion Matching, Dynamic Additive Overlay, Aim Offset, IK, montages, and links toALI_...
.ALI_...
(Linked Anim Layers): Item-specific animation logic (state machines, poses).AC_SlotManager
(Actor Component): Manages character item slots, holstering, and item attachment.AC_HeldObject_Master
&AC_Gun
(Actor Components): Attached to items; manage item ID, attachment, physics, equip/unequip events (AC_HeldObject_Master
), and firearm logic (AC_Gun
).BP_HeldObjects_Master
(Actor Blueprint): Base class for all physical item actors.BP_Slot_Master
(Actor Blueprint): Base class for visual holster actors.Primary Data Assets (
PDA_...
) & Data Assets (DA_...
): Define item properties, animation montages, layering settings, IK offsets, etc.Chooser Tables (
CHT_...
): Dynamically select Data Assets at runtime.Gameplay Tag Tables (
GT_...
): Define Gameplay Tags for states, item types, etc.
7.3. Key Feature Implementation Locations & Video References
Here's a breakdown of where to edit/implement features and relevant tutorial videos:
1. Animation Layering (Dynamic Additive Overlay)
Description: The core system that blends weapon holding/action poses with base locomotion.
Where to Edit/Implement:
Logic:
ABP_SandboxCharacter_DAO
(AnimGraph, "Dynamic Additive Overlay" or similar custom nodes/layers).Settings:
PDA_OverlayLayering_...
Data Assets (define blend weights, mesh/local space for different body parts).Selection:
CHT_OverlayLayering
(or similar Chooser Table) selects the appropriatePDA_OverlayLayering
based on character state.
Video References:
Expansion: "Unreal Engine 5 - GASP DAO (Update 1.10)"
Overview: "Unreal Engine 5 - GASP Dynamic Additive Overlay (Overview v1.16)" (0:32:15 Animation Layering)
2. Aim Offset System
Description: Allows the character to aim up, down, left, and right independently of their movement direction. Includes Universal AO (shared poses) and Custom AO (weapon-specific poses), and Distance Based Aim Offset (DBAO).
Where to Edit/Implement:
Logic & Calculation:
ABP_SandboxCharacter_DAO
(calculates yaw/pitch, applies to spine/blendspace),CBP_SandboxCharacter_DAO
(DBAO calculation, setting aim values).Poses: Aim Offset poses (e.g.,
AO_Pistol_Aim_U
,AO_Pistol_Aim_LDRD
) created in Sequencer using Control Rig, often stored as single-frame animations or withinPoseAsset
files. The Universal AO poses are usually inContent/DAO/Character/Animations/UEFN/AimOffset/UniversalAimOffset/
.Data Assignment: Custom AO poses are assigned in the child
ALI_...
(Linked Anim Layer) for the specific weapon (seeGASP_DynamicAdditiveOverlay(1.43)
). DBAO toggle inCBP_SandboxCharacter_DAO
details.
Video References:
General: "Unreal Engine 5; GASP DAO (v1.32 Overview)" (Default Look Aim, Yaw AO to root), "Unreal Engine 5; GASP DAO (v1.18 Overview)" (AimOffset corrections).
Custom AO: "GASP_DynamicAdditiveOverlay(1.43)"
Responsiveness Fix: "GASP DAO V1.44 (Update Overview)" (Root bone release logic, also referred to as "Unreal Engine 5; GASP-DAO V1.44 (HotPatch Overview)")
3. Item & Weapon Handling (Equip, Holster, Fire, Reload)
Description: System for managing how the character picks up, equips, uses, and holsters items.
Where to Edit/Implement:
Core Logic:
AC_HeldObject_Master
(base item behavior),AC_Gun
(firing/reloading),AC_SlotManager
(holstering/drawing logic on character).Initiation:
CBP_SandboxCharacter_DAO
(handles input to trigger equip, fire, reload, drop).Animation Montages: Defined in item-specific Data Assets (e.g.,
DA_AD_Weapon_M9
). Create new montages for new actions.Montage Notifies: Events like
AttachHandR
,DetachHandR
within montages trigger state changes inAC_HeldObject_Master
.
Video References:
Item System: "GASP DAO V1.47 (Item Handling System)"
Slot Manager: "Unreal Engine 5; GASP-DAO (Slot Manager and Item Handling)"
Event-Driven Equips: "Unreal Engine 5; Gasp-DAO V1.45 (Overview)"
4. Live Retargeting & Character Setup
Description: System for adapting UEFN Mannequin animations to characters with different anatomies (e.g., MetaHumans, CC4 characters) at runtime.
Where to Edit/Implement:
IK Retargeter Asset: Each character type needs an
IKRetargeter
asset (e.g.,IKR_UEFNtoMetaHuman
). Edit this to define bone chains and basic retargeting settings.Character Blueprint: Child of
CBP_SandboxCharacter_DAO
. Assigns its specificIKRetargeter
asset in Class Defaults. Assigns its unique Gameplay Tag.Live Retargeting Data Assets (
DA_HOS_IK_Offset_...
): Store hand IK offsets (translation/rotation) for this character, per weapon, per stance. Crucial for precise hand placement. These are selected by a Chooser Table (e.g.,CHT_m_med_nrw_IKRetargeting
for a medium normal weight male MetaHuman) in the character's Blueprint.Live Retargeting Debug Widget: Found in
Content/DAO/Blueprints/Widgets/WBP_LiveRetargeting_DebugTool
(or similar). Used in-game to adjust and copy/pasteDA_HOS_IK_Offset
values.
Video References:
Data Assets for Correction: "Unreal Engine 5; GASP DAO (v1.21 Overview)" (07:47 Data Asset Hand Correction)
Anatomy: "How Anatomy Effects Animation Retargeting"
5. Hand IK ("Procedural Offset Hack")
Description: Ensures the character's off-hand stays correctly on two-handed weapons, or main hand on one-handed weapons if precise dynamic adjustment is needed.
Where to Edit/Implement:
AnimBP Logic:
ABP_SandboxCharacter_DAO
(TwoBoneIK nodes targeting Virtual Bones likeVB hand_r
). The "Procedural Offset Hack" calculates theEffectorLocation
for these IK nodes in the Character Blueprint's Tick/EventGraph to avoid thread desync.Virtual Bones: Must be created on the character's skeleton.
Enable/Disable: Via animation curves (
EnableHandLIK
,EnableHandRIK
,DisableHandIK
,DisableIK
) in montages or specific animation states.
Video References:
Procedural Offset Hack: "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (01:32:27 Socket Based Offsets / Procedural Offset Hack)
Hand IK in Linked Layers: Discussed in various Linked Anim Layer setup videos.
6. Traversal System
Description: Mantling, vaulting, climbing using GASP's contextual system.
Where to Edit/Implement:
Initiation:
CBP_SandboxCharacter_DAO
(handles input, triggers traversal).Auto Holster/Equip: Logic within
CBP_SandboxCharacter_DAO
andAC_SlotManager
to automatically put away/retrieve items during traversal.
Video References:
Replication: "Unreal Engine 5; GASP DAO (v1.33 Overview)" (Traversal replication refactor)
Interruption Fixes: "GASP_DynamicAdditiveOverlay(1.48)" (Traversal interruption fixes)
7. Contextual Animations (Pickups, Takedowns)
Description: Synchronized interactions between characters or characters and objects.
Where to Edit/Implement:
Scene Assets:
ContextualAnimScene
asset (defines roles, animations, entry points).ContextualAnimRole
asset (defines participant roles).Initiation & Logic:
CBP_SandboxCharacter_DAO
(queries scene, moves character, starts scene).Animations: Custom animations/montages created (e.g., using QuickMagic, Cascador, or manually in Sequencer).
8. Replication
Description: Making the system work in a networked multiplayer environment.
Where to Edit/Implement:
Character States:
CBP_SandboxCharacter_DAO
(replicatingHeldObjectState
,IsAiming
,TraversalResult
via RepNotifies).RPCs: Client-to-Server RPCs in
CBP_SandboxCharacter_DAO
for actions like firing, equipping. Multicast RPCs for cosmetic events.Item Physics & State:
AC_HeldObject_Master
(physics replication),AC_SlotManager
(replicating slot states, item attachments).
Video References:
Initial replication pass: "UE 5; GASP-DAO Breakdown - Part 1 (v1.24)" (00:37:00 Short Replication Intro)
Specific feature replication: "Unreal Engine 5; GASP DAO (v1.25 Overview)" (AimOffset, Projectile Replication), "Unreal Engine 5; GASP DAO (v1.33 Overview)" (Traversal replication).
9. Custom Poses & Animations
Description: Creating new idle poses, aim poses, action montages.
Where to Edit/Implement:
Tools: Unreal Engine Sequencer with Control Rig, Blender (for weight painting on custom rigs), AccuRig (for re-rigging), QuickMagic (AI mocap), Cascador.
Integration:
Static poses are added to
LinkedAnimLayers
orAimOffset
assets.Action montages are added to
PDA_ActionData_Weapon
or similar Data Assets.Custom Idles are integrated into the Motion Matching database via Chooser Tables.
Video References:
Control Rig for Poses: "Unreal Engine 5 - GASP DAO; Adding States (Part 1)", "Unreal Engine 5; GASP DAO - Fixing Animations For Custom Guns"
Synty Character Re-rigging/Weighting: "Synty - ReRigging Char (with AccuRig) Part 1", "Synty - ReRigging Char (Correcting Finger Weights) Part 2"
AI Mocap for Contextual Anim: "Unreal Engine 5; Pistol Pickup Part 1 (Quick Magic Cleanup)"
8. Version Updates & Key Changes (Chronological)
This section details significant changes and features introduced in various versions of the GASP-DAO project. Refer to the specific "Update Overview" videos for each version for more in-depth explanations.
Key Videos for this section: All videos titled "Update Overview," "Overview," or "HotPatch Overview" (e.g., "GASP DAO V1.44 (Update Overview)", "Unreal Engine 5; Gasp-DAO V1.45 (Overview)", "Unreal Engine 5; GASP-DAO v1.49 (CorruptionāBug Fix)").
Version 1.49 (Corruption/Bug Fix)
Likely addresses project corruption issues or critical bugs from previous versions. Specific details would be in the video "Unreal Engine 5; GASP-DAO v1.49 (CorruptionāBug Fix)".
Version 1.48
Foot Locking Reintroduced: Addressed synchronization issues between
OffsetRootBone
and Turn In Place animations.Rifle: Attachments moved to the front, character sockets added, and an animation montage created.
Pistols: Left/Right hand equips reworked for smoother blending.
Flashlight: Equip montage created.
AC_HeldObject_Master
:Fixed delayed attachment issue when dual wielding that caused stuttering on live retargeted characters.
Fixed a bug in montage interruption that didn't consider primary and secondary item montages.
CBP_SandboxCharacter_DAO
:Fixed a bug when switching characters that generated errors (items are now destroyed).
Fixed an issue where traversal interruptions (e.g., reloading during equip) prevented auto-equip.
Added
AreItemsBeingHandled
interface function to check if items are being equipped before allowing reload/fire montages.
AC_Gun
: Logic to prevent reload from being interrupted by fire montages or other reloads; logic to avoid interrupting equips.Linked Anim Layers: Now cache
MainAnim
values instead of direct property access calls to prevent null reference warnings during initialization.
Version 1.47 (Item Handling System)
AC_HeldObject_Master
: Stores data related to item handling.Item ID
andDisplay Name
(latter not actively used but present for custom UI).Aim Socket Name
: Used to determine the origin of the aim trace.GetItemCharData
function (fromBPI_Items
) must be overridden in child classes to provide character-specific data for the item.
Montages and Gameplay Tags: Animation montages (equip, unequip, etc.) are fetched from a Data Asset using Gameplay Tags for efficiency.
Exclude Weapon Bones
: Metadata curve in montages to prevent GASP's overlay logic from affecting weapon bones during specific animations.Disable Hand IK
: Metadata curve to disable hand IK during montages where the animation already positions the hand correctly, avoiding unwanted blending.Montage Notify
: Used to trigger events at specific points in a montage (e.g.,Attach_Hand
,Attach_Hand_L
).AC_Gun
: Component for weapon logic.AO Debug Tool
: Tool for visualizing aim offsets (green line for screen center, blue line for weapon barrel).
Projectile Aim Rotation: By default, projectiles follow the weapon barrel's rotation. Can be configured to follow camera rotation (with caveats regarding accuracy due to third-person camera offset).
Distance-Based Aim Offset: Mechanism to compensate for third-person camera offset, making aiming accurate relative to the screen center, regardless of distance.
Version 1.46 (Item System Refactor)
Pickup Logic: Moved to a Trace system in
CBP_SandboxCharacter_DAO
.AC_SlotManager
: Explicit actor casting removed; uses direct function calls on item actor components.AC_HeldObject_Master
: Most item logic moved to this component. Choosers remain in item Blueprints due to reference limitations.AC_HeldObject_SlotActor
: Additional logic specific to slot actors.AC_Gun
: Component for weapon firing and reloading logic.BP_HeldObjects_Master
: Refactored to use components and have aPrimitiveComponent
as its root for better collision and physics replication.PDA_ItemData
: Removed;ItemID
is now inAC_HeldObject_Master
.
Version 1.45 (Event-Driven Equip/Holster System)
Synchronized Equip/Unequip System: Refactored to be event-driven, using
Montage Notify Events
for better timing and replication.Unequip
montages, if not provided, can play theequip
montage in reverse.Events like
OnMontageAttach
andOnMontageEquip
are used to synchronize item attachment and state updates.
Auto Equip/Unequip in Traversal: Logic to automatically holster and re-equip weapons during and after traversal actions (climbing, vaulting, etc.).
Animation Cancelling in Slot Manager: A 2-second window added for auto re-equip after traversal, which can be interrupted by the player. To be improved with animation cancelling in Slot Manager.
Version 1.44 (Update Overview / HotPatch Overview)
ABP_SandboxCharacter_DAO
: (Note:ABP_Sandbox_DAO
might be a typo in source, usuallyABP_SandboxCharacter_DAO
)Interpolation and
Counter-Root Compensation
disconnected (temporarily or for adjustment).Offset Root Bone Max Rotation Error
set to 89 degrees to limit root bone counter-rotation and prevent excessive foot sliding in extreme rotations.
Aim Responsiveness: Significantly improved, but with the side effect of potential foot sliding at larger rotation angles.
Reverting Changes: Instructions on how to revert to previous behavior (reconnect
Interpolation
andCounter-Root Compensation
, and adjustMax Rotation Error
).Root bone release logic: (From "GASP DAO V1.44 (Update Overview)") for aim responsiveness.
Version 1.43 (Update Overview)
Aim Offset:
Disabled by default in the
Unarmed
state.Custom Aim Offsets reintroduced for some weapons/states (e.g., left-hand pistol, flashlight), while others use a universal Aim Offset.
Fixed weapon "jerking" issue while aiming by considering the
Offset Root Bone
.Fixed an issue where there was no control over Aim Offset when linking a layer in an
Unarmed
state.Aim Offset interpolation refactored.
Turn In Place: Fixed a bug causing an 8-frame slide due to a sync issue between
OffsetRootBone
and Turn In Place animations (whenFoot Locking
is disabled).AC_SlotManager
: RedundantItem Reference
parameter removed fromHolsterItem
function.CBP_SandboxCharacter_DAO
: Fixed a bug related to switching weapons by index (number keys) for left-handed items; replication set up.
Version 1.42 (Update Overview)
Slot-Specific Equipping: Examples of how to equip items in specific slots (right hand, left hand, dual wield) using new Input Actions.
AC_SlotManager
: Removed redundant parameter fromDrawHolsteredItem
; added helper functionDrawHolsteredItem_ByIndex
.
Version 1.41 (Update Overview)
Contextual Anim Scene for Pistol Pickup: Added an example of pistol pickup using the
Contextual Animation Scene
system.Intro Map: Added an initial map (to be expanded).
Unarmed Overlay State Support:
DefaultOverlayData
now loads data for the unarmed state.
Version 1.40 (Update Overview - Setup)
Project Setup: Details on setting up the project from the repository, including copying Game Animation Sample files, verifying Gameplay Tags, and configuring Default Pawn Class.
Pickup Items: How to add items to the level and basic pickup/interaction logic.
Item Character Data: Explanation of how character-specific data for items is managed via Choosers and Data Assets, using Gameplay Tags.
Slot Manager: Introduction to the slot system for holsters and managing equipped items.
Version 1.39 (Update Overview - Hotfix)
Slot Manager:
FindSlotActorByRef
renamed toFindSlotActorConfigurationByRef
and fixed (was searching for the reference it already had).Fixed a bug where a replaced Slot Actor would not be attached to a socket.
ABP_SandboxCharacter_DAO
: Neutral Pose updated to match GASP Idle Pose, improving transitions.
Version 1.38 (Update Overview)
Gameplay Tags: Separated into individual Gameplay Tag Tables for better organization and management.
BP_Slot_Master
: Item slots are now identified via GameplayTag.AC_SlotManager
: Pickup function refactored to unify pickup of items and slot actors. Slot actors can now be picked up. Added comments and fixed an invalid reference error when getting attached items from a slot.ABP_SandboxCharacter_DAO
: Arm exclusion in Additive Layering reduced to hands to decrease desynchronization at the shoulders.CBP_SandboxCharacter_DAO
:Fixed a bug where items holstered before a Traversal were drawn again afterwards.
InputActions now display the hotkey in the bubble for easier i... (1 KB left)
Last updated