Enhance narrative systems with detailed implementation guides and data-driven structures

- Updated BPC_NarrativeStateSystem with a comprehensive manual implementation guide, including class setup, variable initialization, and function breakdowns.
- Expanded BPC_ObjectiveSystem documentation to include a manual implementation guide and detailed function descriptions.
- Added a manual implementation guide for BPC_DialoguePlaybackSystem, outlining class setup and function nodes.
- Introduced a manual implementation guide for BPC_DialogueChoiceSystem, detailing choice presentation and selection processes.
- Enhanced BPC_BranchingConsequenceSystem documentation with a manual implementation guide for consequence evaluation.
- Updated BPC_TrialScenarioSystem with a manual implementation guide for scenario management.
- Expanded BPC_LoreUnlockSystem documentation to include a manual implementation guide for lore entry management.
- Added a manual implementation guide for BP_NarrativeTriggerVolume, detailing trigger volume setup and action execution.
- Enhanced BPC_EndingAccumulator documentation with a manual implementation guide for ending evaluation.
- Updated BPC_HitReactionSystem with a manual implementation guide for hit reaction management.
- Added a manual implementation guide for BPC_RecoilSystem, detailing recoil application and recovery processes.
- Introduced DT_ProjectTags.csv to define gameplay tags for various systems, enhancing data-driven design capabilities.
This commit is contained in:
Lefteris Notas
2026-05-19 18:48:37 +03:00
parent eeb1bf82c9
commit bec6cb715e
12 changed files with 745 additions and 11 deletions

View File

@@ -135,4 +135,61 @@ Manages the discovery, unlocking, and tracking of lore entries (documents, notes
| [Save System](../04-save/32_SS_SaveManager.md) | Direct (via I_Persistable) | Save unlocked/read state |
### Reuse Notes
Pure data-driven: all lore content is defined in `DA_LoreEntryData` assets. The system requires zero blueprint changes to add new lore entries. Supports any mix of discovery methods (pickup, narrative flag, location trigger, consequence). Lore categories are defined by gameplay tags, allowing flexible grouping without code changes.
Pure data-driven: all lore content is defined in `DA_LoreEntryData` assets. The system requires zero blueprint changes to add new lore entries. Supports any mix of discovery methods (pickup, narrative flag, location trigger, consequence). Lore categories are defined by gameplay tags, allowing flexible grouping without code changes.
---
## Manual Implementation Guide
### Class Setup
1. Create Blueprint Class: Parent = `ActorComponent`, Name = `BPC_LoreUnlockSystem`
2. Add to Player Character
### Variable Init (BeginPlay)
```
Event BeginPlay
├─ Set AllLoreEntries = loaded DA_LoreEntryData array
├─ Set UnlockedLoreTags = empty Set<GameplayTag>
├─ Set ReadLoreTags = empty Set<GameplayTag>
├─ Set TotalLoreCount = AllLoreEntries.Length
└─ Bind to BPC_NarrativeStateSystem.OnFlagChanged → check for lore unlock triggers
```
### Function Node-by-Node
#### `UnlockLoreByTag(LoreTag: GameplayTag)` → `void`
```
Step 1: If UnlockedLoreTags.Contains(LoreTag) → Return (already unlocked)
Step 2: UnlockedLoreTags.Add(LoreTag)
Step 3: Find entry in AllLoreEntries by LoreTag
Step 4: Add to NewLoreQueue for notification
Step 5: Increment TotalUnlockedCount
Step 6: Fire OnLoreUnlocked(LoreTag, EntryData)
Step 7: Show notification: "New lore discovered: {Entry.Title}"
```
#### `MarkLoreAsRead(LoreTag: GameplayTag)` → `void`
```
Step 1: If NOT UnlockedLoreTags.Contains(LoreTag) → Return
Step 2: If NOT ReadLoreTags.Contains(LoreTag):
ReadLoreTags.Add(LoreTag)
Decrement UnreadCount
Fire OnLoreRead(LoreTag)
```
#### `GetLoreByCategory(CategoryTag: GameplayTag)` → `Array<DA_LoreEntryData>` *(Pure)*
```
ForEach AllLoreEntries:
If Entry.CategoryTag == CategoryTag AND UnlockedLoreTags.Contains(Entry.LoreTag):
Add to results
Return results
```
### Build Checklist
- [ ] Create BPC_LoreUnlockSystem, add to Player Character
- [ ] Define DA_LoreEntryData Data Asset (Title, Body, Category, RequiredFlag, LoreTag)
- [ ] Implement UnlockLoreByTag with dedup check
- [ ] Implement MarkLoreAsRead with unread counter
- [ ] Implement category-based filtering for UI
- [ ] Bind to NarrativeStateSystem for flag-triggered unlocks
- [ ] Test: pick up lore item → notification appears → journal entry unlocks