Portal made visible: cyan beacon pillar + always-on RoomExplore steer prompt (DR-046 follow-up)

The room-exit portal was invisible in the first playtest - players loitered
out the 30s ExploreGrace timeout. Adds RegionMath.ExpeditionPortalPos as the
single client-derivable portal-position authority (HUD prompt + beacon can't
drift), a pooled breathing HDR pillar in CombatFeedbackSystem shown only
during RoomExplore, and an in-range/out-of-range two-stage prompt.

Also repairs the comment-swallowed _portalMat initialization (NRE in
OnStartRunning killed ALL combat feedback each session and auto-paused the
editor via Error Pause). 456/456 EditMode.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-06 12:20:04 -07:00
parent e6cbba5e25
commit 274cf3b791
5 changed files with 92 additions and 13 deletions
@@ -3,8 +3,17 @@ id: DR-044
title: Expedition Redesign SHIPPED (steps 114) + Demo-Readiness Polish Pass
date: 2026-07-04
status: locked
tags: [decision, expedition, roguelite, netcode, demo, polish, onboarding, audio]
tags:
- decision
- expedition
- roguelite
- netcode
- demo
- polish
- onboarding
- audio
supersedes: parts of DR-031/DR-042 (base-mining loop text); completes the [[2026-06-29_Expedition_Redesign_Build_Spec]]
permalink: gamevault/07-sessions/decisions/dr-044-expedition-redesign-shipped-demo-polish
---
# DR-044 — Expedition Redesign SHIPPED + Demo-Readiness Polish
@@ -88,4 +97,4 @@ depth dots · meta shop). Console clean (the only remaining editor noise was the
Standalone build + 2-instance LAN smoke (operator runs it; `-mhost`/`-mjoin`, watchdog log lines = evidence) ·
onboarding fun-gate playthrough (Force-Each-Launch toggle) · tick-batching perf re-measure in the build ·
HudTheme structure icons vs new silhouettes + projectile/pickup placeholder meshes (art curation — needs
operator eyes; explicitly deferred) · GoalProgress.Target demo pacing (currently 4 runs).
operator eyes; explicitly deferred) · GoalProgress.Target demo pacing (currently 4 runs).
@@ -59,6 +59,17 @@ Rooms no longer auto-advance the instant the last enemy dies. New FSM beat betwe
LEAVE"** prompt; E near the portal → `PortalInteractSendSystem.Interact()`. Never reads `RunParticipant`/`RunRuntime`/
`RegionTag` client-side. Tuning: `PortalOffsetZ=-5`, `PortalInteractRange=3.5`, `ExploreGraceTicks=1800`.
**Playtest fix (2026-07-05) — the portal was INVISIBLE.** The shipped cue was only a HUD line that appeared *when the
player was already within `PortalInteractRange` of an unmarked point*, so after picking a boon there was no world target
to walk to — players loitered until the ~30 s `ExploreGrace` timeout auto-advanced them ("nothing happens for a while
until the next room selection comes up"). Fix (client presentation only, no netcode/re-bake): (1) new
`RegionMath.ExpeditionPortalPos(baseCenter, subSlot)` = the single portal-position authority the HUD prompt AND the
beacon both resolve through (extract-before-second-caller, per this batch's own lesson); (2) `CombatFeedbackSystem` now
renders a glowing cyan HDR **portal-beacon pillar** at that position during `RoomExplore` (pooled GameObject, hidden
otherwise, breathing pulse; mirrors the danger-zone pattern); (3) the `HudSystem` prompt is now **always-on during
RoomExplore** — "ROOM CLEAR — reach the glowing portal to move on" out of range, "PRESS E TO LEAVE" in range. 456/456
EditMode; the beacon is the operator's visual fun-gate.
**Post-impl review fix (confirmed, medium):** the RoomExplore empty-abort guard first read `expeditionPlayers==0 &&
LastTerminalCleared==0`, which SKIPPED a boss clear — so a post-boss total wipe/disconnect idled the run in RoomExplore
for the full ~30 s ExploreGrace before the win banked (a promptness regression vs the old flow, self-healing but a bad