120 lines
5.9 KiB
Markdown
120 lines
5.9 KiB
Markdown
# WoW dungeon lighting and stair review - 2026-09-13
|
|
|
|
## Implemented coverage
|
|
|
|
All 54 campaign WoW dungeons now receive environment-specific lighting using
|
|
Stockades' reviewed ambient/hemisphere fill as the baseline. Stone, cavern,
|
|
fire, arcane, crypt, and outdoor profiles preserve atmosphere without applying
|
|
the old dark expansion palettes. Stockades' existing presentation and three
|
|
reviewed stair proxies remain unchanged. RuneWaker environments are excluded.
|
|
|
|
The fleet scan produced 347 additional collision-verified walking proxies in
|
|
22 dungeons, and eight filled Recast boundary bridges in Uldaman. This makes
|
|
350 walking proxies including the three existing Stockades flights. Visual
|
|
stairs remain steps: source visual/collision/navigation GLBs were not modified.
|
|
The shared prepared collision is used by players, companions, and enemies.
|
|
|
|
| Dungeon | Additional walking proxies | Additional navigation bridges |
|
|
| --- | ---: | ---: |
|
|
| Shadowfang Keep | 41 | 0 |
|
|
| Blackfathom Deeps | 5 | 0 |
|
|
| Uldaman | 5 | 8 |
|
|
| Gnomeregan | 4 | 0 |
|
|
| Sunken Temple | 2 | 0 |
|
|
| Scarlet Monastery | 37 | 0 |
|
|
| Zul'Farrak | 1 | 0 |
|
|
| Scholomance | 36 | 0 |
|
|
| Stratholme | 12 | 0 |
|
|
| Blood Furnace | 1 | 0 |
|
|
| Shadow Labyrinth | 1 | 0 |
|
|
| Mana-Tombs | 3 | 0 |
|
|
| Auchenai Crypts | 5 | 0 |
|
|
| Magister's Terrace | 10 | 0 |
|
|
| Escape From Durnholde | 120 | 0 |
|
|
| Utgarde Keep | 8 | 0 |
|
|
| Utgarde Pinnacle | 32 | 0 |
|
|
| Culling of Stratholme | 11 | 0 |
|
|
| Halls of Stone | 2 | 0 |
|
|
| Halls of Lightning | 1 | 0 |
|
|
| Pit of Saron | 1 | 0 |
|
|
| Halls of Reflection | 9 | 0 |
|
|
|
|
The machine-readable `src/game/generated/wowDungeonStairs.generated.json`
|
|
records a scan for every WoW dungeon, including entries with no accepted new
|
|
proxy, collision package identities, candidate/rejection counts, and exact
|
|
navigation portals. Authored Wailing Caverns is scanned against its actual
|
|
source assets, rather than the campaign's separate canonical package.
|
|
|
|
## Safety and verification
|
|
|
|
- Require repeated short risers with consistent rise/run and overlapping width.
|
|
- Merge compatible continuous flights; independently verify short fallbacks
|
|
when a merged flight is unsafe.
|
|
- Rebuild after rejected proxies are removed, so accepted paths do not depend
|
|
on rejected geometry edits.
|
|
- Check real terrain support and capsule sweeps uphill/downhill along the center
|
|
and two interior lateral lanes at approximately 0.35m intervals.
|
|
- Fill only separate existing boundary portals wholly within a verified flight.
|
|
Do not invent off-mesh links across unrelated floors or walls.
|
|
- Gate generated coordinates by collision package URL/checksum identity, and
|
|
navigation identity where exact portal bridges are present.
|
|
- Keep existing validation/availability gates unchanged. Stair checks do not
|
|
certify boss routes, encounters, resets, checkpoints, or complete runs.
|
|
- Spatially index ramp footprints during preparation to avoid checking every
|
|
ramp against every vertex in large, multi-chunk environments.
|
|
|
|
The shipping-asset regression tests independently exercise all 347 new proxies
|
|
through `prepareCollision` and the live NPC direct-segment validator in both
|
|
directions and all three tested lanes. All generated portals match the actual
|
|
shipping navigation vertices. Existing Stockades player/NPC/wall regressions pass.
|
|
|
|
Full validation: 247 Vitest files passed, 1,599 tests passed, six existing tests
|
|
skipped. Production TypeScript/Vite build, texture/performance audits, bundle
|
|
compression/verification, and release candidate checking passed. Existing
|
|
physics initialization and bundle-size/import advisories remain.
|
|
|
|
## Visual evidence and remaining QA
|
|
|
|
The local visual viewer uses the runtime definitions/material policy, shipped
|
|
GLBs, Meshopt/KTX2 decoding, ACES tone mapping, and 1280x720 screenshots. It does
|
|
not modify saved characters or party state. Evidence is under
|
|
`artifacts/wow-dungeon-environment/` (ignored QA artifacts).
|
|
|
|
Uldaman's new/old-fill comparison shows clearer stone walls, columns, and floor
|
|
tiles. Wailing Caverns retains green coloration with readable rock formations.
|
|
Mechanar retains cool purple/blue interiors and unchanged visible steps.
|
|
Scholomance's entrance stairs and masonry remain visible with the crypt profile.
|
|
Blood Furnace's dark source textures remain atmospheric; the entrance viewpoint
|
|
faces a nearby wall, so this is not a full-room traversal review.
|
|
|
|
Zul'Farrak showed a geometry/viewpoint gap in the standalone entrance and boss
|
|
views. Do not treat its lighting profile or passing isolated proxy sweep as an
|
|
end-to-end visual/playability pass. Durnholde's large package completed loading
|
|
without console errors; its cavern entrance and outdoor fort masonry/trees were
|
|
readable, but the boss viewpoint also showed missing terrain/viewpoint coverage.
|
|
That environment needs a separate terrain/spawn review and live traversal check.
|
|
|
|
This is not an exhaustive certification that every staircase is repaired.
|
|
Conservative repeated-riser detection can miss curved flights, one/two-step
|
|
transitions, and heavily decimated source geometry. A rejected candidate may be
|
|
decorative, lack headroom/ground, or require an individually reviewed footprint.
|
|
An entry with no new proxy is not proof that it contains no stairs. Full-dungeon
|
|
actor traversal, entrance/exit lips, outer stair edges, manual review of rejected
|
|
or undetected flights, full clears, and physical Android QA remain open.
|
|
|
|
## Repeating the checks
|
|
|
|
Requires the project's Node 24 runtime for native TypeScript pipeline execution.
|
|
|
|
```text
|
|
npm run dungeon:wow:stairs:audit
|
|
npm run dungeon:wow:stairs:refresh
|
|
npm run dungeon:wow:stairs:audit -- scholomance --diagnostics
|
|
node scripts/dungeon-pipeline/audit-wow-stairs.ts wailing-caverns --update
|
|
npm test -- --run src/game/wowDungeonStairAssets.test.ts
|
|
```
|
|
|
|
The audit is read-only by default. Refresh writes the full generated catalog;
|
|
`--update` replaces only the named entry while retaining the other entries.
|
|
Campaign regeneration does not erase the runtime lighting/stair adapter.
|