Skip to content

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.

AssetName (model + file)SizeOriginNotes
Dielumo_jhandi_die25 mm cube, roundedcentre of the cube1 heart +Y, 2 spade −Y, 3 diamond +X, 4 club −X, 5 crown +Z, 6 flag −Z. Embedded.
Cuplumo_jhandi_cupØ 105 mm × 92 mm, mouth upcentre of the bottomTurned over 180° about X it covers the dice: place it at z = mat top + 0.092. Embedded.
Betting matlumo_jhandi_mat0.60 × 0.40 × 0.003 mcentre of the bottomFace 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.
Shelllumo_kauda_shell22 × 15 × 8 mm, long axis XcentreBack (dome) +Z, mouth −Z. Mouth up = turned 180° about X. Rests at z = mat top + 0.004 either way. Embedded.
Kauda matlumo_kauda_matØ 0.50 m × 0.003 mcentre of the bottomFace lumo_kauda_mat_face, in lumo_kauda_mat.ytd. Plain throwing circle r 0.135 m inside a lotus ring.
Ytyplumo_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).

  1. Only if the art changed: python blender/make_textures.py (Python 3 + Pillow + numpy).
  2. Blender → Scripting → Text → Open blender/build_all.py → Run Script (or blender --background --python blender/build_all.py). It empties the open scene, rebuilds every prop, exports to stream/ and saves blender/lumo_jhandimunda.blend.
  3. 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."