docs: close dungeon publication and respawn issues
Record the passed visual gates for #214 and #215 and move both completed entries into the recently closed ledger. Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
parent
0ad6700a07
commit
a944e49b9c
1 changed files with 32 additions and 85 deletions
117
docs/ISSUES.md
117
docs/ISSUES.md
|
|
@ -44,91 +44,6 @@ Copy this block when adding a new issue:
|
|||
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
## #215 — Same-dungeon death respawn removed the dungeon floor physics
|
||||
|
||||
**Status:** IN-PROGRESS — root fix implemented; Release build + 5,054 tests green, pending user gate
|
||||
**Severity:** HIGH
|
||||
**Component:** teleport / streaming / physics cell identity
|
||||
|
||||
**Description:** After `/die` in the starter dungeon, the character respawned
|
||||
at the dungeon start but fell through the world as soon as movement began.
|
||||
|
||||
**Root cause:** `OnLivePositionUpdated` decided whether a teleport crossed a
|
||||
landblock by flooring the player's render-space XYZ against the current
|
||||
streaming center. Dungeon EnvCells can have valid negative local frame origins;
|
||||
at the captured `0x8C0401AD` position, Y `-30.4 m` falsely reconstructed source
|
||||
landblock Y `3` instead of authoritative Y `4`. The same-cell respawn was
|
||||
therefore treated as cross-landblock travel, and the `0x8C04FFFF` floor physics
|
||||
was removed. Streaming still considered that collapsed landblock resident, so
|
||||
the idempotent dungeon gate correctly did not enqueue a duplicate load.
|
||||
|
||||
**Resolution:** A dedicated `TeleportLandblockTransition` now compares the
|
||||
player controller's current cell ID with the received destination cell ID,
|
||||
matching retail's complete `Position::objcell_id + Frame` flow. XYZ is not used
|
||||
for teleport identity. A zero pre-placement source falls back to the current
|
||||
streaming-center ID, never a coordinate inference. Same-landblock respawns keep
|
||||
the resident physics; true cross-landblock teleports retain the existing
|
||||
recenter and hydration path.
|
||||
|
||||
**Files:** `src/AcDream.App/Streaming/TeleportLandblockTransition.cs`;
|
||||
`src/AcDream.App/Rendering/GameWindow.cs`;
|
||||
`tests/AcDream.App.Tests/Streaming/TeleportLandblockTransitionTests.cs`.
|
||||
|
||||
**Research:**
|
||||
`docs/research/2026-07-13-same-dungeon-respawn-landblock-identity-pseudocode.md`.
|
||||
|
||||
**Acceptance:** In the starter dungeon, use `/die`, confirm the death dialog,
|
||||
respawn in `0x8C0401AD`, then move in several directions. The character remains
|
||||
on the dungeon floor and the teleport log reports old/new landblock `(140,4)`
|
||||
without a physics removal or ten-second readiness timeout.
|
||||
|
||||
---
|
||||
|
||||
## #214 — Dungeon login could replace a complete EnvCell render with a partial second load
|
||||
|
||||
**Status:** IN-PROGRESS — architectural fix complete 2026-07-13, pending user visual gate
|
||||
**Severity:** HIGH
|
||||
**Component:** streaming / EnvCell rendering / portal visibility
|
||||
|
||||
**Description:** Logging directly into the starter dungeon could leave its room
|
||||
shells untextured or absent after a relaunch even though the same dungeon had
|
||||
rendered correctly before logout.
|
||||
|
||||
**Root cause:** Two independent load jobs published through shared, process-wide
|
||||
pending collections. The login spawn first pre-collapsed streaming onto
|
||||
`0x8C04FFFF`, then an obsolete post-spawn `ForceReloadWindow` reset the collapse
|
||||
and enqueued the same dungeon again. `EnvCellRenderer.RegisterCell` mutated a
|
||||
live landblock's pending lists from the worker while `FinalizeLandblock` drained
|
||||
and replaced them on the render thread; the global portal-visibility bag had the
|
||||
same ownership flaw across landblocks. The captured failure committed 1,123
|
||||
shells, then the duplicate completion replaced them with its remaining 11.
|
||||
|
||||
**Resolution:** A worker now builds one private, immutable
|
||||
`EnvCellLandblockBuild` per `LandblockBuild`. That exact payload travels with its
|
||||
streaming completion and is committed on the render thread to
|
||||
`CellVisibility`, `EnvCellRenderer`, and the cell physics cache. There are no
|
||||
shared pending cell/shell collections to drain or cross-contaminate. The login
|
||||
path now calls `InitializeKnownLoginCenter`: sealed dungeons pre-collapse once;
|
||||
outdoor spawns wait for the first correctly centered tick. The old forced reload
|
||||
was removed because `StreamingReadinessGate` already prevents guessed-center
|
||||
loads before the real player spawn.
|
||||
|
||||
**Files:** `src/AcDream.App/Streaming/LandblockBuild.cs`;
|
||||
`src/AcDream.App/Rendering/Wb/EnvCellLandblockBuild.cs`;
|
||||
`src/AcDream.App/Rendering/Wb/EnvCellRenderer.cs`;
|
||||
`src/AcDream.App/Rendering/CellVisibility.cs`;
|
||||
`src/AcDream.App/Rendering/GameWindow.cs`.
|
||||
|
||||
**Research:** `docs/research/2026-07-13-envcell-landblock-transaction.md`.
|
||||
|
||||
**Acceptance:** Log out inside the starter dungeon, relaunch, and enter the same
|
||||
character. The dungeon is fully textured on its first frame, remains complete,
|
||||
and the log contains exactly one login dungeon collapse with no second reload.
|
||||
|
||||
---
|
||||
|
||||
## #213 — Retail client commands were sent to ACE as chat text
|
||||
|
||||
**Status:** IN-PROGRESS — command-family gate passed except two corrective fixes, pending re-gate
|
||||
|
|
@ -6850,6 +6765,38 @@ outdoors at the angle that previously erased it.
|
|||
|
||||
# Recently closed
|
||||
|
||||
## #215 — [DONE 2026-07-13] Same-dungeon death respawn removed the dungeon floor physics
|
||||
|
||||
**Closed:** 2026-07-13
|
||||
**Commit:** `0ad6700a`
|
||||
**Resolution:** Teleport landblock classification now compares the player
|
||||
controller's authoritative current `Position.objcell_id` with the received
|
||||
destination cell ID. It no longer floors render-space XYZ, which had turned the
|
||||
starter dungeon's valid Y `-30.4 m` into the false source landblock `0x8C03` and
|
||||
removed the resident `0x8C04FFFF` floor physics. Same-landblock respawns keep
|
||||
their published physics; true cross-landblock teleports retain the existing
|
||||
recenter/hydration path. Release build and all 5,054 runnable tests passed.
|
||||
User visual gate passed: `/die`, respawn, then movement remained on the dungeon
|
||||
floor. Research:
|
||||
`docs/research/2026-07-13-same-dungeon-respawn-landblock-identity-pseudocode.md`.
|
||||
|
||||
---
|
||||
|
||||
## #214 — [DONE 2026-07-13] Dungeon login could publish a partial EnvCell landblock
|
||||
|
||||
**Closed:** 2026-07-13
|
||||
**Commit:** `b0c175af`
|
||||
**Resolution:** Each streaming job now owns one private, immutable
|
||||
`EnvCellLandblockBuild`, and the render thread commits its visibility, physics,
|
||||
and drawable shells as one unit. The obsolete post-spawn forced reload was
|
||||
removed, eliminating the duplicate job that could replace 1,123 complete
|
||||
shells with the 11 entries remaining in shared pending collections. User visual
|
||||
gate passed after relaunching directly into the starter dungeon: its textures
|
||||
and geometry loaded completely. Research:
|
||||
`docs/research/2026-07-13-envcell-landblock-transaction.md`.
|
||||
|
||||
---
|
||||
|
||||
## #157 — [DONE 2026-06-26] Live game threads per-element dat-font resolver
|
||||
|
||||
**Closed:** 2026-06-26
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue