Files
sow-module-tilesets/wgt01/STATUS.md
T
archvillainetteandClaude Opus 4.8 94abd80ade wgt01: add STATUS.md build log + loose-file toolset testing note
STATUS.md: what the generator kit produces, the pipeline commands, what's
verified (build/export/set), first-pass caveats, git state, and next passes.

AGENTS.md §6.3: test tilesets without packing a .hak by dropping loose .set/
.mdl/.wok into ~/Documents/Neverwinter Nights/development/ (toolset reads it).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-04 17:08:24 +02:00

93 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# wgt01 — Build Status & Notes
Progress log for the **Westgate Urban Foundation MVP** tileset (prefix `twu01`).
Spec: [KICKOFF.md](KICKOFF.md). How NWN needs things shaped: [../AGENTS.md](../AGENTS.md).
_Last updated: 2026-07-04._
---
## What exists — the generator kit (`generator/`)
One source of truth (`tiles.py`) feeds four tools; the two NWN emitters need no
Blender, so they're directly testable.
| File | Role | Needs Blender? |
|---|---|---|
| `tiles.py` | **Single source of truth**: 40-tile table, 12 materials, the 12×12 test map, and all pure derivations (paint / height / walkmesh quads / `.set` corner+crosser mapping). `PREFIX=twu01`. | no |
| `build.py` | Builds `westgate_urban_foundation_mvp.blend` — 40 tile collections (`VIS_`/`WOK_`/`BLOCK_` + edge custom props), `TILE_EDGE_METADATA` text block, `PREVIEW_tile_library_grid`, `PREVIEW_12x12_test_district`. | yes (4.0.2) |
| `export_mdl.py` | Real NWN export via **Neverblender** → 40 `.mdl` + 40 `.wok` (AuroraBase `tile`/`dummy`, `trimesh`, one `aabb` walkmesh; correct surfacemats). | yes + addon |
| `make_wok.py` | Pure-Python ASCII `.wok` emitter (verts+faces+surfacemat+AABB tree). Fallback when Neverblender absent — format **validated identical** to Neverblender's output. | no |
| `make_set.py` | First-pass `twu01.set` (INI, **CRLF**) from the tile grammar. | no |
`flake.nix` exposes these as apps + a dev shell (pinned **Blender 4.0.2**,
`neverwinter-nim`, `cleanmodels`).
## Pipeline (commands)
```sh
cd wgt01
nix run .#build -- out.blend # 1. Blender tile library
nix run .#export -- out.blend mdl/ # 2. real .mdl + .wok (Neverblender)
nix run .#set -- twu01.set # 3. first-pass .set (CRLF)
# nix run .#wok -- wok/ # ASCII .wok fallback only (export_mdl preferred)
```
## Verified (2026-07-04)
- **build**: 40 collections, 144/144 district cells placed, 0 skipped, 12 materials.
- **export**: 40 `.mdl` + 40 `.wok`. Surfacemats correct — CP1 all `wok_Stone`(4),
CN1 all `wok_Nonwalk`(7), BR_1/CE_S walkable+blocker mixed. `.mdl` has
`newmodel twu01_cp1`, `classification TILE`, AuroraBase name == resref.
- **Neverblender**: enabled + working **headless** via the flake's
`blender-4.0.2 --background`, reading `~/.config/blender/4.0` (same config as
the interactive session). Surfacemat = walkmesh face **material slot index**
after `nvb_utils.create_wok_materials(mesh)` — not the material name.
- **`.set`**: CRLF (1224/1224 lines), 40 tiles, 3 terrains (`cobble`/`raised`/
`canal`), 2 crossers (`ramp`/`canal_edge`). Corners/heights derive from each
tile's N/E/S/W edge grammar; ramp N-corners → height 1, canal edges →
`canal_edge` crosser, non-walkable tiles → `PathNode=N`.
## Testing in the toolset — no `.hak` needed
The toolset reads loose files from **`~/Documents/Neverwinter Nights/development/`**
(confirmed present). Drop the build outputs there and they're picked up directly:
```sh
DEV="$HOME/Documents/Neverwinter Nights/development"
cp mdl/twu01_*.mdl mdl/twu01_*.wok "$DEV"/
cp twu01.set "$DEV"/
```
Then in the toolset: create a small area using the `twu01` tileset, place tiles,
walk-test pathing/heights. (Packing a `.hak` with `nwn_erf` is deferred until the
set is validated.)
## First-pass caveats — tune before shipping
- **PathNode** is a placeholder (`A` walkable / `N` non-walkable) — verify creature
routing per tile shape in the toolset; real pathnode letters matter.
- **No `.itp` palette** yet — tiles may not appear in the toolset palette tree
until one is authored (GFF; `neverwinter-nim`'s `nwn_gff`). The `.set` still
loads for area creation.
- **No minimaps** — `ImageMap2D` refs exist in the `.set` but the `.tga`s don't
(skipped by decision; Westgate doesn't use them).
- **Substitutions**: `RA_C` = straight-ramp geometry; `STA` = smooth ramp WOK
proxy over stepped visual; `SW_C/T/X/E` share the straight-sidewalk visual.
- `MAT_void_black` is defined but currently unpainted (11/12 materials realised).
- Corner terrain is a heuristic from edges — hand-tune adjacency in the toolset.
## Git
Branch **`wgt01-tileset-kit`** (`main` still unborn — `git branch -f main
wgt01-tileset-kit` to promote). Commits:
- `60af184` — build guide + 40-tile generator kit
- `1284f15` — real `.mdl`/`.wok` export via Neverblender
## Next passes
1. Author `twu01palstd.itp` palette so tiles show in the toolset palette tree.
2. (optional) A `dev-install` flake app to copy build outputs into `development/`.
3. Walk-test in the toolset → tune PathNodes, crossers, corner terrains.
4. Pack `.hak` (`nwn_erf`) once validated.