Jhandi Munda + Kauda: 3D asset contract
Jhandi Munda: six-symbol die, brass dice cup and a betting mat with the six symbols (Paan, Hukum, Itta, Chidi, Munda, Jhandi). Kauda: a cowrie shell (use 16) and a round throwing mat.
The game code positions every prop from these numbers (also in shared/props.lua). Change sizes, origins, names or face mappings only together with the scripts in blender/ and a re-export.
| Asset | Name (model + file) | Size | Origin | Notes |
|---|---|---|---|---|
| Die | lumo_jhandi_die | 25 mm cube, rounded | centre of the cube | 1 heart +Y, 2 spade −Y, 3 diamond +X, 4 club −X, 5 crown +Z, 6 flag −Z. Embedded. |
| Cup | lumo_jhandi_cup | Ø 105 mm × 92 mm, mouth up | centre of the bottom | Turned over 180° about X it covers the dice: place it at z = mat top + 0.092. Embedded. |
| Betting mat | lumo_jhandi_mat | 0.60 × 0.40 × 0.003 m | centre of the bottom | Face lumo_jhandi_mat_face covers the top, UV 0..1. In lumo_jhandi_mat.ytd (not embedded, for a DUI). Panels: far row heart, spade, diamond; near (−Y) row club, crown, flag. |
| Shell | lumo_kauda_shell | 22 × 15 × 8 mm, long axis X | centre | Back (dome) +Z, mouth −Z. Mouth up = turned 180° about X. Rests at z = mat top + 0.004 either way. Embedded. |
| Kauda mat | lumo_kauda_mat | Ø 0.50 m × 0.003 m | centre of the bottom | Face lumo_kauda_mat_face, in lumo_kauda_mat.ytd. Plain throwing circle r 0.135 m inside a lotus ring. |
| Ytyp | lumo_jhandimunda.ytyp | — | — | One archetype per model |
Panel centres: x = (c − 1) × 0.185, y = (r − 0.5) × 0.17 (panel 0.17 × 0.155). Everything is in shared/props.lua. No collisions (all small/flat).
Face textures: UV v up = +Y in Blender; Sollumz flips V on export, so in game v = 0.5 − y / size (v = 0 is the +Y edge) and the PNG's top row is the +Y edge.
Rebuild
Needs Blender 5.2 LTS, Sollumz 2.9 and texconv.exe (Microsoft DirectXTex) on PATH or in %USERPROFILE%\.local\bin (the lumo-ludo pipeline).
- Only if the art changed:
python blender/make_textures.py(Python 3 + Pillow + numpy). - Blender → Scripting → Text → Open
blender/build_all.py→ Run Script (orblender --background --python blender/build_all.py). It empties the open scene, rebuilds every prop, exports tostream/and savesblender/lumo_jhandimunda.blend. - Never hand-edit the files in
stream/; change the scripts and run again.
Blender MCP prompt: "Run blender/build_all.py in Blender with __file__ set to its path, show me the report and the files it wrote, then screenshot the props in Material Preview."