Focused reference · Unreal Engine 5.8
Migration and troubleshooting
Bool to tag
Convert a bool when the state is cross-system, needs GAS gating, has multiple sources, or is part of a growing family.
- Define the canonical tag and its owner/lifetime.
- Replace writers with owned add/remove behavior.
- Replace readers with exact or hierarchical queries.
- Add source-count/lifetime handling if multiple systems can grant the state; do not let one source remove another source's truth.
- Remove the bool after tests prove parity.
Keep a private, local, performance-critical bool when a global vocabulary adds no value.
Enum to tags
Keep an enum for one mutually exclusive closed state machine. Use tags when categories are open-ended, hierarchical, or multiple values can coexist. If converting:
- state whether exclusivity still applies;
- enforce removal of sibling state tags centrally;
- migrate serialized enum values;
- test no-state and invalid multi-state cases.
Tag is invalid
- Confirm it exists in the registered dictionary in the cooked build.
- Confirm the config/tag source is included and plugin/module loads when expected.
- For native request APIs, do not suppress a missing critical tag without logging.
- Avoid constructing/comparing raw strings.
Parent query fails
- Check direction: stored child can satisfy queried parent, not the reverse.
- Confirm exact variant was not used.
- Inspect explicit container tags and expected parents.
- Confirm both tags are valid and registered.
Tag remains after state ends
- Identify the granting source: loose ASC tag, active effect, ability-owned tag, or custom container.
- Pair lifetime with that source and remove by effect/ability handle when possible.
- Check multiple grants/stacks; one removal may correctly leave another source active.
Rename breaks content or saves
- Add a Gameplay Tag redirect from old to new.
- Resave/migrate dependent assets and serialized data.
- Audit text/config/Data Tables and native constants.
- Remove the redirect only after all supported content/save versions are migrated.
Query permits everything
- Inspect empty All/No expressions and empty containers.
- Build truth-table tests for required present, required absent, blocker present, no tags, parent only, and child only.