From 1253537737a53185c6ea35dac01243a70c1c0193 Mon Sep 17 00:00:00 2001 From: Oliver Rieger Date: Fri, 31 Jul 2026 21:48:20 +0200 Subject: [PATCH] Write the art-resolution lesson into the handoff The prompt is what sets how fine the drawing is, and this session set it wrong for eleven sheets before Oliver named it. That, plus what _regen.py and _fine.py are for and the checks that stop a bad sheet reaching the repo. Co-Authored-By: Claude Opus 5 --- HANDOFF.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/HANDOFF.md b/HANDOFF.md index c36141e..79fca04 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -364,6 +364,27 @@ Clear the intro first: `document.getElementById('intro')?.remove()`. ORIGINAL lowercase name, which is why it is easy to miss. Boss frames are `z_boss*` now. Use all-lowercase, whole-word names. +9. **The prompt sets the ART RESOLUTION, and it is easy to set it wrong.** Sheets asked for "big + chunky pixel blocks about 8 screen pixels across" and "flat blocks of colour, no shading" came + back coarse — the generator obeys that literally, and Oliver reads it instantly as "waaaay lower + resolution than z_mach2". Ask instead for HIGH resolution: *"build each figure out of roughly 90 + to 110 pixels of height instead of the reference's 40"*, then enumerate what to spend it on — + teeth, sunken eyes, individual fingers, seams, hems, folds, frayed edges, laced shoes, four or + five shades per material with hatched shading. `assets/_regen.py` carries the working style block. +10. **`assets/_regen.py` + `_regen_batches.json` redraw a whole character end to end**: reference + sheet from the sprites in the repo -> generate -> `_fine.py` -> colour-match onto what it + replaces -> install, with three automatic retries. It REFUSES to install a bad sheet: wrong frame + count, any figure touching a canvas edge (that is the bug that clipped z_f1), or a redraw that is + not at least 1.25x finer by inner-edge density. `--list` shows the batches, `--all` runs them. +11. **`assets/_fine.py` is the slicer for detailed art.** `_slice.py` resamples NEAREST, which is + right for chunky art and shreds fine art at a non-integer ratio. `_fine.py` snaps to the + generator's own art-pixel grid, common-scales in ART pixels off a chosen `--anchor` frame (so a + smash with the arm overhead stays legitimately taller), quantises back to the sheet's palette, and + de-fringes the key colour twice — the generator does not always return a pure magenta and the halo + survives as a rim on a green court. +12. **Two-row "style reference / redraw this" input does NOT work.** The model returns both rows and + invents a background. Describe the target detail level in words instead. + Known generator quirks, all still true: - It sometimes ignores the magenta (harmless — the key uses the corner colour). - It draws near-identical animation frames unless you describe strongly contrasted poses.