Digital Garden
The Shadow Cards Art Chronicle: A ComfyUI Accident, Three Fallen Warriors, and Four Detail-Panel Overturns
The first lesson of Stage D is not drawing but setting direction; the second is not generation but rules.
I. Four directions and one accident
The art direction was not a snap decision: first a four-direction vector mockup comparison board (dark cartoon / pixel art / thick-paint fantasy / flat vector, each with enemy mini-icons, card layouts, palettes, and production assessments), recommending dark cartoon — the only option with no obvious weakness across the five constraints of cost, consistency, card readability, AI controllability, and platform fit. When the user asked “can you download ComfyUI,” it was found that the 2.6 GB ComfyUI-aki-v3.7z on the F: drive was just an archive — extracting it with direct-overwrite mode, while the formal installation was already in the target directory. The accident chain: .app_path zeroed (the launcher Path.GetFullPath("") throwing directly and crashing), ComfyUI code overwritten by the April version, and two launch residues. The craftsman stopped work and apologized, assessed the wounds read-only, and gave the fix (type ComfyUI in Notepad), making clear that all models were intact (the 102 GB checkpoints/loras/vae timestamps unchanged, confirmed item by item). The user’s verdict set new rules: zero changes to ComfyUI, only self-built workflows submitted via API, must ask before starting (VRAM pressure causes crashes), outputs sorted into F:\ai game.
II. The API-era image generation pipeline
Under the rules, a clean pipeline ran through: confirm ComfyUI online (user-started) → submit the self-built txt2img workflow (CheckpointLoaderSimple→positive/negative prompts→KSampler→VAEDecode, with illustriousStrange_v10 the preferred base model, 768×1152 for the 8 GB VRAM) → outputs land in ComfyUI’s own output (not touched, not deleted) → copy one to the project and register in ASSET_LICENSES.md (status “direction sample, commercial license unconfirmed, not for direct use in the release”). Three Fallen Warrior samples succeeded at once, with good character consistency (horned helm, dark purple armor, ember-orange glow patterns stable across seeds). The user added “best with a bit of that Dark Souls flavor” — the Boss portrait “Abyss Watcher” answered: the same horned helm and greatsword but vaster and decayed, with the same ember orange in the cracks, the dark mirror of the protagonist. The four relic icons were a small drama: blind pairing from history caused icon misalignment (changed to precise matching by prompt keywords), the marble bag twice generated off-topic as a person (the third attempt switched to “marble body + strong negative words” to get it right), and burning blood passed on “heart-shaped flask + flame + red liquid.” The title screen followed: the main menu left side the Fallen Warrior portrait darkened into the background.
III. The hand-interaction rebuild: four real bugs caught in a row
Stage D’s feel layer was a bug marathon, each with a name. Same-name cards all lifting: hover tracked by card_id (a string), so all three “Strike” cards matched — changed to tracking by button index. Log BBCode running naked: the root cause interesting — Godot 4.7 removed BBCode support from Label entirely (ClassDB has no bbcode_enabled at all; that line in the scene had been silently ignored) — switched to RichTextLabel. Cards flying from the first slot: same root as hover, using card_id to reverse-lookup button position always found the first — the click signal now passes in the clicked button itself. The detail panel overturning three times: first animation lag (panel instant update, 90 ms lift tween; killing old tweens and speeding to 50 ms); then z_index 0 covered by the hand cards (raised to 100); then the anchor preset number disaster — in Godot anchors_preset=2 is “bottom right,” not “top right” (top-left=0, top-right=1, bottom-right=2), the panel pushed 600 px off-screen, only cured by explicitly writing all four anchors; finally the smart flip per user request (hovering a left card shows the detail right, a right card shows it left, flipping past screen center). The detail panel was also scolded awake from “magnified original art” into a true full card view: cost round badge colored by type, name banner, 330 px art, keyword-colored effect text (damage red / shield blue / energy gold / status purple), trigger timing annotations, and italic flavor text at the bottom — all 16 cards got Dark Souls flavor copy (“The plainest of strikes. The sound of the sword edge breaking wind is the language the undead know best.”). The zero-energy feedback was also fixed hearthstone-style: cards no longer disabled, dimmed but clickable; clicking an unaffordable card → shake + red “Not enough energy” floating text + reject sound (ffmpeg synthesized) — two rounds of fixes, because the first batch replacement never took effect (verification only checked compilation, not behavior; honestly recorded as a mistake).
Real coordinates
- Art direction: four-direction vector mockup comparison board (dark cartoon recommended / pixel / thick-paint / flat); style_board.html saved
- ComfyUI accident: 7z overwrite-mode extraction into an existing formal installation directory → .app_path zeroed (Path.GetFullPath("") crash), code overwritten by the April version, launch residues; models 102 GB intact (timestamps confirmed item by item); fix = write ComfyUI into .app_path, launcher re-downloadable; new rules = zero changes + API submission + ask before starting + outputs sorted into ai game
- Image pipeline: illustriousStrange_v10 preferred base model, 768×1152 (8 GB VRAM contingency), 3 seed variants; CLIP connected to the wrong output port (0 should be 1) once; Boss Abyss Watcher 72 HP two-phase; 4 relic icons (marble bag right on the third try, history blind pairing misalignment fixed by prompt matching); title screen portrait darkened
- Hand-interaction four bugs: same-name cards all lifting (card_id → button index), Label BBCode removed by Godot 4.7 (→ RichTextLabel), wrong card-flight start point (passing the clicked button), detail panel anchor preset 2=bottom-right (all four anchors explicitly written) + smart flip + full card view (badge / banner / art / keyword coloring / flavor text on 16 cards) + not-enough-energy triple feedback (shake / red text / reject sound)
- Honestly recorded: one batch replacement never took effect (verification only checked compilation, not behavior); the precedent of falsely green tests (Stage B bool system) again caught a real failure
Comments