Bakelite Parlour Test

Melder · Direction A test · SDXL vs gpt-image-2

Bakelite
Parlour Test

I built the recommended direction for real: procedural bakelite tiles, a walnut rack, a felt surface instead of a painted room, printed board-game UI chrome — then generated the same eight icons twice, through two different models, with identical post-processing.

red 7 tile blue 8 tile amber 9 tile black 13 tile wild tile tile back
01 · The board at ante 3

Same screen, two icon sets

Tiles, rack and felt are procedural — drawn in code, identical in both frames. Only the eight bench icons differ. That isolates the variable: which model can actually hold a mid-century screenprint style across a set?

A · SDXL 1.0 iconslocal · 832px · 34 steps · 6-seed reroll
Lucky
Charm
Run
Streak
House
Cup
The
Spectrum
Match
book
Ancient
Rune
Spirit
Spirit
73
Tiles
7
Draw
MELDER 0.1.0 · BAKELITE PARLOUR · ICONS: SDXL 1.0
B · gpt-image-2 iconsapi · 1024px · quality medium
Lucky
Charm
Run
Streak
House
Cup
The
Spectrum
Match
book
Ancient
Rune
Spirit
Spirit
73
Tiles
7
Draw
MELDER 0.1.0 · BAKELITE PARLOUR · ICONS: GPT-IMAGE-2
02 · The icon set

Eight subjects, one prompt each

Both arms got the same subject list and the same style brief — Charley Harper / Alexander Girard flat geometry, four inks, thick keyline, single object, plain ground. Both went through the same post.py: background key, trim, pad, snap to the seven-ink palette, 1px red-plate misregistration, print grain.

A · SDXL 1.08 icons · free · ~90 s
lighter
lighter
egg timer
egg timer
cup
cup
rubber bands
rubber bands
matchbook
matchbook
watch
watch
eye
eye
bag
bag
B · gpt-image-28 icons · ~$0.34 · ~6 min
lighter
lighter
egg timer
egg timer
cup
cup
rubber bands
rubber bands
matchbook
matchbook
watch
watch
eye
eye
bag
bag
03 · Verdict

What the test settled

gpt-image-2 wins this one outright, and it is not close. Eight subjects, one attempt each, no rerolls: eight usable icons with a consistent keyline weight, a consistent palette, a consistent optical size, and a clean alpha every time. SDXL needed six seeds per job and still produced a grid of pocket watches, a repeating pattern instead of a bag, and several renders whose background never keyed out — the square board-coloured tiles in row A are failed keys, not design choices.

Where SDXL still earns its keep

It is free and it is fast — the whole eight-icon arm cost nothing and ran in about ninety seconds against roughly six minutes and $0.34 for the API arm. For bulk exploration, silhouette hunting, or backgrounds and textures where isolation doesn't matter, it is the right tool.

It is the set consistency that defeats it. Melder needs 194 icons that look like one hand drew them; base SDXL has no memory between calls.

The gate that lied

My reroll harness scored coverage plus largest-connected-blob. A render whose background never keys out scores blob = 1.00 — a perfect score for a total failure. Any production run needs a third gate: border transparency must exceed ~0.85, which the existing Clean/assetgen driver already implements. I'd port that over before trusting any automated batch.

The tiles are the real result

Tiles, rack and felt are proceduraltiles.py, about 200 lines of PIL. No model, no rerolls, no palette drift, and all 52 tiles regenerate in under a second. The bakelite body (tone ramp, warm centre glow, satin bevel, cast mottle, contact shadow) is the single highest-value asset in Direction A and it never needed AI at all.

The colour chip at the foot is a deliberate compromise: real Rummikub tiles carry only a coloured numeral, but a chip keeps the suit readable when 30 tiles are on the board.

What the mock proves about the direction

Two things carry over regardless of which model you use. Replacing the painted room with a felt surface immediately makes the tiles the brightest objects on screen. And drawing the buttons and panels as printed board-game furniture — flat ink, thick keyline, hard offset shadow — removes the web-app chrome that was breaking the old screen.

  1. Adopt gpt-image-2 as the icon generator for the 194-icon library. At quality medium that is roughly $8 for a full regeneration pass — a rounding error against the time cost of babysitting SDXL rerolls.
  2. Keep SDXL local for surfaces and exploration — felt variants, wood, wallpaper, and cheap silhouette hunting before committing an API call.
  3. Port the border-transparency gate from Clean/assetgen/melder_assetgen.py into post.py so a failed key can never pass as a good asset.
  4. Lock the style brief as a constant. The gpt-image-2 arm held style across eight very different subjects from one paragraph — that paragraph is now the house style, and it belongs in the manifest, not in per-asset prompts.
  5. Decide the tile question: colour chip (readable) or numeral only (authentic). It is a one-line change in tiles.py and it is the only open question I could not answer for you.