Files
UE5-Modular-Game-Framework/docs/checklists/cpp-blueprint-status.md
Lefteris Notas 14441c000c Add haptics example documentation for Project Void controller feedback
- Introduced comprehensive guide for setting up controller haptics and force feedback.
- Detailed directory structure for haptic profiles and creation steps for DA_HapticProfile instances.
- Included platform-specific configurations for Xbox and PS5 DualSense adaptive triggers.
- Outlined wiring of BPC_HapticsController to various gameplay systems and events.
- Provided accessibility integration options and testing checklist for haptic functionality.
2026-05-22 17:16:34 +03:00

344 lines
21 KiB
Markdown

# C++ & Blueprint Status Checklist — All 147 Systems
**Version:** 2.1 | **Generated:** 2026-05-22 | **C++ Files:** 27 `.h` + 27 `.cpp` (15 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** — 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 |
Abbreviations:
- **C++ H/CPP** = C++ header and source files exist in `Source/PG_Framework/`
- **BP Spec** = Blueprint specification file exists in `docs/blueprints/`
- **BP Asset** = Blueprint asset to create in UE5 Content Browser
- **MI Guide** = Manual Implementation Guide (node-by-node) in spec file
---
## Phase 0: Foundation (01-core — 7 systems)
| # | System | C++ H/CPP | BP Spec | BP Asset to Create | Status |
|---|--------|-----------|---------|--------------------|--------|
| 01 | `DA_GameTagRegistry` | ✅ `Core/DA_GameTagRegistry` | ✅ `01_DA_GameTagRegistry.md` | Data Asset instance: `DA_GameTagRegistry` (assign TagDataTables) | ✅ |
| 02 | `FL_GameUtilities` | ✅ `Core/FL_GameUtilities` | ✅ `02_FL_GameUtilities.md` | None (static library) | ✅ |
| 03 | `I_InterfaceLibrary` | ✅ `Core/I_InterfaceLibrary.h` | ✅ `03_I_InterfaceLibrary.md` | None (implement on actors) | ✅ |
| 04 | `GI_GameFramework` | ✅ `Core/GI_GameFramework` | ✅ `04_GI_GameFramework.md` | **BP_GameFramework** (GameInstance child) | ✅ |
| 05 | `GM_CoreGameMode` | ✅ `Core/GM_CoreGameMode` | ✅ `05_GM_CoreGameMode.md` | **BP_CoreGameMode** (GameMode child) | ✅ |
| 06 | `GS_CoreGameState` | ✅ `Core/GS_CoreGameState` | ✅ `06_GS_CoreGameState.md` | **BP_CoreGameState** (GameState child) | ✅ |
| 07 | `DA_ItemData` | ✅ `Inventory/DA_ItemData` | ✅ `07_DA_ItemData.md` | Data Asset instances: `DA_Item_*` per item | ✅ |
| — | `GI_StarterGameInstance` | 🔵 (superseded by 04) | ✅ `GI_StarterGameInstance.md` | **BP_StarterGameInstance** (or skip, use 04) | 🟡 |
### Data Tables (01-core root)
| Asset | Status |
|-------|--------|
| `DT_Tags_Player.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_Interaction.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_Item.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_Narrative.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_AI.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_Save.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_Environment.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_Combat.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_State.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_Audio.csv` | ⬜ Create Data Table, import CSV |
| `DT_Tags_Achievement.csv` | ⬜ Create Data Table, import CSV |
---
## Phase 1: Player Core (02-player — 8 systems)
| # | System | C++ H/CPP | BP Spec | BP Asset to Create | Status |
|---|--------|-----------|---------|--------------------|--------|
| 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 | 🟡 |
---
## Phase 2-14: All Remaining Systems
### Interaction (03-interaction — 8 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 16 | `BPC_InteractionDetector` | 🔵 | ✅ | BP child |
| 17 | `I_HidingSpot` | 🔵 | ✅ | Implement on BP actors |
| 18 | `BPC_DiegeticDisplay` | 🔵 | ✅ | BP child |
| 19 | `BP_DoorActor` | 🔵 | ✅ | BP actor child |
| 20 | `BP_PuzzleDeviceActor` | 🔵 | ✅ | BP actor child |
| 21 | `BPC_ContextualTraversalSystem` | 🔵 | ✅ | BP child |
| 22 | `BPC_PhysicsDragSystem` | 🔵 | ✅ | BP child |
| 23 | `BPC_UsableWorldObjectSystem` | 🔵 | ✅ | BP child |
### Inventory (04-inventory — 11 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 24 | `BPC_ContainerInventory` | 🔵 | ✅ | BP child |
| 25 | `BP_ItemPickup` | 🔵 | ✅ | BP actor child |
| 26 | `BPC_ActiveItemSystem` | 🔵 | ✅ | BP child |
| 27 | `BPC_CollectibleTracker` | 🔵 | ✅ | BP child |
| 28 | `BPC_ConsumableSystem` | 🔵 | ✅ | BP child |
| 29 | `BPC_DocumentArchiveSystem` | 🔵 | ✅ | BP child |
| 30 | `BPC_EquipmentSlotSystem` | 🔵 | ✅ | BP child |
| 31 | `BPC_InventorySystem` | ✅ `Inventory/BPC_InventorySystem` | ✅ | None (use C++ component directly) |
| 32 | `BPC_ItemCombineSystem` | 🔵 | ✅ | BP child |
| 33 | `BPC_JournalSystem` | 🔵 | ✅ | BP child |
| 34 | `BPC_KeyItemSystem` | 🔵 | ✅ | BP child |
### Save/Load (05-saveload — 9 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 35 | `SS_SaveManager` | ✅ `Save/SS_SaveManager` | ✅ | None (auto-created subsystem) |
| 36 | `I_Persistable` | ✅ `Core/I_InterfaceLibrary.h` | ✅ | Implement on actors |
| 37 | `BP_Checkpoint` | 🔵 | ✅ | BP actor child |
| 38 | `BPC_AltDeathSpaceSystem` | 🔵 | ✅ | BP child |
| 39 | `BPC_DeathHandlingSystem` | 🔵 | ✅ | BP child |
| 40 | `BPC_PersistentCorpseSystem` | 🔵 | ✅ | BP child |
| 41 | `BPC_PersistentWorldStateRecorder` | 🔵 | ✅ | BP child |
| 42 | `BPC_PlayerRespawnSystem` | 🔵 | ✅ | BP child |
| 43 | `BPC_RunHistoryTracker` | 🔵 | ✅ | BP child |
### UI (06-ui — 14 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 44 | `SS_UIManager` | 🔵 | ✅ | BP child (auto-created subsystem) |
| 45 | `WBP_AccessibilityUI` | 🔵 | ✅ | Widget BP |
| 46 | `WBP_DiegeticHUDFrame` | 🔵 | ✅ | Widget BP |
| 47 | `WBP_HUDController` | 🔵 | ✅ | Widget BP |
| 48 | `WBP_InteractionPromptDisplay` | 🔵 | ✅ | Widget BP |
| 49 | `WBP_InventoryMenu` | 🔵 | ✅ | Widget BP |
| 50 | `WBP_JournalDocumentViewer` | 🔵 | ✅ | Widget BP |
| 51 | `WBP_MainMenu` | 🔵 | ✅ | Widget BP |
| 52 | `WBP_MenuFlowController` | 🔵 | ✅ | Widget BP |
| 53 | `WBP_NotificationToast` | 🔵 | ✅ | Widget BP |
| 54 | `WBP_ObjectiveDisplay` | 🔵 | ✅ | Widget BP |
| 55 | `WBP_PauseMenu` | 🔵 | ✅ | Widget BP |
| 56 | `WBP_ScreenEffectController` | 🔵 | ✅ | Widget BP |
| 57 | `WBP_SettingsMenu` | 🔵 | ✅ | Widget BP |
### Narrative (07-narrative — 11 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 58-68 | All 11 systems | 🔵 | ✅ | BP children + DA instances |
### Weapons (08-weapons — 11 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 69 | `BP_WeaponBase` | 🔵 | ✅ | BP actor child |
| 70 | `BPC_AmmoComponent` | 🔵 | ✅ | BP child |
| 71 | `BPC_CombatFeedbackComponent` | 🔵 | ✅ | BP child |
| 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` | 🟡 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` | 🟡 Stub: shield health + block angle vars | ✅ | BP child → add raise/lower/block detection → attach to pawn |
### AI (09-ai — 9 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 80-88 | All 9 systems | 🔵 | ✅ | BP children |
### Adaptive (10-adaptive — 15 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 89-101 | All 13 core | 🔵 | ✅ | BP children |
| 132 | `SS_AudioManager` | 🔵 | ✅ | BP child (auto-created subsystem) |
| 133 | `BP_RoomAudioZone` | 🔵 | ✅ | BP actor child |
### Meta, Settings, Polish (11-13 — 13 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 102-114 | All 13 systems | 🔵 | ✅ | BP children + widget BPs |
| 148 | `BPC_HapticsController` | 🔵 (Blueprint-only) | ✅ | ⬜ BP child attach to PlayerController |
### Data Assets (14-data-assets — 16 systems)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 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` | ✅ 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) |
---
## Phase 17: Planar Capture System (17-capture — 12 systems)
### Capture Components & Actors (17-capture)
| # | System | C++ | BP Spec | BP Asset |
|---|--------|-----|---------|----------|
| 136 | `BPC_PlanarCapture` | ✅ Full — `Capture/BPC_PlanarCapture` | ✅ | None (use C++ component directly) |
| 137 | `BP_PlanarCaptureActor` | ✅ Full — `Capture/BP_PlanarCaptureActor` | ✅ | BP children (139-143 extend this) |
| 138 | `SS_PlanarCaptureManager` | ✅ Full — `Capture/SS_PlanarCaptureManager` | ✅ | None (auto-created WorldSubsystem) |
| 139 | `BP_Mirror` | 🔵 BP-only | ✅ | BP actor child of BP_PlanarCaptureActor |
| 140 | `BP_Portal` | 🔵 BP-only | ✅ | BP actor child of BP_PlanarCaptureActor |
| 141 | `BP_Monitor` | 🔵 BP-only | ✅ | BP actor child of BP_PlanarCaptureActor |
| 142 | `BP_HorrorMirror` | 🔵 BP-only (extends BP_Mirror) | ✅ | BP actor child of BP_Mirror |
| 143 | `BP_FakeWindow` | 🔵 BP-only | ✅ | BP actor child of BP_PlanarCaptureActor |
| 144 | `M_CaptureSurface_Master` | ⬜ Content Asset | ✅ | Create Material in editor |
| 145 | `MPC_CaptureSurface` | ⬜ Content Asset | ✅ | Create MPC in editor |
| 146 | `DA_PlanarCaptureProfile` | 🔵 BP-only | ✅ | ⬜ Data Asset instances |
| 147 | `MI_MirrorInstances` | ⬜ Content Asset | ✅ | 7 Material Instance Constants |
---
## Quick Action List — What to Build Next
### Immediate (Phase 0 — Foundation)
- [ ] 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 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 (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_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)
---
## C++ Source File Index
### Full Implementations (15 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 |
| 136 | `UBPC_PlanarCapture` | `Public/Capture/BPC_PlanarCapture.h` | `Private/Capture/BPC_PlanarCapture.cpp` | 360 + cpp |
| 137 | `ABP_PlanarCaptureActor` | `Public/Capture/BP_PlanarCaptureActor.h` | `Private/Capture/BP_PlanarCaptureActor.cpp` | 250 + cpp |
| 138 | `USS_PlanarCaptureManager` | `Public/Capture/SS_PlanarCaptureManager.h` | `Private/Capture/SS_PlanarCaptureManager.cpp` | 330 + 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 |
### Planar Capture Systems (3 full C++ implementations)
| # | C++ Class | Header | Source | Purpose |
|---|-----------|--------|--------|---------|
| 136 | `UBPC_PlanarCapture` | `Public/Capture/BPC_PlanarCapture.h` | `Private/Capture/BPC_PlanarCapture.cpp` | SceneCapture2D lifecycle, camera math, horror features |
| 137 | `ABP_PlanarCaptureActor` | `Public/Capture/BP_PlanarCaptureActor.h` | `Private/Capture/BP_PlanarCaptureActor.cpp` | Placeable surface actor with mesh, MDI, proximity trigger |
| 138 | `USS_PlanarCaptureManager` | `Public/Capture/SS_PlanarCaptureManager.h` | `Private/Capture/SS_PlanarCaptureManager.cpp` | Global budget manager, RT pool, surface scoring |
### Capture Utility (Static Library)
| # | C++ Class | Header | Source | Purpose |
|---|-----------|--------|--------|---------|
| — | `UPlanarCaptureCameraUtils` | `Public/Capture/PlanarCaptureCameraUtils.h` | `Private/Capture/PlanarCaptureCameraUtils.cpp` | Mirror/portal/oblique projection math |
### Capture Common (Shared Types)
| # | C++ Class | Header | Source | Purpose |
|---|-----------|--------|--------|---------|
| — | `PlanarCaptureCommon.h` | `Public/Capture/PlanarCaptureCommon.h` | `Private/Capture/PlanarCaptureCommon.cpp` | Shared enums, structs, quality profiles |
---
*Status Checklist v2.1 — Updated 2026-05-22. See [`remaining-blueprint-build-order.md`](remaining-blueprint-build-order.md) for the prioritized build list.*