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