From 08f544b35835b4b8562e9d370e7122994be6b1d8 Mon Sep 17 00:00:00 2001 From: vickydotbat Date: Sun, 5 Jul 2026 01:46:27 +0200 Subject: [PATCH] wgt01 --- AGENTS.md | 34 ++- .../plans/2026-07-05-wgt01-texture-kit.md | 281 ++++++++++++++++++ .../2026-07-05-wgt01-texture-kit-design.md | 87 ++++++ {wgt01 => twu01}/.gitignore | 0 {wgt01 => twu01}/KICKOFF.md | 0 {wgt01 => twu01}/STATUS.md | 106 +++++-- twu01/concept-art-1.png | 3 + {wgt01 => twu01}/flake.nix | 0 {wgt01 => twu01}/generator/.gitignore | 0 {wgt01 => twu01}/generator/build.py | 0 {wgt01 => twu01}/generator/export_mdl.py | 0 twu01/generator/make_itp.py | 87 ++++++ {wgt01 => twu01}/generator/make_mdl.py | 58 +++- twu01/generator/make_set.py | 145 +++++++++ {wgt01 => twu01}/generator/make_wok.py | 0 twu01/generator/test_namesync.py | 82 +++++ {wgt01 => twu01}/generator/tiles.py | 111 ++++++- wgt01/DESIGN.md | 15 + wgt01/VIBE.md | 1 + wgt01/concept-art-2.png | 3 + wgt01/generator/make_itp.py | 64 ---- wgt01/generator/make_set.py | 110 ------- wgt01/wgt01.blend1 | Bin 0 -> 1221460 bytes 23 files changed, 970 insertions(+), 217 deletions(-) create mode 100644 docs/superpowers/plans/2026-07-05-wgt01-texture-kit.md create mode 100644 docs/superpowers/specs/2026-07-05-wgt01-texture-kit-design.md rename {wgt01 => twu01}/.gitignore (100%) rename {wgt01 => twu01}/KICKOFF.md (100%) rename {wgt01 => twu01}/STATUS.md (55%) create mode 100644 twu01/concept-art-1.png rename {wgt01 => twu01}/flake.nix (100%) rename {wgt01 => twu01}/generator/.gitignore (100%) rename {wgt01 => twu01}/generator/build.py (100%) rename {wgt01 => twu01}/generator/export_mdl.py (100%) create mode 100644 twu01/generator/make_itp.py rename {wgt01 => twu01}/generator/make_mdl.py (63%) create mode 100644 twu01/generator/make_set.py rename {wgt01 => twu01}/generator/make_wok.py (100%) create mode 100644 twu01/generator/test_namesync.py rename {wgt01 => twu01}/generator/tiles.py (75%) create mode 100644 wgt01/DESIGN.md create mode 100644 wgt01/VIBE.md create mode 100644 wgt01/concept-art-2.png delete mode 100644 wgt01/generator/make_itp.py delete mode 100644 wgt01/generator/make_set.py create mode 100644 wgt01/wgt01.blend1 diff --git a/AGENTS.md b/AGENTS.md index 378d4a1..35cece4 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -92,6 +92,14 @@ Keep the terrain/crosser vocabulary **small and deliberate** per tileset. Decimals allowed. BioWare original content used **5 m**; custom sets use **2–3 m**. - **wgt01 uses a raised tier at Z = 1.5 m**, so its `Transition = 1.5` and the raised tiles sit at corner height `1`. +- **"Raised" is a height, NOT a terrain type.** Verified vs `tcn01`: every raised + corner is still `cobble` with `…Height=1`; only cobble ever carries a non-zero + height (water/building stay at 0). Raise/Lower is the toolbar height tool acting on + cobble corners — do **not** add a `raised` entry to `[TERRAIN TYPES]`. Making it + paintable requires three things together: `HasHeightTransition=1`, a set of + **ungrouped transition tiles** covering the cobble:0 ↔ cobble:1 corner patterns + (ramps / retaining edges), and the `[PRIMARY RULES]` that let the brush step a + corner's height. Any one missing and Raise/Lower is inert. - Walkable ground can only be *raised* in whole steps, never lowered below Z=0. Visual water/void may dip (e.g. canal at Z = −0.3) **only under a non-walkable walkmesh** — never a playable under/over space (matches `KICKOFF.md`). @@ -114,10 +122,34 @@ It needs, in the `.set`: `Floor` (the terrain the **eraser** paints), `HasHeightTransition=1` (turns on Raise/Lower). `[PRIMARY RULES]` only *refine* auto-picking (cascading corner transitions) and are -**optional** — stock custom sets ship `Count=0` (verified: `wut01.set`). **Eraser, +**optional even for multi-terrain paint** — verified: stock `wut01.set` paints **6 +terrains** with `[PRIMARY RULES] Count=0`. What actually makes a terrain paintable is +having a `[TILE#]` for **every corner pattern the brush can request** (all rotations), +each **ungrouped**. Rules just smooth cascading auto-transitions; stock `tcn01` (City, +5 terrains + heights) ships **76** for polish, but you can ship `Count=0` and add them +later. **Eraser, Raise/Lower, and fill are built-in toolbar actions driven by those `[GENERAL]` fields — they are not palette entries.** +**The random-fill pool (verified vs `tcn01`, 2026-07-04).** For a given corner +pattern the brush picks a **random tile among the ungrouped tiles that match** — +**membership in any `[GROUP#]` removes a tile from that pool.** So the ungrouped +same-corner tiles *are* the fill: the cobble the `Default` terrain spawns a new area +with, the variants the brush scatters, the tile the eraser resets to. Consequences +that bite: +- Grouping **every** tile empties the `Default` pool → the New Area wizard + null-derefs (`Access violation … Write of 00000040`). Keep ≥1 ungrouped tile per + paintable corner pattern. +- **Every terrain/transition tile must stay UNGROUPED** to take part in painting. + `[GROUP#]` is only for click-place **prefabs** (streets, bridges, statues) that the + builder should *not* get at random. A "canal edge" you want the brush to auto-lay is + a terrain tile (ungrouped), not a feature. +- `tcn01`'s 513 tiles collapse to **58 distinct corner-tuples** — the surplus is art + variety. A geometry-only set needs roughly **one tile per corner-tuple**, and one + model can serve all four rotations of a tuple as four `[TILE#]` entries differing + only in `Orientation` (0/90/180/270) and the correspondingly-rotated corners/edges + (the engine rotates model **and** walkmesh together). + **System 2 — the palette (`.itp`): Features & Groups only.** The right-side "Standard" tree click-places **prefabs**: a *feature* (1×1) or a *group* (N×M). A palette entry is placeable **only if it is backed by a `[GROUP#]` in the `.set`** — diff --git a/docs/superpowers/plans/2026-07-05-wgt01-texture-kit.md b/docs/superpowers/plans/2026-07-05-wgt01-texture-kit.md new file mode 100644 index 0000000..fb9750a --- /dev/null +++ b/docs/superpowers/plans/2026-07-05-wgt01-texture-kit.md @@ -0,0 +1,281 @@ +# wgt01 Texture Kit Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Build the 8-slot dark-gothic PBR texture kit for the wgt01 tileset (`wgt01/textures/`), regraded to the concept-art palette, with provenance notes and materials wired into `wgt01.blend`. + +**Architecture:** Copy the best `tcn01` PBR maps out of `/home/vicky/Blender/PBR_Procampur` into a `wgt01_` namespace, run every diffuse through one shared ImageMagick regrade script, pull CC0 sets from ambientCG only for the plaza (and optionally sidewalk) slots, author the water map, then load everything into `wgt01.blend` as `MAT_wgt01_*` materials via headless Blender. + +**Tech Stack:** bash + ImageMagick (`magick`), `curl` (ambientCG API), Blender 4.0.2 headless (via `nix develop ../twu01` → `$BLENDER_BIN`), NWN `.mtr` text files. + +## Global Constraints + +- All shipped names ≤ 16 chars, lowercase, `wgt01_` prefix (spec: resref limit). +- Kit lives in `wgt01/textures/`; never modify originals under `/home/vicky/Blender`. +- Every diffuse goes through `wgt01/regrade.sh` — no hand-edited one-off images. +- Height/normal maps copy through untouched. +- Every shipped file gets a `SOURCES.md` line (origin path or CC0 URL + license). +- TGA only in the kit (convert any DDS); NWN also reads TGA directly. +- Working branch: `wgt01-tileset-kit`. NixOS: no ad-hoc global installs; use `nix shell nixpkgs#imagemagick -c` / the twu01 dev shell. +- This is an asset pipeline, not TDD code: each task's "test" is a runnable visual or scripted check, and the plan's self-checks (`assert`-style bash) stand in for unit tests. + +--- + +### Task 1: Kit scaffold + regrade script + +**Files:** +- Create: `wgt01/textures/` (dir), `wgt01/regrade.sh`, `wgt01/textures/SOURCES.md` (header only) + +**Interfaces:** +- Produces: `regrade.sh ` — darkens ~35%, desaturates, cool-shifts any diffuse. All later tasks call it. Env overrides: `MOD` (modulate triple, default `65,55,100`), `TINT` (default `#232830`), `TINTPCT` (default `12`). + +- [ ] **Step 1: Write the script** + +```bash +mkdir -p wgt01/textures +cat > wgt01/regrade.sh <<'EOF' +#!/usr/bin/env bash +# Uniform Westgate regrade: darken, desaturate, cool tint. +# Usage: regrade.sh (env: MOD, TINT, TINTPCT to override per-slot) +set -euo pipefail +MOD="${MOD:-65,55,100}"; TINT="${TINT:-#232830}"; TINTPCT="${TINTPCT:-12}" +magick "$1" -modulate "$MOD" -fill "$TINT" -colorize "${TINTPCT}%" -level '0%,95%' "$2" +EOF +chmod +x wgt01/regrade.sh +printf '# wgt01/textures — sources & licenses\n\n| file | origin | license |\n|---|---|---|\n' > wgt01/textures/SOURCES.md +``` + +- [ ] **Step 2: Self-check — regraded output is darker and less saturated** + +```bash +nix shell nixpkgs#imagemagick -c bash -c ' + ./wgt01/regrade.sh /home/vicky/Blender/PBR_Procampur/tcn01_cobb02_d.tga /tmp/rg_test.tga + b_in=$(magick /home/vicky/Blender/PBR_Procampur/tcn01_cobb02_d.tga -colorspace Gray -format "%[fx:mean]" info:) + b_out=$(magick /tmp/rg_test.tga -colorspace Gray -format "%[fx:mean]" info:) + awk -v a="$b_in" -v b="$b_out" "BEGIN{ if (b < a*0.75) print \"OK darker: \" a \" -> \" b; else { print \"FAIL\"; exit 1 } }"' +``` +Expected: `OK darker: -> ` with out ≲ 0.75×in. + +- [ ] **Step 3: Eyeball it** — `magick montage` the original vs regraded cobble side by side, Read the PNG, compare against the concept sheet's wet-cobblestone swatch. Tune `MOD`/`TINT` defaults in the script if it reads too green or too bright; re-run Step 2. + +- [ ] **Step 4: Commit** + +```bash +git add wgt01/regrade.sh wgt01/textures/SOURCES.md +git commit -m "wgt01: texture kit scaffold + shared regrade script" +``` + +--- + +### Task 2: Procampur slot extraction (slots 1,2,4,5,6 + grime decals) + +**Files:** +- Create: `wgt01/textures/wgt01_{cobble,worn,sidewlk,wall,bridge}_{d,n,h}.tga`, matching `wgt01_.mtr`, `wgt01_grime1_d.tga`, `wgt01_wtrline_d.tga` +- Modify: `wgt01/textures/SOURCES.md` + +**Interfaces:** +- Consumes: `wgt01/regrade.sh` (Task 1). +- Produces: slot basenames `wgt01_cobble`, `wgt01_worn`, `wgt01_sidewlk`, `wgt01_wall`, `wgt01_bridge` (each `_d/_n/_h` + `.mtr`) — Tasks 5–6 reference exactly these. + +- [ ] **Step 1: Extract, regrade diffuses, copy n/h, emit .mtr** + +```bash +cd wgt01 && P=/home/vicky/Blender/PBR_Procampur +declare -A SRC=( [cobble]=tcn01_cobb02 [worn]=tcn01_cobb05 [sidewlk]=tcn01_stone04 [wall]=tcn01_brick03 [bridge]=tcn01_stone04 ) +nix shell nixpkgs#imagemagick -c bash -c ' +set -euo pipefail; P=/home/vicky/Blender/PBR_Procampur +for slot in cobble worn sidewlk wall bridge; do + case $slot in cobble) s=tcn01_cobb02;; worn) s=tcn01_cobb05;; sidewlk) s=tcn01_stone04;; wall) s=tcn01_brick03;; bridge) s=tcn01_stone04;; esac + ./regrade.sh "$P/${s}_d.tga" "textures/wgt01_${slot}_d.tga" + cp "$P/${s}_n.tga" "textures/wgt01_${slot}_n.tga" + cp "$P/${s}_h.tga" "textures/wgt01_${slot}_h.tga" + printf "renderhint NormalAndSpecMapped\r\n\r\n// Textures\r\ntexture0 wgt01_%s_d\r\ntexture1 wgt01_%s_n\r\ntexture2 black\r\ntexture3 null\r\ntexture4 wgt01_%s_h\r\ntexture5 null\r\n" "$slot" "$slot" "$slot" > "textures/wgt01_${slot}.mtr" + printf "| wgt01_%s_* | PBR_Procampur/%s_* | see PBR_Procampur readme |\n" "$slot" "$s" >> textures/SOURCES.md +done +# grime decals: pass through (alpha overlays, already neutral) +magick "$P/tcn01_splotch2_d.tga" textures/wgt01_grime1_d.tga +magick "$P/tcn01_watrstn02.tga" textures/wgt01_wtrline_d.tga +printf "| wgt01_grime1_d | PBR_Procampur/tcn01_splotch2_d | see readme |\n| wgt01_wtrline_d | PBR_Procampur/tcn01_watrstn02 | see readme |\n" >> textures/SOURCES.md' +``` + +Note: `bridge` starts as a duplicate of `stone04` with a darker override (`MOD=58,50,100 ./regrade.sh …`) so it separates visually from sidewalk; if it still reads identical at Task 6, the internet arch-stone fallback from Task 3's API search replaces it. + +- [ ] **Step 2: Check — every slot complete, names ≤16** + +```bash +cd wgt01/textures && for f in wgt01_{cobble,worn,sidewlk,wall,bridge}{_d.tga,_n.tga,_h.tga,.mtr}; do + [ -f "$f" ] || { echo "MISSING $f"; exit 1; } + b="${f%.*}"; [ ${#b} -le 16 ] || { echo "TOO LONG $b"; exit 1; } +done && echo OK +``` +Expected: `OK`. + +- [ ] **Step 3: Contact sheet** — montage all `wgt01_*_d.tga`, Read it, compare with concept-art material swatches. Adjust per-slot `MOD`/`TINT` env overrides and re-run Step 1 for any slot that's off. + +- [ ] **Step 4: Commit** + +```bash +git add wgt01/textures && git commit -m "wgt01: Procampur-derived slots (cobble/worn/sidewalk/wall/bridge) + grime decals" +``` + +--- + +### Task 3: Internet pull — plaza slabs (slot 3) + +**Files:** +- Create: `wgt01/textures/wgt01_plaza_{d,n,h}.tga`, `wgt01/textures/wgt01_plaza.mtr` +- Modify: `wgt01/textures/SOURCES.md` + +**Interfaces:** +- Consumes: `regrade.sh`. Produces: basename `wgt01_plaza` for Tasks 5–6. + +- [ ] **Step 1: Find a CC0 large-slab flagstone on ambientCG** + +```bash +curl -s 'https://ambientcg.com/api/v2/full_json?q=paving+stones&type=Material&limit=50' \ + | nix shell nixpkgs#jq -c jq -r '.foundAssets[] | [.assetId, .displayName] | @tsv' | head -30 +``` +Pick a large/irregular slab asset (PavingStones-family; prefer big flat slates over small cobbles — this is the plaza). Download the 1K JPG zip: + +```bash +cd /tmp/claude-*/*/scratchpad 2>/dev/null || cd "$SCRATCHPAD" +curl -Lo plaza.zip 'https://ambientcg.com/get?file=_1K-JPG.zip' && nix shell nixpkgs#unzip -c unzip -o plaza.zip -d plaza/ +ls plaza/ # expect _1K_Color.jpg, _NormalGL.jpg, _Displacement.jpg +``` + +- [ ] **Step 2: Convert + regrade into the kit** + +```bash +cd /wgt01 && S=/plaza A= +nix shell nixpkgs#imagemagick -c bash -c ' +./regrade.sh "'$S'/'$A'_1K_Color.jpg" textures/wgt01_plaza_d.tga +magick "'$S'/'$A'_1K_NormalGL.jpg" textures/wgt01_plaza_n.tga +magick "'$S'/'$A'_1K_Displacement.jpg" -colorspace Gray textures/wgt01_plaza_h.tga' +printf "renderhint NormalAndSpecMapped\r\n\r\n// Textures\r\ntexture0 wgt01_plaza_d\r\ntexture1 wgt01_plaza_n\r\ntexture2 black\r\ntexture3 null\r\ntexture4 wgt01_plaza_h\r\ntexture5 null\r\n" > textures/wgt01_plaza.mtr +printf "| wgt01_plaza_* | ambientcg.com asset %s (1K JPG) | CC0 |\n" "$A" >> textures/SOURCES.md +``` + +- [ ] **Step 3: Check** — same completeness/length loop as Task 2 Step 2 for `wgt01_plaza`; montage plaza next to cobble/sidewalk and Read: plaza must read as *larger, flatter slabs* than both, in the same palette. + +- [ ] **Step 4: Commit** — `git add wgt01/textures && git commit -m "wgt01: plaza slab slot from ambientCG (CC0)"` + +--- + +### Task 4: Authored slots — canal water (8) + gutter/drain (7) + +**Files:** +- Create: `wgt01/textures/wgt01_water_d.tga`, `wgt01_water.mtr`, `wgt01_gutter_{d,n,h}.tga`, `wgt01_gutter.mtr` +- Modify: `wgt01/textures/SOURCES.md` + +**Interfaces:** +- Produces: basenames `wgt01_water`, `wgt01_gutter` for Tasks 5–6. + +- [ ] **Step 1: Water — near-black, subtle ripple, from procedural noise (no source needed)** + +```bash +cd wgt01 && nix shell nixpkgs#imagemagick -c bash -c ' +magick -size 512x512 plasma:gray20-gray35 -blur 0x6 -modulate 40,20,100 \ + -fill "#0a0e14" -colorize 70% -level "0%,60%" textures/wgt01_water_d.tga' +printf "renderhint NormalAndSpecMapped\r\n\r\n// Textures\r\ntexture0 wgt01_water_d\r\ntexture1 null\r\ntexture2 black\r\ntexture3 null\r\ntexture4 null\r\ntexture5 null\r\n" > textures/wgt01_water.mtr +printf "| wgt01_water_d | authored (ImageMagick plasma) | ours |\n" >> textures/SOURCES.md +``` +(EnvMap-driven sheen comes from the `.set` later — out of scope here.) + +- [ ] **Step 2: Gutter — extra-dark stone channel from the cobble source** + +```bash +cd wgt01 && nix shell nixpkgs#imagemagick -c bash -c ' +P=/home/vicky/Blender/PBR_Procampur +MOD=45,40,100 TINT="#14181f" TINTPCT=20 ./regrade.sh "$P/tcn01_cobb02_d.tga" textures/wgt01_gutter_d.tga +cp "$P/tcn01_cobb02_n.tga" textures/wgt01_gutter_n.tga +cp "$P/tcn01_cobb02_h.tga" textures/wgt01_gutter_h.tga' +printf "renderhint NormalAndSpecMapped\r\n\r\n// Textures\r\ntexture0 wgt01_gutter_d\r\ntexture1 wgt01_gutter_n\r\ntexture2 black\r\ntexture3 null\r\ntexture4 wgt01_gutter_h\r\ntexture5 null\r\n" > textures/wgt01_gutter.mtr +printf "| wgt01_gutter_* | PBR_Procampur/tcn01_cobb02_* (extra-dark regrade) | see readme |\n" >> textures/SOURCES.md +``` +Try converting `$P/tcn01_grate01.dds` for an iron grate decal (`magick` failed on its header earlier; try `nix shell nixpkgs#directx-shader-compiler`? No — try `texconv` alt: `nix shell nixpkgs#imagemagick -c magick dds:...` or Gimp headless). If unreadable, skip: the drain grate becomes modeled geometry with `wgt01_gutter`, note it in SOURCES.md — do not block on it. + +- [ ] **Step 3: Check + commit** — completeness loop for `wgt01_water`, `wgt01_gutter`; montage; `git add wgt01/textures && git commit -m "wgt01: authored water + gutter slots"`. + +--- + +### Task 5: Wire materials into wgt01.blend + +**Files:** +- Create: `wgt01/wire_materials.py` +- Modify: `wgt01/wgt01.blend` (headless save) + +**Interfaces:** +- Consumes: all 8 slot basenames from Tasks 2–4. +- Produces: Blender materials named `MAT_wgt01_` (Principled BSDF, image texture node on `_d`, normal-map node on `_n` where present, relative paths `//textures/…`). + +- [ ] **Step 1: Write `wgt01/wire_materials.py`** + +```python +"""Create/refresh MAT_wgt01_* materials in wgt01.blend (run headless).""" +import bpy, os +SLOTS = ["cobble", "worn", "plaza", "sidewlk", "wall", "bridge", "gutter", "water"] +BASE = os.path.dirname(bpy.data.filepath) + +for slot in SLOTS: + name = f"MAT_wgt01_{slot}" + mat = bpy.data.materials.get(name) or bpy.data.materials.new(name) + mat.use_nodes = True + nt = mat.node_tree; nt.nodes.clear() + out = nt.nodes.new("ShaderNodeOutputMaterial") + bsdf = nt.nodes.new("ShaderNodeBsdfPrincipled") + nt.links.new(bsdf.outputs["BSDF"], out.inputs["Surface"]) + d = os.path.join(BASE, "textures", f"wgt01_{slot}_d.tga") + img = bpy.data.images.load(d, check_existing=True) + img.filepath = f"//textures/wgt01_{slot}_d.tga" + tex = nt.nodes.new("ShaderNodeTexImage"); tex.image = img + nt.links.new(tex.outputs["Color"], bsdf.inputs["Base Color"]) + n = os.path.join(BASE, "textures", f"wgt01_{slot}_n.tga") + if os.path.exists(n): + nimg = bpy.data.images.load(n, check_existing=True) + nimg.filepath = f"//textures/wgt01_{slot}_n.tga"; nimg.colorspace_settings.name = "Non-Color" + ntex = nt.nodes.new("ShaderNodeTexImage"); ntex.image = nimg + nmap = nt.nodes.new("ShaderNodeNormalMap") + nt.links.new(ntex.outputs["Color"], nmap.inputs["Color"]) + nt.links.new(nmap.outputs["Normal"], bsdf.inputs["Normal"]) + # wet look: low roughness on ground slots + bsdf.inputs["Roughness"].default_value = 0.35 if slot in ("cobble", "gutter", "water") else 0.6 + +bpy.ops.wm.save_mainfile() +print("WIRED:", ", ".join(f"MAT_wgt01_{s}" for s in SLOTS)) +``` + +- [ ] **Step 2: Run headless and verify** + +```bash +cd wgt01 && nix develop ../twu01 -c "$BLENDER_BIN" --background wgt01.blend --python wire_materials.py 2>&1 | grep WIRED +``` +(If `$BLENDER_BIN` is unset outside the dev shell, run `nix develop ../twu01` first — it exports it.) Expected: `WIRED: MAT_wgt01_cobble, …` and `wgt01.blend` mtime updated. + +- [ ] **Step 3: Verify images resolve** — re-open headless: `--python-expr 'import bpy; missing=[i.name for i in bpy.data.images if not i.has_data]; print("MISSING:", missing); assert not missing'`. Expected: `MISSING: []`. + +- [ ] **Step 4: Commit** — `git add wgt01/wire_materials.py wgt01/wgt01.blend && git commit -m "wgt01: wire MAT_wgt01_* materials into blend"`. + +--- + +### Task 6: Final verification — palette contact sheet + +**Files:** +- Create: `wgt01/textures/contact-sheet.png` (committed as the kit's visual record) + +- [ ] **Step 1: Build the sheet** + +```bash +cd wgt01 && nix shell nixpkgs#imagemagick -c bash -c ' +magick montage -label "%f" -background "#111" -fill "#ccc" textures/wgt01_*_d.tga \ + -tile 4x -geometry 256x256+6+6 textures/contact-sheet.png' +``` + +- [ ] **Step 2: Read the sheet next to `concept-art-1.png`'s Material Language column.** Acceptance: all 8 slots present, one shared dark/cool palette, plaza ≠ sidewalk ≠ cobble at a glance, bridge ≠ sidewalk, water near-black. Fix any failing slot by adjusting its regrade override and re-running that task's Step 1. + +- [ ] **Step 3: SOURCES.md audit** + +```bash +cd wgt01/textures && for f in wgt01_*; do grep -q "${f%%_[dnhs].tga}" SOURCES.md || grep -q "${f%.mtr}" SOURCES.md || { echo "UNSOURCED $f"; exit 1; }; done && echo OK +``` + +- [ ] **Step 4: Commit** — `git add wgt01/textures/contact-sheet.png && git commit -m "wgt01: texture kit contact sheet"`. diff --git a/docs/superpowers/specs/2026-07-05-wgt01-texture-kit-design.md b/docs/superpowers/specs/2026-07-05-wgt01-texture-kit-design.md new file mode 100644 index 0000000..755aa5c --- /dev/null +++ b/docs/superpowers/specs/2026-07-05-wgt01-texture-kit-design.md @@ -0,0 +1,87 @@ +# wgt01 Texture Kit & Design — Spec + +Date: 2026-07-05 · Branch: `wgt01-tileset-kit` · Status: approved-in-conversation, pending spec review + +## Goal + +Assemble the material/texture kit for **wgt01** (Westgate Urban Foundation +tileset): dark gothic ground grammar only — streets, sidewalks, plazas, curbs, +gutters, raised tiers, ramps, canals, bridges. No buildings (placeables later). +Palette and material language follow `wgt01/concept-art-1.png` (8 material +slots) and `wgt01/VIBE.md` (noir dark fantasy, rain-slick, early +industrial-magical shown only through ground grammar). + +## Approach (decided) + +**Hybrid curated**, Procampur-first with a small internet pull: + +- Base structure from `/home/vicky/Blender/PBR_Procampur` (PBR retexture of + stock `tcn01` City set: `_d/_h/_n` maps + `.mtr`, NWN-correct tiling scale). + Confirmed too grey-green/warm as-is → every diffuse gets a uniform regrade. +- Fresh CC0 pulls (ambientCG / Polyhaven or similar) only for slots Procampur + lacks: plaza slabs, possibly sidewalk flagstone and bridge arch stone. +- `pd textures main lib` is fallback only (Roads is mostly modern asphalt; the + dark pebble-cobble pattern is a candidate wet-cobble alternate). + +Rejected: pure Procampur rename (not dark enough); all-internet (discards +ready-made NWN conventions, most work). + +## Deliverables + +1. `wgt01/textures/` — the kit. Per material slot: `wgt01__d/_h/_n.tga` + (+ `_s` where available) and `wgt01_.mtr`. All resrefs ≤ 16 chars, + `wgt01_` namespace. No originals modified in `/home/vicky/Blender`. +2. `wgt01/textures/SOURCES.md` — per-file provenance + license notes + (Procampur origin filename, or CC0 URL/asset id). +3. `wgt01/regrade.sh` (or small script) — the single ImageMagick recipe + (levels + desaturate + cool tint, ~35% darken) applied to all diffuses so + the kit shares one palette. Reproducible; height/normal maps pass through + untouched; missing `_s` generated from darkened diffuse. +4. Materials wired into `wgt01/wgt01.blend` on the tile prototypes + (named `MAT_wgt01_`, image-based, matching KICKOFF material roles). + +## Material slots + +| # | Slot (concept sheet) | Source | Notes | +|---|---|---|---| +| 1 | Wet cobblestone | `tcn01_cobb02` d/h/n | regrade; specular boosted for rain-slick | +| 2 | Worn stone / patches | `tcn01_cobb05` | regrade; broken/repair variant | +| 3 | Plaza stone (large slabs) | internet CC0 flagstone/slate | grade to palette | +| 4 | Curb / sidewalk stone | `tcn01_stone04` or internet flagstone | pick after regrade test | +| 5 | Retaining wall stone | `tcn01_brick03` + `tcn01_slum01`; `tcn01_watrstn02` waterline overlay near canals | regrade | +| 6 | Bridge stone | `tcn01_stone04`/`brick03` variant; internet arch stone if needed | regrade | +| 7 | Dark gutter / drain | `tcn01_grate01`/`grill01` iron + darkened stone channel | near-black, wet; grate01 is DDS-only → convert | +| 8 | Canal / dark water | authored near-black water diffuse; `.set` `EnvMap` | `tcn01_water01` too green; animation later | + +Grime layer (not a slot): `tcn01_splotch*`/`stain*` alpha decals reused as-is. + +## Tile grammar (context, unchanged) + +Prefix `wgt01`; terrains `cobble` / `plaza` / `canal`; crossers `street` / +`sidewalk` / `canal_edge`; `Transition=1.5`; raised tier = cobble at corner +height 1 (not a terrain). Kept minimal per the terrain-pairing cost rule in +root `AGENTS.md` §2.1. Canal water sits at Z = −0.3 under a non-walkable +walkmesh. + +## Out of scope + +Buildings/facades/props; `.set`/`.itp`/`.mdl` emission (twu01 generator kit is +the reference when we get there); water animation; minimaps; hak packing. + +## Verification + +- Contact sheet (ImageMagick montage) of all regraded diffuses next to + concept-art swatches — visual palette check. +- Every slot has `_d/_h/_n` + `.mtr`, names ≤ 16 chars, TGA (no stray DDS). +- `wgt01.blend` opens in Blender 4.0.2 with all `MAT_wgt01_*` images resolving + (relative paths into `wgt01/textures/`). +- `SOURCES.md` covers every shipped file. + +## Risks + +- Regrade recipe may need per-slot tweaks; keep overrides in the script, not + hand-edited images. +- Internet pulls are network-dependent and need license capture at download + time. +- Procampur's own redistribution license should be checked before the kit + ships in a public `.hak`; fine for internal prototyping. diff --git a/wgt01/.gitignore b/twu01/.gitignore similarity index 100% rename from wgt01/.gitignore rename to twu01/.gitignore diff --git a/wgt01/KICKOFF.md b/twu01/KICKOFF.md similarity index 100% rename from wgt01/KICKOFF.md rename to twu01/KICKOFF.md diff --git a/wgt01/STATUS.md b/twu01/STATUS.md similarity index 55% rename from wgt01/STATUS.md rename to twu01/STATUS.md index 834c842..98a7ac2 100644 --- a/wgt01/STATUS.md +++ b/twu01/STATUS.md @@ -44,14 +44,20 @@ nix run .#build -- out.blend # optional: editable .blend preview walkmesh. E.g. `st_s` → 3 trimesh nodes (swlk/curb/wcob); `cp1` → 1 with `bitmap twu01_wcob`. Walkmesh surfacemats: 4 (`wok_Stone`, walkable) / 7 (`wok_Nonwalk`). Matches the stock `trs02` tile structure field-for-field. -- **`.itp`**: `twu01palstd.itp` round-trips through `nwn_gff` — `ITP ` type, - 40 named entries. Names render, but the **structure is wrong** (flat folder of - raw tile resrefs → unplaceable, no Terrain/eraser folder). See Diagnosis below; - needs a rebuild to the 3-folder Terrain/Features/Groups shape. -- **`.set`**: CRLF, 40 tiles, 3 terrains (`cobble`/`raised`/`canal`), 2 crossers - (`ramp`/`canal_edge`). `Version=V1.0`, stock field order (`WalkMesh=msb01`, - lights=1, `VisibilityNode=A`, `ImageMap2D` last). Corners/heights from each - tile's N/E/S/W edge grammar; non-walkable tiles → `PathNode=N`. +- **`.itp` (rebuilt 2026-07-04, pass 4)**: `twu01palstd.itp` round-trips through + `nwn_gff` with the **real structure** (../AGENTS.md §2.3): a **Features** folder + (STRREF 63261) with a leaf per **non-ground** tile (37), and a **Terrain** folder + (STRREF 8282) = paint `cobble` + the magic `eraser` leaf (STRREF 63291). Ground + tiles (CP1/CP2/CP3) are omitted from Features on purpose — they're the painted + fill, not click-placed. Every feature leaf is backed by a 1×1 `[GROUP#]` in the + `.set` (Name==leaf NAME, `Tile0`==that tile). Guarded by + `generator/test_namesync.py` (passes). **Pending GUI re-test.** +- **`.set` (pass 4)**: CRLF, 40 tiles, 3 terrains (`cobble`/`raised`/`canal`), 2 + crossers (`ramp`/`canal_edge`). `HasHeightTransition=0` (MVP paints flat cobble + only; matches stock). **37 `[GROUP#]`, one per non-ground tile — CP1/CP2/CP3 stay + ungrouped so they remain the random terrain-fill pool** (see Root cause below). + `Version=V1.0`, stock field order. Corners/heights from each tile's edge grammar; + non-walkable tiles → `PathNode=N`. - **install path**: `~/Documents/Neverwinter Nights/development` is a symlink to `~/.local/share/Neverwinter Nights/development` (the toolset's real dir); one `nix run .#dev-install` stages all 94 loose files there. @@ -125,17 +131,81 @@ label, LIST}`; leaves `{NAME, RESREF}`. Folder 8282 = **Terrain** (leaf RESREF = terrain/crosser *name*, plus a magic `eraser` leaf STRREF 63291); 63261 = **Features** (1×1, RESREF = first-tile resref); 63262 = **Groups** (N×M). -## Next passes +## Root cause 2026-07-04 — New Area crash (pass 3 regression, fixed pass 4) -1. **Rebuild `make_itp.py` + `make_set.py` to the real structure** (../AGENTS.md - §2.3): - - `.itp`: a **Terrain** folder (each `tiles.TERRAINS`/`CROSSERS` by name + an - `eraser` leaf) so terrain-painting + eraser exist; a **Features** folder with a - 1×1 entry per tile we want click-placeable. - - `.set`: add `[GROUP#]` (1×1 feature) entries backing those Features leaves - (`Name` == palette NAME, `Tile0` == that tile's index). - - Then in the toolset lay ground via **Paint Terrain** (cobble/raised/canal), not - by clicking tiles. +Creating a new area threw `Access violation ... Write of address 00000040` in +`nwtoolset.exe`. **Root cause: an empty terrain-fill pool.** A grouped tile is +excluded from the toolset's random fill; pass 3 put *all 40* tiles in 1×1 groups, +so `Default=cobble` had **no** tile to fill with → null deref. Verified against +stock `tcn01` (City Exterior): of its 320 cobble-cornered tiles, 314 are group +members and only **6** (non-group `a20_*`/`o01`) form the real fill pool. + +**Fix (pass 4):** ground tiles `CP1/CP2/CP3` (`tiles.GROUND_CODES`) are left +ungrouped → they are the interchangeable cobble the area spawns with and the +eraser resets to. The other 37 tiles keep their `[GROUP#]` (palette features). +Also set `HasHeightTransition=0` (matches stock; we don't paint height +transitions this pass). `test_namesync.py::test_ground_tiles_stay_in_fill_pool` +is the regression guard. This also fixes the earlier "random different tiles at +different elevations" fill — only CP1/CP2/CP3 now auto-fill. + +## Pass 4 result (2026-07-04, confirmed in toolset) + +✅ New Area succeeds, spawns plain cobble. ✅ Features click-place (the `[flat]` +prefabs). ✅ Eraser resets to cobble. ❌ **Canal and Raise/Lower are inert** — as +predicted by the ponytail note. Root cause (now fully understood, see AGENTS.md +§2.2/§2.3): +1. Canal & raised tiles are `[GROUP#]` features → excluded from the paint pool, so + the brush has nothing to auto-lay. +2. Only `cobble` is exposed in the `.itp` Terrain folder → no canal brush. +3. `HasHeightTransition=0` → Raise/Lower greyed out. +4. `[PRIMARY RULES] Count=0` → the brush can't reconcile a 2nd terrain / a height + step against neighbours. +5. `raised` is modelled as a *terrain* (`TERRAINS`), but in NWN it's a **height on + cobble** — the model is wrong. + +## Pass 5a done (2026-07-04) — CANAL is now paintable + +Staged via `nix run .#dev-install`: 51 tile placements from 41 models, 33 feature +groups, matrix complete, `namesync OK`. What changed vs pass 4: +- `tiles.py`: split spec→placement (`placements()`, rotate one model into 4 + orientations); `is_paint`/`is_transition`; added diagonal-pinch tile `CE_D`; + fixed `CE_I` corners (its geometry is 1 canal corner, edges wrongly read 3); + `canal_paint_matrix()` completeness helper. +- `make_set.py`: emits rotated `[TILE#]` placements, groups only NON-paint tiles, + blanks crossers on paint tiles (corner-match only), **hard-fails if the 16-pattern + cobble/canal matrix is incomplete** (caught the CE_I bug). +- `make_itp.py`: Terrain folder = `cobble` + `canal` + eraser; Features = non-paint. +- `HasHeightTransition` still 0 (raise/lower = pass 5b). + +**Re-test:** (a) is there a **canal** brush in Terrain, and does painting it lay +black-water tiles? (b) do canal/land **edges auto-appear** (straight, both corners, +diagonal) without seams or gaps? (c) does the **eraser** still reset to cobble, and +New Area still spawn cobble (no regression)? (d) do the click-place features (streets +etc.) still place? Report back — then 5b adds raise/lower on the same machinery. + +## Pass 5b plan — raise/lower (next) + original full plan below + +Reference: stock `tcn01` (513 tiles → 58 corner-tuples; 76 primary rules; +`HasHeightTransition=1`). Our geometry-only version needs ~1 tile per tuple. + +- **Model change in `tiles.py`:** split *tile spec* (a model) from *placement* (a + `[TILE#]` = model + `Orientation` + rotated corners/edges). One transition model + → up to 4 placements (0/90/180/270). Drop `raised` from `TERRAINS` → + `TERRAINS=["cobble","canal"]`; raised = `cobble` corner at `Height=1`. +- **Ungroup the terrain tiles:** canal fill, canal-edge (straight/outer/inner), + ramp, retaining-edge (straight/outer/inner) leave `[GROUPS]` and join the paint + pool. Streets/sidewalks/bridges/drains **stay** grouped features. +- **Corner matrix:** generate the full cobble/canal patterns and the full + cobble:0/cobble:1 patterns (via orientation) so the brush never requests a missing + tile. Keep canal and raised in **separate** matrices (a tile is never + canal-corner + raised-corner) to bound the count. +- **`[PRIMARY RULES]`:** skip (stay `Count=0`). Verified not required — `wut01` + paints 6 terrains with `Count=0`. They only polish cascading transitions; add + later if seams need it. +- **`[GENERAL]`:** `HasHeightTransition=1`. +- **`.itp` Terrain folder:** `cobble`, `canal`, + `eraser`. +- **Guard:** a completeness self-check that fails generation if any corner pattern + the brush can request lacks a tile (so an incomplete matrix can't ship a crash). 2. Walk-test → tune PathNodes, crossers, corner terrains; add a tileset TLK if we later want localized palette names (local `NAME` strings suffice for now). 3. **Textures (art pass, separate note).** Source assets live in diff --git a/twu01/concept-art-1.png b/twu01/concept-art-1.png new file mode 100644 index 0000000..b01c607 --- /dev/null +++ b/twu01/concept-art-1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3085c7e4896466426289c4ff47e25d3fbf36f6029bb135ee340f3327f3fd9e19 +size 2728593 diff --git a/wgt01/flake.nix b/twu01/flake.nix similarity index 100% rename from wgt01/flake.nix rename to twu01/flake.nix diff --git a/wgt01/generator/.gitignore b/twu01/generator/.gitignore similarity index 100% rename from wgt01/generator/.gitignore rename to twu01/generator/.gitignore diff --git a/wgt01/generator/build.py b/twu01/generator/build.py similarity index 100% rename from wgt01/generator/build.py rename to twu01/generator/build.py diff --git a/wgt01/generator/export_mdl.py b/twu01/generator/export_mdl.py similarity index 100% rename from wgt01/generator/export_mdl.py rename to twu01/generator/export_mdl.py diff --git a/twu01/generator/make_itp.py b/twu01/generator/make_itp.py new file mode 100644 index 0000000..562c934 --- /dev/null +++ b/twu01/generator/make_itp.py @@ -0,0 +1,87 @@ +"""Generate the tileset palette `twu01palstd.itp` from tiles.py. + + python make_itp.py [out.itp] # default: twu01palstd.itp + +The toolset loads `palstd.itp` when it registers a tileset; without it the +set fails to register (blank name in the New Area wizard, "could not create +area"). It's a GFF `ITP ` file: MAIN = a list of palette *category* folders, each +{ID byte, STRREF (dialog.tlk folder label), LIST of leaves}. + +We emit TWO folders (the verified structure — AGENTS.md §2.3; wut01palstd.itp): + * Features (STRREF 63261): one leaf per NON-paint tile, {NAME, RESREF=tile + resref}. Each leaf is placeable ONLY because make_set.py backs it with a 1x1 + [GROUP#] whose Name == this NAME and Tile0 == that tile; the toolset finds the + group by the RESREF (its first tile). Paint tiles (tiles.is_paint) are omitted + here on purpose — they're brush-laid terrain, not click-placed features. + * Terrain (STRREF 8282): the paintable vocabulary — `cobble` and `canal` (each + RESREF = terrain name) plus the magic `eraser` leaf (RESREF `eraser`, STRREF + 63291, no NAME). `raised` is NOT here: it's a height on cobble (Raise/Lower), + deferred to the next pass with HasHeightTransition=1 + a cobble-height matrix. +Multi-tile groups (folder 63262) would go in a third folder; we have none yet. +Built as JSON and converted to GFF with neverwinter.nim's nwn_gff (on PATH). +""" + +import json +import os +import subprocess +import sys +import tempfile + +import tiles + +STRREF_FEATURES = 63261 # dialog.tlk label for the "Features" palette folder +STRREF_TERRAIN = 8282 # dialog.tlk label for the "Terrain" palette folder +STRREF_ERASER = 63291 # the magic eraser leaf (no NAME) + + +def leaf(name, resref): + return {"__struct_id": 0, + "NAME": {"type": "cexostring", "value": name}, + "RESREF": {"type": "resref", "value": resref}} + + +def eraser_leaf(): + return {"__struct_id": 0, + "RESREF": {"type": "resref", "value": "eraser"}, + "STRREF": {"type": "dword", "value": STRREF_ERASER}} + + +def category(cid, strref, leaves): + return {"__struct_id": 0, + "ID": {"type": "byte", "value": cid}, + "STRREF": {"type": "dword", "value": strref}, + "LIST": {"type": "list", "value": leaves}} + + +def build(): + features = [leaf(tiles.group_name(s), tiles.resref(s)) + for s in tiles.TILES if not tiles.is_paint(s)] + # Paintable terrains = every .set terrain EXCEPT 'raised' (which is a height on + # cobble, not a terrain — the Raise/Lower tool, deferred to the next pass). + paintable = [t for t in tiles.TERRAINS if t != "raised"] # -> cobble, canal + terrain = [leaf(t, t) for t in paintable] + [eraser_leaf()] + return { + "__data_type": "ITP ", + "MAIN": {"type": "list", "value": [ + category(0, STRREF_FEATURES, features), # ID/STRREF mirror wut01palstd.itp + category(2, STRREF_TERRAIN, terrain), + ]}, + } + + +def main(): + out = sys.argv[1] if len(sys.argv) > 1 else f"{tiles.PREFIX}palstd.itp" + with tempfile.NamedTemporaryFile("w", suffix=".json", delete=False) as tf: + json.dump(build(), tf) + js = tf.name + try: + subprocess.run(["nwn_gff", "-i", js, "-l", "json", "-k", "gff", "-o", out], + check=True) + finally: + os.unlink(js) + nfeat = sum(1 for s in tiles.TILES if not tiles.is_paint(s)) + print(f"wrote {out} ({nfeat} features + paint:cobble,canal + eraser)") + + +if __name__ == "__main__": + main() diff --git a/wgt01/generator/make_mdl.py b/twu01/generator/make_mdl.py similarity index 63% rename from wgt01/generator/make_mdl.py rename to twu01/generator/make_mdl.py index 4b3aa4a..f463d0b 100644 --- a/wgt01/generator/make_mdl.py +++ b/twu01/generator/make_mdl.py @@ -14,12 +14,15 @@ Each tile .mdl contains: * the aabb walkmesh node (shared with make_wok, embedded per NWN tile rules). The standalone `.wok` (same walkmesh) is written alongside. -Textures: a solid-colour <=16-char .tga per tiles.TEXTURES (KICKOFF.md: geometry -not art; flat colours double as an in-toolset grammar read-out). Real art can -replace these files later without touching geometry. +Textures: a <=16-char .tga per tiles.TEXTURES. Each is a procedural structural +read-out (distinct role colour + dark border + orientation pip) so geometry reads +in the toolset (KICKOFF.md: geometry not art); SRC_TEX swaps in a real stock tga +where a photographic surface helps (e.g. canal water). Real art can replace any of +these files later without touching geometry. """ import os +import shutil import sys import tiles @@ -27,17 +30,42 @@ import make_wok VIS_MATID = 65536 # constant last-field on visible faces (matches stock tiles) +# Real stock-NWN textures copied verbatim for surfaces where a photographic read +# beats a flat colour (user: "pull cobbles/water from refs"). Everything else is +# the procedural structural read-out below. Missing source -> procedural fallback. +REFS = "/home/vicky/Projects/nwnee-refs" +SRC_TEX = { + "MAT_canal_black_water": f"{REFS}/aurora_tin.bif/tin01_water01.tga", # animated-look water +} + +TEX_N = 64 # texture size (power of 2) +_BORDER = 3 # dark inset ring — makes within-tile paint seams read +_PIP = 9 # bright corner pip — reveals tile ORIENTATION (debug rotations) + def write_tga(path, rgb): - """Minimal 2x2 uncompressed 24-bit TGA in solid `rgb` (0..1 floats).""" + """64x64 24-bit TGA: base `rgb` (0..1), a dark inset border, and a white + corner pip. Not art — a structural read-out: the pip exposes each tile's + orientation (so the paint auto-picker's rotations are visible) and the border + outlines internal texture edges. TGA origin is lower-left (descriptor 0), so + the pip sits at the tile's south-west (x=-5, y=-5) corner.""" r, g, b = (max(0, min(255, round(c * 255))) for c in rgb) - w = h = 2 - header = bytes([0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, - w & 0xFF, w >> 8, h & 0xFF, h >> 8, 24, 0]) - body = bytes([b, g, r]) * (w * h) # TGA stores BGR + dr, dg, db = (v * 35 // 100 for v in (r, g, b)) # 0.35x -> border + n = TEX_N + body = bytearray() + for j in range(n): + for i in range(n): + if i < _PIP and j < _PIP: + body += bytes((255, 255, 255)) # pip + elif i < _BORDER or i >= n - _BORDER or j < _BORDER or j >= n - _BORDER: + body += bytes((db, dg, dr)) # border (BGR) + else: + body += bytes((b, g, r)) # base (BGR) + assert len(body) == n * n * 3 + header = bytes([0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, + n & 0xFF, n >> 8, n & 0xFF, n >> 8, 24, 0]) with open(path, "wb") as fh: - fh.write(header + body) + fh.write(header + bytes(body)) def _trimesh(ref, idx, tex, verts, quads): @@ -128,9 +156,15 @@ def main(): with open(os.path.join(outdir, ref + ".wok"), "w") as fh: fh.write(wok) - # write every texture (not just `used`) so nothing dangles if a tile changes + # write every texture (not just `used`) so nothing dangles if a tile changes; + # copy a real stock tga where SRC_TEX has one, else the procedural read-out. for mat, tex in tiles.TEXTURES.items(): - write_tga(os.path.join(outdir, tex + ".tga"), tiles.COLORS[mat]) + dst = os.path.join(outdir, tex + ".tga") + src = SRC_TEX.get(mat) + if src and os.path.exists(src): + shutil.copyfile(src, dst) + else: + write_tga(dst, tiles.COLORS[mat]) print(f"wrote {len(tiles.TILES)} .mdl + .wok and " f"{len(tiles.TEXTURES)} .tga to {outdir}/") diff --git a/twu01/generator/make_set.py b/twu01/generator/make_set.py new file mode 100644 index 0000000..76db77c --- /dev/null +++ b/twu01/generator/make_set.py @@ -0,0 +1,145 @@ +"""Generate the first-pass NWN tileset definition `twu01.set` from tiles.py. + + python make_set.py [out.set] # default: twu01.set + +Pure Python, no Blender. Emits a valid, DOS/CRLF `.set` (AGENTS.md §4/§9: Unix +line endings crash the toolset). Corners/heights/crossers derive from each tile's +edge grammar; this is a DRAFT to load and hand-tune in the toolset, not a final +set. See CAVEATS below. + +Every NON-paint tile gets a 1x1 [GROUP#] (a "feature") so it is click-placeable +from the palette (AGENTS.md §2.3) — the .itp Features folder points its leaves at +these groups by first-tile resref, and Name must match tiles.group_name(). + +PAINT tiles (tiles.is_paint: cobble fill CP1/2/3, canal fill CN1, canal edges +CE_*) are deliberately NOT grouped: a grouped tile is excluded from the toolset's +terrain-paint pool, so leaving them ungrouped IS what makes cobble/canal +paintable and the eraser work. Grouping every tile empties the fill pool and the +New Area wizard crashes (verified vs stock tcn01, 2026-07-04). Transition tiles +expand into 4 orientations (tiles.placements) so the corner matrix is complete; +make_set.main() hard-fails if tiles.canal_paint_matrix() is missing any pattern. + +CAVEATS (first pass — tune in the toolset): + * PathNode is a placeholder ('A' walkable / 'N' non-walkable). Real pathnode + letters govern creature routing and must be verified against the toolset. + * ImageMap2D references minimaps (twu01_.tga) that are not rendered yet. +""" + +import re +import sys + +import tiles + +PREFIX = tiles.PREFIX + + +def tile_block(i, spec, orient, corners, edges): + tl, tr, bl, br = corners + n, e, s, w = edges + ref = tiles.resref(spec) + walkable = spec["kind"] != "canal" + # Paint tiles connect by CORNER match only (like stock wut01 terrains) — blank + # their edge crossers so the brush isn't over-constrained; features keep theirs. + cr = (lambda edge: "") if tiles.is_paint(spec) else tiles.nwn_crosser + # Field order/values mirror the stock BioWare sets (the toolset's .set reader + # is picky); WalkMesh=msb01 is the universal legacy label, not a file. + L = [f"[TILE{i}]"] + L += [ + f"Model={ref}", + "WalkMesh=msb01", + f"TopLeft={tl[0]}", f"TopLeftHeight={tl[1]}", + f"TopRight={tr[0]}", f"TopRightHeight={tr[1]}", + f"BottomLeft={bl[0]}", f"BottomLeftHeight={bl[1]}", + f"BottomRight={br[0]}", f"BottomRightHeight={br[1]}", + f"Top={cr(n)}", + f"Right={cr(e)}", + f"Bottom={cr(s)}", + f"Left={cr(w)}", + "MainLight1=1", "MainLight2=1", "SourceLight1=1", "SourceLight2=1", + "AnimLoop1=1", "AnimLoop2=1", "AnimLoop3=1", + "Doors=0", + "Sounds=0", + f"PathNode={'A' if walkable else 'N'}", # placeholder — verify in toolset + f"Orientation={orient}", # 0/90/180/270 rotations of one model + "VisibilityNode=A", + "VisibilityOrientation=0", + f"ImageMap2D={ref}", # minimap resref (no .tga yet; blank in toolset) + ] + return L + + +def build(): + L = [] + L += [ + "[GENERAL]", + f"Name={PREFIX}", + "Type=SET", + "Interior=0", + "HasHeightTransition=0", # MVP paints flat cobble only; matches stock + "Transition=1.5", # metres per height step = Z=1.5 raised tier (unused while HHT=0) + "Border=cobble", + "Default=cobble", + "Floor=cobble", + "DisplayName=-1", + "UnlocalizedName=Westgate Urban Foundation", + "Version=V1.0", + "EnvMap=", + "SelectorHeight=3", + "", + "[GRASS]", + "Grass=0", + "GrassTextureName=", + "Density=0.0", + "Height=0.0", + "AmbientRed=0.0", "AmbientGreen=0.0", "AmbientBlue=0.0", + "DiffuseRed=0.0", "DiffuseGreen=0.0", "DiffuseBlue=0.0", + "", + "[TERRAIN TYPES]", + f"Count={len(tiles.TERRAINS)}", + ] + for idx, t in enumerate(tiles.TERRAINS): + L += ["", f"[TERRAIN{idx}]", f"Name={t}", "StrRef=-1"] + L += ["", "[CROSSER TYPES]", f"Count={len(tiles.CROSSERS)}"] + for idx, cr in enumerate(tiles.CROSSERS): + L += ["", f"[CROSSER{idx}]", f"Name={cr}", "StrRef=-1"] + L += ["", "[PRIMARY RULES]", "Count=0", # optional; wut01 paints 6 terrains w/ 0 + "", "[SECONDARY RULES]", "Count=0"] + # Expand each spec into its placement(s): transition tiles emit 4 rotations, so + # one model backs several [TILE#] entries. Track each spec's FIRST tile index so + # its [GROUP#] (if any) points at the right tile. + placed, first_idx = [], {} + for spec in tiles.TILES: + for pl in tiles.placements(spec): + first_idx.setdefault(spec["code"], len(placed)) + placed.append((spec, pl)) + L += ["", "[TILES]", f"Count={len(placed)}"] + for i, (spec, (orient, corners, edges)) in enumerate(placed): + L.append("") + L += tile_block(i, spec, orient, corners, edges) + # One 1x1 group ("feature") per NON-paint tile so the palette can click-place it. + # Paint tiles (fills + terrain transitions) stay ungrouped -> the brush pool. + feats = [s for s in tiles.TILES if not tiles.is_paint(s)] + L += ["", "[GROUPS]", f"Count={len(feats)}"] + for gi, spec in enumerate(feats): + L += ["", f"[GROUP{gi}]", f"Name={tiles.group_name(spec)}", + "Rows=1", "Columns=1", f"Tile0={first_idx[spec['code']]}"] + L += [""] + return L + + +def main(): + _, _cov, missing = tiles.canal_paint_matrix() + if missing: # incomplete matrix = paint crash; never stage + raise SystemExit(f"INCOMPLETE canal paint matrix — {len(missing)} pattern(s) " + f"have no tile: {sorted(missing)}") + out = sys.argv[1] if len(sys.argv) > 1 else f"{PREFIX}.set" + lines = build() + with open(out, "w", newline="") as fh: # newline='' + explicit \r\n = CRLF + fh.write("\r\n".join(lines)) + ntiles = sum(1 for l in lines if re.fullmatch(r"\[TILE\d+\]", l)) + print(f"wrote {out} ({ntiles} tile placements from {len(tiles.TILES)} models, " + f"{len(tiles.TERRAINS)} terrains, {len(tiles.CROSSERS)} crossers, CRLF)") + + +if __name__ == "__main__": + main() diff --git a/wgt01/generator/make_wok.py b/twu01/generator/make_wok.py similarity index 100% rename from wgt01/generator/make_wok.py rename to twu01/generator/make_wok.py diff --git a/twu01/generator/test_namesync.py b/twu01/generator/test_namesync.py new file mode 100644 index 0000000..05af6c9 --- /dev/null +++ b/twu01/generator/test_namesync.py @@ -0,0 +1,82 @@ +"""Guard the invariants that silently break the toolset (AGENTS.md §5, §2.3): + + python test_namesync.py # asserts; no nwn_gff / Blender needed + +1. Every .itp Features leaf is backed by a matching .set [GROUP#] whose first tile + is that leaf's model (Name + Tile0). +2. Paint tiles (fills + terrain transitions) stay OUT of every group/feature, so the + brush pool is non-empty — an empty pool crashes the New Area wizard (the + 2026-07-04 access violation). Regression guard for that crash. +3. The cobble/canal paint matrix covers every corner pattern the brush can request + (an incomplete matrix = paint crash). +4. The .itp Terrain folder exposes exactly the paintable terrains + eraser. +Runs on make_set.build() and make_itp.build() directly, so it fails fast if +group_name / resref / is_paint / placements drift apart. +""" +import re + +import tiles +import make_set +import make_itp + + +def _groups(setf): + return {m.group(1): int(m.group(2)) + for m in re.finditer(r"\[GROUP\d+\]\nName=(.+?)\n(?:.*\n)*?Tile0=(\d+)", setf)} + + +def _tile_models(setf): + return {int(m.group(1)): m.group(2) + for m in re.finditer(r"\[TILE(\d+)\]\nModel=(\S+)", setf)} + + +def _features(): + return [l for c in make_itp.build()["MAIN"]["value"] if c["ID"]["value"] == 0 + for l in c["LIST"]["value"]] + + +def test_features_back_every_group(): + setf = "\n".join(make_set.build()) + groups, models = _groups(setf), _tile_models(setf) + feat = _features() + nonpaint = [s for s in tiles.TILES if not tiles.is_paint(s)] + assert len(feat) == len(groups) == len(nonpaint), \ + f"count mismatch: {len(feat)} features / {len(groups)} groups / {len(nonpaint)} non-paint" + for lf in feat: + name, resref = lf["NAME"]["value"], lf["RESREF"]["value"] + assert name in groups, f".itp feature {name!r} has no matching .set [GROUP#]" + tile0 = groups[name] + assert models[tile0] == resref, \ + f"{name}: group Tile0={tile0} model {models[tile0]!r} != leaf RESREF {resref!r}" + + +def test_paint_tiles_stay_in_brush_pool(): + paint = [s for s in tiles.TILES if tiles.is_paint(s)] + assert paint, "no paint tiles -> empty brush pool -> New Area crash" + grouped = set(_groups("\n".join(make_set.build()))) + featured = {l["NAME"]["value"] for l in _features()} + for s in paint: + gn = tiles.group_name(s) + assert gn not in grouped, f"paint tile {gn!r} is grouped -> dropped from brush pool" + assert gn not in featured, f"paint tile {gn!r} is a feature -> dropped from brush pool" + + +def test_canal_matrix_complete(): + want, _covered, missing = tiles.canal_paint_matrix() + assert not missing, f"paint matrix missing {len(missing)} pattern(s): {sorted(missing)}" + assert want, "empty matrix?" + + +def test_terrain_folder_is_paintables_plus_eraser(): + terr = [l for c in make_itp.build()["MAIN"]["value"] if c["ID"]["value"] == 2 + for l in c["LIST"]["value"]] + names = {l["RESREF"]["value"] for l in terr} + assert names == {"cobble", "canal", "eraser"}, names + + +if __name__ == "__main__": + test_features_back_every_group() + test_paint_tiles_stay_in_brush_pool() + test_canal_matrix_complete() + test_terrain_folder_is_paintables_plus_eraser() + print("namesync OK") diff --git a/wgt01/generator/tiles.py b/twu01/generator/tiles.py similarity index 75% rename from wgt01/generator/tiles.py rename to twu01/generator/tiles.py index b04b0c5..b8e054e 100644 --- a/wgt01/generator/tiles.py +++ b/twu01/generator/tiles.py @@ -15,18 +15,20 @@ HALF = 5.0 Z_RAISED = 1.5 Z_WATER = -0.3 -# --- prototype materials (flat viewport colours; KICKOFF.md wants geometry, not art) +# --- prototype materials. Bright, DISTINCT per role so structure reads at a glance +# in the toolset (KICKOFF.md wants geometry not art; the old near-black palette made +# every tile invisible). Curb/edge is deliberately loud so canal/height edges pop. COLORS = { - "MAT_wet_cobble_dark": (0.05, 0.05, 0.06), - "MAT_cobble_patch": (0.12, 0.10, 0.09), - "MAT_plaza_slab": (0.30, 0.29, 0.27), - "MAT_sidewalk_stone": (0.22, 0.22, 0.23), - "MAT_curb_dark_stone": (0.10, 0.10, 0.11), - "MAT_canal_black_water": (0.02, 0.03, 0.05), - "MAT_void_black": (0.00, 0.00, 0.00), - "MAT_ramp_stone": (0.18, 0.16, 0.14), - "MAT_drain_iron": (0.08, 0.08, 0.09), - "MAT_foundation_pad": (0.25, 0.24, 0.22), + "MAT_wet_cobble_dark": (0.42, 0.42, 0.47), # cobble ground — cool mid grey + "MAT_cobble_patch": (0.50, 0.34, 0.22), # repair patch — brown + "MAT_plaza_slab": (0.74, 0.68, 0.52), # plaza — warm tan + "MAT_sidewalk_stone": (0.64, 0.65, 0.70), # sidewalk — light grey + "MAT_curb_dark_stone": (0.98, 0.55, 0.08), # EDGES/curbs — loud orange (pop) + "MAT_canal_black_water": (0.10, 0.38, 0.80), # canal — strong blue (real tga overrides) + "MAT_void_black": (0.03, 0.03, 0.05), + "MAT_ramp_stone": (0.80, 0.25, 0.68), # ramps/stairs — magenta (height reads) + "MAT_drain_iron": (0.22, 0.24, 0.30), # iron — dark steel + "MAT_foundation_pad": (0.58, 0.54, 0.34), # lots — olive "MAT_debug_walkmesh": (0.00, 0.80, 0.20), "MAT_debug_blocker": (0.80, 0.10, 0.10), } @@ -108,7 +110,15 @@ TILES = [ T("CN2", "narrow_drainage_cut", "cut", (C, F, C, F), "cut"), T("CE_S", "canal_edge_straight", "canal_edge", (F, C, F, F), "canal_edge", which="E"), T("CE_C", "canal_edge_corner", "canal_edge", (F, C, C, F), "canal_edge", which="ES_outer"), - T("CE_I", "canal_edge_inside_corner", "canal_edge", (F, C, C, F), "canal_edge", which="ES_inner"), + # Inside (concave) corner: geometry (ES_inner) is canal in the SE quadrant only, + # i.e. ONE canal corner at BR — the edge tuple would wrongly read as 3, so pin it. + T("CE_I", "canal_edge_inside_corner", "canal_edge", (F, C, C, F), "canal_edge", + which="ES_inner", corners=[("cobble", 0), ("cobble", 0), ("cobble", 0), ("canal", 0)]), + # Diagonal "pinch": canal on TL+BR, land on TR+BL. Edge-derived corners can't + # express a diagonal (see nwn_corners), so this one carries explicit corners. + # Completes the 16-pattern cobble/canal paint matrix (canal_paint_matrix()). + T("CE_D", "canal_edge_diagonal_pinch", "canal_edge", (C, C, C, C), "canal_edge", + which="diag", corners=[("canal", 0), ("cobble", 0), ("cobble", 0), ("canal", 0)]), T("BR_1", "narrow_bridge", "bridge", (F, C, F, C), "bridge", hw=1.5), T("BR_2", "broad_bridge", "bridge", (F, C, F, C), "bridge", hw=3.0), T("SEW", "sewer_mouth_culvert", "canal_edge", (F, F, C, F), "sewer", which="S"), @@ -164,6 +174,7 @@ def _land_fn(which): "S": lambda x, y: y >= 0.0, # canal on south "ES_outer": lambda x, y: (x <= 0.0 and y >= 0.0), # land = NW quadrant only "ES_inner": lambda x, y: not (x > 0.0 and y < 0.0), # land = all but SE quadrant + "diag": lambda x, y: (x >= 0.0 and y >= 0.0) or (x <= 0.0 and y <= 0.0), # land NE+SW }[which] @@ -296,6 +307,9 @@ def wok_quads(spec): if w == "ES_inner": return [(_rect(-5, 0, -5, 5, 0.0), True), (_rect(0, 5, 0, 5, 0.0), True), (_rect(0, 5, -5, 0, 0.0), False)] + if w == "diag": # NE+SW land, NW+SE canal + return [(_rect(0, 5, 0, 5, 0.0), True), (_rect(-5, 0, -5, 0, 0.0), True), + (_rect(-5, 0, 0, 5, 0.0), False), (_rect(0, 5, -5, 0, 0.0), False)] if k == "bridge": hw = spec.get("hw", 1.5) return [(_rect(-hw, hw, -5, 5, 0.2), True), @@ -341,6 +355,79 @@ def resref(spec): return f"{PREFIX}_{spec['code'].lower()}" # <=16 chars, valid identifier +def group_name(spec): + """Palette label for a tile — MUST be identical in the .itp leaf NAME and the + .set [GROUP#] Name (name-sync gotcha, AGENTS.md §5). e.g. '[flat] cobble_plain'.""" + return f"[{spec['kind']}] {spec['name']}" + + +# --- paint pool vs palette features (AGENTS.md §2.3) -------------------------- +# A tile in ANY [GROUP#] is excluded from the toolset's terrain-paint pool. So the +# tiles the brush auto-lays (fills + terrain transitions) must stay UNGROUPED; only +# click-place prefabs get grouped. Grouping *every* tile empties the fill pool -> +# the New Area wizard null-derefs ("Access violation ... Write of 00000040"). +GROUND_CODES = {"CP1", "CP2", "CP3"} # cobble fill pool (Default/Floor) +CANAL_PAINT_CODES = {"CN1", "CE_S", "CE_C", "CE_I", "CE_D"} # canal fill + edge transitions +PAINT_CODES = GROUND_CODES | CANAL_PAINT_CODES # ungrouped, brush-laid terrain +TRANSITION_CODES = {"CE_S", "CE_C", "CE_I", "CE_D"} # emit all 4 rotations (matrix) + + +def is_ground(spec): + return spec["code"] in GROUND_CODES + + +def is_paint(spec): + """True = ungrouped terrain tile the brush auto-picks (never a click-place feature).""" + return spec["code"] in PAINT_CODES + + +def is_transition(spec): + return spec["code"] in TRANSITION_CODES + + +def _rot_corners(c): # one CCW 90° step: (TL,TR,BL,BR) -> (TR,BR,TL,BL) + return (c[1], c[3], c[0], c[2]) + + +def _rot_edges(e): # one CCW 90° step: (N,E,S,W) -> (E,S,W,N) + return (e[1], e[2], e[3], e[0]) + + +def base_corners(spec): + """(TL,TR,BL,BR) each (terrain, height) — explicit override or edge-derived.""" + if "corners" in spec: + return tuple(tuple(c) for c in spec["corners"]) + c = nwn_corners(spec["edges"]) + return (c["TopLeft"], c["TopRight"], c["BottomLeft"], c["BottomRight"]) + + +def placements(spec): + """[(orient_deg, corners4, edges4)] backing this tile's [TILE#] entries. A + transition tile emits each DISTINCT rotation (one model covers the whole + rotation class via Orientation — the engine rotates model+walkmesh together), + so the paint matrix is complete without extra models. Others place upright.""" + c, e = base_corners(spec), tuple(spec["edges"]) + if not is_transition(spec): + return [(0, c, e)] + seen, out = set(), [] + for k in range(4): + if c not in seen: + seen.add(c) + out.append((k * 90, c, e)) + c, e = _rot_corners(c), _rot_edges(e) + return out + + +def canal_paint_matrix(): + """(want, covered, missing) sets of 4-corner cobble/canal patterns. `missing` + non-empty = a pattern the brush can request has no tile -> paint/New-Area crash. + The generator hard-fails on this, so an incomplete matrix can never stage.""" + opts = [("cobble", 0), ("canal", 0)] + want = {(tl, tr, bl, br) for tl in opts for tr in opts for bl in opts for br in opts} + have = {c for s in TILES if is_paint(s) for _o, c, _e in placements(s)} + return want, have & want, want - have + + def _terr(e): return {"RAISED": "raised", "CANAL": "canal"}.get(e, "cobble") diff --git a/wgt01/DESIGN.md b/wgt01/DESIGN.md new file mode 100644 index 0000000..5a8b6f3 --- /dev/null +++ b/wgt01/DESIGN.md @@ -0,0 +1,15 @@ +DESIGN CONSTRAINTS + +- Do not model buildings. +- Do not model full walls except retaining/canal/bridge support walls needed by terrain. +- Do not model roofs. +- Do not model decorative clutter except minimal drains/grates required to communicate tile purpose. +- Avoid tiny details. +- Prioritize edge alignment, walkability, and builder usefulness. +- Keep polygon counts low. +- Keep all tile edges snap-clean. +- Avoid overhangs at tile boundaries. +- Avoid geometry extending beyond -5/+5 bounds unless it is an explicitly marked harmless visual trim. +- Use bevels sparingly. +- Prefer clean simple geometry over visual polish. +- Use material slots consistently so final textures can replace prototype materials later. diff --git a/wgt01/VIBE.md b/wgt01/VIBE.md new file mode 100644 index 0000000..b3805eb --- /dev/null +++ b/wgt01/VIBE.md @@ -0,0 +1 @@ +Westgate’s intended atmosphere is noir dark fantasy: rain-slick streets, mercantile decay, old stone, smoke, fog, gothic silhouettes, and grimy desperation. The city also has an early industrial-magical layer: steam, alchemy, bound elementals, lightning engines, magical lamps, printing presses, and machinery beneath the gutters. For this pass, represent that only through ground grammar: drains, grates, canal cuts, raised streets, bridge foundations, dark cobbles, and industrial service channels. Do not make buildings. diff --git a/wgt01/concept-art-2.png b/wgt01/concept-art-2.png new file mode 100644 index 0000000..541f63c --- /dev/null +++ b/wgt01/concept-art-2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4665309e501431d66ec5278ab8d6db7f8df2ed1862c2da2276c2fb646c812ff7 +size 3001999 diff --git a/wgt01/generator/make_itp.py b/wgt01/generator/make_itp.py deleted file mode 100644 index eccc172..0000000 --- a/wgt01/generator/make_itp.py +++ /dev/null @@ -1,64 +0,0 @@ -"""Generate the tileset palette `twu01palstd.itp` from tiles.py. - - python make_itp.py [out.itp] # default: twu01palstd.itp - -The toolset loads `palstd.itp` when it registers a tileset; without it the -set fails to register (blank name in the New Area wizard, "could not create -area"). Every stock/custom set on disk ships one. It's a GFF `ITP ` file: a MAIN -list of palette categories, each a struct with an ID byte and a LIST of -{RESREF, STRREF} tile entries. - -We emit one flat category listing all 40 tile model resrefs. Each entry carries -a local NAME cexostring (NOT a STRREF) — this is what stock/custom sets without a -tileset TLK do (verified against wut01palstd.itp). Entries with neither NAME nor -a valid STRREF render blank AND non-selectable in the toolset palette. Built as -JSON and converted to GFF with neverwinter.nim's nwn_gff (must be on PATH). -""" - -import json -import os -import subprocess -import sys -import tempfile - -import tiles - -NO_STRREF = 0xFFFFFFFF # category folder: no dialog.tlk name (cosmetic, blank folder) - - -def tile_label(s): - """Readable palette name, e.g. '[flat] cobble_plain'.""" - return f"[{s['kind']}] {s['name']}" - - -def build(): - entries = [{"__struct_id": 0, - "NAME": {"type": "cexostring", "value": tile_label(s)}, - "RESREF": {"type": "resref", "value": tiles.resref(s)}} - for s in tiles.TILES] - return { - "__data_type": "ITP ", - "MAIN": {"type": "list", "value": [ - {"__struct_id": 0, - "ID": {"type": "byte", "value": 0}, - "STRREF": {"type": "dword", "value": NO_STRREF}, - "LIST": {"type": "list", "value": entries}}, - ]}, - } - - -def main(): - out = sys.argv[1] if len(sys.argv) > 1 else f"{tiles.PREFIX}palstd.itp" - with tempfile.NamedTemporaryFile("w", suffix=".json", delete=False) as tf: - json.dump(build(), tf) - js = tf.name - try: - subprocess.run(["nwn_gff", "-i", js, "-l", "json", "-k", "gff", "-o", out], - check=True) - finally: - os.unlink(js) - print(f"wrote {out} ({len(tiles.TILES)} tile palette entries)") - - -if __name__ == "__main__": - main() diff --git a/wgt01/generator/make_set.py b/wgt01/generator/make_set.py deleted file mode 100644 index fe39c1c..0000000 --- a/wgt01/generator/make_set.py +++ /dev/null @@ -1,110 +0,0 @@ -"""Generate the first-pass NWN tileset definition `twu01.set` from tiles.py. - - python make_set.py [out.set] # default: twu01.set - -Pure Python, no Blender. Emits a valid, DOS/CRLF `.set` (AGENTS.md §4/§9: Unix -line endings crash the toolset). Corners/heights/crossers derive from each tile's -edge grammar; this is a DRAFT to load and hand-tune in the toolset, not a final -set. See CAVEATS below. - -CAVEATS (first pass — tune in the toolset): - * PathNode is a placeholder ('A' walkable / 'N' non-walkable). Real pathnode - letters govern creature routing and must be verified against the toolset. - * ImageMap2D references minimaps (twu01_.tga) that are not rendered yet. - * Groups/features Count=0; add multi-tile groups later. -""" - -import sys - -import tiles - -PREFIX = tiles.PREFIX - - -def tile_block(i, spec): - cor = tiles.nwn_corners(spec["edges"]) - n, e, s, w = spec["edges"] - tl, tr, bl, br = cor["TopLeft"], cor["TopRight"], cor["BottomLeft"], cor["BottomRight"] - ref = tiles.resref(spec) - walkable = spec["kind"] != "canal" - # Field order/values mirror the stock BioWare sets (the toolset's .set reader - # is picky); WalkMesh=msb01 is the universal legacy label, not a file. - L = [f"[TILE{i}]"] - L += [ - f"Model={ref}", - "WalkMesh=msb01", - f"TopLeft={tl[0]}", f"TopLeftHeight={tl[1]}", - f"TopRight={tr[0]}", f"TopRightHeight={tr[1]}", - f"BottomLeft={bl[0]}", f"BottomLeftHeight={bl[1]}", - f"BottomRight={br[0]}", f"BottomRightHeight={br[1]}", - f"Top={tiles.nwn_crosser(n)}", - f"Right={tiles.nwn_crosser(e)}", - f"Bottom={tiles.nwn_crosser(s)}", - f"Left={tiles.nwn_crosser(w)}", - "MainLight1=1", "MainLight2=1", "SourceLight1=1", "SourceLight2=1", - "AnimLoop1=1", "AnimLoop2=1", "AnimLoop3=1", - "Doors=0", - "Sounds=0", - f"PathNode={'A' if walkable else 'N'}", # placeholder — verify in toolset - "Orientation=0", - "VisibilityNode=A", - "VisibilityOrientation=0", - f"ImageMap2D={ref}", # minimap resref (no .tga yet; blank in toolset) - ] - return L - - -def build(): - L = [] - L += [ - "[GENERAL]", - f"Name={PREFIX}", - "Type=SET", - "Interior=0", - "HasHeightTransition=1", - "Transition=1.5", # metres per height step = Z=1.5 raised tier - "Border=cobble", - "Default=cobble", - "Floor=cobble", - "DisplayName=-1", - "UnlocalizedName=Westgate Urban Foundation", - "Version=V1.0", - "EnvMap=", - "SelectorHeight=3", - "", - "[GRASS]", - "Grass=0", - "GrassTextureName=", - "Density=0.0", - "Height=0.0", - "AmbientRed=0.0", "AmbientGreen=0.0", "AmbientBlue=0.0", - "DiffuseRed=0.0", "DiffuseGreen=0.0", "DiffuseBlue=0.0", - "", - "[TERRAIN TYPES]", - f"Count={len(tiles.TERRAINS)}", - ] - for idx, t in enumerate(tiles.TERRAINS): - L += ["", f"[TERRAIN{idx}]", f"Name={t}", "StrRef=-1"] - L += ["", "[CROSSER TYPES]", f"Count={len(tiles.CROSSERS)}"] - for idx, cr in enumerate(tiles.CROSSERS): - L += ["", f"[CROSSER{idx}]", f"Name={cr}", "StrRef=-1"] - L += ["", "[PRIMARY RULES]", "Count=0", - "", "[SECONDARY RULES]", "Count=0", - "", "[TILES]", f"Count={len(tiles.TILES)}"] - for i, spec in enumerate(tiles.TILES): - L.append("") - L += tile_block(i, spec) - L += ["", "[GROUPS]", "Count=0", ""] - return L - - -def main(): - out = sys.argv[1] if len(sys.argv) > 1 else f"{PREFIX}.set" - with open(out, "w", newline="") as fh: # newline='' + explicit \r\n = CRLF - fh.write("\r\n".join(build())) - print(f"wrote {out} ({len(tiles.TILES)} tiles, " - f"{len(tiles.TERRAINS)} terrains, {len(tiles.CROSSERS)} crossers, CRLF)") - - -if __name__ == "__main__": - main() diff --git a/wgt01/wgt01.blend1 b/wgt01/wgt01.blend1 new file mode 100644 index 0000000000000000000000000000000000000000..3be46744cf985be2f51bdfa353d62a9932a6d5b5 GIT binary patch literal 1221460 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%0DJUsCLNpW>ItS9rtjw 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 I|M~a-0HYJ`3jhEB literal 0 HcmV?d00001