These are the real training sprites — hand-crafted FF6-style pixel art for all 16 Haven beings.
Side-by-side: REAL training data, RECON (encode→decode same frame), VAE (sampled from prior)
Smooth morphs between characters through the 48-dimensional latent space (16d head + 16d torso + 16d legs)
Same latent seed, varying temperature. Lower = sharper. Higher = more creative/chaotic.
Silhouette (30%) — Shape matches learned transparency prior
Color Coherence (25%) — Colors form coherent regions
Walk Smoothness (20%) — Frame-to-frame pixel delta
Distinctiveness (15%) — Different from other characters
Symmetry (10%) — Left-right mirror for front/back
┌──────────────────────────────────────────────────┐ │ SpriteVAE (502K params) │ ├──────────────────────────────────────────────────┤ │ Input: 24×16 palette indices (0-15) │ │ PaletteEmbedding: 16 → 4d dense vectors │ │ Conditioning: char(16d)+dir(8d)+frame(8d)=32d │ │ │ │ ┌──────────┬───────────┬────────────┐ │ │ │Head(0-7) │Torso(8-15)│ Legs(16-23)│ │ │ └────┬─────┴─────┬─────┴──────┬─────┘ │ │ ↓ ↓ ↓ │ │ Encoder×3: Conv2d→Conv2d→Conv2d → μ,logσ² │ │ (each region → 16d latent) │ │ │ │ z ~ N(μ, σ²) — Total: 48 dimensions │ │ │ │ Decoder×3: FC→DeConv×3 → (16,8,16) logits │ │ Concat regions → (16,24,16) → argmax → grid │ │ │ │ Loss = CE_recon + 0.1·KL + 0.5·Silhouette │ │ │ │ Self-Improvement Loop: │ │ Generate→Evaluate(5-axis)→Filter→Retrain │ └──────────────────────────────────────────────────┘
Region decomposition — Head/torso/legs have different visual vocabularies. Separate encoder/decoders prevent cross-region bleeding.
Palette embedding — 16→4d dense vectors. Learns color relationships (skin tones near skin tones).
Silhouette prior — Per-pixel transparency from real data. Forces transparent pixels where characters shouldn't exist.
Self-improvement — Generate→Evaluate→Filter top→Add to corpus→Retrain. 917 synthetic sprites added across 2 cycles.
48d latent — Compatible with MetaVAE bridging to LanguageVAE for text↔sprite synthesis.