# 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 None` on `K2Node_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) 1. In-viewport PIE: Slate cannot drive `WBP_CharacterSelect`. 2. Floating PIE required for UMG button clicks. 3. Slate `PressKey` / `Click` on viewport does not trigger Enhanced Input actions. 4. OS-level input injection blocked by environment policy. 5. `StartPIE` has no `NumberOfPlayers`; raising clients requires Play settings mutation that saves (unauthorized). 6. Enemy ASC component exists but AbilitySystemInspector rejects actor as having no ASC. 7. Enemy `IsDead` property 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.