The gameplay tag system depends on tags being registered with the global manager as valid in order to correctly read them off disk. Two different issues are combining to cause a confusing ensure and data loss when using an invalid gameplay tag inside a literal BP GameplayTagContainer pin. The ensure is this unhelpful message:
Error: Ensure condition failed: false Engine/Source/Runtime/GameplayTags/Private/GameplayTagsManager.cpp [Line: 1724]
Requested Tag ( was not found. Check tag data table.
The ensure is happening because SGameplayTagContainerGraphPin::ParseDefaultValueData does not correctly parse the default string "(GameplayTags=(()))" which is an alternate way of saying the container is empty. The parsing code needs to be fixed to not ensure on a valid but empty container
However, it's only getting that as a string to parse because the blueprint pin code does an import/export of the container and FGameplayTag::ImportTextItem silently ignores issues with invalid tags and treats them like they are empty. This is a bug because invalid tags loaded in other ways cause load warnings and are passed through.
Error: Ensure condition failed: false Engine/Source/Runtime/GameplayTags/Private/GameplayTagsManager.cpp [Line: 1724]
Requested Tag ( was not found. Check tag data table.
[Inline Frame] UnrealEditor-GameplayTags.dll!UGameplayTagsManager::RequestGameplayTag::__l12::<lambda_1d633abed328596175b95dae05ce725f>::operator()() Line 1724
UnrealEditor-GameplayTags.dll!UGameplayTagsManager::RequestGameplayTag(FName TagName, bool ErrorIfNotFound) Line 1724
UnrealEditor-GameplayTags.dll!FGameplayTag::RequestGameplayTag(const FName & TagName, bool ErrorIfNotFound) Line 1085
UnrealEditor-GameplayTagsEditor.dll!SGameplayTagContainerGraphPin::ParseDefaultValueData() Line 66
UnrealEditor-GraphEditor.dll!SGraphPinStructInstance::GetDefaultValueWidget() Line 95
UnrealEditor-GraphEditor.dll!SGraphPin::Construct(const SGraphPin::FArguments & InArgs, UEdGraphPin * InPin) Line 225
UnrealEditor-GameplayTagsEditor.dll!SGameplayTagGraphPin::Construct(const SGameplayTagGraphPin::FArguments & InArgs, UEdGraphPin * InGraphPinObj) Line 11
[Inline Frame] UnrealEditor-GameplayTagsEditor.dll!SGameplayTagContainerGraphPin::Construct(const SGameplayTagContainerGraphPin::FArguments & InGraphPinObj, UEdGraphPin *) Line 10
[Inline Frame] UnrealEditor-GameplayTagsEditor.dll!RequiredArgs::T1RequiredArgs<UEdGraphPin * &>::CallConstruct(const TSharedRef<SGameplayTagContainerGraphPin,0> &) Line 879
UnrealEditor-GameplayTagsEditor.dll!TSlateDecl<SGameplayTagContainerGraphPin,RequiredArgs::T1RequiredArgs<UEdGraphPin * &>>::operator<<=(const SGameplayTagContainerGraphPin::FArguments & InArgs) Line 1101
UnrealEditor-GameplayTagsEditor.dll!FGameplayTagsGraphPanelPinFactory::CreatePin(UEdGraphPin * InPin) Line 29
UnrealEditor-GraphEditor.dll!FNodeFactory::CreatePinWidget(UEdGraphPin * InPin) Line 236
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-109239 in the post.
0 |
Component | UE - Gameplay |
---|---|
Affects Versions | 4.26, 4.27, 5.0-early access |
Target Fix | 5.0-early access |
Created | Feb 23, 2021 |
---|---|
Resolved | Mar 1, 2021 |
Updated | Aug 4, 2023 |