Inventories Gameplay Effects, orphan default attributes, missing abilities/cues, and consumable EffectActor wiring without modifying Unreal assets. Co-authored-by: Cursor <cursoragent@cursor.com>
92 lines
4.0 KiB
Markdown
92 lines
4.0 KiB
Markdown
# 11 — UI, HUD, and Sessions
|
|
|
|
**Status: Draft**
|
|
|
|
- **Scope:** Native HUD / widget-controller path (Batch 1); Pass 3 resolution of `WBP_PlayerHUD`; Pass 7 GAS attribute UI binding confirmation. Full frontend/session graphs deferred to Pass 4.
|
|
- **Inspection method:** Native C++ read; AssetTools class/tags/deps/refs; ObjectTools; Pass 7 Overlay path verification.
|
|
- **Last updated:** 2026-07-16
|
|
- **Current phase:** Phase 1 — Static Architecture
|
|
- **Last completed pass:** Pass 7 (Batch 4B) — GAS attribute UI portion
|
|
- **Next pass expected to contribute:** Pass 4 (sessions/frontend)
|
|
|
|
## Draft tracking
|
|
|
|
### Completed sections
|
|
- InitOverlay call chain from player InitAbilityActorInfo
|
|
- OverlayWidgetController attribute broadcasts/bindings
|
|
- AdvancedSessions / AdvancedSteamSessions enabled + descriptor paths
|
|
- Widget subclass path seeds
|
|
- WBP_PlayerHUD resolved as AHUD (`RIRHUD` child)
|
|
- GM_Dungeoneer assigns HUDClass / PC / PS
|
|
- **Pass 7:** Exact Overlay paths; stamina delegate type reuse confirmed; dual HUD vs ASC still unsynchronized
|
|
|
|
### Pending sections
|
|
- Main menu / browser / character-select widget flow
|
|
- Production vs Example Advanced Sessions Blueprints
|
|
- WBP_Overlay progress-bar Blueprint binding deep dive
|
|
- CommonUI usage
|
|
- BPI_PlayerController.UpdatePlayerHUD widget targets
|
|
|
|
### Evidence still required
|
|
- Whether both Overlay ASC HUD and DEPRECATED UpdatePlayerHUD run in PIE
|
|
- Session create/find/join graphs
|
|
|
|
---
|
|
|
|
## WBP_PlayerHUD resolution (Pass 3)
|
|
|
|
| Field | Value |
|
|
|-------|--------|
|
|
| Path | `/Game/_Main/UI/Widgets/HUD/WBP_PlayerHUD` |
|
|
| Asset class | `WBP_PlayerHUD_C` |
|
|
| Generated parent | `/Script/REALMSINRUIN.RIRHUD` |
|
|
| Type | **AHUD Blueprint** (not `UserWidget`) |
|
|
| IsDataOnly | True |
|
|
| Referencers | `/Game/_Main/Blueprints/Game/GameMode/GM_Dungeoneer` |
|
|
| Dependencies | REALMSINRUIN, `/Game/_Main/UI/Widgets/Overlay/WBP_Overlay`, `/Game/_Main/UI/Widgets/WidgetController/BP_OverlayWidgetController` |
|
|
|
|
**Observed Implementation:** Naming `WBP_` is misleading Documented Intent; asset is the game HUD class assigned on `GM_Dungeoneer`.
|
|
|
|
**Pass 7 path correction:** Overlay widget exact path is `/Game/_Main/UI/Widgets/Overlay/WBP_Overlay` (not `/Game/_Main/UI/Widgets/WBP_Overlay`).
|
|
|
|
---
|
|
|
|
## HUD init (Observed Implementation)
|
|
|
|
### Native GAS path
|
|
|
|
`ARIRPlayerCharacter::InitAbilityActorInfo` → `ARIRHUD::InitOverlay(PC, PS, ASC, AS)` → create `OverlayWidgetClass` → `UOverlayWidgetController` binds ASC attribute delegates → `BroadcastInitialInitialValues` → `AddToViewport`.
|
|
|
|
Controller asset: `/Game/_Main/UI/Widgets/WidgetController/BP_OverlayWidgetController` (Blueprintable subclass of native `UOverlayWidgetController`).
|
|
|
|
Broadcasts: Health, MaxHealth, Mana, MaxMana, Stamina, MaxStamina from `URIRAttributeSet`.
|
|
|
|
### Legacy BP path (still connected)
|
|
|
|
`BP_PlayerCharacterBase` EventPossessed → Delay 0.4 → `Server_UpdateHUD` → compute DEPRECATED health/mana percentages → `BPI_PlayerController.UpdatePlayerHUD`.
|
|
|
|
**Technical Debt / Incomplete Refactor:** Dual attribute UI — no synchronization observed (Pass 7).
|
|
|
|
**Technical Debt (Pass 7 confirmed):** In `OverlayWidgetController.h`, `OnStaminaChanged` is typed `FOnManaChangedSignature` and `OnMaxStaminaChanged` is typed `FOnMaxManaChangedSignature` (stamina delegates reuse mana signature types). Dedicated `FOnStaminaChangedSignature` / `FOnMaxStaminaChangedSignature` are declared but unused for those properties.
|
|
|
|
---
|
|
|
|
## Framework assignments (GM_Dungeoneer CDO)
|
|
|
|
| Property | Value |
|
|
|----------|--------|
|
|
| HUDClass | `WBP_PlayerHUD_C` |
|
|
| PlayerControllerClass | `PC_Character_C` |
|
|
| PlayerStateClass | `BP_PlayerState_C` |
|
|
| DefaultPawnClass | None |
|
|
|
|
`PC_Character` implements `BPI_PlayerController`; holds `CharacterSelectHUD`; Enhanced Input IMC `IMC_PlayerDefault` + `IA_Movement`.
|
|
|
|
---
|
|
|
|
## Sessions (Observed Implementation)
|
|
|
|
Project plugins AdvancedSessions + AdvancedSteamSessions enabled (VersionName 5.8). `GM_Dungeoneer` deps include AdvancedSessions.
|
|
|
|
Full session create/find/join graph archaeology → **Pass 4**.
|