The Spring Creator sale is here! Save up to 70% on select products now through April 18.

Gameplay Blueprint Attributes

mklabs - Code Plugins - Apr 2, 2024

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

  • Supported Platforms
  • Supported Engine Versions
    5.1 - 5.3
  • Download Type
    Engine Plugin
    This product contains a code plugin, complete with pre-built binaries and all its source code that integrates with Unreal Engine, which can be installed to an engine version of your choice then enabled on a per-project basis.

Documentation (Slides) • Discord ServerExample ProjectVideos


Blueprint Attributes is a plugin extension for the Gameplay Ability System (GAS). It addresses a fundamental limitation, making AttributeSet Blueprintable and fully exposing Gameplay Attributes and Attribute Sets to Blueprints.


By default, Unreal Engine and its GAS plugin requires Gameplay Attributes and Attribute Sets to be created exclusively in native code, rendering Blueprint creation impossible. This limitation can be restrictive for Game Designers and Blueprint Developers, hindering their ability to iterate swiftly on Attribute design.


This plugin tries to alleviate this issue and enables a workflow 100% within the Editor and Blueprints for Attribute Sets and Gameplay Attributes.


It is important to note that it doesn't change the way GAS works and integrates fully with existing GAS workflows (BP defined Attribute Set are still UAttributeSet).



Features


This plugin, Blueprint Attributes, seek to enhance the overall experience of creating and managing Attributes and Attribute Sets, entirely in the Editor.


Its main noticeable features include:


It was developed as one solution to break free from the constraints of native code when working with GAS Attributes and Attribute Sets in Unreal Engine. By offering a user-friendly and versatile approach to attribute management, it empowers developers, accelerates iteration cycles, and seamlessly integrates with existing GAS workflows.


Scaling your project shouldn't be so difficult


By default, and without the Blueprint Attributes plugin, Attributes and Attribute Sets must be created in native code; they cannot be created in Blueprints. Blueprint Attributes aims to alleviate that issue and empower Game Designers and Blueprint Developers to quickly iterate on their Attribute design.


As your project grows, it inevitably slows down—especially if the team has limited C++ resources or few/no C++ developers. Tasks like defining new Attribute Sets, adding, renaming, or removing Gameplay Attributes begin to consume time and create bottlenecks for C++ engineers.


This plugin seeks to improve that.


It comes with nearly 70 C++ classes to provide the best developer experience and remain faithful to the Gameplay Abilities ecosystem and workflow. These include a runtime module with UAttributeSet to inherit from, custom UBlueprint and FBlueprintEditor, editor modules, multiple Details Customizations classes, and Slate widgets.

Additionally, it includes a scaffolding module, or "Attribute Wizard," to aid in transitioning from Attributes defined in Blueprints to C++ classes once the prototype phase is complete (Note: this is optional). The wizard uses the AttributeSet created in Blueprint and the Attributes it defines to generate the appropriate C++ class. You can then choose to either inherit from it (Attribute properties defined in Blueprints would now be defined in native code, as before), or eliminate the previous Blueprint implementation and update all Gameplay Attribute references (in Gameplay Effects, K2 Nodes, etc.) to their new native counterparts.



Credits


Special thanks to Metaseven, MighteeMouse, Drakynfly, Kite and OneSilverLeaf on Discord for feedback and testing.

To Epic to keep improving GAS release after release, and making it more accessible (to Blueprint developers and in general).

Technical Details

Features

  • Define Gameplay Attributes in Blueprint
  • UAttributeSet API exposed to Blueprints (PostGameplayEffectExecute, Pre/PostAttributeChange, ...)
  • Built-in Clamping
  • Customized Blueprint Editor (Toolbar, Data Validation, Details Customizations)
  • Replication
  • MMC and Exec Classes support (implementable in Blueprints)
  • Save Game support (save / load Gameplay Attributes)


Miscellaneous

  • Wizard to port Blueprint defined Attributes to C++ (Note: This is optional)
  • Referencer Handlers (when an Attribute is renamed in the Blueprint Editor, replaces previous references in Gameplay Effects, to the new Attribute name)


Code Modules

  • BlueprintAttributes (Runtime) - Main runtime module
  • BlueprintAttributesEditor (Editor) - Main editor module
  • BlueprintAttributesDeveloper (UncookedOnly) - Uncooked only implementing custom K2 Nodes
  • BlueprintAttributesScaffold (Editor) - Editor module for C++ generation / scaffolding
  • BlueprintAttributesEditorCommon (Editor) - Editor module with shared common code and utilities


Plugin Dependencies

  • GameplayAbilities (engine plugin)
  • RigVM (engine plugin, for engine 5.3 and higher)


Number of Blueprints: 0

Number of C++ Classes: ~70 (67 header files)

Network Replicated: Yes

Supported Development Platforms: Windows, Linux, MacOS

Supported Target Build Platforms: Windows, Linux, MacOS