Claimed floors back to fitted flagstones in the masters' colours with damage; high-res floor decals

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-07 22:11:41 +01:00
1 parent 362f4e7670
commit ca8494aea0
51 files changed
+154 -39

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
# Floor decals (high-res)
Wear and tear the game lays over some plain floor tiles (`D_RUBBLE`, `D_CRACK`; `HD_DECALS` in
`src/gfx.rs`). Generated on 2026-11-07 with `fal-ai/nano-banana-pro` (`aspect_ratio: 1:1`,
`resolution: 1K`), the decal's sentence followed by the shared text:
```text
Seen straight from above (orthographic top-down, no perspective), flat even lighting, no cast shadows. Hand-painted pixel art style for a dark-fantasy dungeon game, crisp edges, readable at small size. The background is a completely flat pure magenta (#FF00FF) everywhere else - no floor, no stones, no texture behind it, no frame, no text.
```
## rubble
```text
An overlay decal for a dungeon floor: a loose scatter of small grey-brown pebbles, stone fragments and a little grit and dust, spread unevenly over the whole square image, denser in one corner, about thirty small pieces of different sizes, each with a dark outline.
```
## crack
```text
An overlay decal for a dungeon floor: one long dark jagged crack running diagonally across the whole square image from corner to corner, with a few short branching side cracks and two or three tiny chipped splinters beside it; only the dark crack lines themselves.
```
## Processing
`tools/make_decal.py` keys out the magenta and scales down with hard alpha; the crack is made
neutral grey (its lines took on the magenta):
```bash
python3 tools/make_decal.py rubble-raw.png rubble --size 128 # and --size 64
python3 tools/make_decal.py crack-raw.png crack --size 128 --gray
```
Copied to `assets/textures/decal-<name>.png` (64) and `decal-<name>-128.png`.
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 902 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 836 KiB

+21 -27
View File
@@ -1,47 +1,41 @@
# The masters' claimed floors (high-res)
Generated on 2026-11-07 with fal.ai. The same grey, worn-smooth castle flagstones for every
master; every tile has a polished inlay in the master's colour with a light engraving of their
own, so ownership shows on every tile (`HD_FLOORS` in `src/gfx.rs`).
Generated on 2026-11-07 with fal.ai, close to the first claimed texture (`../claimed-raw.png`,
`../claimed-128.png`): fitted flagstones of different sizes with faint carved symbols, in the
master's colour, now with cracked, chipped and broken stones (`HD_SETS` in `src/gfx.rs`).
Earlier versions: `v1/` (regular coloured slabs with thick grout, too even), `v2/` (roughly hewn
stones fully in the master's colour, too glaring).
Earlier versions: `v1/` (regular coloured slabs with thick grout), `v2/` (roughly hewn stones
fully in the master's colour, too glaring), `v3/` (grey stones with a coloured inlay).
1. The player's sheet: `fal-ai/nano-banana-pro`, `aspect_ratio: 3:2`, `resolution: 2K`; six tiles
in a 3x2 grid on magenta, the prompt below with the player's inlay and engraving.
2. The other masters: `fal-ai/nano-banana-pro/edit` with the player's sheet as the reference, so
the grey stones stay exactly the same and only the inlays change.
Prompt for the player's sheet (`{inlay}`, `{engraving}` below):
1. The player: `fal-ai/nano-banana-pro/edit` on `../claimed-raw.png` (`aspect_ratio: 1:1`,
`resolution: 1K`) adds the damage:
```text
A texture sheet of six square floor tiles for a dark-fantasy dungeon strategy game, arranged in a grid of 3 columns and 2 rows, the tiles separated by thin flat pure magenta (#FF00FF) gaps, magenta also around the outside. Every tile is seen straight from above (orthographic top-down, no perspective), flat even lighting, no shadows, no vignette, and fills its square completely. Every tile is a piece of the floor of an old medieval castle dungeon: irregular, roughly hewn flagstones of neutral medium-grey stone (muted, desaturated, not glaring) of different sizes and shapes, laid with uneven dark-grey mortar joints - not a regular grid. Centuries of feet have worn the stones smooth: soft sheen, rounded worn edges, shallow dips. The joints along the four edges of every tile are as thin and irregular as the ones inside, so the tiles fit together in any arrangement without a visible grid. In the middle of every tile one polished inlay is set into the floor: a small rounded diamond-shaped inset of {inlay}, about a quarter of the tile wide, framed by a thin dark rim, with a light shallow engraving in it: {engraving}. The six tiles differ only in the grey stones around the inlay: tile 1 plain worn stones; tile 2 plain stones of other sizes; tile 3 with hairline cracks in the grey stones; tile 4 with a chipped grey stone corner and missing splinters; tile 5 with a broken grey flagstone beside the inlay, cracked through, a piece sunk and loose rubble; tile 6 with a few small scratches. Style: hand-painted pixel art, crisp edges, readable at small size. No text, no labels, no numbers.
Keep this seamless tileable floor texture exactly as it is - the same fitted dark crimson flagstones of different sizes, the same thin dark joints, the faint carved runes, the same top-down view, colours and style - and only add some wear and damage spread evenly over the whole image: about eight stones with hairline cracks, four stones with chipped corners, and two broken stones cracked through with a few small loose splinters. Keep the texture seamless across all four edges. No text.
```
Edit prompt for the others:
2. The others: `fal-ai/nano-banana-pro/edit` on the player's result, so the stones stay the same:
```text
Keep this image exactly the same - the same grey stones, mortar joints, cracks, damage, layout, magenta gaps and pixel art style - and change only the six small diamond-shaped inlays in the middle of the tiles: make them {inlay}, with a light shallow engraving of {engraving} in every inlay instead of the skull and runes. Do not change anything else.
Keep this seamless tileable floor texture exactly the same - the same flagstone layout, joints, cracks, chipped and broken stones, top-down view and style - and change only the colour of the stones to {colour}, and the faint carved symbols on some stones to {symbols}. Keep it seamless across all four edges. No text.
```
| master | inlay | engraving |
| master | colour | symbols |
|---|---|---|
| player | deep crimson-red polished stone | a small horned demon skull and demonic rune marks |
| mossgrim | mossy green polished stone | a small mushroom with spores and a coiling mould tendril |
| nightwell | deep blue polished stone with a silver rim | a small lily under a crescent moon |
| saffrax | golden-yellow polished stone with a brass rim | a small alchemical sun sigil |
| player | dark crimson (as the reference) | faint carved demonic runes (as the reference) |
| mossgrim | a dark mossy green with a little moss in some joints | faint carved mushrooms and spirals of mould |
| nightwell | a dark cold midnight blue | faint carved lilies and crescent moons |
| saffrax | a dark ochre brown-yellow | faint carved alchemical sun and sulphur sigils |
## Processing
Tiles 1, 3, 4, 5, 6 are used (plain, cracked, chipped, broken, scratched; tile 2 nearly repeats
tile 1), weighted 4:2:2:1:3 in the game. `tools/make_floor_tiles.py` crops the tiles, fills
magenta inside them with a dark void, cuts a thin edge off, evens out the light and scales;
the colours are kept (a palette would let the large grey areas swallow the inlays' colours):
Five tiles that fit in any order (one shared seamless border, different middles), brightened
(the reference was too dark):
```bash
python3 tools/make_floor_tiles.py <name>-raw.png <name> --grid 2x3 --pick 1,3,4,5,6 --size 128 --colors 0 --inset 0.03 --flatten
# the same with --size 64
python3 tools/make_tile.py <name>-raw.png <name> --size 256 --colors 48 --band 28 --variants 5 --bright 1.6 # 128x128
python3 tools/make_tile.py <name>-raw.png <name> --size 128 --colors 32 --band 14 --variants 5 --bright 1.6 # 64x64
```
`<name>-64.png` / `<name>-128.png` are copied to `assets/textures/floor-<name>.png` /
`floor-<name>-128.png`; `<name>-128-preview.png` shows a floor laid out at random.
`<name>-v64.png` / `<name>-v128.png` are copied to `assets/textures/floor-<name>.png` /
`floor-<name>-128.png`.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 MiB

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB