Capture bounded PIE observations for ASC/legacy divergence, HUD, and blocked ability/multiplayer paths without implementing fixes. Co-authored-by: Cursor <cursoragent@cursor.com>
13 KiB
13 KiB
Phase 2A1 — Runtime Baseline
| Field | Value |
|---|---|
| Status | Draft |
| Date | 2026-07-17 |
| Engine | Unreal Engine 5.8 |
| Git commit | aa0058a0 |
| Map | /Game/_Main/Levels/Testing/Test01 |
| Primary PIE mode | PlayMode_InEditorFloating (required for Slate UMG drive) |
| Authorization | Phase 2A1 evidence-only; no asset/config/source mutation; no commit |
Continuity gate
| Check | Result |
|---|---|
git rev-parse --short HEAD |
aa0058a0 |
git status --short |
empty |
git diff --name-only |
empty |
git diff --cached --name-only |
empty |
IsPIERunning (start) |
false |
| Current level | /Game/_Main/Levels/Testing/Test01 |
| Selection | empty (Pass 11 continuity; not restored) |
| Test01 dirty | false |
Entry path
PIE on loaded Test01 → WBP_CharacterSelect → character button → Start.
- In-viewport PIE: Slate cannot see UMG character-select buttons.
- Floating PIE: Slate sees PALADIN / WIZARD / CLERIC / AMAZON / Start.
- Start click produces Blueprint runtime warning on
GM_Dungeoneer.PlayerFirstSpawn(Accessed NoneonK2Node_Event_PlayerController) but pawn still spawns and is possessed.
1. Test execution summary
| Test ID | Mode | Character | Players | Result | Confidence | Blocking issue |
|---|---|---|---|---|---|---|
| RT-001 | 1P Floating PIE | Amazonian | 1 | Observed Runtime Behavior | High | None |
| RT-002 | 1P Floating PIE | Paladin | 1 | Partial — init divergence observed; ability cost path not exercised | High (init) / Tool Limitation (activation) | Enhanced Input not injectable via Slate PressKey |
| RT-003 | 1P Floating PIE | Paladin (session) | 1 | Blocked by Test Environment / Tool Limitation | High | No movement/ability input injection; cannot reach pickups without moving actors |
| RT-004A | 1P Floating PIE | Amazonian | 1 | Tool Limitation | High | Enhanced Input activation unreachable via available tools |
| RT-004B | — | Amazonian | — | Blocked by Test Environment | High | No non-mutating interrupt action available without ability input |
| RT-005 | 1P Floating PIE | Paladin | 1 | Tool Limitation | High | Same Enhanced Input limitation |
| RT-006 | 1P Floating PIE | Prefer Amazonian | 1 | Blocked by Missing Implementation / Test Environment | High | Enemy attack Missing; no connected player-damage source without ability input |
| RT-007 | 2P listen PIE | — | — | Blocked by Test Environment / Tool Limitation | High | playNumberOfClients=1; StartPIE has no player-count; config save unauthorized |
| RT-008 | 2P | — | — | Blocked by Test Environment / Tool Limitation | High | Depends on RT-007 |
| RT-009 | 2P | — | — | Blocked by Test Environment / Tool Limitation | High | Depends on RT-007 |
| RT-010 | 2P | — | — | Blocked by Test Environment / Tool Limitation | High | Depends on RT-007 |
| RT-011 | 1P Floating PIE | Paladin session / enemy actors | 1 | Observed Runtime Behavior (boundary) | Medium–High | Ability damage path not exercised (input limitation) |
2. Initialization matrix
| Role/character | ASC H/MaxH | ASC M/MaxM | ASC S/MaxS | Legacy health | Legacy mana | Legacy stamina | Active GEs | Granted GAs |
|---|---|---|---|---|---|---|---|---|
| Authority / Amazonian (RT-001) | 75 / 100 | 25 / 50 | 0 / 0 | DEPRECATED_CurrentHealth=0 / MaxHealth=0 | CurrentMana=0 / MaxMana=0 | CurrentStamina=85 / MaxStamina=100 | none | none |
| Authority / Paladin (RT-002 init) | 75 / 100 | 25 / 50 | 0 / 0 | CurrentHealth=0 / MaxHealth=0 | CurrentMana=100 / MaxMana=100 | CurrentStamina=0 / MaxStamina=0 | none | none |
| Remote client | Not applicable | Not applicable | Not applicable | Not applicable | Not applicable | Not applicable | Not applicable | Not applicable |
RT-001 detail (Amazonian)
| Field | Actual |
|---|---|
| ASC Owner actor | BP_PlayerState_C_0 (ASC component on PlayerState) |
| ASC Avatar | Player pawn resolves same ASC via character GetASC path (inspector accepts pawn) |
| Active Gameplay Effects | [] |
| Granted Gameplay Abilities | [] |
| IsDead | false |
| CurrentlyAttacking | false |
| Net role | ROLE_Authority |
| HUD actor | WBP_PlayerHUD_C_0 present |
| Overlay classes on HUD | WBP_Overlay, BP_OverlayWidgetController assigned |
| Overlay instances (Slate) | Two progress bars visible after spawn; no stamina widget text/bar observed |
| Legacy HUD receiver | Not observed to display values (no visible numeric legacy HUD) |
| Expected static ASC | Health=75, MaxHealth=100, Mana=25, MaxMana=50, Stamina possibly zero — Confirmed |
| Expected legacy sync | Potentially differ — Confirmed diverge; Amazonian legacy health/mana are 0 |
CDO defaults (read-only; explains runtime zeros)
| Class | CurrentHealth | MaxHealth | CurrentMana | MaxMana | CurrentStamina | MaxStamina |
|---|---|---|---|---|---|---|
BP_PlayerCharacterBase CDO |
0 | 0 | 0 | 0 | 0 | 0 |
Player_Amazonian CDO |
0 | 0 | 0 | 0 | 85 | 100 |
Player_Paladin CDO |
0 | 0 | 100 | 100 | 0 | 0 |
| Paladin Ability004ManaCost CDO | — | — | cost 0 | — | — | — |
3. HUD matrix
| Role/character | Overlay instances | Health display | Mana display | Stamina display | Legacy HUD behavior | Respawn behavior |
|---|---|---|---|---|---|---|
| Amazonian SP | 2 progress bars observed in floating PIE | Present (ASC Overlay path) | Present (ASC Overlay path) | None observed | No visible legacy numeric HUD; UpdatePlayerHUD not validated by value change |
Not observed (RT-006 blocked) |
| Paladin SP | 2 progress bars observed | Present | Present | None observed | Same | Not observed |
| Remote client | Not applicable | Not applicable | Not applicable | Not applicable | Not applicable | Not applicable |
4. Ability execution matrix
| Test | Input role | Server RPC | Multicast | Notify execution roles | Gameplay execution role | Cost role | Cleanup result |
|---|---|---|---|---|---|---|---|
| RT-002 Paladin 004 | Attempted Slate PressKey Four + LMB; CurrentlyAttacking remained false |
Not observed | Not observed | Not observed | Not observed | Not observed (CDO cost=0 anyway) | Not applicable |
| RT-004 Amazonian 001 | Tool Limitation — Enhanced Input not driven by Slate | Not observed | Not observed | Not observed | Not observed | Not applicable (no mana cost) | Not observed |
| RT-005 Paladin 001 | Tool Limitation | Not observed | Not observed | Not observed | Not observed | Not observed | Not observed |
| RT-008 remote | Blocked (no 2P) | Not applicable | Not applicable | Not applicable | Not applicable | Not applicable | Not applicable |
Input tooling note: IA_Ability_001 = LeftMouseButton; IA_Ability_004 = Four. Slate PressKey returns true but does not change CurrentlyAttacking or resources. OS-level input injection was blocked by environment policy. Classified Tool Limitation.
5. Damage/death matrix
| Source | Target | Damage receiver | Health source changed | Death trigger | Replication | Respawn | Result |
|---|---|---|---|---|---|---|---|
| Enemy attack | Player | Not applicable | Not observed | Not observed | Not observed | Not observed | Blocked by Missing Implementation (enemy attack Missing per Phase 1) |
| Player ability ApplyDamage | Enemy / other player | Not observed | Not observed | Not observed | Not observed | Not observed | Tool Limitation (ability input) + RT-009 blocked (no 2P) |
| Debug / temporary damage actor | — | — | — | — | — | — | Not authorized |
6. Pickup matrix
| Pickup | Present in Test01 | Overlap role | GE applications | Server destruction | Client destruction | ASC change | Legacy change | Result |
|---|---|---|---|---|---|---|---|---|
| BP_HealthPotion | Yes (1) | Not observed | Not observed | Not observed | Not applicable (1P) | Not observed | Not observed | Blocked — cannot walk to overlap without input / cannot move actors |
| BP_ManaPotion | Yes (1) | Not observed | Not observed | Not observed | Not applicable | Not observed | Not observed | Blocked (same) |
| BP_ManaCrystal | Yes (1) | Not observed | Not observed | Not observed | Not applicable | Not observed | Not observed | Blocked (same) |
| BP_OrangeSlice | Yes (1) | Not observed | Not observed | Not observed | Not applicable | Not observed | Not observed | Blocked (same) |
| BP_SmallGoldPickUp | Yes (3) | Not observed | Not applicable (AddGold no-op) | Not observed | Not applicable | Not applicable | Not applicable | Blocked (same) |
Runtime bReplicates (HealthPotion) |
— | — | — | — | — | — | — | false (Observed Runtime Behavior; confirms Phase 1) |
7. Static-versus-runtime reconciliation
| Phase 1 finding | Runtime result | Confirmed | Refined | Contradicted | New limitation |
|---|---|---|---|---|---|
| ASC Health 75 / Max 100 / Mana 25 / Max 50 | Amazonian + Paladin match | Yes | — | — | — |
| Stamina ASC may be zero | ASC Stamina/MaxStamina = 0/0 | Yes | — | — | — |
| No granted project GAs / no default GE | Empty granted + active effects | Yes | — | — | — |
| Legacy and ASC not synchronized | Amazonian legacy H/M=0 vs ASC 75/25; Paladin legacy Mana 100 vs ASC 25 | Yes | Amazonian combat legacy health starts at 0 (CDO) | — | Death/combat using legacy health is immediately at death threshold risk |
| Overlay Health/Mana present; no stamina widget | Two progress bars; no stamina UI | Yes | — | — | — |
Pickup bReplicates=false |
HealthPotion runtime false | Yes | — | — | — |
| Enemy ASC on character | Component present (AbilitySystemComponent, AttributeSet) |
Yes | AbilitySystemInspector cannot query attributes (does not have an AbilitySystemComponent) — likely InitAbilityActorInfo / interface exposure gap |
— | Inspector Tool Limitation vs true missing ASC |
| Enemy chase/attack Missing | No outbound enemy damage available for RT-006 | Yes | — | — | — |
| AnimNotify-driven gameplay authority | Not exercised | — | — | — | Enhanced Input injection Tool Limitation |
| Char-select server spawn path | Floating PIE Start → spawn + possess works | Yes | GM PlayerFirstSpawn emits Accessed None warning |
— | — |
| 2-client PIE via editor | playNumberOfClients=1, Standalone |
— | — | — | Cannot raise clients without unauthorized config save |
Per-test records (abbrev)
RT-001 — Single-player initialization (Amazonian)
- Date: 2026-07-17
- PIE mode: Floating, 1 player, Standalone
- Actions: StartPIE → AMAZON → Start
- Pass/fail: Observed Runtime Behavior (matches ASC expected; legacy divergence stronger than “may differ”)
- Cleanup: StopPIE
RT-002 — Legacy vs ASC divergence (Paladin)
- Actions: Restart PIE → PALADIN → Start; record resources; attempt Ability 004 via Slate key
- Actual: Init divergence confirmed (ASC Mana 25 vs legacy Mana 100). Ability activation not achieved. Paladin Ability004ManaCost CDO = 0.
- Classification: Observed Runtime Behavior (init) + Tool Limitation (cost mutation path)
- Cleanup: session continued then StopPIE
RT-003 — Consumables
- Classification: Blocked by Test Environment / Tool Limitation
- Note: All four GE pickups + three gold pickups exist in map; overlap not reachable without movement input or unauthorized actor moves.
RT-004 / RT-005 — Ability chains
- Classification: Tool Limitation (Enhanced Input)
RT-006 — Damage/death/respawn
- Classification: Blocked by Missing Implementation (enemy attack) and Tool Limitation (player ability damage)
RT-007–RT-010 — Two-player
- Read:
playNumberOfClients=1,playNetMode=PIE_Standalone - Attempt: Non-persisting UI set not achieved via available Slate surface during session
- Classification: Blocked by Test Environment / Tool Limitation
- Open environment decision: how to enable 2-client PIE without config persistence (see
02-Phase2A-OpenDecisions.md)
RT-011 — Enemy boundary
- Observed: Enemy actors present; ASC + AttributeSet components present;
bCanBeDamaged=true; AbilitySystemInspector attribute query fails; no player→enemy damage exercised - Classification: Observed Runtime Behavior (component presence / inspector failure) + incomplete damage-path validation
Tool limitations (session)
- In-viewport PIE: Slate cannot drive
WBP_CharacterSelect. - Floating PIE required for UMG button clicks.
- Slate
PressKey/Clickon viewport does not trigger Enhanced Input actions. - OS-level input injection blocked by environment policy.
StartPIEhas noNumberOfPlayers; raising clients requires Play settings mutation that saves (unauthorized).- Enemy ASC component exists but AbilitySystemInspector rejects actor as having no ASC.
- Enemy
IsDeadproperty not readable via ObjectTools on runtime instance (name/exposure).
Mutation confirmation
No Unreal assets, source, configuration, maps, plugins, or persistent editor settings were modified. Only new Markdown under Documentation/Phase2/ is intended to change.