Files
dungeoncraft/art/generated/imp-sprite/PROMPTS.md
T

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_sprites in src/gfx.rs) only knows 10x10 sprites in 12x12 cells.