# 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`.*