Overview
WCGASAttributeOverrideData is a reusable Data Asset that allows you to override default attribute values defined in Project Settings. It enables different combat roles (Tank, DPS, Healer, Mage, etc.) to have unique starting stats while maintaining a single source of truth for attributes not overridden.
This system is perfect for creating character archetypes, difficulty presets, equipment stat bonuses, or any scenario where you need to customize attribute values without modifying the global defaults.
Creating an Attribute Override Data Asset
Using the Wonderscape GAS Ally Menu
- Open the Content Browser
- Right-click in any folder where you want to create the asset
- Navigate to: Wonderscape GAS Ally > Attributes > Attribute Override
- Give your asset a descriptive name (e.g.,
DO_Tank, DO_DPS, DO_Mage)
- Double-click the asset to open it and configure its properties
How Attribute Override Data Works
Application Flow
- Create Override Data Asset
- Configure which attributes to override and their new values
- Optionally set a base override asset for inheritance
- Assign to WCGASAttributeInitializer Component
- Add the
WCGASAttributeInitializer component to your Actor (e.g., character, enemy, NPC)
- Set the
Attribute Override Data property to your created override asset
- Configure
Auto Initialize to true (default) for automatic initialization at BeginPlay
- Automatic Initialization at BeginPlay
- The
WCGASAttributeInitializer component initializes the WCGASAttributePool AttributeSet
- Checks the override data for each registered attribute
- Uses override value if present, otherwise falls back to Project Settings default
- Applies values to the Ability System Component's attributes
- Runtime Behavior
- Attributes behave identically to non-overridden attributes
- Gameplay Effects, Executions, and Modifications work normally
- Clamping, regeneration, and all other attribute features function as configured in Attribute Definitions
Inheritance Resolution
When an override data asset has a Base Override Data set, the system uses a fallback chain: