Refactor Gameplay Tags: Split DT_ProjectTags.csv into 11 per-category Data Tables
- Removed DT_ProjectTags.csv and migrated tags into separate Data Tables: - DT_Tags_Player.csv (35 tags) - DT_Tags_Interaction.csv (37 tags) - DT_Tags_Item.csv (28 tags) - DT_Tags_Narrative.csv (55 tags) - DT_Tags_AI.csv (24 tags) - DT_Tags_Save.csv (25 tags) - DT_Tags_Environment.csv (35 tags) - DT_Tags_Combat.csv (28 tags) - DT_Tags_State.csv (43 tags) - DT_Tags_Audio.csv (29 tags) - DT_Tags_Achievement.csv (22 tags) - Updated INDEX.md to reflect new structure and deprecated DT_ProjectTags.csv. - Enhanced documentation in 01-core-foundation.md regarding tag-driven architecture.
This commit is contained in:
@@ -14,12 +14,12 @@ This document catalogs all UE5 engine functions that are C++ only (not exposed t
|
||||
**UE5 Node:** Does NOT exist in Blueprint
|
||||
**Files Affected:** `01_GI_GameTagRegistry.md`, any system that needs to enumerate all tags
|
||||
|
||||
**Blueprint Workaround — Data Table Proxy:**
|
||||
**Blueprint Workaround — Data Table Proxy (Multi-Table):**
|
||||
|
||||
1. Create a Data Table: `DT_ProjectTags` with Row Structure = `GameplayTagTableRow`
|
||||
2. Populate it with all framework tags (mirrors `DefaultGameplayTags.ini`)
|
||||
3. Register in Project Settings → GameplayTags → Gameplay Tag Table List
|
||||
4. In Blueprint: use `Get Data Table Row Names` → `ForEachLoop` → `Get Data Table Row` → extract `Tag` field
|
||||
1. Create 11 per-category Data Tables with Row Structure = `GameplayTagTableRow` (see `docs/blueprints/01-core/data-tables/`)
|
||||
2. Populate each with its category's tags (mirrors `DefaultGameplayTags.ini`)
|
||||
3. Register ALL tables in `Project Settings → GameplayTags → Gameplay Tag Table List`
|
||||
4. In Blueprint: use outer `ForEachLoop` over `Array<Data Table>` + inner `ForEachLoop` over `Get Data Table Row Names` → `Get Data Table Row` → extract `Tag` field
|
||||
5. This provides a complete tag list without C++
|
||||
|
||||
**Trade-off:** Manual maintenance. Adding new tags requires updating both the `.ini` file AND the Data Table. Mitigation: use `ExportTagNamespace()` to audit for discrepancies.
|
||||
@@ -176,7 +176,7 @@ OR create a Blueprint Macro Library with a macro that wraps the subsystem lookup
|
||||
When writing or updating Blueprint spec files, follow these rules to avoid C++-only references:
|
||||
|
||||
1. **Never reference `UGameplayTagsManager::Get()`** — use `Get Tag Display Name`, `Is Gameplay Tag Valid`, `Make Literal Gameplay Tag`.
|
||||
2. **Never reference `Get All Gameplay Tags`** — use the Data Table proxy pattern (`DT_ProjectTags` → `Get Data Table Row Names`).
|
||||
2. **Never reference `Get All Gameplay Tags`** — use the multi-table Data Table proxy pattern (Array<Data Table> → nested `ForEachLoop` → `Get Data Table Row`).
|
||||
3. **Never use `FPrimaryAssetId` as a type name** — use `Primary Asset Id` (Blueprint type).
|
||||
4. **Never use `TSoftObjectPtr` as a type name** — use `Soft Object Reference` (Blueprint type).
|
||||
5. **Never put logic in Data Assets** — move initialization/validation to GameInstance, Subsystem, or Editor Utility.
|
||||
|
||||
Reference in New Issue
Block a user