Chess + Checkers: 3D asset contract
Walnut 8×8 board with a–h / 1–8 border, a boxwood/ebony Staunton set (12 models) and checkers (2 models). Checkers uses the same board.
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 |
|---|---|---|---|---|
| Board | lumo_chess_board | 0.48 × 0.48 × 0.023 m, face at z = 0.020 | centre of the bottom | Face lumo_chess_face covers the central 0.46 m (8 × 50 mm squares + 30 mm border), UV 0..1. Textures in lumo_chess_board.ytd (not embedded). a1 dark, bottom-left on white's (−Y) side. Box collision. |
| Pieces | lumo_chess_<white|black>_<pawn|rook|knight|bishop|queen|king> | pawn 42 mm … king 76 mm tall, bases Ø 27–34 mm | centre of the base, z = 0 bottom | Knight faces +Y (turn black's 180°). Embedded textures. No collision. |
| Checkers | lumo_chess_checker_white, _black | Ø 38 mm × 9 mm | centre of the bottom | King = two stacked (second at z + 0.009). |
| Ytyp | lumo_chess.ytyp | — | — | One archetype per model |
Square (c, r): c = file 0..7 along +X, r = rank 0..7 along +Y; offset x = (c − 3.5) × 0.05, y = (r − 3.5) × 0.05. ChessProps.piece(colour, kind) and ChessProps.squareOffset(c, r) in shared/props.lua.
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_chess.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."