2.7 KiB
2.7 KiB
Pit Imp - generated pixel sprite (test for bigger sprites)
Generated on 2026-11-07 with fal.ai, as a test whether creature sprites bigger than the current
10x10 can come from an image model. The description follows the game's imp (EK::Worker,
sprite_rows in src/gfx.rs): orange skin, black outline, yellow eyes, dark-red tunic, pickaxe.
Step 1: sprite sheet
- Model:
fal-ai/nano-banana-pro - Settings:
aspect_ratio: 21:9,resolution: 2K,num_images: 2,output_format: png - Results:
raw-1.png(used: the lower row, compact chibi proportions),raw-2.png(more detailed, too fine for small sprites)
Prompt:
Pixel art sprite sheet for a dark-fantasy dungeon strategy game: the "Pit Imp", a small goblin-like worker demon. One single character shown five times in one horizontal row, evenly spaced, same size, same pose (standing, idle), each view in its own equal cell:
1. front view, facing the viewer
2. front three-quarter view, turned to the right
3. side view, facing right
4. back three-quarter view, turned away to the right
5. back view
The imp: short and stocky, big head, oversized pointed ears and two small black horns, orange skin, glowing yellow eyes, a wide mischievous grin with tiny fangs, a ragged dark-red tunic with a rope belt, bare feet with claws, carrying a small iron pickaxe with a wooden handle over its right shoulder. Thin tail.
Style: crisp retro pixel art at about 32x32 pixels per character, scaled up with hard square pixels, a one-pixel near-black outline around the figure, limited palette of about 12 colours, flat shading with one highlight and one shadow tone, no anti-aliasing, no gradients, no blur. Flat pure magenta background (#FF00FF) everywhere, no ground, no shadows, no text, no labels, no grid lines.
Step 2: pixel grid and palette
tools/pixelize_sprite.py (needs Pillow) removes the magenta background, cuts out the five
views, samples them down to a fixed grid (one scale for all views, standing on the bottom) and
reduces them to one shared palette:
python3 tools/pixelize_sprite.py raw-1.png imp --views 5 --size 32 --colors 16 --crop 0,0.27,1,0.72
python3 tools/pixelize_sprite.py raw-1.png imp --views 5 --size 24 --colors 16 --crop 0,0.27,1,0.72
Results: imp-32.png / imp-24.png (views front, front 3/4, side, back 3/4, back; transparent)
and the 8x previews imp-32-preview.png / imp-24-preview.png.
Findings
- 32x32 keeps the face (eyes, grin) and the silhouette readable; 24x24 already loses most of the face.
- The pickaxe's iron mostly turns dark; small details would need a manual touch-up.
- The sprites are not used by the game yet: the sprite atlas (
gen_spritesinsrc/gfx.rs) only knows 10x10 sprites in 12x12 cells.