foitin/pipeline
m3ultra b067bf7f0b Scaffold: deterministic 60Hz combat core, drop-in character format, MODELBEAST pipeline
- Godot 4.7 project; fixed-tick FSM fighter, facing-relative input buffer
  with numpad motion parsing, box collision, training-mode hitbox overlay
- characters/ = self-describing drop-in folders (spec in _spec/); two
  generated placeholder fighters (alpha, beta)
- pipeline/: pack_character.py + autohitbox.py (pose/silhouette hurtboxes)
- STUDY.md: reverse-engineering study of the BKB reference games

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 18:45:44 +10:00
..
autohitbox.py Scaffold: deterministic 60Hz combat core, drop-in character format, MODELBEAST pipeline 2026-07-28 18:45:44 +10:00
pack_character.py Scaffold: deterministic 60Hz combat core, drop-in character format, MODELBEAST pipeline 2026-07-28 18:45:44 +10:00
README.md Scaffold: deterministic 60Hz combat core, drop-in character format, MODELBEAST pipeline 2026-07-28 18:45:44 +10:00

FOITIN asset pipeline (MODELBEAST)

New fighter = one pass through this pipeline. Target cost: hours, not weeks. Steps 13 run as MODELBEAST jobs (queue on m3ultra :8777 — see the fleet skill); 46 run locally.

1. IDENTITY   FLUX + character LoRA        → master portrait(s), costume locked
2. MESH       Hunyuan3D-2.1 / TRELLIS      → textured 3D mesh (GLB) from portrait
3. RIG+MOVES  auto-rig → retarget the SHARED move library (~30 clips) onto the rig
              (character-specific specials are extra clips, added per character)
4. RENDER     fixed orthographic side camera → 60fps PNG frames per move
              (+ optional normal-map pass for lit 2.5D sprites later)
   → renders/<char>/<move>/####.png
5. HITBOX     autohitbox.py — DWPose over rendered frames → hurtbox rects per move
6. PACK       pack_character.py — assemble characters/<char>/ per CHARACTER_SPEC.md

Timing/damage numbers still get tuned by hand in each move's data.json — that's game feel, not asset work. Startup/active windows: see STUDY.md §2 (modern pacing, NOT BKB's 53-frame jab).

Naming

Use the shared move vocabulary (idle, walk_f, jab, kick, hit, knockdown, …, spec/CHARACTER_SPEC.md "Required move names") so every character drops onto the same FSM with zero engine changes — the Mortal Kombat uniform-mechanics doctrine, same reason BKB could ship 12 fighters on one exe.