[FREE] Modular Features Extra Actions plugin: Modular GAS, Enhanced Input and more

Created this plugin for a personal project and I’ve decided to share with the community for free. : )


About

This plugin integrates GAS and Enhanced Input to the existing Game Features and Modular plugins from Unreal Engine, extending the plugin to add some feature actions:

  1. Add Attribute;
  2. Add Gameplay Abilities;
  3. Add Gameplay Effects;
  4. Add Enhanced Input Mappings;
  5. Spawn Actors;

Links


Support me: Sponsor @lucoiso on GitHub Sponsors :heart:

6 Likes

Added a data table parameter for the Add Attribute action - This can be used to initialize Attribute Meta Data with the AttributeSet function: InitFromMetaDataTable:

1 Like

It’s working with UE5 Preview 1! :grin: :tada:
Project demonstrating the feature in UE5_P1: Codename: Project Elementus (Unnamed Template) - Community / Work in Progress - Unreal Engine Forums

2 Likes

Hi! Can you show an example of how to add an ability to a character. Having a trouble with original GAS binding with Enhanced Input. Read your instructions on GitHub where you tell to implement an interface inside pawn or controller. But how to bind and EI action to GAS?

Hey! : )
I’ll provide a documentation and will upload this plugin to UE Marketplace.


A short example of how to add and bind a Gameplay Ability to a Enhanced Input Action:

Step 1: Setup your binding target, that must be your pawn or controller:
In this example, i’m using a APlayerController class with C++ code:

  1. Implement the IAbilityInputBinding interface

  2. Implement the functions SetupAbilityInput and RemoveAbilityInputBinding (i didn’t provide a complete function to use, the devs are free to create in they ways):


    I’m using a client RPC because i used it inside a multiplayer project.

These 2 functions will be called by the plugin to bind your ability inputs.


Now, that’s how i implemented these functions:

  1. Created a struct to handle the input binding ID:
    image

  2. Created only 2 functions to manage ability input press and release (which i use after binding):
    image

And that’s my functions:

  1. SetupAbilityInput:

  2. RemoveAbilityInputBinding

  3. OnAbilityInputPressed:

  4. OnAbilityInputReleased:


Step 2: Configure your modular feature

  1. Create a new modular plugin

  2. Add a new action: Add Abilities

  3. Set your pawn class on Target Actor Class, i’m using PECharacter

  4. Set your input binding owner, it’s the class where you implemented the IAbilityInputBinding interface. In the example i’m using a controller.

  5. Set your InputID Enumeration Class. This plugin is currently supporting only blueprint enumerations. That’s my enum:

  6. Create your ability mapping:


    InputID Value Name correspond to your enumeration Display Name.


A way to bind a Input Action without provide a Gameplay Ability:

  1. Add the action Add Enhanced Input Mapping instead Add Abilities:

  2. Set your pawn class on Target Pawn Class, i’m using PECharacter

  3. Set your input binding owner, it’s the class where you implemented the IAbilityInputBinding interface. In the example i’m using a controller.

  4. Add your Action Bindings and enable Setup Ability Input inside Ability Binding Data:

  5. Same from Add Abilities: Set your InputID Enumeration Class. This plugin is currently supporting only blueprint enumerations. InputID Value Name correspond to your enumeration Display Name.


In this project i’m using all of this: Codename: Project Elementus (Unnamed Template) - Showcase / Game Development - Unreal Engine Forums

4 Likes

Working with official UE5 released version! :partying_face:

1 Like

Added a documentation:
UEModularFeatures_ExtraActions/README.md at main · lucoiso/UEModularFeatures_ExtraActions (github.com)

2 Likes

Now available in the Unreal Marketplace! :partying_face:
Modular Game Features - Extra Actions in Code Plugins - UE Marketplace (unrealengine.com)

1 Like

Example template have some issues. FRS and Bridge plugin is missing.

Hello @Soulast! : )


I will soon provide a cleaner example project to avoid the need to download additional plugins

If you have any more problems, get in touch and I’ll try to help in any way I can : )

Still issues.
I did reinstall engine and add FSR plugin. While loading the project I’m getting errors as on the picture.

Oh, I think I discovered what this problem is. @Soulast

When I try to download by clicking Code → Download Zip or I try to clone the repository without Git LFS, the assets are corrupted in the process.


Solution:
So, I generated a packed release with instructions: Release Project Elementus: V0.1a · lucoiso/UEProject_Elementus (github.com)

Sorry about this problem and thanks for the information. : )

Update topic description:

Created this plugin for a personal project and I’ve decided to share with the community for free. : )


This plugin integrates GAS and Enhanced Input to the existing Game Features and Modular plugins from Unreal Engine, extending the plugin to add some feature actions:

  1. Add Attribute;
  2. Add Gameplay Abilities;
  3. Add Gameplay Effects;
  4. Add Enhanced Input Mappings;
  5. Spawn Actors;

Links:


This plugin was built for Project Elementus and released to the community and right now this project is being used as a Example Project for this plugin.
Note that this example project has a dependency:

1 Like

Now you can support me and my projects via GitHub sponsor! : )

image

Link: Sponsor @lucoiso on GitHub Sponsors :heart:

Hi Lucas,

I try work with your plugin, and follow the Elementus project to implement this

Add Receiver:
UGameFrameworkComponentManager::AddGameFrameworkComponentReceiver(this);

Remove Receiver:
UGameFrameworkComponentManager::RemoveGameFrameworkComponentReceiver(this);

Send Extension Event:
UGameFrameworkComponentManager::SendGameFrameworkComponentExtensionEvent(this, UGameFrameworkComponentManager::NAME_GameActorReady);

But for some reason, I can’t see these code on the Unreal Docs, but exist in the source, after try build return external issues unsolved, I put all modules required.

1 Like

I solved those problems, and now I am trying works attribute sett, I can’t find an example, but I will go to see it in Project Elementus, congrats for this feature.

1 Like

Created a new issue on GitHub: Create a new and fully documented example project (github.com)

Create a new and fully documented example project #3

After some time with Project Elementus being used as an example project, I will create a simple and fully documented project with just the essential examples to show the features of this plugin.


About Project Elementus and this plugin:

This plugin (Modular Features - Extra Actions) was created to be used in Project Elementus as a way to “modularize” some things such as: Abilities, Controls and Actors with new custom Modular Actions (from the standard Modular Features plugins), allowing you to add and remove game resources at runtime with support for multiplayer projects and some powerful frameworks that already exist in Unreal Engine (GAS, Enhanced Input , etc). And after a few weeks of development, I decided to share it as a free and open source individual plugin for developers who want to use something similar (with the possibility to modify it in their own way).
I did a similar thing with AzSpeech, a free and open source Text & Voice plugin that I created for a personal private project and decided to share all the code for free.


The plugin is open-source, you are free to fork the repository and modify everything you want. : )
And feel free to send a pull request and contact me if you’re interested to contribute with the project.

Last update

Release Modular Features - Extra Actions: v1.1.6 · lucoiso/UEModularFeatures_ExtraActions (github.com)

What’s Changed

Full Changelog: Comparing v1.1.5...v1.1.6 · lucoiso/UEModularFeatures_ExtraActions · GitHub

Last Update

Release Modular Features - Extra Actions v1.1.8 · lucoiso/UEModularFeatures_ExtraActions (github.com)

Changes

Full Changelog: Comparing v1.1.7...v1.1.8 · lucoiso/UEModularFeatures_ExtraActions · GitHub

Documentation Update

Moved the documentation to Github Wiki from Readme.md: Wiki (github.com)