This document specifies every spritesheet required for Tao Baryon v1.0 — canvas dimensions, grid layout, frame content, palette constraints, and export settings. It is the primary reference for both Krita-MCP automated generation and manual pixel art work.
All sprites use the pixel art style defined in 25_visual_identity.md: 1px black outline (#000000), flat color fills, minimal shading, high-contrast silhouettes readable at game scale.
Ship sprites (SS-01 to SS-03) have a canonical programmatic renderer — ship-renderer.jsx in the design system. This renderer uses a polygon scanline rasterizer, 3-band shading pass, outline pass, and a glyph-alphabet decal system. It renders directly to Canvas at any pixel size.
The renderer is the ground truth for ship geometry. All polygon coordinates and decal positions in this document and in 04_ships.md §Appendix come from the validated design system output. When generating PNG spritesheets via Krita-MCP:
04_ships.md §Appendix — Locked Pixel GeometryrasterizePolygon → applyShading → stampDecals → applyOutline → exportapplyEdgeDither then applyGhostOffset(+2, 0) before the outline passcx=20/44, cy=38, r=8 — mathematical semicircles, not hand-drawnThe design system can export sprites directly. Running buildShipGrid(ship, tier, damaged) and rendering via PixelGrid at pixelSize=1 produces the exact 64×64 PNG source asset.
| Rule | Value |
|---|---|
| Base pixel art scale | 1× (native) |
| Display scale | 2× (nearest-neighbor upscale in Flutter/Flame) |
| Color depth | 8-bit palette per sheet (max 32 colors) |
| Outline | 1px solid black (#000000) on all sprite edges |
| Background | Transparent (alpha = 0) |
| Export format | PNG-32 with transparency |
| Anchor point | Sprite center (hitbox registered at center) |
| Coordinate origin | Top-left (0,0) |
PLAYER / COALITION
#0a0c10 Space Black (outline base)
#e8eaf0 Hull Light (primary hull highlight)
#8b8fa8 Hull Mid
#555972 Hull Shadow
#c8f542 Lime (M3 accent, engine trail M3)
#42A5F5 Engine Trail M0-M1 (blue)
#FFD600 Engine Trail M2 (yellow)
#FF5722 Engine Trail M3 glow core
TELOS / ENEMY
#d4548a Telos Magenta (primary enemy fill)
#e8b84b Telos Gold (elite trim, boss fill)
#c47040 Telos Warm (secondary enemy)
#ff9eb5 Telos Magenta highlight
#a03060 Telos Magenta shadow
VEILED
#2dd4bf Veiled Teal (V-Series accent)
#1a8a7a Veiled Teal shadow
SHARED SEMANTIC
#4CAF50 HP green
#F44336 Damage red / crit flash
#42A5F5 Shield blue
#FFB300 Credit gold
Spritesheets: 3 files — one per ship (Vanguard, Interceptor, Bulwark)
Canvas: 256 × 128 px
Grid: 4 columns × 2 rows
Cell size: 64 × 64 px
Total frames per sheet: 8
[0,0] M0 Idle [1,0] M1 Idle [2,0] M2 Idle [3,0] M3 Idle
[0,1] M0 Damaged [1,1] M1 Damaged [2,1] M2 Damaged [3,1] M3 Damaged
Idle frame: Ship at rest, engine trail visible (3–4 pixels below hull, 2px wide). Damaged frame: Same as idle but with 2–3 visible crack/damage lines on hull surface. Hull color slightly desaturated.
H-1 Vanguard (ss_ship_vanguard.png)
(32,6) (48,52) (32,44) (16,52)H-2 Interceptor (ss_ship_interceptor.png)
(32,4) (44,56) (32,46) (20,56) — narrower than VanguardH-3 Bulwark (ss_ship_bulwark.png)
(32,8) (52,54) (32,48) (12,54) — wider base than Vanguard#8b8fa8 (Hull Mid)#e8eaf0 (Hull Light) — top 30% of hull#555972 (Hull Shadow) — bottom 20%#000000#42A5F5 on upper hull at M2+Spritesheets: 3 files (Marksman, Phantom, Striker)
Canvas: 256 × 128 px
Grid: 4 columns × 2 rows
Cell size: 64 × 64 px
Total frames: 8 (M0-M3 idle + damaged)
V-1 Marksman (ss_ship_marksman.png)
(32,3) (40,54) (32,46) (24,54) + prow extension (30,3)(34,3)(32,0)#2dd4bf)V-2 Phantom (ss_ship_phantom.png)
#8b8fa8 at 85% opacity (dithered transparency effect using checkerboard pattern with transparent pixels)V-3 Striker (ss_ship_striker.png)
#42A5F5 fill inside each vent)#7a8090 (slightly cooler than H-Series)#2dd4bf — appears at M1 on all V-Series#e8eaf0Spritesheets: 3 files (Apex, Resonator, Singularity)
Canvas: 256 × 128 px
Grid: 4 columns × 2 rows
Cell size: 64 × 64 px
C-1 Apex (ss_ship_apex.png)
(32,4) (46,22) (42,54) (22,54) (18,22)C-2 Resonator (ss_ship_resonator.png)
320 × 128 px, 5 columns for M0/M1/M2/M3-A/M3-BC-3 Singularity (ss_ship_singularity.png)
(32,5) (50,20) (52,50) (32,56) (12,50) (14,20)320 × 128 px, 5 columns#606472 (darkest ship palette — premium feel)#c8f542 occupies ~15% of hull visible areaFile: ss_engine_trails.png
Purpose: Separate animation sheet for engine trail VFX, composited on top of ship sprites at runtime.
Canvas: 128 × 128 px
Grid: 4 columns × 4 rows
Cell size: 32 × 32 px
16 frames total
Row 0 (M0 Blue): [4 animation frames, 32×32 each]
Row 1 (M1 Blue+): [4 animation frames]
Row 2 (M2 Yellow): [4 animation frames]
Row 3 (M3 Red+Lime):[4 animation frames]
Each frame shows a trail: 3–6 pixels tall, widest at top (2–4px), tapering to 1px. Frame sequence shows flickering/elongation cycle.
M0: #42A5F5 core, #1565C0 edge — 3px tall, 2px wide
M1: #42A5F5 core brighter, 4px tall
M2: #FFD600 core, #FF8F00 edge, 4px tall
M3: #FF5722 core, #c8f542 halo (1px each side), 5px tall
File: ss_enemies_grunts.png
Canvas: 320 × 64 px
Grid: 5 columns × 1 row
Cell size: 64 × 64 px
5 frames — one per grunt tier
All grunt variants are rectangular/rounded shapes, facing downward (attacking player below).
| Frame | Enemy | Shape | Size (in 64px cell) | Primary color |
|---|---|---|---|---|
| 0 | G1 | Rounded rect | 16×14 px | #d4548a |
| 1 | G2 | Rounded rect + wing nubs | 20×16 px | #d4548a |
| 2 | G3 | Wider rect, armored look | 24×18 px | #c47040 |
| 3 | G4 | Rect + side pods | 28×20 px | #c47040 + #e8b84b trim |
| 4 | G5 | Heavy rect + front cannon | 32×22 px | #e8b84b dominant |
Facing: All enemies face downward (nose toward bottom of cell). Player faces upward.
Outline: 1px #000000
Shading: Top-left highlight 1px in #ff9eb5 (Telos highlight), bottom-right shadow 1px in #a03060
File: ss_enemies_strafers_bombers.png
Canvas: 448 × 64 px
Grid: 7 columns × 1 row
Cell size: 64 × 64 px
| Frame | Enemy | Shape | Key visual |
|---|---|---|---|
| 0 | S1 | Horizontal wedge (wide, flat) | Wide silhouette for side-crossing movement |
| 1 | S2 | Twin-engine wedge | Two engine pods visible |
| 2 | B1 | Ovoid/egg | Rounded bomb-carrier look |
| 3 | B2 | Ovoid + underbay | Visible payload bay underneath |
| 4 | B3 | Heavy ovoid | Thicker hull, 2 payload hardpoints |
| 5 | B4 | Large ovoid + side wings | Wing-mounted bomb racks |
| 6 | B5 | Heavy bomber | Largest enemy non-elite, 36×28 px |
Strafer color: #d4548a primary, horizontal orientation
Bomber color: #c47040 primary, rounded/ovoid form language distinct from grunts
File: ss_enemies_snipers_kamikaze.png
Canvas: 448 × 64 px
Grid: 7 columns × 1 row
Cell size: 64 × 64 px
| Frame | Enemy | Shape | Key visual |
|---|---|---|---|
| 0 | Sn1 | Narrow triangle | Tall, thin — 10×24 px |
| 1 | Sn2 | Triangle + scope | Front protrusion (scope/barrel) |
| 2 | Sn3 | Long triangle + dual scope | 12×28 px, precision aesthetic |
| 3 | K1 | Small teardrop | Aggressive forward lean, 12×16 px |
| 4 | K2 | Teardrop + spike | Forward spike (+3px) |
| 5 | K3 | Teardrop + dual spike | Two forward spikes |
| 6 | K4 | Heavy teardrop + spike | 18×22 px, largest kamikaze |
Sniper color: #e8b84b (Telos Gold — precision, deliberate)
Kamikaze color: #d4548a primary, brighter highlight than grunts (velocity = energy)
File: ss_enemies_elites.png
Canvas: 512 × 128 px
Grid: 4 columns × 2 rows
Cell size: 128 × 128 px
4 frames — one per elite, each with idle + alert state
Elites are 2× the canvas size of regular enemies — 128px cell vs 64px.
| Frame | Elite | Sprite size | Color scheme | Key detail |
|---|---|---|---|---|
| [0,0] idle | E1 Choral Knight | 42×48 px | #d4548a + #e8b84b trim |
Symmetrical, liturgical cross geometry on hull |
| [1,0] idle | E2 Inquisitor Hunter | 38×44 px | Cold blue-white #90CAF9 + black |
Narrow, surgical — anti-apostate aesthetic |
| [2,0] idle | E3 Geometer Saint | 44×44 px | #e8b84b dominant |
Pentagon/hexagon hull geometry — mathematical |
| [3,0] idle | E4 Apparatus Guardian | 46×52 px | Mixed — all Telos colors | Complex, adaptive — irregular silhouette |
| [0,1] alert | E1 alert | — | Brighter version | Weapon mounts glow |
| [1,1] alert | E2 alert | — | Brighter version | Targeting reticle pixel on prow |
| [2,1] alert | E3 alert | — | Brighter version | Geometry glows |
| [3,1] alert | E4 alert | — | Shifting colors | Adaptive color shift (+1 hue frame) |
Prayer script detail: On E1 and E3 hulls, add procedural-style pixel patterns along hull edges: alternating 1×1 dark/light pixels in horizontal bands simulating liturgical text. 2–3 bands per hull surface.
File per boss: 5 separate files
Canvas: 512 × 512 px
Grid: 4 columns × 4 rows
Cell size: 128 × 128 px
Sprite size within cell: 64–96 px (varies per boss)
Row 0: Phase 1 animation (4 frames — subtle idle animation)
Row 1: Phase 2 animation (4 frames — more active)
Row 2: Phase 3 animation (4 frames — most intense)
Row 3: Death sequence (4 frames — collapse animation)
Boss 1 — Reverent Maelin (ss_boss_maelin.png)
#d4548a + #e8b84b trim, psalm text bands on hullBoss 2 — Final Chorus (ss_boss_final_chorus.png)
Boss 3 — Inquisitor Cohort (ss_boss_inquisitor.png)
#90CAF9 primary + black outline + cold gray shadingBoss 4 — Mathematician-Saint Voren (ss_boss_voren.png)
(64,8)(100,36)(88,80)(40,80)(28,36)Boss 5 — Architect-Saint Halen (ss_boss_halen.png)
ss_boss_halen_ghost.png): Human silhouette overlay at 30% opacity, 128×128 pxFile: ss_bullets.png
Canvas: 288 × 128 px
Grid: 9 columns × 2 rows
Cell size: 32 × 64 px
Row 0: Player bullets (cool colors)
Row 1: Enemy bullets (warm colors)
| Column | Bullet type | Shape | Player color | Enemy color |
|---|---|---|---|---|
| 0 | Pulse | Small circle 4×4 px | #c8f542 core / #42A5F5 glow |
#ff9eb5 / #d4548a |
| 1 | Wave | Curved 3×8 px | #42A5F5 |
#ff9eb5 |
| 2 | Spread | Fan of 3 dots 2×2 px each | #e8eaf0 |
#e8b84b |
| 3 | Predictive | Elongated 3×10 px | #e8eaf0 |
#FFD600 + chevron pixel |
| 4 | Spiral | Arc segment 4×12 px | #2dd4bf |
#d4548a bright |
| 5 | Mandala | Diamond 6×6 px | #c8f542 |
#e8b84b + inner cross |
| 6 | Cascading | Cluster: 1 large + 2 small | #42A5F5 |
#c47040 |
| 7 | Lensed | Elongated 2×12 px, curved | #90CAF9 |
#FFD600 |
| 8 | Threading | 1×24 px thin line | #e8eaf0 |
#ffffff |
Note: Threading bullet is nearly the full cell height — it's a near-full-length line projectile.
File: ss_vfx_explosions.png
Canvas: 512 × 256 px
Grid: 8 columns × 4 rows
Cell size: 64 × 64 px
| Row | VFX type | Frames | Frame content |
|---|---|---|---|
| 0 | Small death (Grunt) | 8 | Frame 0: flash. Frames 1-4: expanding particles. Frames 5-7: fading |
| 1 | Medium death (Bomber) | 8 | Larger burst, adds shockwave ring on frame 3-4 |
| 2 | Large death (Elite) | 8 | Two-phase: implosion frames 0-2, burst frames 3-7 |
| 3 | Player death | 8 | Lime #c8f542 particles, inward then outward |
Particle shapes: 2×2 px squares and 1×1 px dots. No complex shapes — clarity at game scale.
Shockwave ring (medium/large): Expanding circle, drawn as 1px outline circle. Frame 3: 8px radius. Frame 4: 16px. Frame 5: 24px. Frame 6: 32px (fading). Pure white #ffffff.
File: ss_vfx_specials.png
Canvas: 512 × 512 px
Grid: 8 columns × 8 rows
Cell size: 64 × 64 px
| Row pair | Special | Frames | Key visual |
|---|---|---|---|
| 0-1 | S1 Singularity Pull | 8 | Black dot expanding to sphere with accretion ring |
| 2-3 | S2 Phase Shift | 8 | Shimmer outline around ship (use as overlay) |
| 4-5 | S4 Cherenkov Burst | 8 | Blue cone trail behind ship |
| 6-7 | S5 Vacuum Pulse | 8 | Expanding white ring, full cell width by frame 6 |
Remaining specials (S3, S6, S7, S8) use runtime-drawn primitives in Flutter/Flame rather than pre-baked sprites — they are geometric enough to draw programmatically.
File: ss_hazards.png
Canvas: 256 × 128 px
Grid: 4 columns × 2 rows
Cell size: 64 × 64 px
| Frame | Hazard | Visual |
|---|---|---|
| [0,0] | Exotic Matter Cloud | Soft irregular blob, #7c3aed at 40% — semi-transparent pixel dithering |
| [1,0] | Lensing Zone indicator | Circle ring, 1px, #8b8fa8 at 50%, 56px diameter |
| [2,0] | Time Dilation Zone | Blue-tinted circle fill with dithered edge |
| [3,0] | Spacetime Collapse Zone | Red ring (2px), fill dithered dark red |
| [0,1] | Cosmic String — pre | Dashed line, 1px, #555972 (warning state) |
| [1,1] | Cosmic String — active | Solid white line, 1px, full cell width |
| [2,1] | Roche debris | 3 irregular rock shapes, 4–8px each, gray |
| [3,1] | (reserved) | — |
File: ss_ui_icons.png
Canvas: 256 × 128 px
Grid: 8 columns × 4 rows
Cell size: 32 × 32 px
These are pixel-art versions of functional icons, used for ship/weapon series badges and status indicators.
| Row 0 — Series badges (16×16 sprite in 32×32 cell) |
|---|
| H-Series badge, V-Series badge, C-Series badge, M0 pip, M1 pip, M2 pip, M3 pip, Legendary badge |
| Row 1 — Status icons |
|---|
| Shield icon, HP heart, Heat flame, Special bolt, Energy pip, Blueprint shard, Veiled token, Credit coin |
| Row 2 — Achievement tier icons (16×16) |
|---|
| Bronze medal, Silver medal, Gold medal, Platinum (lime) medal, Star filled, Star empty, No-damage badge, Boss skull |
| Row 3 — Misc |
|---|
| Lock icon, Arrow up, Arrow right, Checkmark, Pip dot, Sector 1-5 symbols (5 frames) |
File: ss_pickups.png
Canvas: 128 × 32 px
Grid: 4 columns × 1 row
Cell size: 32 × 32 px
| Frame | Pickup | Shape | Color | Size |
|---|---|---|---|---|
| 0 | HP restore | Cross/plus shape | #4CAF50 |
10×10 px |
| 1 | Shield charge | Diamond | #90CAF9 |
8×8 px |
| 2 | Special charge | Lightning bolt | #c8f542 |
8×12 px |
| 3 | Credit drop | Circle with C | #FFB300 |
8×8 px |
All pickups have a 1px white outline and a 1px colored outline. They pulse (handled in engine) — no animation frames needed in the sheet.
File per sector: 5 files
These are not game-object sprites — they are layered background art assets.
Canvas: 390 × 844 px (portrait iPhone 14 Pro reference)
Layers exported separately as PNGs:
- Layer 0: Base void/space (static color + grain)
- Layer 1: Distant stars (dot field)
- Layer 2: Mid-distance elements (nebula, debris, structures)
- Layer 3: Foreground atmosphere (edge effects)
| Sector | Layer 2 content | Color temperature | Notes |
|---|---|---|---|
| 1 Frontier | Sparse cold stars, distant beacon lights | Cold blue-black | Minimal, lonely |
| 2 Long Reach | Old battle debris silhouettes, dim wrecks | Warm gray-black | Horizontal derelict shapes |
| 3 Veil | Soft nebula puffs at edges, teal-purple | Cool purple tint | Telos shipyard silhouettes far right |
| 4 Ergosphere | Accretion disc edge visible (warm orange glow at bottom) | Warm black | Tartarus-9 implied presence |
| 5 Apparatus | Black hole dominant upper-center, Apparatus structure | Near-white-black contrast | Most complex background |
Tartarus-9 (Sector 5) specification:
#000000#FF8F00 → #FF5722 → transparent| ID | File | Canvas | Cells | Priority |
|---|---|---|---|---|
| SS-01 | ss_ship_vanguard/interceptor/bulwark.png ×3 | 256×128 | 8 each | HIGH |
| SS-02 | ss_ship_marksman/phantom/striker.png ×3 | 256×128 | 8 each | HIGH |
| SS-03 | ss_ship_apex/resonator/singularity.png ×3 | 256-320×128 | 8-10 each | HIGH |
| SS-04 | ss_engine_trails.png | 128×128 | 16 | HIGH |
| SS-05 | ss_enemies_grunts.png | 320×64 | 5 | HIGH |
| SS-06 | ss_enemies_strafers_bombers.png | 448×64 | 7 | HIGH |
| SS-07 | ss_enemies_snipers_kamikaze.png | 448×64 | 7 | HIGH |
| SS-08 | ss_enemies_elites.png | 512×128 | 8 | HIGH |
| SS-09 | ssboss[name].png ×5 + ghost | 512×512 | 16 each | HIGH |
| SS-10 | ss_bullets.png | 288×128 | 18 | HIGH |
| SS-11 | ss_vfx_explosions.png | 512×256 | 32 | MEDIUM |
| SS-12 | ss_vfx_specials.png | 512×512 | 64 | MEDIUM |
| SS-13 | ss_hazards.png | 256×128 | 8 | MEDIUM |
| SS-14 | ss_ui_icons.png | 256×128 | 32 | MEDIUM |
| SS-15 | ss_pickups.png | 128×32 | 4 | MEDIUM |
| SS-16 | bg_sector[1-5]_layer[0-3].png ×20 | 390×844 | N/A | LOW |
Total spritesheet files: ~42
# Step 1 — Create document
doc = Krita.createDocument(256, 128, "ss_ship_vanguard", "RGBA", "U8", "", 72.0)
# Step 2 — Set up grid guides
doc.setGuidesLocked(False)
# Add vertical guides at 64, 128, 192
# Add horizontal guide at 64
# Step 3 — Create layer groups
root = doc.rootNode()
for mark in ['M0', 'M1', 'M2', 'M3']:
group = doc.createGroupLayer(f"ship_{mark}")
group.createChildLayer("outline")
group.createChildLayer("hull_light")
group.createChildLayer("hull_mid")
group.createChildLayer("hull_shadow")
group.createChildLayer("engine_trail")
group.createChildLayer("accents")
root.addChildNode(group, None)
# Step 4 — Draw base polygon (M0, column 0)
# Using Krita's vector/paint tools via scripting API
# Step 5 — Export
doc.exportImage("ss_ship_vanguard.png", InfoObject())
Document version: 1.0 (locked) Part of: Tao Baryon — Production Assets