Both players run from a video, and the middle chip finally plays you
Six sessions of asking an image model for a row of running figures, and it
never once drew a gait: three phases repeated with the same leg leading,
"ropeskipping, not running". A frame-by-frame LEFT/RIGHT skeleton spec, a
closing checklist, a loop clause, six figures instead of eight — all lost.
One 5-second image-to-video clip has no such problem, because it moves a
body instead of drawing poses. ~$0.42 a character through the key already in
.env, pose pinned at BOTH ends (pinned only at the front, she rotated into
profile halfway), stride period MEASURED off the frames rather than sampled
by eye — hers repeats in 6 clip frames, his in 23 — and the phases cut and
palette-snapped through _stride.cut. assets/_vidroll.py films and cuts it;
her first frame came from one still roll that took his approved pose as a
picture instead of a paragraph.
Wired: runN probes the sheet through SK() so the women's tour counts HER
frames, the player is no longer clamped to a two-frame pair, runHz 2.4 ->
1.9 ("this looks like roadrunner"), and the bench grew two PLAYER stops —
a cycle only ever seen mid-rally is a cycle nobody has watched.
Also in: the difficulty retune (medium is a real step above the shipped CPU
and is where `smart` first appears; hard stepped back off superhuman; easy
closed its gap) with MEDIUM's dial-for-dial pin to TUNE removed from the
test, and Oliver's own transparency fixes on the male frames.
SPRV 138 — the frames were right on disk and wrong on screen for an hour
because assets are cached for a year unless the ?v= moves. main.js v269.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2b7eb04e19
commit
1b7fc2cdcf
23 files changed
+352
-71
No files matched your search
+41
-1
@@ -1956,7 +1956,7 @@ it is the WRONG tool, superseded by the reference-sheet flow. Route by job:
|
||||
|---|---|
|
||||
| A whole opponent family (31 sprites, one character) | `_famroll.py` -> `_zsheet.py` — see "THE ZOMBIE FAMILY PIPELINE" below. **Never `_regen.py`**: nine separate rolls is nine chances for the character to drift, which is why the family pipeline exists. |
|
||||
| Rebuild the pose reference | `_famref.py` — composed from disk, no API call, gated. |
|
||||
| Player/opponent run cycles | `_runroll.py`. |
|
||||
| A PLAYER RUN CYCLE | `_vidroll.py` — a video model, not a still one. See "THE RUN CYCLES CAME OUT OF A VIDEO" below. `_runroll.py` still rolls the single frame you film FROM, and still serves the opponents' pairs; it cannot produce a gait. |
|
||||
| A stride twin (legs frozen) | `_stride.py`. |
|
||||
| Single-sheet remaster, boss roster, any non-family sprite | `_regen.py` + `_regen_batches.json` — the only jobs it is still for. |
|
||||
| Standalone art (logo, panels) | `_key.py`; coarse legacy sheets, `_slice.py`. |
|
||||
@@ -2200,6 +2200,46 @@ The gates, and the numbers they were calibrated on:
|
||||
**SUPERSEDED 2026-08-12 — see the next section.** Those 31 frames were not art: `--verify` found
|
||||
27 of them dead. The brute is now live (`ZFAMS` has `'br'`, the KEEPER wears it) off ONE sheet.
|
||||
|
||||
## THE RUN CYCLES CAME OUT OF A VIDEO — the still models cannot draw a gait (2026-08-15)
|
||||
|
||||
**A ROW OF POSES IS NOT A WALK CYCLE, and six sessions of prompting could not make it one.** Asked
|
||||
for eight running figures, the image model draws three phases and repeats them with the same leg
|
||||
leading. Oliver, watching the sixth such roll: *"the feet look rather like ropeskipping than
|
||||
running... the legs need to alter in a balanced way"*. Everything was tried against it and lost: a
|
||||
figure-by-figure LEFT/RIGHT skeleton spec, a closing "walk the row and name the leading knee"
|
||||
checklist, an explicit last-against-first loop clause, dropping the count from 8 to 6. `_stride.py`
|
||||
CAN swap the legs of one frame (it drew the male's twin at 81% legs / 12% upper on the first roll),
|
||||
but a pair is a pair, not a cycle.
|
||||
|
||||
**A VIDEO MODEL HAS NO SUCH PROBLEM, because it moves a body instead of drawing poses.** One 5 s
|
||||
image-to-video clip, ~$0.42 through the OpenRouter key already in `.env` (`POST /api/v1/videos`,
|
||||
async, and the "unsigned" result URL still wants the Authorization header — without it you save a
|
||||
67-byte 401). `assets/_vidroll.py` films the clip and cuts it. What the clips taught:
|
||||
|
||||
- **PIN THE POSE AT BOTH ENDS** — `first_frame` and `last_frame` set to the same still. Her first
|
||||
clip, pinned only at the front, had rotated her into a side profile by the halfway mark.
|
||||
- **MEASURE THE STRIDE.** `--cut` scores every frame against every lag with `_famref`'s
|
||||
`legs`/`stride_diff` and installs N phases spaced evenly across the lowest-scoring period. Her
|
||||
clip strides in 6 frames at 16 fps, his in 23 — the same "every fifth frame" sampling that
|
||||
flattered hers made his read as a stagger.
|
||||
- **WHOLE FRAMES, THROUGH `_stride.cut`.** Raw clip frames are soft, and the chroma key eats
|
||||
lavender-white sneakers unless the test is STRONGLY magenta (`r-g > 70 and b-g > 70`). The first
|
||||
attempt kept only the clip's legs under his own drawn torso; matching hips frame by frame cost an
|
||||
evening of seams (Oliver: *"the upper body moves as well so the 2 parts seem drifting"* — the
|
||||
torso has to be placed on each frame's own hips, and even then her skirt defeated it).
|
||||
- **THE FIRST FRAME IS THE WHOLE JOB.** Generate it as a single still: her identity reference plus
|
||||
HIS approved run frame as the POSE picture ("she is the person; his pose is the instruction") —
|
||||
one roll, no retries, open racket bed. A soft first frame gives a clip whose racket wobbles,
|
||||
which is exactly what his weaker cycle shows.
|
||||
|
||||
**Settled with it:** `TUNE.runHz` 2.4 -> **1.9** (2.4 on real phases: *"this looks like
|
||||
roadrunner"*), the player no longer clamped to two frames — `runN` probes the sheet **through
|
||||
`SK()`**, so the women's tour counts her six against his six rather than reading his sheet for both
|
||||
— and the sprite bench grew two PLAYER stops (`beats.js` `BENCH_CHARS`), because a player cycle
|
||||
that is only ever seen mid-rally is a cycle nobody has watched. And **bump `SPRV`**: the frames were
|
||||
right on disk and wrong on screen for an hour because `assets/*` is cached for a year unless the
|
||||
`?v=` moves.
|
||||
|
||||
## THE RUN CYCLES — one call, one row, one character (2026-08-13)
|
||||
|
||||
The p_run/o_run frames were generated ONE AT A TIME in the pre-pipeline era and it showed: the male
|
||||
|
||||
Reference in new issue
Block a user