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