Turn the bodies around, calm the racket zombie, break up the pack
Three from the playtest, all code: Every side-on sprite is DRAWN facing left, and nothing ever mirrored them, so a zombie walking right moonwalked — obvious the moment they close on you across your own half. They face where they last walked now. The front-facing ones (the turned CPU, the machine, a chapter boss) have no left or right and are left alone. The racket zombie holds a position and only moves when the ball makes him, so a time-driven walk cycle flicked him between two frames on the spot. His stride steps off ground covered, like the brute's — standing still is standing still. And the pack no longer stands on the body twitching for as long as the summary is up: once it appears they break up and shamble away up-court. Measured — feeding at 3s, dispersed to 3m by 6.5s. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7edd623372
commit
01498eddad
7 files changed
+82
-12
No files matched your search
+4
-2
@@ -82,7 +82,8 @@ def colour_match(src, dst_name):
|
||||
def run(name, spec, dry=False):
|
||||
os.makedirs(SCRATCH, exist_ok=True)
|
||||
sprites = spec['sprites']
|
||||
ref = ref_sheet(sprites, f'{SCRATCH}/{name}_ref.png', spec.get('scale', 2.0))
|
||||
lead = spec.get('ref') # generated for scale, thrown away after
|
||||
ref = ref_sheet(([lead] if lead else []) + sprites, f'{SCRATCH}/{name}_ref.png', spec.get('scale', 2.0))
|
||||
sheet = f'{SCRATCH}/{name}_hi.png'
|
||||
prompt = f"{spec['subject']} {STYLE}"
|
||||
if dry:
|
||||
@@ -94,7 +95,7 @@ def run(name, spec, dry=False):
|
||||
print(f'[{name}] FAILED: generator returned no image\n{r.stdout[-400:]}'); return False
|
||||
if touches_edge(sheet):
|
||||
print(f'[{name}] REJECTED: a figure runs off the canvas edge — re-run'); return False
|
||||
outs = [f'{SCRATCH}/{name}_{i}.png' for i in range(len(sprites))]
|
||||
outs = [f'{SCRATCH}/{name}_{i}.png' for i in range(len(sprites) + (1 if lead else 0))]
|
||||
cut = ['--cut', spec['cut']] if spec.get('cut') else []
|
||||
r = subprocess.run([PY, os.path.join(HERE, '_fine.py'), sheet, *outs,
|
||||
'--anchor', str(spec.get('anchor', 0)), '--h', str(spec.get('h', 224)), *cut],
|
||||
@@ -102,6 +103,7 @@ def run(name, spec, dry=False):
|
||||
print(r.stdout.strip() or r.stderr.strip())
|
||||
if r.returncode or not all(os.path.exists(o) for o in outs):
|
||||
print(f'[{name}] REJECTED: slicing failed (frames merged?) — re-run or add "cut"'); return False
|
||||
if lead: outs = outs[1:] # the scale reference is not installed
|
||||
before = [density(os.path.join(HERE, s + '.png')) for s in sprites]
|
||||
after = [density(o) for o in outs]
|
||||
# 1.25x, not 1.5x: a sheet that already has blood on it starts with a high edge density, so a
|
||||
|
||||
Reference in new issue
Block a user