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
|
## #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
|
**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
|
# 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
|
## #157 — [DONE 2026-06-26] Live game threads per-element dat-font resolver
|
||||||
|
|
||||||
**Closed:** 2026-06-26
|
**Closed:** 2026-06-26
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue