Contents
Unreal Engine 5.8 · System guide
Gameplay Tags
Design and apply governed gameplay tag systems
On this page
Choose a task
Choose an approach
Build and understand
Troubleshoot
Workflow and boundaries
Use these checks when a task crosses several systems. The focused references above contain the specific actions.
Design the vocabulary first
Read references/taxonomy.md.
- State what each root means and who owns it.
- Separate semantic roles, for example
State.*,Ability.*,Event.*,InputTag.*,Item.*,Damage.*, andUI.*. - Use one canonical tag for one concept. Add redirects for renames; do not leave synonyms.
- Declare stable code-facing tags natively. Use config sources for designer-managed sets.
- Restrict editing of core roots on teams that need ownership enforcement.
Select the operation
Read references/operations.md.
- Use
FGameplayTagfor one registered tag. - Use
FGameplayTagContainerfor a set; it tracks explicitly added tags and their parents. - Use hierarchical matching when a broad rule should include descendants.
- Use exact matching when only the literal tag is valid.
- Use
FGameplayTagQueryfor authored combinations of any/all/none expressions. - Use a Gameplay Event tag for an occurrence with payload; use a state tag for a condition that remains true.
Execute
- Register tags before use through native definitions, config, Project Settings, or a Data Table source.
- Store containers, not arrays of tag strings.
- Choose exact or hierarchical semantics explicitly at every comparison.
- Apply and remove runtime tags through the system that owns their lifetime—often an ASC effect or ability—rather than unrelated objects editing a loose container.
- Keep input routing tags separate from gameplay state and ability identity.
- Test parent/child direction, empty containers/queries, tag removal, redirects, cooked builds, replication, and save migration.
Read references/patterns.md for state, gating, events, identity,
and UI examples. Read references/migration-troubleshooting.md
when converting bools/enums or diagnosing invalid and non-matching tags.
Hard rules
- Never compare tag text manually.
- Never assume matching is symmetric:
A.Bmatches queryA, butAdoes not match queryA.B. - Never use exact matching accidentally when parent semantics are intended, or vice versa.
- Never use tags as an ungoverned replacement for every bool, enum, identifier, or value.
- Never make a gameplay event tag double as persistent state.
- Never rename a shipped tag without a redirect and save/content migration plan.
See references/sources.md for the UE 5.8 source trail.
Version and evidence
Targets Unreal Engine 5.8 documentation. This label does not establish that every procedure was tested in an editor or packaged build.
Read the documentation sources and verification notes →