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:
@@ -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
|
||||
Reference in New Issue
Block a user