Commit Graph
4 Commits
Author SHA1 Message Date
wuwiandClaude Opus 5 525f017636 Park the brute — and name what its next attempt has to change
The agreed single pass did not land: br_w1 installed, br_serve and br_fall were
refused by the palette gate at 12 to 22 away from z_br1, and everything drawn
from them was correctly skipped rather than built on sand.

'br' comes out of ZFAMS. The art stays on disk and the nine batches stay in the
JSON, so re-registering it later is one line — this is parked, not deleted, and
nothing in the game referenced it (no opponent row names it).

THE FINDING WORTH KEEPING, written at the top of _master.py: the brute's PLAY
sheet is a good brute; its serve and fall sheets are each a slightly DIFFERENT
brute. All three restyle from the master independently, so each invents the
character afresh from the words, and "pale grey-green work shirt" lands
somewhere new every time. The gate is not being fussy — it is measuring three
different zombies.

The fix is to hand the later sheets BOTH references: the master frame for the
POSE and the variant's own first sheet for the CHARACTER, instead of the words
for the character. Which is the lesson the wound stages already taught — a
reference beats a description — applied one level up. Until that lands, a
variant is reliable for its play sheet and a gamble for the other two.

The racket zombie is untouched and complete: 33 frames, every gate green, and
it is the opponent the match actually plays.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 13:52:33 +02:00
wuwiandClaude Opus 5 0e92c72457 ONE palette gate replaces four feature-picked ones
Oliver, on the brute's fall frames: "now the fall zombie has a different skin
tone.. man this is all so tiresome." Both halves were right. The skin IS twenty
points lighter across that sheet, and the tiresome part is mine: I had been
adding one hand-picked gate per drift I discovered — redness, then hue, then
`changed`, then no-grids — which is a loop with no end, because naming features
is not the same as comparing pictures.

`kit` names four: shirt redness, shorts brightness, shorts hue, near-white
fraction. Every character breaks a different one. The brute's shirt has no red
in it at all, so its reference redness was 0 and blood scored 70-100 against a
tolerance meant for a garment. A body face down shows a fraction of the shirt it
shows standing, so two of the four move with POSE. And nothing in that list ever
measured SKIN, which is exactly how a brute's flesh drifted across a whole sheet
with six gates green.

The palette gate asks the only question that generalises: are the big colour
areas of this frame the same colours as the anchor's? Top SIX by area — the
garments and the skin. Proportions ignored, so a pose change is invisible; blood
is never in the top six, so a fresh wound cannot look like drift.

CALIBRATED BEFORE IT WAS WIRED IN, which is the discipline I skipped all day.
Frames known to be right score 0.0-8.5; the drifts we could actually see score
12.0-15.9. The threshold is 10, in the gap. Three formulations were measured and
the two that overlapped were thrown away.

And every sheet of a variant is now anchored to that variant's FIRST sheet, not
to the stage above it. Chaining let a legal hop compound into a drift nobody
authorised — the shorts walking -9 to -19 down the wound ladder was that, and so
was this.

Its first verdict on the existing brute: br_play is the character, and every
other sheet sits 15 to 48 away from it. It would have caught all of this on the
first roll.

Also in: the GRID guard from the same session — the valley-cut rescue would slice
a 2x2 sheet into four frames of a torso above someone else's boots, turning a
loud failure into a silent one. Asked per cut PIECE, because a body is vertically
continuous and a piece with a gap in it caught two of them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 13:45:41 +02:00
wuwiandClaude Opus 5 4bec0cb09c --variant now emits the whole ladder: nine batches, thirty-one frames
A variant used to stop at the healthy eleven, which is enough for a gore-mode
shambler and not enough for a MATCH opponent — that mode scores you on the
BODY, so an opponent with no wounded art would go from untouched to dead with
nothing in between.

  <key>_play / _serve / _fall       restyled off the master        11 frames
  <key>_w1  / _serve_w1 / _fall_w1  arm off, drawn from healthy    10 frames
  <key>_w2  / _serve_w2 / _fall_w2  headless, drawn from arm off   10 frames

Each stage is a restyle of THE STAGE ABOVE IT, in that order, because that
chaining is what finally made damage accumulate this morning: the missing arm
rides in the picture instead of having to win an argument with it. The helper
prints the batches in dependency order for exactly that reason.

Every gate the racket zombie's ladder needed is declared automatically — the
stride pair on both the healthy shuffle and each wound row, `changed` at 0.10
for an arm and 0.15 for a head (the generator will happily redraw the reference
and skip the amputation), and the pose-tolerant kit bounds with the shorts hue
kept tight, since hue is the measure that survives a pose change.

The wound rows carry three frames, not four: the shuffle doubles as the stance,
which is how drawZombie already reads them.

And the one-armed serve is generated, not hand-waved — the missing arm IS the
tossing arm, so the stump goes up and the racket hand flicks the ball off the
face, the way one-armed players actually serve.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 12:56:53 +02:00
wuwiandClaude Opus 5 7056945e62 THE MASTER SHEETS: a new zombie is now three calls and no pose design
Oliver asked what the reference sheet is called. It did not have a name — it
was assembled per batch into /tmp and thrown away, so the pose set that took a
day to get right existed only as 33 loose PNGs.

  assets/_sheet_master_play.png    stance, shuffle A, shuffle B, forehand
  assets/_sheet_master_serve.png   bounce, toss, strike
  assets/_sheet_master_fall.png    buckle, knees, down, rise

Magenta-backed, spaced, feet on one ground line — loadable straight into a
generator as-is. `python3 assets/_master.py` rebuilds them from the installed
frames, so the master can never drift from what the game actually draws.

THREE SHEETS AND NOT ONE, for a measured reason: the generator answers at a
fixed width around 1400-1800 px. Four figures across gives each 350-440 px,
which carries the 90-110 px of figure height the style block asks for. All
eleven on one strip would be ~130 px each and the detail gate would reject
every roll. Four, four and three is what fits.

And the thing the master is FOR:

  python3 assets/_master.py --variant br "an ENORMOUS FAT ZOMBIE BRUTE: …"
  python3 assets/_regen.py br_play br_serve br_fall --tries=4

which writes three restyle batches, seeds their placeholders and declares the
stride pair so the gate covers the new body from its first roll. A variant is
three generator calls and NO POSE DESIGN AT ALL — the reference specifies
eleven poses that already work and the prompt only says who to draw. Measured
on the brute test: the restyled stride pair came back at upper 0.148 / legs
0.618 against the master's own 0.157 / 0.565, very slightly better than what it
copied.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-12 12:52:24 +02:00