Redraw the player and the opponent
Both full sets through the same pipeline: stances and ball-bounce, serve toss, smash and both swing frames, the four-frame run, and the five-frame death. The opponent's ten frames with them. Inner-edge density roughly doubles across the board — the serve frames go 0.22-0.32 to 0.41-0.54. _regen.py retries a rejected batch itself now (default three attempts). A rejection is usually just a bad roll — two figures drawn close enough that the slicer sees one frame, or a limb off the canvas — and re-rolling fixes it without me sitting in the loop. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
No files matched your search
@@ -121,6 +121,15 @@ if __name__ == '__main__':
|
|||||||
for k, v in B.items(): print(f'{k:16s} {len(v["sprites"]):2d} frames {", ".join(v["sprites"])}')
|
for k, v in B.items(): print(f'{k:16s} {len(v["sprites"]):2d} frames {", ".join(v["sprites"])}')
|
||||||
sys.exit()
|
sys.exit()
|
||||||
dry = '--dry' in args
|
dry = '--dry' in args
|
||||||
|
tries = 3 # a rejected sheet is usually just a bad roll:
|
||||||
|
for a in args: # frames merged, or a limb off the canvas
|
||||||
|
if a.startswith('--tries='): tries = int(a.split('=')[1])
|
||||||
names = list(B) if '--all' in args else [a for a in args if not a.startswith('--')]
|
names = list(B) if '--all' in args else [a for a in args if not a.startswith('--')]
|
||||||
bad = [n for n in names if not run(n, B[n], dry)]
|
bad = []
|
||||||
|
for n in names:
|
||||||
|
for attempt in range(1, tries + 1):
|
||||||
|
if run(n, B[n], dry): break
|
||||||
|
print(f'[{n}] attempt {attempt}/{tries} rejected')
|
||||||
|
else:
|
||||||
|
bad.append(n)
|
||||||
print('\nFAILED BATCHES (re-run):', ' '.join(bad) if bad else 'none')
|
print('\nFAILED BATCHES (re-run):', ' '.join(bad) if bad else 'none')
|
||||||
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 17 KiB |
@@ -97,6 +97,6 @@
|
|||||||
<p id="build"></p>
|
<p id="build"></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<script type="module" src="main.js?v=68"></script>
|
<script type="module" src="main.js?v=69"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -155,7 +155,7 @@ export function proj(x, y, z) {
|
|||||||
|
|
||||||
// ---------------------------------------------------------------- sprites ----
|
// ---------------------------------------------------------------- sprites ----
|
||||||
// assets/<name>.png; game falls back to code-drawn figures until sprites load.
|
// assets/<name>.png; game falls back to code-drawn figures until sprites load.
|
||||||
const SPRV = 62; // asset cache-buster — bump with main.js?v=N (see the img.src note below)
|
const SPRV = 63; // asset cache-buster — bump with main.js?v=N (see the img.src note below)
|
||||||
const SPR = {};
|
const SPR = {};
|
||||||
for (const n of ['p_idle1','p_idle2','p_bounce','p_bounce2','p_toss','p_smash','p_run1','p_run2','p_run3','p_run4','p_swing1','p_swing2','p_die1','p_die2','p_die3','p_die4','p_die5',
|
for (const n of ['p_idle1','p_idle2','p_bounce','p_bounce2','p_toss','p_smash','p_run1','p_run2','p_run3','p_run4','p_swing1','p_swing2','p_die1','p_die2','p_die3','p_die4','p_die5',
|
||||||
'o_idle1','o_idle2','o_bounce','o_bounce2','o_toss','o_smash','o_run1','o_run2','o_swing1','o_swing2',
|
'o_idle1','o_idle2','o_bounce','o_bounce2','o_toss','o_smash','o_run1','o_run2','o_swing1','o_swing2',
|
||||||
|
|||||||