Gameplay Tags & Tag Editor

We’re investigating into the possibility of utilizing the Gameplay Tags module you folks have set up in Runtime/GameplayTags & Editor/GameplayTagsEditor. The only documentation I’ve been able to find is a lone forum thread two years in the making here:

I added a comment as ‘Meristic’ to the most recent response for community prosperity, but will ask again here as well (since the response time on the community forum seems to be ~2 months or so.) Is it recommended to use this library? There’s little to no documentation on using Gameplay Tags, and setting it up requires additional, non-intuitive steps. Those points aren’t very reassuring, though the responder (Dave Ratti) mentioned Gameplay Tags were being used extensively in Paragon. He briefly explained a way to set it up using config files, which works, but also mentioned a way to use Data Tables, though he didn’t venture any further into that explanation. Would like a bit more information on that approach.

We also noticed that Actors and ActorComponents inherently have a TArray named ‘Tags’. Do these properties aim to solve the same problem? Is the goal of Gameplay Tags to replace this simplified setup? (As I noticed that the GameplayTagContainer also contains a deprecated TArray called ‘Tags’.)

Regardless, it looks promising, even if we have to do a little work on our end to get exactly the interface we’re looking for. The main features we’re desiring is a centralized location for defining project-specific tags that is reflected to Tag selection UI on game object properties, and scoping that UI to a subset of the available tags through some sort of metadata on the object property. Think it’s possible to get the results we’re looking for with this system?

Both Fortnite and Paragon are using GameplayTags heavily, so they’re definitely well trusted in production. Here’s how you use Data Tables to import tags:

  1. Make a csv file (via exporting from excel or some other tool) according to the instructions at Data Driven Gameplay Elements in Unreal Engine | Unreal Engine 5.1 Documentation

  2. Make the columns match the structures in FGameplayTagTableRow

  3. Import the data table, pick GameplayTagTableRow as the row type. Save the asset

  4. Add something like this to your defaultengine.ini and point it to the asset you just imported:

    [GameplayTags]
    +GameplayTagTableList=/Game/Balance/DataTables/GameplayTagTable.GameplayTagTable

By doing that or the direct ini method, it will load those tags into a centralized dictionary. If you then place FGameplayTag or FGameplayTagContainer structs in your assets you should get the tag picker. You can also specify a filter on the tags that are available, this example will only show tags starting with GameplayCue.

UPROPERTY(EditDefaultsOnly, Category = GameplayCue, meta=(Categories="GameplayCue"))
FGameplayTag	GameplayCueTag;

The ‘Tags’ array on Actor predates the GameplayTag system and is currently not integrated into it, although I am considering some options for doing so.

1 Like

Ahh beautiful! Sounds like it’s pretty much exactly what we’re looking for. Thanks for the super quick response, Ben.

Another quick question - Do you guys even use the ‘Tags’ array on Actors then? Or have you been offloading that functionality to some kind of GameplayTagsComponent attached to the actors?

We’re currently not using Tags for much, I have some thoughts on trying to unify it with GameplayTags, but nothing substantial yet