Inventories Gameplay Effects, orphan default attributes, missing abilities/cues, and consumable EffectActor wiring without modifying Unreal assets. Co-authored-by: Cursor <cursoragent@cursor.com>
4.0 KiB
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 (
RIRHUDchild) - 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.