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

4.6 KiB
Raw Blame History

wgt01 — Build Status & Notes

Progress log for the Westgate Urban Foundation MVP tileset (prefix twu01). Spec: KICKOFF.md. How NWN needs things shaped: ../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)

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:

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 minimapsImageMap2D refs exist in the .set but the .tgas 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.