Attribute Sets in Blueprints

Blueprint Attributes is a plugin extension for GAS (Gameplay Ability System), fully exposing Gameplay Attributes and Attribute Sets to Blueprints.

Why BlueprintAttributes?

Blueprint Attributes enables a workflow 100% within the Editor and Blueprints, when working with Attribute Sets and Gameplay Attributes.

Quicker iterations

Empower Game Designers and Blueprint Developers to quickly iterate on their Attribute design.

Define Attributes in Blueprint

Create an Attribute property variable in the Blueprint Editor, use it immediately in Gameplay Effects and K2 Nodes (GetFloatAttribute(), ...) or any other places where a Gameplay Attribute picker can appear.

Built-in Clamping

Built-in support for clamping via Data Table initialization and handling of "Min Value" and "Max Value" columns. Or using a special Gameplay Clamped Attribute Data property (child of FGameplayAttributeData) with float or Attribute based clamping.

Customized Blueprint Editor

Blueprint Editor with Data Validation, Toolbar with buttons to quickly add a Gameplay Attribute property, to create Data Tables or port the BP Attribute Set to a standard C++ Attribute Set. Along with Details Customizations to expose Attribute BaseValue to Blueprint and set it directly from the Details panel.

Interactions with Gameplay Effects

There are several functions that an Attribute Set can override to deal with the way an Attribute responds when a Gameplay Effect attempts to modify it. Most of this API is exposed to Blueprints (PostGameplayEffectExecute, Pre/PostAttributeChange, ...).

Replication

For multiplayer projects, you can replicate your Gameplay Attribute defined in Blueprints similar to how you would replicate any other property. LifetimeReplicatedProps is handled, and using rep notifies you can handle attributes that will be predictively modified by clients (Blueprint equivalent of C++ GAMEPLAYATTRIBUTE_REPNOTIFY helper macro).

Integration with K2 Nodes

Any K2 Nodes (Blueprint nodes we use in the Editor) such as GetFloatAttribute() that have a FGameplayAttribute parameter for one of its Pins will now also display the list of Attributes defined in Blueprints in the combo box, just like Gameplay Attribute properties in Gameplay Effects.

Wizard to port Blueprint defined Attributes to C++

Depending on your team, you may want to eventually move your BP Attributes to the usual pattern of having them defined in C++. The Attribute Wizard and Scaffold module will help in the transition. From a Blueprint defined Attribute Set, it will generate the proper C++ header and source (with preview!) file based on the defined Gameplay Attributes in the BP Attribute Set.

Referencer Handlers

Whenever an Attribute is renamed in the Blueprint Editor, the plugin can detect the operation and offers to replace the previous references to it, in Gameplay Effects, to the new Attribute name. Doing so, it will display the list of modified properties and Blueprint nodes (K2Nodes such as GetFloatAttribute()) in the message log with links you can click navigate to the referencers.

Scaling your project
shouldn't be so difficult

Especially for Blueprint Developers.


By default and without BlueprintAttributes plugin, Attributes and Attribute Sets must be created in native code - they cannot be created in Blueprints.


This is an engine limitation and BlueprintAttributes aims to alleviate that issue and empower Game Designers and Blueprint Developers to quickly iterate on their Attribute design.


The bigger your project grows, the slower it gets. Especially if the team has limited C++ resources and few or no C++ developers in the team.


Things like defining new Attribute Sets, adding, renaming or removing Gameplay Attributes begin to take time and creates bottlenecks on C++ engineers.


With BlueprintAttributes, we're trying to improve that.


The plugin comes with nearly 100 C++ classes to try to provide the best developer experience, and stay true to the Gameplay Abilities ecosystem and workflow. Ranging from runtime module with UAttributeSet to inherit from, custom UBlueprint and FBlueprintEditor, to editor modules and dozens of Details Customizations classes and Slate widgets.


This also includes a fancy "Attribute Wizard" module to help transitioning from Attributes defined in Blueprints to C++ classes when the prototype phase is completed, with header and source preview. The wizard uses the AttributeSet created in Blueprints and the Attributes it defines to generate the proper C++ class that you can then either inherit from (Attribute properties that were defined in Blueprints would be now defined in native, like before. The engine will detect the same type and variable name and update the references), or simply get rid of the previous Blueprint implementation and update each and every Gameplay Attribute references (in Gameplay Effects, K2 Nodes, etc.) to their new natives counterpart.