wgt01: tileset build guide + 40-tile generator kit

AGENTS.md: NWN:EE tileset construction reference (constraints, .mdl/.wok
walkmesh rules, .set format, Blender->NWN pipeline, prototype->NWN mapping).

wgt01/: Westgate Urban Foundation MVP kit.
- generator/tiles.py: single source of truth (40-tile table, materials,
  12x12 test map, pure paint/height/walkmesh/.set derivations).
- generator/build.py: Blender 4.0.2 scene generator (VIS_/WOK_/BLOCK_ per
  tile, edge metadata, library grid + 12x12 district previews).
- generator/make_wok.py: ASCII walkmesh emitter (verts+faces+surfacemat+AABB
  tree) from the same geometry.
- generator/make_set.py: first-pass twu01.set (CRLF) from the tile grammar.
- flake.nix: build/wok/set apps + dev shell (pinned Blender 4.0.2, NWN tools).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-04 16:55:43 +02:00
co-authored by Claude Opus 4.8
commit 60af184be5
10 changed files with 1636 additions and 0 deletions
+400
View File
@@ -0,0 +1,400 @@
You are assisting inside Blender to rapidly prototype a Neverwinter Nights: Enhanced Edition urban foundation tileset for the project “Shadows Over Westgate.”
The goal is NOT to build a full city tileset with buildings. The goal is to generate a reusable tile library of streets, sidewalks, plazas, alleys, ramps, bridges, canals/voids, drains, raised terraces, and foundation pads. Buildings, facades, lamps, signs, roofs, walls, doors, clutter, and district decoration will be modular placeables later.
Westgates 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.
PROJECT GOAL
Create a Blender scene containing a prototype tile library named:
Westgate_Urban_Foundation_MVP
Each tile must be a 10m x 10m square module suitable for later NWN tileset conversion.
Use metric scale.
Coordinate convention:
- Each individual tile is centered at origin when built as a source asset.
- Tile bounds are X = -5 to +5, Y = -5 to +5.
- Ground level is Z = 0.
- Raised tier level is Z = 1.5.
- Canal/void water surface, if present, is Z = -0.3.
- Do not create true multi-level playable over/under spaces. Bridges may cross non-walkable canal/void areas only.
- Keep walkable slopes gentle and readable.
- Keep edges clean and snap-compatible.
Create each tile as its own Collection. Name collections exactly with their code and readable name, for example:
CP1_cobble_plain
ST_S_straight_street
RA_S_straight_ramp
Inside each tile collection, create these sub-objects where appropriate:
VIS_<tilecode> visual geometry
WOK_<tilecode> simple walkmesh proxy geometry
BLOCK_<tilecode> non-walkable blocker proxy geometry, if needed
MARK_<tilecode>_* edge/debug markers, if useful
The WOK proxy should be simple and functional: mostly flat planes or simple ramp planes. Avoid complex triangulation unless necessary.
Use simple prototype materials:
- MAT_wet_cobble_dark
- MAT_cobble_patch
- MAT_plaza_slab
- MAT_sidewalk_stone
- MAT_curb_dark_stone
- MAT_canal_black_water
- MAT_void_black
- MAT_ramp_stone
- MAT_drain_iron
- MAT_foundation_pad
- MAT_debug_walkmesh
- MAT_debug_blocker
Do not spend time on final textures. Use flat colors or simple procedural noise only. This is a geometry and tile-grammar prototype.
REQUIRED TILE LIBRARY
Generate these tiles first.
FLAT WALKABLE GROUND
1. CP1_cobble_plain
- Full 10x10 walkable dark cobble.
- Subtle bevel or edge trim allowed.
- WOK full square at Z=0.
2. CP2_cobble_plain_wet_variant
- Same as CP1 but with darker wet material patches.
- Geometry can be the same with different material regions.
3. CP3_cobble_plain_broken_variant
- Same as CP1 but with a few shallow cracked/patch shapes.
- Keep WOK flat.
4. AL1_narrow_alley_paving
- Full tile walkable, but visual paving suggests a narrower central alley.
- Add darker side strips/foundation margins where modular building placeables might sit.
- Do not place buildings.
5. PL1_plaza_slab
- Full tile walkable large stone slab plaza.
- Less busy than cobble.
6. DR1_drain_detail
- Full tile walkable cobble with a central or offset iron drain/manhole/grate.
- Drain is visual only unless it is a tiny non-walkable inset.
7. MU1_muddy_repair_patch
- Full tile walkable cobble with broken/muddy repair patch.
- Keep WOK flat.
8. LOT_foundation_pad
- A quiet, flat urban foundation pad for placing modular buildings or large placeables.
- Mostly plain stone, minimal decoration.
- Full WOK square.
STREET SHAPES
9. ST_S_straight_street
- Straight street path running north-south through the tile.
- Sidewalk/curb margins on east and west sides.
- Entire tile can remain walkable for flexibility, but VIS should clearly read as street + curb + sidewalk.
- WOK full square unless blockers are necessary.
10. ST_C_street_corner
- L-shaped street corner.
- Sidewalk/curb margins.
- Use visual contrast, not blockers, unless necessary.
11. ST_T_street_t_junction
- T-junction street.
12. ST_X_street_crossroads
- Four-way street crossing.
13. ST_E_street_end
- Dead-end street with a visual blocked/terminated paving edge.
- Do not add a wall or building; just create the ground condition.
14. ST_W_wide_boulevard
- Wider street segment, usable for civic or merchant districts.
- Include broad sidewalks.
15. ST_G_gate_mouth
- Street tile that visually suggests a gate approach or major threshold.
- No gate model. Just heavier paving, curb geometry, and alignment pads.
16. ST_D_street_with_central_drain
- Straight street with central gutter/drain channel.
- Channel should be shallow and walkable or visually recessed without pathing problems.
SIDEWALK / CURB / GUTTER
17. SW_S_sidewalk_straight
- Raised sidewalk/promromenade strip along one or both sides.
- Use low curb height, around Z=0.12 to 0.18.
- Keep WOK simple.
18. SW_C_sidewalk_corner
- Corner curb/sidewalk condition.
19. SW_T_sidewalk_t_split
- Sidewalk T connector.
20. SW_X_sidewalk_crossing
- Sidewalk/plaza connector or crossing tile.
21. SW_E_sidewalk_end
- Sidewalk ending/transition tile.
22. GD_S_gutter_straight
- Straight shallow gutter/drain channel.
23. GD_C_gutter_corner
- Gutter corner.
24. GD_X_gutter_crossing_grate
- Drain crossing with visible grate.
RAISED TIERS / RAMPS / STAIRS
25. UP1_raised_terrace
- Full tile raised walkable surface at Z=1.5.
- WOK full square at Z=1.5.
26. UP2_raised_plaza_variant
- Raised plaza/slab variant at Z=1.5.
27. TE_S_retaining_edge_straight
- Half or edge tile where one side is raised terrace at Z=1.5 and the lower side is at Z=0.
- Include vertical retaining wall face.
- The top and bottom walkable areas should be clear.
- Do not create inaccessible slivers.
28. TE_C_retaining_edge_outer_corner
- Raised/lower retaining corner.
29. TE_I_retaining_edge_inner_corner
- Raised/lower retaining inside corner.
30. RA_S_straight_ramp
- Straight ramp from Z=0 to Z=1.5 across the tile.
- Ramp direction north-south.
- Add simple side retaining edges.
- WOK should be a clean ramp plane.
31. RA_C_corner_or_dogleg_ramp
- A corner/dogleg ramp from lower to upper.
- Keep it simple and pathable.
32. STA_broad_stair
- Broad stair from Z=0 to Z=1.5.
- Since NWN pathing can be sensitive, create a simplified ramp-like WOK proxy over the visible stairs.
- Visual stairs may be stepped; WOK should be smooth or very simple.
CANAL / VOID / BRIDGES
33. CN1_canal_black_water
- Non-walkable canal/black water/void tile.
- Visual water at Z=-0.3.
- WOK absent or marked non-walkable.
- Add stone canal edge only if it does not imply mismatched adjacency.
34. CN2_narrow_drainage_cut
- Narrow non-walkable drainage cut through the tile.
- Include stone/cobble edges.
35. CE_S_canal_edge_straight
- Straight canal embankment edge.
- One side walkable at Z=0, one side canal/void non-walkable.
- Add clean retaining wall face.
36. CE_C_canal_edge_corner
- Canal edge corner.
37. CE_I_canal_edge_inside_corner
- Canal inside corner.
38. BR_1_narrow_bridge
- Narrow bridge crossing canal/void.
- Walkable bridge deck at Z=0 or slightly above Z=0.
- Non-walkable canal beneath.
- No playable underpass.
- Add simple side parapet placeholders if useful, but keep them low/blocker-safe.
39. BR_2_broad_bridge
- Broad bridge suitable for a main street.
- Same constraints as BR_1.
40. SEW_sewer_mouth_culvert
- Canal/drain edge with sewer mouth or culvert visual.
- Mostly decorative, but useful for noir city composition.
BUILDER GROUP / PREVIEW ASSEMBLIES
After generating source tile collections, create a separate Collection:
PREVIEW_tile_library_grid
In this collection, instantiate or duplicate each tile in a neat grid with labels so I can inspect the full library.
Also create another Collection:
PREVIEW_12x12_test_district
Build this exact 12x12 prototype map using the generated tiles. Place each tile on a 10m grid. Each tile should be positioned by row/column, 10m apart.
Map:
Row 01:
CN1 CN1 CE_S CE_S BR_2 CE_S CE_S CN1 CN1 CN1 CN1 CN1
Row 02:
CN1 CE_C SW_S ST_S ST_S ST_S SW_S CE_C CN1 CN1 CN1 CN1
Row 03:
CE_S SW_S ST_C ST_S ST_T ST_S ST_C SW_S CE_S CE_S BR_1 CE_S
Row 04:
SW_S AL1 AL1 CP1 PL1 PL1 CP1 AL1 AL1 SW_S ST_S SW_S
Row 05:
SW_S AL1 LOT CP2 PL1 PL1 CP2 LOT AL1 SW_S ST_S SW_S
Row 06:
ST_S ST_S ST_T ST_S ST_X ST_S ST_T ST_S ST_S ST_C ST_S SW_S
Row 07:
SW_S AL1 LOT CP1 ST_S ST_S CP1 LOT AL1 SW_S CP2 SW_S
Row 08:
SW_S AL1 AL1 CP1 PL1 PL1 CP1 AL1 AL1 SW_S CP2 SW_S
Row 09:
CE_S SW_S ST_C ST_S ST_T ST_S ST_C SW_S CE_S TE_S TE_C SW_S
Row 10:
CN1 CE_C SW_S CP1 RA_S UP1 UP1 TE_S TE_S UP1 RA_S SW_S
Row 11:
CN1 CN1 CE_S CE_S BR_2 CE_S CE_S CN1 CE_S SW_S ST_S SW_S
Row 12:
CN1 CN1 CN1 CN1 CN1 CN1 CN1 CN1 CN1 SW_S ST_E SW_S
Use tile names matching the generated collection names. If exact variants are not available yet, use the closest equivalent and note the substitution.
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.
EDGE COMPATIBILITY
Think of each tile edge as one of these edge types:
FLAT walkable ground at Z=0
RAISED walkable ground at Z=1.5
CANAL non-walkable canal/void
RAMP ramp transition edge
MIXED special edge, document it
For each tile, create a custom property or add a Text object note listing its north/east/south/west edge types.
Example:
ST_S_straight_street
N: FLAT
E: FLAT
S: FLAT
W: FLAT
RA_S_straight_ramp
N: RAISED
E: FLAT
S: FLAT
W: FLAT
CE_S_canal_edge_straight
N: FLAT
E: CANAL
S: FLAT
W: FLAT
Add these notes in a scene text block called:
TILE_EDGE_METADATA
OUTPUT EXPECTATIONS
At the end:
1. Save the Blender file as:
westgate_urban_foundation_mvp.blend
2. Report:
- number of tile collections created;
- any tiles skipped;
- any substitutions made;
- any geometry/pathing concerns;
- next recommended pass.
3. Do not spend time making final art.
4. Do not get stuck on perfect NWN export.
5. The deliverable is a rapid, inspectable Blender prototype of the tile library and a test district.