49 lines
2.7 KiB
Markdown
49 lines
2.7 KiB
Markdown
# 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:
|
|
|
|
```text
|
|
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:
|
|
|
|
```bash
|
|
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.
|