forked from phenom/healer-man
40 lines
2.2 KiB
Markdown
40 lines
2.2 KiB
Markdown
# RuneWaker dungeon maps
|
|
|
|
The RuneWaker minimap shows a cropped dungeon map centered on the live player
|
|
marker. Press **M** or click the minimap to open the full map. The player marker
|
|
and heading, entrance, and numbered encounters use the same coordinate projection
|
|
in both views. The full map closes with **M**. The existing map keybind and minimap
|
|
rotation preference apply to RuneWaker dungeons too.
|
|
|
|
All 30 imported RuneWaker dungeon definitions have maps. Fifteen use calibrated
|
|
minimap tiles from the extracted RuneWaker client. Fifteen use floorplans rendered
|
|
from each dungeon's imported navigation mesh because matching client tiles are
|
|
missing or cannot be aligned confidently. The floorplans still place live markers
|
|
and encounters at their runtime coordinates. The UI labels a floorplan as such.
|
|
|
|
## Reimporting
|
|
|
|
Run `python scripts/runewaker-pipeline/import-maps.py` from the HealerMan root with
|
|
Pillow and NumPy available. `RUNEWAKER_ROOT` can point to the extracted RuneWaker
|
|
client; the default is `../Runewaker`. The importer reads DDS tiles under
|
|
`Resource/texture/minimap`, the primary WDB placement in each dungeon's
|
|
`import-metadata.json`, and the navigation GLB. It measures alignment between the
|
|
tile artwork and navigation geometry, accepts client artwork at confidence 0.65
|
|
or higher, and creates a navigation floorplan otherwise.
|
|
|
|
The generated PNGs live at `public/assets/game/dungeons/<id>/maps/runewaker-map.png`.
|
|
The runtime projection and source checksums live in
|
|
`src/game/generated/runewakerDungeonMaps.generated.json`. The map loader rejects
|
|
catalog entries when the dungeon map ID, coordinate transform, or visual checksum
|
|
no longer matches the runtime definition. Reimport after changing those inputs.
|
|
|
|
Run `npm run content:publish` after reimporting so downloadable dungeon packs
|
|
contain their map PNGs, then `npm run build` to refresh the bundled app.
|
|
|
|
## Verification
|
|
|
|
Run `node node_modules/vitest/vitest.mjs run src/game/dungeonArtworkMap.test.ts src/ui/DungeonMapGraphic.test.ts src/ui/MapPanel.test.ts`.
|
|
`node scripts/playtest-runewaker-maps.cjs` checks Forsaken Abbey in a browser,
|
|
including its downloaded artwork, minimap, M-key full map, and marker projection.
|
|
Screenshots are written to `artifacts/playtest/runewaker-maps/`.
|