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>
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>
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>