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:
Lefteris Notas
2026-05-19 19:20:40 +03:00
parent bec6cb715e
commit 209f24a0f8
17 changed files with 491 additions and 176 deletions

View File

@@ -392,6 +392,8 @@ MainMenu → Loading → InGame ⇄ Paused
### Key Patterns
- **GS_CoreGameState as Replication Hub:** All shared session state (chapter, phase, objectives, encounter status) writes through GS_CoreGameState which auto-replicates to all clients via OnRep → dispatcher.
- **Tag-Driven Everything:** No booleans, no strings. All state is GameplayTags compared via `HasTag()`/`MatchesTag()`. Tags are split across **11 per-category Data Tables** (`DT_Tags_Player`, `DT_Tags_Interaction`, etc.) registered in Project Settings → Gameplay Tags.
- **DA_GameTagRegistry** uses an `Array<Data Table>` to iterate all tables for validation and enumeration. The engine's `UGameplayTagsManager` merges them automatically at runtime.
- **GamePhase transitions are server-authoritative:** `SetGamePhase()` checks `HasAuthority()`. Clients receive phase changes via `OnRep_GamePhase``OnGamePhaseChanged` dispatcher.
- **Interface calls route through server:** `I_Interactable.Execute_OnInteract` must be called server-side. Clients call `Server_Interact` RPC → server validates → calls interface.
- **Data Assets are client-ready:** All `DA_*` assets load identically on all instances from disk. No replication needed.