122 lines
5.1 KiB
Markdown
122 lines
5.1 KiB
Markdown
# Side Cards — art direction
|
||
|
||
The approved visual reference is the J/Q/K of Hearts family in `concepts/`.
|
||
Court figures are final raster illustrations generated locally with Draw Things;
|
||
they are not hand-traced. `tools/build_deck.py` embeds each illustration inside
|
||
a standalone SVG and adds dependable card geometry.
|
||
|
||
## Look
|
||
|
||
- Original Anglo-American court-card illustration
|
||
- Crisp flat fills with strong black keylines
|
||
- Traditional two-way composition
|
||
- Ornate garments without photorealistic lighting or 3D rendering
|
||
- Restrained red, black, gold, muted-blue and warm-skin palette
|
||
- No generated rank letters, typography, logos or watermarks
|
||
|
||
Approximate palette sampled from the approved family:
|
||
|
||
| Role | Colour |
|
||
|---|---|
|
||
| Stock | `#fcfcfa` |
|
||
| Keyline | `#0e0d0d` |
|
||
| Red | `#a21b1e` |
|
||
| Gold | `#b99a34` |
|
||
| Muted blue | `#354c58` |
|
||
| Skin | `#f0d2b6` |
|
||
|
||
These values guide generation; the raster art is not mechanically recoloured.
|
||
|
||
## Court family
|
||
|
||
| Rank | Figure | Prop |
|
||
|---|---|---|
|
||
| Jack | young knave, shoulder-length hair | upright halberd |
|
||
| Queen | crowned queen | stylized flower |
|
||
| King | mature bearded king, crowned | upright sword |
|
||
|
||
Diamonds emphasize angular red-and-gold ornament. Clubs and Spades emphasize
|
||
black and muted blue with red-and-gold accents. All twelve should feel related,
|
||
but they do not need identical faces or frames.
|
||
|
||
## Deterministic card elements
|
||
|
||
`tools/build_deck.py`, not the image model, owns:
|
||
|
||
- corner rank indices
|
||
- suit marks and number-card pip layouts
|
||
- one continuous inner court frame
|
||
- final 5:7 card geometry
|
||
- the outer card edge
|
||
|
||
The outer card and artwork clip use a 24-unit circular radius on the 500 x 700
|
||
viewBox, equivalent to approximately 3.05 mm on a 63.5 x 88.9 mm poker card.
|
||
The two-unit inset outline uses radius 22 so its curve remains concentric. The
|
||
gallery expresses the same circular curve as `4.8% / 3.4286%`; a single CSS
|
||
percentage would create an elliptical radius on a 5:7 element.
|
||
|
||
Rank indices use Roboto Slab SemiBold, converted to SVG outlines during the
|
||
build without synthetic horizontal distortion. This provides large, clear slab
|
||
forms without depending on an installed font. Roboto Slab is distributed under
|
||
Apache License 2.0; the local license copy is
|
||
`assets/fonts/RobotoSlab-Apache-2.0.txt`.
|
||
|
||
Rank outlines share a font baseline at y=85 and are sized from cap height,
|
||
rather than top-aligned or fitted around descenders. This lets Q retain its
|
||
natural tail and weight without a synthetic outline. Single ranks have a
|
||
63-unit width allowance so the naturally wide A/K reach full cap height; the
|
||
two-character `10` has 76 units so it also remains comparable.
|
||
|
||
Mini suits remain centred at y=127 and are optically scaled by silhouette
|
||
(S 0.78, H 0.71, D 0.92, C 0.78), rather than being forced to one geometric
|
||
scale. Their rendered footprints—not equal ink density—are checked as a group
|
||
during the deck audit so dense marks are not made visually undersized.
|
||
|
||
The Heart is a purpose-drawn, classic silhouette with a pronounced cleft,
|
||
distinct lobes, a near-square proportion, and a long sharp point. Number-card
|
||
field pips are likewise optically balanced by suit (S 1.50, H 1.28, D 1.75,
|
||
C 1.43).
|
||
Ace and court marks have their own role-specific optical scales so each Ace
|
||
carries comparable ink and the fuller Heart does not crowd a court figure.
|
||
|
||
The Club follows the familiar traditional card form rather than an equilateral
|
||
trefoil: equal lower lobes sit wider and lower than the top lobe, a smaller
|
||
central boss joins the three, and a short flared stem finishes the mark. Its
|
||
required symmetry is bilateral, not three-fold rotational symmetry.
|
||
|
||
Generated suit pips are replaced with the correct SVG suit mark. Generated
|
||
frame segments are locally inpainted out while the figure is extracted, then
|
||
one continuous SVG frame is drawn behind the figure. The approved upper figure
|
||
is rotated exactly 180 degrees for the lower end, with a symmetric blended join
|
||
through the centre.
|
||
|
||
The assembly step also normalizes the generated figure envelope around the
|
||
card centre using uniform scaling only: K♣/K♦ use 0.95 and K♥/K♠ use 0.97.
|
||
Jacks and Queens remain at native scale. The resulting painted areas stay
|
||
within roughly five percent without distorting faces or garments. Club and
|
||
Spade field emblems receive a five-pixel optical shift away from the figure;
|
||
their mirrored lower marks are derived from the same coordinates.
|
||
|
||
## Generation settings
|
||
|
||
- Model: `qwen_image_2512_bf16_i8x.ckpt`
|
||
- Working size: 640×896
|
||
- Sampler: DPMPP2MTrailing
|
||
- Steps: 30
|
||
- Guidance: 4.0
|
||
- img2img strength: 0.68
|
||
|
||
The corresponding Heart card is the composition/style reference for every
|
||
non-Heart court. Run `tools/render_court.py --remaining` to create missing
|
||
renders without overwriting existing ones.
|
||
|
||
## Output sizes
|
||
|
||
No smallest production size has been chosen. The SVG cards scale freely; court
|
||
illustrations remain 640×896 raster artwork inside them. If a future use needs
|
||
large-format print, upscale or regenerate the courts for that real requirement.
|
||
Do not build alternate thumbnail art until the game actually needs it.
|
||
|
||
`masters/queen-hearts.svg` is an archived hand-vector experiment and is not
|
||
part of the current deck pipeline.
|