Digital Garden
The Shadow Cards Flesh Chronicle: Twenty-Four Cards, a HUD Layout War, and the Awakening of Build Feel
With the skeleton raised, art set, and feel smooth, the game still needs flesh — and one clear-eyed diagnosis from the player.
I. Content expansion: from 16 to 24
Eight new cards all reuse existing effect types, zero new logic: common (0 wins) combo / deep cut / shield up; uncommon (1-win unlock) recover / blood courage / view the ancients / execute; epic (3 wins) ember shield; two new relics (sigil runestone gives the enemy 2 weak stacks at battle start, stone scale 6 shields on the first turn) each with a 128 icon; two new events (saint ashes heal 40% life, the vigil pure relic drop — an add_relic effect type and test added to the event system for this). The reward pool expands with unlocks to 8 cards at 0 wins / 20 at 1 win / 22 at 3 wins. Ten new assets generated via ComfyUI, six carrying AI pseudo-text (execute and guard_up clean) deep-cropped one by one, with manifest and license registered in step. Tests 92/92, full-run simulation 7 wins 1 loss — the difficulty curve still healthy.
II. The HUD layout war: three rounds of “you are so sloppy”
The HP bar was the first domino. One line from the user — “HP is not obvious enough, and has no texture” — and the default gray bar became a themed bar: 22px→30px, dark base with light-purple outline, three-tier coloring (healthy steel blue → danger ember orange → critical blood red), with the number enlarged and color-synced. The user then advised: “would putting the enemy HP bar overhead be better? Should my HP bar be green? What color do you suggest for the enemy?” — the plan was settled on the spot: player moss green (desaturated, not glaring; the globally intuitive “healthy”), enemy dark crimson fixed (brightening when critical, instantly distinguishing “who is who” against the player green), Boss void purple. After the enemy bar moved overhead, the scolding came immediately: “the HP covers the enemy’s face” — the info bar moved entirely above the portrait (the portrait shifted down, the face starting at y≈175, 70 px clear of the info bar). The player status bar relocated three times: floating text in the bottom-left “feels uncomfortable” → given the same translucent HUD backing (visually becoming one component) → up to left-center → up again to clear the hand-card lift zone (y 224-356) → the detail panel flipping left would cover it, so z_index raised to 150 to stay on top. The user finally boxed the relic panel: “move it to the right” — and so the HUD is symmetric: left-center player status, right-center relic panel. Each round of occupancy was computed on the spot (28 px / 180 px / 100 px+ clearances), and each scolding honestly booked (“for this kind of layout change I will check against the actual composition before submitting from now on”). The engineering side also fixed a process hole: verify.sh did not count script errors in smoke runs (Godot exit code 0, error lines grepped but not counted as failures) — after strictification, the EnemyTopShade missing-unique-name error surfaced on the spot.
III. The awakening of build feel
The real turning point was one diagnosis from the user: “the cards seem to always be the same few, and the combos are boring; the playability is actually pretty weak, or is that optimized later?” The craftsman did not defend but gave a pathology report: a numerical structure problem — the initial deck is fixed at 10 cards and a run adds only 4, so 10 of 14 are initial cards; whatever reward you draw gets diluted, and the deck never feels “shaped by you”; missing build levers — no card removal (weak cards stay in the deck forever), no growth status (attack builds have no sense of accumulation), no archetype keywords (nothing rewards “playing many low-cost cards” or “playing many attack cards”). The prescription is a trio: a card-removal option in the reward screen (half a day), a strength mechanic (each stack +1 to all attack damage, lasting the whole run, with charge / rage / break-the-cauldrons cards plus one relic), a combo mechanic (a this-turn cards-played counter; combo cards scale by cards already played this turn, rewarding the “low-cost setup → high-cost payoff” rhythm). Together the three form the minimal closed loop of “build feel”: removal shapes the deck, strength feeds attack builds, combo feeds rhythm builds. The roadmap was rewritten from here — before playtest acceptance, make the combos interesting first.
Real coordinates
- Content expansion: +8 cards (combo / deep cut / shield up = common; recover / blood courage / view the ancients / execute = uncommon 1-win; ember shield = epic 3-win) +2 relics (sigil runestone / stone scale) +2 events (saint ashes / the vigil, with a new add_relic effect type and test); reward pool 8 cards at 0 wins / 20 at 1 win / 22 at 3 wins; 10 new assets, 6 with AI pseudo-text deep-cropped; 92/92; full-run simulation 7 wins 1 loss
- HUD layout war: HP bar 30 px three-tier coloring (player moss green / enemy dark crimson fixed / Boss void purple); enemy bar from below the portrait → overhead → above the portrait (after the face-covering accident); player status bar bottom-left → HUD backing → left-center y 224-356 (clearing the hand-card lift zone by 180 px+, z_index 150 on top when the detail flips left); relic panel to right-center, symmetric with the left (known trade-off: hovering a left card flips the detail right, briefly covering the relics)
- Engineering: verify.sh strictified (any error in smoke output fails the whole thing); the EnemyTopShade missing-unique-name error caught by the strictified smoke; the tscn nested-path parent relative-to-scene-root pitfall
- Build-feel diagnosis: initial deck 10/14 dilution + three absences (no card removal / no growth status / no archetype keywords); the trio prescription (removal option / strength mechanic / combo mechanic); roadmap rewritten to builds before acceptance
Comments