Imp sprite test: generated sheet, pixelize tool and 24/32 px results

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard ZinkandClaude Opus 5.5 committed 2026-11-07 20:35:09 +01:00
1 parent b973483bae
commit 4b8afa1fb2
8 files changed
+159

No files matched your search

+48
View File
@@ -0,0 +1,48 @@
# 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.
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 MiB