Add asset creation sheets for various systems and UI components
- Created Save/Load & Death Loop asset sheet detailing checkpoint, death handling, and respawn systems. - Added UI widget creation sheets for pause menu, settings menu, inventory, journal viewer, objective display, notification toast, screen effect controller, accessibility UI, diegetic HUD frame, menu flow controller, and credits screen. - Implemented HUD controller and interaction prompt display assets with detailed wiring instructions. - Established narrative systems asset sheet including components for narrative state, objectives, dialogue playback, and branching consequences. - Developed weapons, AI, and adaptive systems asset creation sheet outlining weapon base, enemy AI components, and adaptive gameplay mechanics. - Compiled meta, settings, and polish asset creation sheet covering progress tracking, achievement systems, accessibility settings, and various polish components. - Defined input actions and mapping contexts for enhanced input system, including gameplay actions and context priorities. - Created state management assets including enums, structs, data asset, and state manager component for action gating and state transitions.
This commit is contained in:
197
docs/blueprints/06-ui/WBP_AllWidgets_QuickSheet.asset.md
Normal file
197
docs/blueprints/06-ui/WBP_AllWidgets_QuickSheet.asset.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# WBP_PauseMenu / WBP_SettingsMenu / WBP_InventoryMenu
|
||||
# WBP_JournalDocumentViewer / WBP_ObjectiveDisplay
|
||||
# WBP_NotificationToast / WBP_ScreenEffectController
|
||||
# WBP_AccessibilityUI / WBP_DiegeticHUDFrame
|
||||
# WBP_MenuFlowController / WBP_CreditsScreen
|
||||
#
|
||||
# UI Widget Assets — Quick Creation Sheet (11 widgets)
|
||||
|
||||
> **UE5 Path:** `Content/Framework/UI/`
|
||||
> **Parent Class:** `UserWidget`
|
||||
|
||||
---
|
||||
|
||||
## WBP_PauseMenu
|
||||
|
||||
**Canvas:** Vertical Box (centered) → Resume, Settings, Save, Load, Quit to Menu, Quit to Desktop
|
||||
|
||||
**Key Logic:**
|
||||
```
|
||||
Event Construct:
|
||||
└─ Set Input Mode: UI + ShowCursor
|
||||
|
||||
btn_Resume.OnClicked:
|
||||
└─ Call SS_UIManager.PopWidget() → Set Input Mode: Game
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## WBP_SettingsMenu
|
||||
|
||||
**Canvas:** Tab buttons (Audio, Video, Controls, Gameplay, Accessibility) + settings panels
|
||||
|
||||
**Key Logic:**
|
||||
```
|
||||
Audio Tab → Volume sliders → SS_AudioManager.SetBusVolume(Category, Volume)
|
||||
Video Tab → Resolution dropdown, Fullscreen toggle, Quality presets
|
||||
Controls Tab → Key rebinding list → SS_EnhancedInputManager.RebindKey(Action, Key)
|
||||
Gameplay Tab → Difficulty, subtitle toggle, aim assist
|
||||
Accessibility Tab → WBP_AccessibilityUI embedded
|
||||
|
||||
On Apply → SaveSettings → SS_SettingsSystem.ApplyAndSave()
|
||||
On Back → If dirty → "Save changes?" dialog
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## WBP_InventoryMenu
|
||||
|
||||
**Canvas:** Grid panel (8 columns) + item detail panel on right + weight bar at bottom
|
||||
|
||||
**Key Logic:**
|
||||
```
|
||||
Event Construct:
|
||||
├─ Get Pawn → BPC_InventorySystem → Bind OnInventoryChanged → RefreshGrid
|
||||
└─ Bind OnWeightChanged → UpdateWeightBar
|
||||
|
||||
RefreshGrid:
|
||||
├─ Clear Grid children
|
||||
└─ For each slot → Create WBP_InventorySlot widget → Add to Grid
|
||||
|
||||
OnSlotClicked(SlotIndex):
|
||||
├─ If dragging → SwapSlots
|
||||
├─ If right-click → ShowContextMenu (Use, Equip, Drop, Examine)
|
||||
└─ Show item detail in right panel
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## WBP_JournalDocumentViewer
|
||||
|
||||
**Canvas:** ScrollBox with document entries + detail view on right
|
||||
|
||||
**Key Logic:**
|
||||
```
|
||||
Construct → BPC_DocumentArchiveSystem → GetAllDocuments()
|
||||
└─ For each doc → create list item → on click → show full text + image
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## WBP_ObjectiveDisplay
|
||||
|
||||
**Canvas:** Vertical Box (top-right) — list of active objectives
|
||||
|
||||
**Key Logic:**
|
||||
```
|
||||
Bind GS_CoreGameState.OnObjectiveTagsChanged → Refresh
|
||||
└─ For each ActiveObjectiveTag → lookup DA_ObjectiveData → show title + progress
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## WBP_NotificationToast
|
||||
|
||||
**Canvas:** Border (top-center, slides in/out) → Icon + Title + Subtitle
|
||||
|
||||
**Key Logic:**
|
||||
```
|
||||
ShowToast(Title, Subtitle, Icon, Duration):
|
||||
├─ Set text
|
||||
├─ Play SlideIn animation
|
||||
└─ Delay(Duration) → Play SlideOut → Remove from parent
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## WBP_ScreenEffectController
|
||||
|
||||
**Canvas:** Full-screen overlay images (vignette, blood, healing, flash)
|
||||
|
||||
**Key Logic:**
|
||||
```
|
||||
PlayEffect(EffectType, Intensity, Duration):
|
||||
├─ Switch EffectType
|
||||
│ Damage → Show red vignette, fade to Intensity
|
||||
│ Healing → Show green edge glow
|
||||
│ Death → Show black fade
|
||||
│ Flash → Show white screen
|
||||
└─ Timeline: fade in, hold, fade out
|
||||
|
||||
Bind BPC_HealthSystem.OnHealthChanged → if damage → PlayEffect(Damage)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## WBP_AccessibilityUI
|
||||
|
||||
**Canvas:** Toggles and sliders for accessibility options
|
||||
|
||||
**Controls:**
|
||||
- Subtitles: On/Off + size slider
|
||||
- Colorblind Mode: Off/Protanopia/Deuteranopia/Tritanopia
|
||||
- Controller Remap: Per-platform button mapping
|
||||
- Difficulty: Story/Easy/Normal/Hard/Nightmare
|
||||
- Aim Assist: Off/Low/Medium/High
|
||||
|
||||
**On change → call SS_SettingsSystem.SaveAccessibilitySettings()**
|
||||
|
||||
---
|
||||
|
||||
## WBP_DiegeticHUDFrame
|
||||
|
||||
**Canvas:** Empty container that renders to a material on the player's wristwatch/helmet
|
||||
|
||||
**Key Logic:**
|
||||
- This widget renders to a RenderTarget
|
||||
- The render target is assigned to the wristwatch mesh material
|
||||
- Contents show mini-HUD: health dots, ammo count, compass
|
||||
|
||||
---
|
||||
|
||||
## WBP_MenuFlowController
|
||||
|
||||
**Not visual** — state machine that manages menu transitions.
|
||||
|
||||
**States:** MainMenu → NewGame → Loading → InGame → Pause → Settings → Death → Credits
|
||||
|
||||
**Key Logic:**
|
||||
```
|
||||
PushMenu(MenuWidget):
|
||||
├─ If current menu → hide
|
||||
├─ Create new menu → add to viewport
|
||||
└─ Store in MenuStack
|
||||
|
||||
PopMenu():
|
||||
├─ Remove top menu from viewport
|
||||
└─ Restore previous menu
|
||||
|
||||
OnBackPressed:
|
||||
├─ If menu stack has entries → PopMenu
|
||||
└─ If game and no stack → Show PauseMenu
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## WBP_CreditsScreen
|
||||
|
||||
**Canvas:** ScrollBox — auto-scrolling credits text
|
||||
|
||||
**Key Logic:**
|
||||
```
|
||||
Event Construct:
|
||||
└─ Start Timeline → scroll credits text from bottom to top over 60 seconds
|
||||
|
||||
OnSkip (any key press):
|
||||
└─ Jump to end → show "Thanks for Playing" → auto-transition to MainMenu
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Test All Widgets
|
||||
- [ ] Each widget displays in isolation (right-click → Run Widget)
|
||||
- [ ] Pause menu toggles cursor correctly
|
||||
- [ ] Settings save and persist across sessions
|
||||
- [ ] Inventory grid updates when items change
|
||||
- [ ] Notification toast animates in/out
|
||||
- [ ] Screen effects don't block input
|
||||
72
docs/blueprints/06-ui/WBP_HUDController.asset.md
Normal file
72
docs/blueprints/06-ui/WBP_HUDController.asset.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# WBP_HUDController — Asset Implementation
|
||||
|
||||
> **UE5 Asset:** `/Game/Framework/UI/WBP_HUDController`
|
||||
> **Parent Class:** `UserWidget`
|
||||
> **Purpose:** Root HUD widget — manages all HUD sub-widgets
|
||||
|
||||
---
|
||||
|
||||
## Create This Widget
|
||||
|
||||
1. Content Browser → `Content/Framework/UI/`
|
||||
2. Right-click → **User Interface → Widget Blueprint**
|
||||
3. Name: `WBP_HUDController`
|
||||
|
||||
---
|
||||
|
||||
## Designer Canvas Setup
|
||||
|
||||
```
|
||||
Canvas Panel (root)
|
||||
├─ WBP_InteractionPromptDisplay (bottom-center)
|
||||
├─ WBP_ObjectiveDisplay (top-right)
|
||||
├─ WBP_NotificationToast (top-center)
|
||||
├─ HealthBar (ProgressBar) (bottom-left) [inline or sub-widget]
|
||||
├─ StaminaBar (ProgressBar) (bottom-left, below health)
|
||||
├─ AmmoDisplay (TextBlock) (bottom-right)
|
||||
├─ Crosshair (Image) (center)
|
||||
└─ WBP_DiegeticHUDFrame (full screen, behind everything)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## What to Wire
|
||||
|
||||
### Event: Event Construct
|
||||
```
|
||||
[Event Construct]
|
||||
├─ Get Owning Player Pawn → Store as CachedPawn
|
||||
├─ Get Pawn → GetComponentByClass(BPC_HealthSystem) → Bind OnHealthChanged
|
||||
├─ GetComponentByClass(BPC_StaminaSystem) → Bind OnStaminaChanged
|
||||
├─ Get GameState → Cast to GS_CoreGameState → Bind OnObjectiveTagsChanged
|
||||
└─ Get GameInstance → Cast to GI_GameFramework → Bind OnGamePhaseChanged
|
||||
```
|
||||
|
||||
### Health Binding (Custom Event)
|
||||
```
|
||||
[OnHealthChanged(Current, Max, Delta)]
|
||||
├─ HealthBar → Set Percent(Current / Max)
|
||||
├─ Branch: Delta < 0?
|
||||
│ True → Play Animation (DamageVignette)
|
||||
└─ Branch: Current <= 0?
|
||||
└─ Call WBP_ScreenEffectController → PlayDeathEffect
|
||||
```
|
||||
|
||||
### GamePhase Binding
|
||||
```
|
||||
[OnGamePhaseChanged(NewPhase)]
|
||||
├─ Switch on NewPhase:
|
||||
│ MainMenu → Hide HUD
|
||||
│ InGame → Show HUD
|
||||
│ Paused → Dim HUD, show pause overlay
|
||||
│ Cutscene → Hide HUD
|
||||
│ DeathLoop → Show death screen
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Test It
|
||||
- [ ] PIE with player pawn: HUD displays
|
||||
- [ ] Take damage: health bar updates
|
||||
- [ ] Sprint: stamina bar drains
|
||||
- [ ] Open menu: HUD hides/disables
|
||||
70
docs/blueprints/06-ui/WBP_InteractionPromptDisplay.asset.md
Normal file
70
docs/blueprints/06-ui/WBP_InteractionPromptDisplay.asset.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# WBP_InteractionPromptDisplay — Asset Implementation
|
||||
|
||||
> **UE5 Asset:** `/Game/Framework/UI/WBP_InteractionPromptDisplay`
|
||||
> **Parent Class:** `UserWidget`
|
||||
|
||||
---
|
||||
|
||||
## Create This Widget
|
||||
|
||||
1. Content Browser → `Content/Framework/UI/`
|
||||
2. Right-click → **User Interface → Widget Blueprint**
|
||||
3. Name: `WBP_InteractionPromptDisplay`
|
||||
|
||||
---
|
||||
|
||||
## Designer Canvas
|
||||
|
||||
```
|
||||
Canvas Panel
|
||||
└─ Border (background, semi-transparent black)
|
||||
└─ Horizontal Box
|
||||
├─ Image (key icon, e.g. "E" key)
|
||||
└─ Vertical Box
|
||||
├─ TextBlock "PromptText" (e.g. "Pick Up")
|
||||
└─ TextBlock "SubText" (e.g. "MedKit")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## What to Wire
|
||||
|
||||
### Function: ShowPrompt
|
||||
```
|
||||
Inputs: PromptText(Text), SubText(Text), KeyIcon(Texture2D), bShowHoldProgress(Boolean)
|
||||
├─ Set PromptText = PromptText
|
||||
├─ Set SubText = SubText
|
||||
├─ Set KeyIcon = KeyIcon
|
||||
├─ Branch: bShowHoldProgress?
|
||||
│ True → Show HoldProgressBar
|
||||
├─ Set Visibility = Visible
|
||||
└─ Play Animation (FadeIn)
|
||||
```
|
||||
|
||||
### Function: HidePrompt
|
||||
```
|
||||
├─ Set Visibility = Hidden
|
||||
└─ Stop All Animations
|
||||
```
|
||||
|
||||
### Function: UpdateHoldProgress
|
||||
```
|
||||
Input: Progress(0.0-1.0)
|
||||
└─ HoldProgressBar → Set Percent(Progress)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Events to Handle
|
||||
| Event | Action |
|
||||
|-------|--------|
|
||||
| `BPC_InteractionDetector.OnFocusBegin` | ShowPrompt with object data |
|
||||
| `BPC_InteractionDetector.OnFocusEnd` | HidePrompt |
|
||||
| `BPC_InteractionDetector.OnHoldProgress` | UpdateHoldProgress |
|
||||
|
||||
---
|
||||
|
||||
## Test It
|
||||
- [ ] Look at an interactable object → prompt appears
|
||||
- [ ] Hold interact key → progress bar fills
|
||||
- [ ] Look away → prompt disappears
|
||||
75
docs/blueprints/06-ui/WBP_MainMenu.asset.md
Normal file
75
docs/blueprints/06-ui/WBP_MainMenu.asset.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# WBP_MainMenu — Asset Implementation
|
||||
|
||||
> **UE5 Asset:** `/Game/Framework/UI/WBP_MainMenu`
|
||||
> **Parent Class:** `UserWidget`
|
||||
|
||||
---
|
||||
|
||||
## Create This Widget
|
||||
|
||||
1. Content Browser → `Content/Framework/UI/`
|
||||
2. Right-click → **User Interface → Widget Blueprint**
|
||||
3. Name: `WBP_MainMenu`
|
||||
|
||||
---
|
||||
|
||||
## Designer Canvas
|
||||
|
||||
```
|
||||
Canvas Panel
|
||||
└─ Vertical Box (centered)
|
||||
├─ Image (game logo) "LogoImage"
|
||||
├─ Spacer
|
||||
├─ Button "btn_NewGame" "New Game"
|
||||
├─ Button "btn_Continue" "Continue"
|
||||
├─ Button "btn_LoadGame" "Load Game"
|
||||
├─ Button "btn_Settings" "Settings"
|
||||
├─ Button "btn_Credits" "Credits"
|
||||
└─ Button "btn_Quit" "Quit Game"
|
||||
└─ TextBlock "VersionText" (bottom-right) "v1.0.0"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## What to Wire
|
||||
|
||||
### Event: Event Construct
|
||||
```
|
||||
[Event Construct]
|
||||
├─ Get GameInstance → Cast to GI_GameFramework
|
||||
├─ Get SaveManager → GetSlotManifest()
|
||||
├─ Branch: Any slot has data?
|
||||
│ True → btn_Continue.SetIsEnabled(true)
|
||||
│ False → btn_Continue.SetIsEnabled(false)
|
||||
└─ Set Input Mode: UI + Show Cursor
|
||||
```
|
||||
|
||||
### Button Handlers
|
||||
```
|
||||
btn_NewGame.OnClicked:
|
||||
├─ Call GI_GameFramework.ClearAllSessionFlags()
|
||||
├─ Call GI_GameFramework.SetActiveSlot(new slot index)
|
||||
├─ Call OpenLevel (first chapter map)
|
||||
└─ Set Input Mode: Game
|
||||
|
||||
btn_Continue.OnClicked:
|
||||
├─ Call SaveManager.QuickLoad()
|
||||
└─ OnLoadComplete → OpenLevel (saved chapter)
|
||||
|
||||
btn_LoadGame.OnClicked:
|
||||
└─ Push WBP_LoadGameMenu to SS_UIManager stack
|
||||
|
||||
btn_Settings.OnClicked:
|
||||
└─ Push WBP_SettingsMenu
|
||||
|
||||
btn_Quit.OnClicked:
|
||||
└─ Quit Game (or ConsoleCommand "quit")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Test It
|
||||
- [ ] Game opens at main menu → cursor visible
|
||||
- [ ] No save data → Continue grayed out
|
||||
- [ ] Click New Game → level loads → cursor hidden
|
||||
- [ ] Click Quit → game exits
|
||||
Reference in New Issue
Block a user