Add Project Prototype Guide for PG_Framework Testing Setup

- Introduced a comprehensive guide for creating a minimal playable prototype in UE5.
- Detailed steps for project creation, C++ module integration, gameplay tags setup, and player pawn assembly.
- Included instructions for input system setup, state management wiring, and test level setup.
- Provided a verification checklist and troubleshooting section to assist developers.
- Documented next steps for expanding the prototype with additional systems.
This commit is contained in:
Lefteris Notas
2026-05-21 18:03:15 +03:00
parent cd0ebf2233
commit 8bb162eda2
5 changed files with 1515 additions and 53 deletions

View File

@@ -1,18 +1,23 @@
# C++ & Blueprint Status Checklist — All 135 Systems
**Version:** 1.0 | **Generated:** 2026-05-20
**Version:** 2.0 | **Generated:** 2026-05-21 | **C++ Files:** 22 `.h` + 22 `.cpp` (12 full implementations + 10 stubs)
Complete status grid for every system in the UE5 Modular Game Framework. Use this to track: which systems have C++ code written, which Blueprint specs are complete, and what Blueprint assets remain to create.
**Companion docs:**
- **Remaining BP build order:** [`docs/checklists/remaining-blueprint-build-order.md`](remaining-blueprint-build-order.md)
- **Prototype setup guide:** [`docs/developer/project-prototype-guide.md`](../developer/project-prototype-guide.md)
- **C++ per-class integration:** [`docs/developer/cpp-integration-guide.md`](../developer/cpp-integration-guide.md)
---
## Legend
| Symbol | Meaning |
|--------|---------|
| ✅ | **Done**C++ files written, BP spec complete |
| 🟡 | **Partial** — C++ stub (references siblings, needs subsystem wiring) |
| 🔵 | **BP Spec Only** — Full Blueprint spec exists, no C++ written |
| ✅ | **Done**Full C++ implementation with logic + BP spec complete |
| 🟡 | **C++ Stub** — C++ header exists (UCLASS, basic vars, delegates). Blueprint child provides the full runtime implementation. |
| 🔵 | **BP Spec Only** — Full Blueprint spec exists, no C++ written. Full BP implementation required. |
| ⬜ | **Content Asset** — Create Data Asset/Table instances (not code) |
| ❌ | **Not Started** — Spec exists but asset not created |
@@ -58,14 +63,16 @@ Abbreviations:
| # | System | C++ H/CPP | BP Spec | BP Asset to Create | Status |
|---|--------|-----------|---------|--------------------|--------|
| 08 | `BPC_HealthSystem` | 🔵 BP-only | ✅ `08_BPC_HealthSystem.md` | BP child → attach to pawn | 🔵 |
| 09 | `BPC_StaminaSystem` | 🔵 BP-only | ✅ `09_BPC_StaminaSystem.md` | BP child → attach to pawn | 🔵 |
| 10 | `BPC_StressSystem` | 🔵 BP-only | ✅ `10_BPC_StressSystem.md` | BP child → attach to pawn | 🔵 |
| 11 | `BPC_MovementStateSystem` | 🔵 BP-only | ✅ `11_BPC_MovementStateSystem.md` | BP child → attach to pawn | 🔵 |
| 08 | `BPC_HealthSystem` | 🟡 Stub: vars + delegates | ✅ `08_BPC_HealthSystem.md` | BP child → implement health logic (take/heal damage, death, I_Damageable) → attach to pawn | 🟡 |
| 09 | `BPC_StaminaSystem` | 🟡 Stub: vars + delegates | ✅ `09_BPC_StaminaSystem.md` | BP child → implement stamina logic (drain, regen, exhaustion states) → attach to pawn | 🟡 |
| 10 | `BPC_StressSystem` | 🟡 Stub: enum + vars + delegates | ✅ `10_BPC_StressSystem.md` | BP child → implement stress logic (accumulation, decay, tier transitions) → attach to pawn | 🟡 |
| 11 | `BPC_MovementStateSystem` | 🟡 Stub: vars + delegates | ✅ `11_BPC_MovementStateSystem.md` | BP child → implement movement logic (CMC reads, GASP bridge, posture detection) → attach to pawn | 🟡 |
| 12 | `BPC_HidingSystem` | 🔵 BP-only | ✅ `12_BPC_HidingSystem.md` | BP child → attach to pawn | 🔵 |
| 13 | `BPC_EmbodimentSystem` | 🔵 BP-only | ✅ `13_BPC_EmbodimentSystem.md` | BP child → attach to pawn | 🔵 |
| 14 | `BPC_CameraStateLayer` | 🔵 BP-only | ✅ `14_BPC_CameraStateLayer.md` | BP child → attach to pawn | 🔵 |
| 15 | `BPC_PlayerMetricsTracker` | 🔵 BP-only | ✅ `15_BPC_PlayerMetricsTracker.md` | BP child → attach to pawn | 🔵 |
| — | `PC_CoreController` | 🟡 Stub: minimal empty class | ✅ (covered in 02-player integration) | **BP child** `PC_CoreController` → add input routing, BeginPlay push IMC | 🟡 |
| — | `PS_CorePlayerState` | 🟡 Stub: minimal empty class | ✅ (covered in 02-player integration) | **BP child** `PS_CorePlayerState` → add replicated state variables | 🟡 |
---
@@ -146,14 +153,14 @@ Abbreviations:
| 69 | `BP_WeaponBase` | 🔵 | ✅ | BP actor child |
| 70 | `BPC_AmmoComponent` | 🔵 | ✅ | BP child |
| 71 | `BPC_CombatFeedbackComponent` | 🔵 | ✅ | BP child |
| 72 | `BPC_DamageReceptionSystem` | ✅ `Weapons/BPC_DamageReceptionSystem` | ✅ | None (use C++ component) |
| 72 | `BPC_DamageReceptionSystem` | ✅ Full — `Weapons/BPC_DamageReceptionSystem` | ✅ | None (attach C++ component directly) |
| 73 | `BPC_DeathCauseTracker` | 🔵 | ✅ | BP child |
| 74 | `BPC_FirearmSystem` | 🔵 | ✅ | BP child |
| 75 | `BPC_HitReactionSystem` | 🔵 | ✅ | BP child |
| 75 | `BPC_HitReactionSystem` | 🟡 Stub: `PlayHitReaction()` + thresholds | ✅ | BP child → add animation selection/trigger logic → attach to pawn/enemy |
| 76 | `BPC_MeleeSystem` | 🔵 | ✅ | BP child |
| 77 | `BPC_RecoilSystem` | 🔵 | ✅ | BP child |
| 78 | `BPC_ReloadSystem` | 🔵 | ✅ | BP child |
| 79 | `BPC_ShieldDefenseSystem` | 🔵 | ✅ | BP child |
| 79 | `BPC_ShieldDefenseSystem` | 🟡 Stub: shield health + block angle vars | ✅ | BP child → add raise/lower/block detection → attach to pawn |
### AI (09-ai — 9 systems)
@@ -179,57 +186,113 @@ Abbreviations:
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 115-127, 129, 134-135 | All 16 systems | 🔵 | ✅ | ⬜ Data Asset instances (per content item) |
| 115 | `DA_AdaptationRule` | 🔵 | ✅ | ⬜ Data Asset instances |
| 116 | `DA_AtmosphereProfile` | 🔵 | ✅ | ⬜ Data Asset instances |
| 117 | `DA_BehaviourVariant` | 🔵 | ✅ | ⬜ Data Asset instances |
| 118 | `DA_DataAssetArchitecture` | 🔵 | ✅ | Reference doc only |
| 119 | `DA_EncounterData` | 🔵 | ✅ | ⬜ Data Asset instances |
| 120 | `DA_EquipmentConfig` | 🟡 Stub: damage resist struct + `GetResistance()` | ✅ | ⬜ Data Asset instances per equipment piece |
| 121 | `DA_HapticProfile` | 🔵 | ✅ | ⬜ Data Asset instances |
| 122 | `DA_InteractionData` | 🔵 | ✅ | ⬜ Data Asset instances |
| 123 | `DA_ObjectiveData` | 🔵 | ✅ | ⬜ Data Asset instances |
| 124 | `DA_PuzzleData` | 🔵 | ✅ | ⬜ Data Asset instances |
| 125 | `DA_RareEvent` | 🔵 | ✅ | ⬜ Data Asset instances |
| 126 | `DA_RoomMutation` | 🔵 | ✅ | ⬜ Data Asset instances |
| 127 | `DA_ScareEvent` | 🔵 | ✅ | ⬜ Data Asset instances |
| 129 | `DA_InputMappingProfile` | 🔵 | ✅ | ⬜ Data Asset instances (per platform: PC/Xbox/PS5) |
| 134 | `DA_AudioSettings` | 🔵 | ✅ | ⬜ Data Asset instance (1 global) |
| 135 | `DA_RoomAcousticPreset` | 🔵 | ✅ | ⬜ Data Asset instances (per zone) |
### Input + State (15-16 — 3 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 128 | `SS_EnhancedInputManager` | ✅ `Input/SS_EnhancedInputManager` | ✅ | None (auto-created subsystem) |
| 130 | `BPC_StateManager` | ✅ `Player/BPC_StateManager` | ✅ | None (use C++ component) |
| 131 | `DA_StateGatingTable` | 🔵 | ✅ | ⬜ Data Asset instance (37 rules) |
---
## Summary Counts
| Category | Count |
|----------|-------|
| **C++ systems written** | 12 |
| **BP spec files complete** | 135 + 1 starter = 136 |
| **BP components to create** | 76 (80 BPC_ total 4 C++) |
| **BP actors to create** | 11 |
| **Widget BPs to create** | 14 |
| **Data Asset instances to create** | Per-project (18 DA_ definitions) |
| **GameInstance subsystems** (auto-created) | 7 (3 in C++, 4 BP) |
| **Data Tables to create** | 11 |
| 128 | `SS_EnhancedInputManager` | ✅ Full — `Input/SS_EnhancedInputManager` | ✅ | None (auto-created subsystem) |
| 130 | `BPC_StateManager` | ✅ Full — `Player/BPC_StateManager` | ✅ | None (attach C++ component directly to pawn) |
| 131 | `DA_StateGatingTable` | 🟡 Stub: `FStateGatingRule` struct + `IsActionGated()` query | ✅ | ⬜ Data Asset instance (37 gating rules) |
---
## Quick Action List — What to Build Next
### Immediate (Phase 0 — Foundation)
- [ ] Create 11 Data Tables, import CSVs, register in Project Settings
- [ ] Create `DA_GameTagRegistry` Data Asset, assign TagDataTables
- [ ] Create 11 Data Tables from CSV, import, register in Project Settings
- [ ] Create `DA_GameTagRegistry` Data Asset, assign TagDataTables array (11 entries)
- [ ] Create `BP_GameFramework` (child of `GI_GameFramework`), assign TagRegistry
- [ ] Create `BP_CoreGameMode` (child of `GM_CoreGameMode`), set in Project Settings
- [ ] Create `BP_CoreGameState` (child of `GS_CoreGameState`), set in GameMode defaults
- [ ] Create `BP_CorePlayerController` + `BP_CorePlayerState` (BP specs 08 area)
- [ ] Create `DA_ItemData` instances for initial items (weapons, consumables)
- [ ] Create `BP_CoreGameMode` (child of `GM_CoreGameMode`), set classes in defaults
- [ ] Create `BP_CoreGameState` (child of `GS_CoreGameState`)
- [ ] Create `PC_CoreController` + `PS_CorePlayerState` BP children (C++ stub parents)
- [ ] Create 22 IA_* Input Actions + 5 IMC_* Input Mapping Contexts
- [ ] Create `DA_InputMappingProfile` instances (PC/Xbox/PS5)
### Player Pawn Setup
- [ ] Create player pawn BP with GASP
- [ ] Add `BPC_StateManager` component → assign GatingTable
- [ ] Add `BPC_InventorySystem` component → set grid size
- [ ] Add `BPC_DamageReceptionSystem` component → set thresholds
- [ ] Add remaining 76 `BPC_*` BP children as needed
- [ ] Create player pawn BP (Character parent) with basic movement
- [ ] Add `BPC_StateManager` component → assign `DA_StateGatingTable`
- [ ] Add `BPC_HealthSystem` (C++ stub) → implement health logic in BP child
- [ ] Add `BPC_StaminaSystem` (C++ stub) → implement stamina logic
- [ ] Add `BPC_StressSystem` (C++ stub) → implement stress logic
- [ ] Add `BPC_MovementStateSystem` (C++ stub) → implement movement bridge
- [ ] Add `BPC_InventorySystem` (C++ full) → set grid size + max weight
- [ ] Add `BPC_DamageReceptionSystem` (C++ full) → set thresholds
- [ ] Add `BPC_ShieldDefenseSystem` (C++ stub) → implement shield logic
- [ ] Add `BPC_HitReactionSystem` (C++ stub) → implement hit reaction animations
- [ ] Add remaining 55 `BPC_*` BP children as needed (see build order doc)
### State Management
- [ ] Create `E_PlayerActionState` enum (42 values) in editor
- [ ] Create `E_OverlayState` enum (18 values) in editor
- [ ] Create `E_ActionRequestResult` enum (8 values) in editor
- [ ] Create `E_PlayerVitalSignals` enum (5 values) in editor
- [ ] Create `S_StateChangeRequest`, `S_StateGatingRule`, `S_ActionPermissionResult` structs
- [ ] Create `DA_StateGatingTable` instance → populate 37 gating rules
### Data Asset Content
- [ ] Create `DA_StateGatingTable` instance with 37 rules
- [ ] Create `DA_EquipmentConfig` instance(s) for armor/weapons
- [ ] Create `DA_Item_*` instances for test items (medkit, key, etc.)
- [ ] Create `DA_Equipment_*` instances for armor/weapons
- [ ] Create `DA_AudioSettings`, `DA_RoomAcousticPreset` instances
- [ ] Create remaining `DA_*` instances per project content
### Prototype Testing
- [ ] Follow [`docs/developer/project-prototype-guide.md`](../developer/project-prototype-guide.md) for step-by-step setup
- [ ] Run the [Verification Checklist](../developer/project-prototype-guide.md#10-verification-checklist)
- [ ] Expand per the [Next Steps](../developer/project-prototype-guide.md#11-next-steps--expanding-the-prototype)
---
*Status Checklist v1.0 — Updated 2026-05-20. Regenerate after each implementation phase.*
## C++ Source File Index
### Full Implementations (12 systems — logic complete, no BP child needed for functionality)
| # | C++ Class | Header | Source | Size |
|---|-----------|--------|--------|------|
| 01 | `UDA_GameTagRegistry` | `Public/Core/DA_GameTagRegistry.h` | `Private/Core/DA_GameTagRegistry.cpp` | 105 + cpp |
| 02 | `UFL_GameUtilities` | `Public/Core/FL_GameUtilities.h` | `Private/Core/FL_GameUtilities.cpp` | 169 + cpp |
| 03 | 9 `I_` Interfaces | `Public/Core/I_InterfaceLibrary.h` | — | 317 (header-only) |
| 04 | `UGI_GameFramework` | `Public/Core/GI_GameFramework.h` | `Private/Core/GI_GameFramework.cpp` | 226 + cpp |
| 05 | `AGM_CoreGameMode` | `Public/Core/GM_CoreGameMode.h` | `Private/Core/GM_CoreGameMode.cpp` | 116 + cpp |
| 06 | `AGS_CoreGameState` | `Public/Core/GS_CoreGameState.h` | `Private/Core/GS_CoreGameState.cpp` | 144 + cpp |
| 07 | `UDA_ItemData` | `Public/Inventory/DA_ItemData.h` | `Private/Inventory/DA_ItemData.cpp` | 232 + cpp |
| 31 | `UBPC_InventorySystem` | `Public/Inventory/BPC_InventorySystem.h` | `Private/Inventory/BPC_InventorySystem.cpp` | 210 + cpp |
| 35 | `USS_SaveManager` | `Public/Save/SS_SaveManager.h` | `Private/Save/SS_SaveManager.cpp` | 193 + cpp |
| 72 | `UBPC_DamageReceptionSystem` | `Public/Weapons/BPC_DamageReceptionSystem.h` | `Private/Weapons/BPC_DamageReceptionSystem.cpp` | 150 + cpp |
| 128 | `USS_EnhancedInputManager` | `Public/Input/SS_EnhancedInputManager.h` | `Private/Input/SS_EnhancedInputManager.cpp` | 232 + cpp |
| 130 | `UBPC_StateManager` | `Public/Player/BPC_StateManager.h` | `Private/Player/BPC_StateManager.cpp` | 246 + cpp |
### C++ Stubs (10 systems — UCLASS + basic vars/delegates, need BP child for logic)
| # | C++ Class | Header | Source | Purpose |
|---|-----------|--------|--------|---------|
| 08 | `UBPC_HealthSystem` | `Public/Player/BPC_HealthSystem.h` | `Private/Player/BPC_HealthSystem.cpp` | Health vars + delegates |
| 09 | `UBPC_StaminaSystem` | `Public/Player/BPC_StaminaSystem.h` | `Private/Player/BPC_StaminaSystem.cpp` | Stamina vars + delegate |
| 10 | `UBPC_StressSystem` | `Public/Player/BPC_StressSystem.h` | `Private/Player/BPC_StressSystem.cpp` | Stress enum + vars + delegate |
| 11 | `UBPC_MovementStateSystem` | `Public/Player/BPC_MovementStateSystem.h` | `Private/Player/BPC_MovementStateSystem.cpp` | Movement vars + delegate |
| — | `APC_CoreController` | `Public/Player/PC_CoreController.h` | `Private/Player/PC_CoreController.cpp` | Minimal controller stub |
| — | `APS_CorePlayerState` | `Public/Player/PS_CorePlayerState.h` | `Private/Player/PS_CorePlayerState.cpp` | Minimal player state stub |
| 75 | `UBPC_HitReactionSystem` | `Public/Weapons/BPC_HitReactionSystem.h` | `Private/Weapons/BPC_HitReactionSystem.cpp` | Hit reaction stub |
| 79 | `UBPC_ShieldDefenseSystem` | `Public/Weapons/BPC_ShieldDefenseSystem.h` | `Private/Weapons/BPC_ShieldDefenseSystem.cpp` | Shield defense stub |
| 120 | `UDA_EquipmentConfig` | `Public/Inventory/DA_EquipmentConfig.h` | `Private/Inventory/DA_EquipmentConfig.cpp` | Equipment config stub |
| 131 | `UDA_StateGatingTable` | `Public/State/DA_StateGatingTable.h` | `Private/State/DA_StateGatingTable.cpp` | Gating table stub |
---
*Status Checklist v2.0 — Updated 2026-05-21. See [`remaining-blueprint-build-order.md`](remaining-blueprint-build-order.md) for the prioritized build list.*

View File

@@ -0,0 +1,673 @@
# Remaining Blueprint Build Order — All 135 Systems
**Version:** 1.0 | **Generated:** 2026-05-21 | **C++ Status:** 22 header files (12 full, 10 stubs)
This document is the authoritative "what's left to build" reference. It cross-references the 22 C++ classes in `Source/PG_Framework/` against all 135 Blueprint spec files to show exactly what Blueprint assets remain to be created, in dependency-safe build order.
---
## Legend
| Symbol | Meaning |
|--------|---------|
| ✅ | **Done** — C++ full implementation + BP spec complete. Zero BP build needed (or Data Asset instance only). |
| 🟡 | **C++ Stub** — C++ header exists (UCLASS, basic vars, delegates). Logic must be implemented in Blueprint child. |
| 🔵 | **BP Build Required** — Full Blueprint implementation needed. No C++ code exists. Follow the spec's Manual Implementation Guide. |
| ⬜ | **Data Asset Instance** — Create content Data Asset instances (per-item, per-equipment, per-encounter, etc.). Not a code build. |
| | **None Required** — System is purely architectural (interface or auto-created subsystem). No build step. |
---
## Quick Action Summary
| What | Count |
|------|-------|
| **BP component children to create** (full logic implementation) | 66 |
| **BP component children to create** (C++ stub — add logic to BP child) | 8 |
| **BP actor children to create** | 8 |
| **Widget BPs to create** | 14 |
| **Data Asset instances to create** | Per-project (16 DA_ types → ~200+ instances) |
| **Data Tables to import from CSV** | 11 |
| **Input Actions to create** | 22 |
| **Input Mapping Contexts to create** | 5 |
| **Enums/Structs (in-editor)** | 7 (E_PlayerActionState, E_OverlayState, E_PlayerVitalSignals, E_ActionRequestResult + 3 structs) |
**Total assets to build: ~130 Blueprint assets + ~230 Data Asset instances (content-dependent)**
---
## Build Phase Map
```
Phase 0 → Foundation + Input (01-07, 128) — 8 systems — BUILD FIRST
Phase 1 → Player Core (08-15) — 8 systems
Phase 2 → State Management (130-131) — 2 systems — BUILD BEFORE Phase 1
Phase 3 → Interaction (16-23) — 8 systems
Phase 4 → Inventory (24-34) — 11 systems
Phase 5 → Save/Load (35-43) — 9 systems
Phase 6 → UI (44-57) — 14 systems
Phase 7 → Narrative (58-68) — 11 systems
Phase 8 → Weapons (69-79) — 11 systems
Phase 9 → AI (80-88) — 9 systems
Phase 10 → Adaptive (89-101, 132-133) — 15 systems
Phase 11 → Data Assets (115-127, 129, 134-135) — 16 systems (content instances)
Phase 12 → Meta/Progression (102-103) — 2 systems
Phase 13 → Settings (104-105) — 2 systems
Phase 14 → Polish (106-114) — 9 systems
```
---
## Phase 0 — Foundation + Input (BUILD FIRST)
These 8 systems are the bedrock. Without them, nothing else runs.
### 01 — DA_GameTagRegistry
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Core/DA_GameTagRegistry.h` + `.cpp` |
| **BP Spec** | ✅ `docs/blueprints/01-core/01_DA_GameTagRegistry.md` |
| **What to Build** | ⬜ **Data Asset instance:** `Content/Framework/Core/DA_GameTagRegistry` → assign `TagDataTables` (11 entries) |
| **Manual Steps** | 11 Data Tables must be created from CSV and registered in Project Settings first. |
### 02 — FL_GameUtilities
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Core/FL_GameUtilities.h` + `.cpp` |
| **BP Spec** | ✅ `docs/blueprints/01-core/02_FL_GameUtilities.md` |
| **What to Build** | **None.** Static function library — callable from any BP. |
| **Companion** | `02a_ML_GameUtilities.md` — 24 BP macros (no C++ required). Build the Macro Library in BP if using BP-only path. |
### 03 — I_InterfaceLibrary (9 interfaces)
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Core/I_InterfaceLibrary.h` |
| **BP Spec** | ✅ `docs/blueprints/01-core/03_I_InterfaceLibrary.md` |
| **What to Build** | **None.** All 9 interfaces (I_Interactable, I_Damageable, I_Persistable, I_Lockable, I_Holdable, I_UsableItem, I_Toggleable, I_Adjustable, I_Inspectable) defined in C++. Implement them on your BP actors. |
### 04 — GI_GameFramework
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Core/GI_GameFramework.h` + `.cpp` |
| **BP Spec** | ✅ `docs/blueprints/01-core/04_GI_GameFramework.md` |
| **What to Build** | 🔵 **BP child:** `Content/Framework/Core/BP_GameFramework` (parent: `GI_GameFramework`). In Class Defaults: set `TagRegistry``DA_GameTagRegistry`, `bValidateTagsOnInit``true`. |
| **Project Settings** | Set as **Default Game Instance** in Maps & Modes. |
### 05 — GM_CoreGameMode
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Core/GM_CoreGameMode.h` + `.cpp` |
| **BP Spec** | ✅ `docs/blueprints/01-core/05_GM_CoreGameMode.md` |
| **What to Build** | 🔵 **BP child:** `Content/Framework/Core/BP_CoreGameMode` (parent: `GM_CoreGameMode`). In Class Defaults: set `PlayerControllerClass``PC_CoreController`, `PlayerStateClass``PS_CorePlayerState`, `GameStateClass``BP_CoreGameState`, `DefaultPawnClass` → your player pawn. |
| **Project Settings** | Set as **Default GameMode** in Maps & Modes. |
### 06 — GS_CoreGameState
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Core/GS_CoreGameState.h` + `.cpp` |
| **BP Spec** | ✅ `docs/blueprints/01-core/06_GS_CoreGameState.md` |
| **What to Build** | 🔵 **BP child:** `Content/Framework/Core/BP_CoreGameState` (parent: `GS_CoreGameState`). No extra config needed — replicated state works out of the box. |
### 07 — DA_ItemData
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Inventory/DA_ItemData.h` + `.cpp` |
| **BP Spec** | ✅ `docs/blueprints/01-core/07_DA_ItemData.md` |
| **What to Build** | ⬜ **Data Asset instances:** `DA_Item_*` per game item (weapons, consumables, key items, documents, collectibles, tools, resources, misc). |
### 128 — SS_EnhancedInputManager
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Input/SS_EnhancedInputManager.h` + `.cpp` |
| **BP Spec** | ✅ `docs/blueprints/15-input/128_SS_EnhancedInputManager.md` |
| **What to Build** | **None.** Auto-created GameInstanceSubsystem. |
| **Manual Steps** | Create 22 IA_* Input Actions + 5 IMC_* Input Mapping Contexts. Create `DA_InputMappingProfile` instances per platform. |
### — PC_CoreController
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🟡 **Stub**`Source/PG_Framework/Public/Player/PC_CoreController.h` + `.cpp` |
| **BP Spec** | Covered in 02-player integration docs |
| **What to Build** | 🔵 **BP child:** `Content/Framework/Player/PC_CoreController` (parent: `APC_CoreController`). Add logic: input routing, BeginPlay (push IMC_Default), phase handling. |
### — PS_CorePlayerState
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🟡 **Stub**`Source/PG_Framework/Public/Player/PS_CorePlayerState.h` + `.cpp` |
| **BP Spec** | Covered in 02-player integration docs |
| **What to Build** | 🔵 **BP child:** `Content/Framework/Player/PS_CorePlayerState` (parent: `APS_CorePlayerState`). Add player-specific replicated state: inventory slots, equipped items, narrative flags. |
### Data Tables (Phase 0 Root)
| Asset | Status |
|-------|--------|
| `DT_Tags_Player.csv` | ⬜ Import as Data Table (`GameplayTagTableRow`), register in Project Settings |
| `DT_Tags_Interaction.csv` | ⬜ Import, register |
| `DT_Tags_Item.csv` | ⬜ Import, register |
| `DT_Tags_Narrative.csv` | ⬜ Import, register |
| `DT_Tags_AI.csv` | ⬜ Import, register |
| `DT_Tags_Save.csv` | ⬜ Import, register |
| `DT_Tags_Environment.csv` | ⬜ Import, register |
| `DT_Tags_Combat.csv` | ⬜ Import, register |
| `DT_Tags_State.csv` | ⬜ Import, register |
| `DT_Tags_Audio.csv` | ⬜ Import, register |
| `DT_Tags_Achievement.csv` | ⬜ Import, register |
### Starter GameInstance (00-project-setup)
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 Superseded by GI_GameFramework (04) |
| **BP Spec** | ✅ `docs/blueprints/00-project-setup/GI_StarterGameInstance.md` |
| **What to Build** | 🔵 **BP child:** `BP_StarterGameInstance` (parent: `GameInstance`) — minimal tag validation entry point. Use this for quick prototyping before migrating to full `BP_GameFramework` (04). |
---
## Phase 1 — Player Core (8 systems)
All 8 Player systems need Blueprint component children. Four have C++ stubs; four are BP-only.
### 08 — BPC_HealthSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🟡 **Stub**`Source/PG_Framework/Public/Player/BPC_HealthSystem.h` + `.cpp` |
| **BP Spec** | ✅ `docs/blueprints/02-player/08_BPC_HealthSystem.md` |
| **C++ Provides** | `MaxHealth`, `CurrentHealth`, `OnHealthChanged` dispatcher, `OnDeath` dispatcher |
| **BP to Add** | 🔵 Health logic: `TakeDamage()`, `Heal()`, `OnDeath()` transition, damage resistance modifiers, health regen tick. Must implement `I_Damageable`. |
| **Attach To** | Player pawn |
### 09 — BPC_StaminaSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🟡 **Stub**`Source/PG_Framework/Public/Player/BPC_StaminaSystem.h` + `.cpp` |
| **C++ Provides** | `MaxStamina`, `CurrentStamina`, `OnExhaustionStateChanged` dispatcher |
| **BP to Add** | 🔵 Stamina logic: sprint drain, action costs, exhaustion state machine, regen delay + rate, `CanAffordAction(Cost)` query. |
| **Attach To** | Player pawn |
### 10 — BPC_StressSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🟡 **Stub**`Source/PG_Framework/Public/Player/BPC_StressSystem.h` + `.cpp` |
| **C++ Provides** | `EStressTier` enum (Calm→Catatonic), `StressTier`, `OnStressTierChanged` dispatcher |
| **BP to Add** | 🔵 Stress logic: stress accumulation sources (combat, darkness, scares), decay during safety, tier transitions, hallucination trigger thresholds. |
| **Attach To** | Player pawn |
### 11 — BPC_MovementStateSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🟡 **Stub**`Source/PG_Framework/Public/Player/BPC_MovementStateSystem.h` + `.cpp` |
| **C++ Provides** | `CurrentMovementMode` (FGameplayTag), `OnMovementModeChanged` dispatcher |
| **BP to Add** | 🔵 Movement logic: read CMC (CharacterMovementComponent) states, map to GameplayTags, detect posture changes (standing/crouching/prone), sprint state, footstep events, GASP ABP variable bridge. |
| **Attach To** | Player pawn |
### 12 — BPC_HidingSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **BP Spec** | ✅ `docs/blueprints/02-player/12_BPC_HidingSystem.md` |
| **What to Build** | 🔵 **BP child:** `BPC_HidingSystem` — enter/exit hiding, peek, breath-hold timer, LOS raycasts, stress decay multiplier, I_HidingSpot interface queries. |
| **Attach To** | Player pawn |
### 13 — BPC_EmbodimentSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **BP Spec** | ✅ `docs/blueprints/02-player/13_BPC_EmbodimentSystem.md` |
| **What to Build** | 🔵 **BP child:** `BPC_EmbodimentSystem` — first-person body mesh, arm/weapon IK, visibility per state, skin/outfit overlays, shadow casting. |
| **Attach To** | Player pawn |
### 14 — BPC_CameraStateLayer
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **BP Spec** | ✅ `docs/blueprints/02-player/14_BPC_CameraStateLayer.md` |
| **What to Build** | 🔵 **BP child:** `BPC_CameraStateLayer` — FOV, offset, rotation layers per state (combat zoom, hiding peek, inspect FOV), camera shake triggers, look sensitivity scaling. |
| **Attach To** | Player pawn (or CameraComponent) |
### 15 — BPC_PlayerMetricsTracker
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **BP Spec** | ✅ `docs/blueprints/02-player/15_BPC_PlayerMetricsTracker.md` |
| **What to Build** | 🔵 **BP child:** `BPC_PlayerMetricsTracker` — track accuracy, deaths, playstyle ratios, time-to-complete sections, leaderboard data. Feed to SS_AchievementSystem (103). |
| **Attach To** | Player pawn |
---
## Phase 2 — State Management (BUILD BEFORE Phase 1 systems wire up)
These 2 systems are the central nervous system. `BPC_StateManager` must be on the player pawn before any other system calls `IsActionPermitted()`.
### 130 — BPC_StateManager
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Player/BPC_StateManager.h` + `.cpp` |
| **BP Spec** | ✅ `docs/blueprints/16-state/130_BPC_StateManager.md` |
| **What to Build** | **None.** Attach C++ component directly to player pawn. |
| **Config in Details Panel** | Set `GatingTable``DA_StateGatingTable`, `DefaultActionState``Framework.State.Action.Idle` |
| **Manual Steps** | Create `E_PlayerActionState` (42 values), `E_OverlayState` (18), `E_PlayerVitalSignals` (5), `E_ActionRequestResult` (8) enums in editor. Create `S_StateChangeRequest`, `S_StateGatingRule`, `S_ActionPermissionResult` structs. |
| **Attach To** | Player pawn (component slot 0 — loads first) |
### 131 — DA_StateGatingTable
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🟡 **Stub**`Source/PG_Framework/Public/State/DA_StateGatingTable.h` + `.cpp` |
| **C++ Provides** | `FStateGatingRule` struct, `GatingRules` array, `IsActionGated()` query |
| **What to Build** | ⬜ **Data Asset instance:** `Content/Framework/State/DA_StateGatingTable` → populate `GatingRules` with 37 rules mapping action tags to blocking state tags. |
| **Manual Steps** | Populate all 37 gating rules per the architecture doc. Designers modify rules here — no BP changes. |
---
## Phase 3 — Interaction (8 systems)
### 16 — BPC_InteractionDetector
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — raycast-based interaction detection, hold/press timing, prompt generation, focus begin/end events. Calls `I_Interactable` interface on targets. |
| **Attach To** | Player pawn |
### 17 — I_HidingSpot
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** (simple interface) |
| **What to Build** | 🔵 **BP interface:** `I_HidingSpot` — functions: Enter, Exit, Peek, GetEntryTransform, IsOccupied. Implement on hiding spot actors. |
### 18 — BPC_DiegeticDisplay
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — in-world UI rendering on surfaces (wristwatch, monitors, holograms). Coordinates with `SS_UIManager`. |
### 19 — BP_DoorActor
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP actor child** — physical door with open/close/lock/barricade/trap state machine, linked actors, `I_Interactable` + `I_Lockable` + `I_Toggleable`. |
### 20 — BP_PuzzleDeviceActor
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP actor child** — puzzle base: state machine, solution validation, reward dispenser, `I_Interactable`. Set `DA_PuzzleData` per instance. |
### 21 — BPC_ContextualTraversalSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — vault, mantle, slide, squeeze, climb via Motion Warping. Reads environment probes, plays traversal montages. |
### 22 — BPC_PhysicsDragSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — grab, drag, release physics objects. `I_Holdable` interface integration. Physics handle management. |
### 23 — BPC_UsableWorldObjectSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — generic world object use (levers, valves, buttons, panels). `I_Toggleable` + `I_Adjustable` dispatch. |
---
## Phase 4 — Inventory (11 systems)
### 24 — BPC_ContainerInventory
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — world container inventory (chests, drawers, cabinets, safes). `IPersistable` for loot persistence. |
### 25 — BP_ItemPickup
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP actor child** — physical item in world: bob/rotate animation, `I_Interactable`, auto-pickup or manual pickup. Set `DA_ItemData` per instance. |
### 26 — BPC_ActiveItemSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — quick-slot management (1-8 hotkeys), contextual item use, scroll wheel cycling, `I_UsableItem` calls. |
### 27 — BPC_CollectibleTracker
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — collectible tracking: found count, set bonuses, reward unlocks. Feeds `SS_AchievementSystem`. |
### 28 — BPC_ConsumableSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — consumable use: health packs, syringes, temporary buffs. Reads `DA_ItemData.ConsumableData`. |
### 29 — BPC_DocumentArchiveSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — document archive: read, categorize, flag important. Feeds `WBP_JournalDocumentViewer`. |
### 30 — BPC_EquipmentSlotSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — equipment slots (primary weapon, secondary, melee, tool, armor, accessory). Equip/unequip validation, stat recalculation on swap. |
### 31 — BPC_InventorySystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Inventory/BPC_InventorySystem.h` + `.cpp` |
| **What to Build** | **None.** Attach C++ component directly to player pawn. Set `GridWidth`, `GridHeight`, `MaxWeight` in Details panel. |
| **Attach To** | Player pawn |
### 32 — BPC_ItemCombineSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — item combination/crafting: recipe validation via `DA_ItemData.CombinesWith`/`CombineResult`, result generation. |
### 33 — BPC_JournalSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — quest/objective journal: active, completed, failed tracking. Feeds `WBP_ObjectiveDisplay` + `WBP_JournalDocumentViewer`. |
### 34 — BPC_KeyItemSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — key item tracking: use-on-target, consumed-on-use, `I_Lockable.TryUnlock()` calls. |
---
## Phase 5 — Save/Load (9 systems)
### 35 — SS_SaveManager
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — `Source/PG_Framework/Public/Save/SS_SaveManager.h` + `.cpp` |
| **What to Build** | **None.** Auto-created GameInstanceSubsystem. |
### 36 — I_Persistable
| Aspect | Detail |
|--------|--------|
| **C++ Status** | ✅ Full — in `Source/PG_Framework/Public/Core/I_InterfaceLibrary.h` |
| **What to Build** | **None.** Interface already defined. Implement on any actor that needs save/load. |
### 37 — BP_Checkpoint
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP actor child** — checkpoint: respawn point, activation, save-on-touch. Call `SS_SaveManager.CreateCheckpoint()`. |
### 38 — BPC_AltDeathSpaceSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — alternate death/void space: enter, explore, find exit. Coordinates with `BPC_DeathHandlingSystem`. |
### 39 — BPC_DeathHandlingSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — death orchestrator: death cause determination, death animation, respawn timer, death screen trigger. Calls `GM_CoreGameMode.HandlePlayerDead()`. |
### 40 — BPC_PersistentCorpseSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — corpse persistence: spawn corpse actor on death, preserve inventory as lootable, decay timer. |
### 41 — BPC_PersistentWorldStateRecorder
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — world state recording: track door states, destroyed objects, puzzle completions. Feeds `SS_SaveManager`. |
### 42 — BPC_PlayerRespawnSystem
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — respawn logic: nearest checkpoint lookup, respawn animation, invulnerability window, inventory restoration. |
### 43 — BPC_RunHistoryTracker
| Aspect | Detail |
|--------|--------|
| **C++ Status** | 🔵 **BP-Only** |
| **What to Build** | 🔵 **BP child** — run/session history: death count, chapter progress, item collection stats. Feeds post-game analytics. |
---
## Phase 6 — UI (14 systems — ALL Widget Blueprints)
All 14 UI systems are Widget Blueprints. UMG is BP-native — no C++ conversion needed.
| # | System | Asset Type | Parent | Key Dependencies |
|---|--------|-----------|--------|-----------------|
| 44 | `SS_UIManager` | BP child of `GameInstanceSubsystem` | GameInstanceSubsystem | Menu stack, push/pop, HUD visibility, input mode sync |
| 45 | `WBP_AccessibilityUI` | Widget BP | UserWidget | Colorblind modes, subtitle sizes, control remapping |
| 46 | `WBP_DiegeticHUDFrame` | Widget BP | UserWidget | In-world HUD frames (health bar on wristwatch, etc.) |
| 47 | `WBP_HUDController` | Widget BP | UserWidget | Root HUD: health, stamina, stress bars, crosshair, objective |
| 48 | `WBP_InteractionPromptDisplay` | Widget BP | UserWidget | "Press E to Open" prompts, hold-progress bar |
| 49 | `WBP_InventoryMenu` | Widget BP | UserWidget | Grid-based inventory UI, drag-drop, context menu |
| 50 | `WBP_JournalDocumentViewer` | Widget BP | UserWidget | Document reader: text, images, audio logs |
| 51 | `WBP_MainMenu` | Widget BP | UserWidget | New Game, Continue, Load Save, Settings, Quit |
| 52 | `WBP_MenuFlowController` | Widget BP | UserWidget | Menu state machine (Main→Settings→Back, etc.) |
| 53 | `WBP_NotificationToast` | Widget BP | UserWidget | Achievement unlock, item found, objective update popups |
| 54 | `WBP_ObjectiveDisplay` | Widget BP | UserWidget | Active objectives list, progress bars, compass markers |
| 55 | `WBP_PauseMenu` | Widget BP | UserWidget | Resume, Settings, Load, Save, Main Menu, Quit |
| 56 | `WBP_ScreenEffectController` | Widget BP | UserWidget | Vignette, blood splatter, flash, color grading overlays |
| 57 | `WBP_SettingsMenu` | Widget BP | UserWidget | Graphics, Audio, Controls, Accessibility, Language |
---
## Phase 7 — Narrative (11 systems)
| # | System | Type | What to Build |
|---|--------|------|--------------|
| 58 | `BPC_NarrativeStateSystem` | BPC child | Narrative state machine: chapter/phase tracking, flag management |
| 59 | `BPC_ObjectiveSystem` | BPC child | Objective tracking: add/complete/fail, prerequisite checking |
| 60 | `BPC_DialoguePlaybackSystem` | BPC child | Dialogue playback: text display, audio sync, auto-advance |
| 61 | `BPC_DialogueChoiceSystem` | BPC child | Dialogue choices: branching, consequence dispatch, timers |
| 62 | `BPC_BranchingConsequenceSystem` | BPC child | Consequence execution: set narrative flags, spawn actors, trigger events |
| 63 | `BPC_TrialScenarioSystem` | BPC child | Timed trial/puzzle: countdown, success/fail conditions |
| 64 | `BPC_CutsceneBridge` | BPC child | Cutscene bridge: enter/exit cutscene phase, camera control, skip |
| 65 | `BPC_LoreUnlockSystem` | BPC child | Lore/journal unlock: trigger-based, item-based discovery |
| 66 | `DA_NarrativeDataAssets` | ⬜ DA instances | Dialogue lines, choice trees, quest definitions |
| 67 | `BP_NarrativeTriggerVolume` | BP actor child | Trigger volume: on-overlap set narrative flags, start dialogue |
| 68 | `BPC_EndingAccumulator` | BPC child | Ending tracker: accumulate ending conditions, determine final outcome |
---
## Phase 8 — Weapons (11 systems)
| # | System | C++ | What to Build |
|---|--------|-----|--------------|
| 69 | `BP_WeaponBase` | 🔵 | BP actor child: weapon base with fire/aim/reload state machine. `I_UsableItem` |
| 70 | `BPC_AmmoComponent` | 🔵 | BP child: ammo pool, reserve/magazine tracking, ammo pickup |
| 71 | `BPC_CombatFeedbackComponent` | 🔵 | BP child: hit markers, damage numbers, kill confirmation |
| 72 | `BPC_DamageReceptionSystem` | ✅ Full | Attach C++ component directly. Set configs in Details panel. |
| 73 | `BPC_DeathCauseTracker` | 🔵 | BP child: death cause logging, damage history, kill attribution |
| 74 | `BPC_FirearmSystem` | 🔵 | BP child: hitscan/projectile fire, fire rate, spread, recoil |
| 75 | `BPC_HitReactionSystem` | 🟡 Stub | 🔵 BP child: add hit reaction animation selection, stagger/knockdown/ragdoll triggers |
| 76 | `BPC_MeleeSystem` | 🔵 | BP child: melee combo system, hitbox spawning, damage application |
| 77 | `BPC_RecoilSystem` | 🔵 | BP child: recoil pattern playback, recovery, camera kick |
| 78 | `BPC_ReloadSystem` | 🔵 | BP child: reload timing, animation sync, ammo transfer |
| 79 | `BPC_ShieldDefenseSystem` | 🟡 Stub | 🔵 BP child: add shield raise/lower, block detection, break effect |
---
## Phase 9 — AI (9 systems)
| # | System | Type | What to Build |
|---|--------|------|--------------|
| 80 | `BP_EnemyBase` | BP actor child | Enemy character: health, damage, AI controller, behavior tree |
| 81 | `BP_PatrolPath` | BP actor child | Patrol path spline: waypoints, pause durations, loop settings |
| 82 | `BPC_AlertSystem` | BP child | Alert state machine: idle→suspicious→alert→combat→search |
| 83 | `BPC_AIStateMachine` | BP child | AI behavior state: patrol, investigate, combat, flee |
| 84 | `AI_BaseAgentController` | BP child of AIController | AI controller: behavior tree runner, perception setup |
| 85 | `BB_AgentBoard` | ⬜ Blackboard def | Blackboard keys: TargetActor, LastKnownPosition, AlertLevel, PatrolIndex |
| 86 | `BPC_AIMemorySystem` | BP child | AI memory: last known locations, threat history, shared squad knowledge |
| 87 | `BPC_AIPerceptionSystem` | BP child | AI perception: sight cone, hearing radius, detection speed |
| 88 | `BPC_BehaviourVariantSelector` | BP child | Behavior variant: coward/aggressive/defensive selection per encounter |
---
## Phase 10 — Adaptive (15 systems)
| # | System | Type | What to Build |
|---|--------|------|--------------|
| 89 | `BPC_DifficultyManager` | BP child | Dynamic difficulty: scale damage, spawn counts, puzzle hints |
| 90 | `BPC_FearSystem` | BP child | Fear: AI fear levels, player fear, flee behavior |
| 91 | `BPC_PerformanceScaler` | BP child | Performance: dynamic LOD, particle reduction, cull distance |
| 92 | `BPC_ProceduralEncounter` | BP child | Procedural encounters: spawn enemies/events based on player state |
| 93 | `BPC_AdaptiveEnvironmentDirector` | BP child | Environment director: coordinate atmosphere, audio, light changes |
| 94 | `BPC_AtmosphereStateController` | BP child | Atmosphere: tone/tension tracking, post-process blending |
| 95 | `BPC_AudioAtmosphereController` | 🔵 [DEPRECATED] — replaced by SS_AudioManager (132) |
| 96 | `BPC_LightEventController` | BP child | Light events: flicker, strobe, blackout, color shift |
| 97 | `BPC_MemoryDriftSystem` | BP child | Memory drift: environmental distortion, room mutation |
| 98 | `BPC_PacingDirector` | BP child | Pacing: action/calm cycle management, intensity curve |
| 99 | `BPC_PlaystyleClassifier` | BP child | Playstyle: stealth/combat/exploration classification |
| 100 | `BPC_RareEventSystem` | BP child | Rare events: low-probability special encounters |
| 101 | `BPC_ScareEventSystem` | BP child | Scare events: jump scares, ambient scares, tension buildup |
| 132 | `SS_AudioManager` | 🔵 BP child of GameInstanceSubsystem | Audio subsystem: bus management, room presets, gameplay parameters |
| 133 | `BP_RoomAudioZone` | 🔵 BP actor child | Room audio zone: trigger volume, reverb/occlusion switching |
---
## Phase 11 — Data Assets (16 systems)
All 16 are Data Asset definitions. No code — create Data Asset instances per content item.
| # | System | Instances Needed |
|---|--------|-----------------|
| 115 | `DA_AdaptationRule` | 5-15 (one per difficulty rule) |
| 116 | `DA_AtmosphereProfile` | 5-20 (one per room/zone) |
| 117 | `DA_BehaviourVariant` | 3-5 (coward/aggressive/defensive per enemy type) |
| 118 | `DA_DataAssetArchitecture` | Reference document only |
| 119 | `DA_EncounterData` | Per encounter group (content-driven) |
| 120 | `DA_EquipmentConfig` | 🟡 C++ stub — create instances per equipment piece |
| 121 | `DA_HapticProfile` | 3 (PC/Xbox/PS5 controller profiles) |
| 122 | `DA_InteractionData` | Per interactable object type (content-driven) |
| 123 | `DA_ObjectiveData` | Per quest/objective (content-driven) |
| 124 | `DA_PuzzleData` | Per puzzle device (content-driven) |
| 125 | `DA_RareEvent` | 3-10 rare event definitions |
| 126 | `DA_RoomMutation` | 5-15 room mutation profiles |
| 127 | `DA_ScareEvent` | 10-50 scare event definitions |
| 129 | `DA_InputMappingProfile` | 3 (PC/Xbox/PS5 key binding profiles) |
| 134 | `DA_AudioSettings` | 1 (master bus config, volume defaults) |
| 135 | `DA_RoomAcousticPreset` | Per acoustic zone (small room / outdoor / cave / etc.) |
---
## Phase 12 — Meta/Progression (2 systems)
| # | System | Type | What to Build |
|---|--------|------|--------------|
| 102 | `BPC_ProgressStatTracker` | BP child | Progress stats: completion %, item collection, death count |
| 103 | `SS_AchievementSystem` | BP child of GameInstanceSubsystem | Achievement subsystem: unlock conditions, trophy notification, platform API bridge |
---
## Phase 13 — Settings (2 systems)
| # | System | Type | What to Build |
|---|--------|------|--------------|
| 104 | `BPC_AccessibilitySettings` | BP child | Accessibility: colorblind, subtitle, control remapping, TTS |
| 105 | `SS_SettingsSystem` | BP child of GameInstanceSubsystem | Settings persistence: save/load config to disk, apply on boot |
---
## Phase 14 — Polish (9 systems)
| # | System | Type | What to Build |
|---|--------|------|--------------|
| 106 | `BPC_AnalyticsTracker` | BP child | Analytics: event telemetry, session metrics |
| 107 | `BPC_DevCheatManager` | BP child | Dev cheats: god mode, no-clip, give item, teleport |
| 108 | `BPC_ErrorHandler` | BP child | Error/crash: graceful shutdown, error log write |
| 109 | `BPC_FPSCounter` | BP child | FPS counter: on-screen perf display |
| 110 | `BPC_LoadingScreen` | BP child | Loading screen: progress bar, tip rotation, chapter art |
| 111 | `BPC_TutorialSystem` | BP child | Tutorial: contextual hints, input prompts, tutorial progression |
| 112 | `WBP_CreditsScreen` | Widget BP | Credits roll |
| 113 | `WBP_DebugMenu` | Widget BP | Debug overlay: state viewer, tag inspector, log viewer |
| 114 | `WBP_SplashScreen` | Widget BP | Boot splash / branding |
---
## Dependency-Safe Build Order (Linear)
If building solo, follow this order to avoid forward-reference compile errors:
```
STEP 1 — 11 Data Tables (import CSV, register in Project Settings)
STEP 2 — DA_GameTagRegistry Data Asset (assign 11 tables)
STEP 3 — GI_GameFramework BP child → set as Default GameInstance
STEP 4 — PC_CoreController + PS_CorePlayerState BP children (stubs)
STEP 5 — GM_CoreGameMode BP child → set class defaults, set as Default GameMode
STEP 6 — GS_CoreGameState BP child
STEP 7 — E_PlayerActionState + E_OverlayState + E_ActionRequestResult + E_PlayerVitalSignals enums
STEP 8 — S_StateChangeRequest + S_StateGatingRule + S_ActionPermissionResult structs
STEP 9 — DA_StateGatingTable Data Asset (37 rules)
STEP 10 — BPC_StateManager component on player pawn
STEP 11 — Player pawn BP → attach all BPC_ components (run the list from Section 6 of project-setup-migration.md)
STEP 12 — Player Core BPs (08-15) — build ONLY those referenced by StateManager first
STEP 13 — 22 IA_* Input Actions + 5 IMC_* Input Mapping Contexts
STEP 14 — DA_InputMappingProfile instances (PC/Xbox/PS5)
STEP 15 — Interaction BPs (16-23) — START with InteractionDetector
STEP 16 — Inventory BPs (24-34) — Core InventorySystem is C++, build supporting BPs
STEP 17 — Save/Load BPs (35-43)
STEP 18 — UI Widgets (44-57) — START with HUDController + UIManager
STEP 19 — Narrative BPs (58-68)
STEP 20 — Weapons BPs (69-79) — Core DamageReception is C++, build supporting BPs
STEP 21 — AI BPs (80-88)
STEP 22 — Adaptive BPs (89-101)
STEP 23 — Meta + Settings + Polish (102-114)
STEP 24 — SS_AudioManager + BP_RoomAudioZone (132-133)
STEP 25 — All DA_* Data Asset instances (content-populated, per project)
```
---
## Per-System Spec References
Every system has a complete spec in `docs/blueprints/` with node-by-node Manual Implementation Guide. Use those to build each BP child. Key architectural docs:
| Doc | Covers |
|-----|--------|
| `docs/architecture/bpc-statemanager.md` | State Manager enum values, gating table rules, force stack pattern |
| `docs/architecture/metasounds-audio-system.md` | Audio bus architecture, room presets, settings integration |
| `docs/architecture/animation-catalog.md` | 14 required animation notifies, montage contracts |
| `docs/architecture/sound-catalog.md` | 150+ sound triggers, 14 surface table entries |
| `docs/architecture/multiplayer-networking.md` | HasAuthority() gates, Server_ RPCs, RepNotify patterns |
| `docs/architecture/blueprint-limitations-workarounds.md` | C++-only functions you'll encounter during BP implementation |
| `docs/developer/cpp-integration-guide.md` | Per-C++-class setup steps, usage patterns, BP child requirements |
---
## Counting Summary
| Asset Type | Total | C++-Covered | BP to Build |
|-----------|-------|------------|-------------|
| **BP Components (BPC_)** | 79 | 4 full C++, 8 stubs | 67 BP children (8 have C++ stubs to extend) |
| **BP Actors (BP_)** | 11 | 0 | 11 BP actor children |
| **Widget BPs (WBP_)** | 14 | 0 | 14 Widget BPs |
| **Data Assets (DA_)** | 18 | 3 full C++, 2 stubs | ~200+ DA instances (content-driven) |
| **GameInstance Subsystems (SS_)** | 7 | 3 full C++ | 4 BP children |
| **Interfaces (I_)** | 10 | 9 in C++ | 1 (I_HidingSpot) |
| **Function Libraries (FL_)** | 1 | 1 in C++ | 0 |
| **GameInstance (GI_)** | 1 | 1 in C++ | 1 BP child |
| **GameMode (GM_)** | 1 | 1 in C++ | 1 BP child |
| **GameState (GS_)** | 1 | 1 in C++ | 1 BP child |
| **PlayerController (PC_)** | 1 | 1 stub | 1 BP child |
| **PlayerState (PS_)** | 1 | 1 stub | 1 BP child |
| **Data Tables** | 11 | 0 | 11 imports |
| **Input Actions** | 22 | 0 | 22 create |
| **Input Mapping Contexts** | 5 | 0 | 5 create |
| **Enums** | 4 | 2 in C++ | 2 to create in editor |
| **Structs** | 3 | 1 in C++ | 2 to create in editor |
**Most critical build:** `BPC_StateManager` (130) + `DA_StateGatingTable` (131) — without these, no system can query whether an action is permitted. Build these immediately after Foundation.
---
*Remaining Blueprint Build Order v1.0 — Companion to `cpp-blueprint-status.md` and `cpp-integration-guide.md`.*