Godot Asset Generator
Generate game assets using AI image generation APIs and prepare them for use in Godot 4.x. This skill covers the complete art pipeline from concept to Godot-ready sprites.
When to Use This Skill
Use this skill when:
- Generating game sprites, characters, or objects using AI
- Creating tilesets for platformers or top-down games
- Generating UI elements, icons, or menu assets
- Batch-generating animation frames
- Preparing AI-generated assets for Godot import
- Creating consistent asset sets with style guides
Do NOT use this skill when:
- Creating 3D models or textures (2D assets only)
- Manual pixel art or illustration (use art software)
- Complex frame-by-frame animation (use animation tools)
- Working with existing assets (use Godot directly)
Prerequisites
Required:
- Deno runtime installed
- At least one API key:
OPENAI_API_KEYfor DALL-E 3REPLICATE_API_TOKENfor Replicate (SDXL, Flux)FAL_KEYfor fal.ai
Optional:
- ImageMagick for advanced image processing
- Godot 4.x project for import file generation
Quick Start
Generate a Single Image
deno run --allow-env --allow-net --allow-write scripts/generate-image.ts \
--provider dalle \
--prompt "pixel art knight character, front view, 16-bit style, transparent background" \
--output ./assets/knight.png
Batch Generate Animation Frames
deno run --allow-env --allow-net --allow-read --allow-write scripts/batch-generate.ts \
--spec ./batch-spec.json \
--output ./generated/
Create Sprite Sheet
deno run --allow-read --allow-write scripts/pack-spritesheet.ts \
--input ./generated/*.png \
--output ./sprites/player-sheet.png \
--columns 4
Core Workflow
Phase 1: Style Definition
Define your art style before generating assets:
- Choose Art Style: Pixel art, hand-drawn, painterly, or vector
- Create Style Guide: Document colors, modifiers, and constraints
- Test Prompts: Generate samples to validate style consistency
{
"style": "pixel-art",
"resolution": 64,
"palette": "limited-16-colors",
"modifiers": "16-bit, no anti-aliasing, clean pixels"
}
Phase 2: Asset Generation
Generate assets using the appropriate provider:
- Single Assets: Use
generate-image.tsfor individual images - Batch Assets: Use
batch-generate.tsfor multiple related assets - Iterate: Refine prompts based on results
Phase 3: Post-Processing
Prepare raw AI output for game use:
- Background Removal: Extract sprites from backgrounds
- Color Correction: Normalize palette if needed
- Resize: Scale to exact game resolution
- Trim/Pad: Remove whitespace, add sprite padding
deno run --allow-read --allow-write scripts/process-sprite.ts \
--input ./raw/knight.png \
--output ./processed/knight.png \
--remove-bg \
--resize 64x64 \
--filter nearest
Phase 4: Godot Integration
Prepare assets for Godot import:
- Pack Sprite Sheets: Combine frames into optimized sheets
- Generate Import Files: Create
.importwith optimal settings - Configure Animations: Set up SpriteFrames resources
API Provider Selection
| Provider | Best For | Quality | Cost | Speed | |----------|----------|---------|------|-------| | DALL-E 3 | Consistency, high detail | Excellent | $$$ | Medium | | Replicate | Style control, variations | Very Good | $$ | Medium | | fal.ai | Fast iteration, testing | Good | $ | Fast |
DALL-E 3 (OpenAI)
Best for high-quality, consistent results. Excellent prompt following.
--provider dalle --model dall-e-3
- Sizes: 1024x1024, 1792x1024, 1024x1792
- Quality: standard, hd
- Style: vivid, natural
Replicate (SDXL/Flux)
Best for style control and cheaper batch generation.
--provider replicate --model stability-ai/sdxl
- More model options (SDXL, Flux, specialized)
- Negative prompts supported
- ControlNet and img2img available
fal.ai
Best for rapid iteration and testing prompts.
--provider fal --model fal-ai/flux/schnell
- Fastest inference
- Good for prototyping
- Lower cost per image
Prompting by Art Style
Pixel Art
"pixel art [subject], 16-bit style, clean pixels, no anti-aliasing,
limited color palette, retro game sprite, transparent background"
Key modifiers: 16-bit, 8-bit, pixel art, retro, clean pixels, no anti-aliasing
Avoid: realistic, detailed, smooth, gradient
Hand-Drawn / Illustrated
"hand-drawn illustration of [subject], ink lines, watercolor texture,
sketch style, game art, white background"
Key modifiers: hand-drawn, illustration, ink lines, sketch, watercolor
Painterly / Concept Art
"digital painting of [subject], concept art style, painterly brush strokes,
dramatic lighting, game asset"
Key modifiers: digital painting, concept art, painterly, brush strokes
Vector / Flat Design
"flat design [subject], vector art style, clean edges, solid colors,
minimal shading, game icon, transparent background"
Key modifiers: flat design, vector, clean edges, solid colors, minimal
Script Reference
generate-image.ts
Generate a single image from any supported provider.
deno run --allow-env --allow-net --allow-write scripts/generate-image.ts [options]
Options:
--provider <name> Provider: dalle, replicate, fal (required)
--prompt <text> Generation prompt (required)
--output <path> Output file path (required)
--model <name> Specific model (optional, provider-dependent)
--size <WxH> Image size, e.g., 1024x1024 (default: 1024x1024)
--style <name> Style preset: pixel-art, hand-drawn, painterly, vector
--negative <text> Negative prompt (Replicate/fal only)
--quality <level> Quality: standard, hd (DALL-E only)
--json Output metadata as JSON
-h, --help Show help
batch-generate.ts
Generate multiple images from a specification file.
deno run --allow-env --allow-net --allow-read --allow-write scripts/batch-generate.ts [options]
Options:
--spec <path> Path to batch specification JSON (required)
--output <dir> Output directory (required)
--concurrency <n> Parallel requests (default: 2)
--delay <ms> Delay between requests (default: 1000)
--resume Resume from last successful
--json Output results as JSON
-h, --help Show help
Batch Spec Format:
{
"provider": "replicate",
"model": "stability-ai/sdxl",
"style": "pixel-art",
"basePrompt": "16-bit pixel art, game sprite, transparent background",
"assets": [
{ "name": "player-idle", "prompt": "knight standing idle, front view" },
{ "name": "player-walk-1", "prompt": "knight walking, frame 1 of 4" },
{ "name": "player-walk-2", "prompt": "knight walking, frame 2 of 4" }
]
}
process-sprite.ts
Post-process generated images for game use.
deno run --allow-read --allow-write scripts/process-sprite.ts [options]
Options:
--input <path> Input image path (required)
--output <path> Output image path (required)
--remove-bg Remove background (make transparent)
--resize <WxH> Resize to dimensions
--filter <type> Resize filter: nearest, linear (default: nearest)
--trim Trim transparent whitespace
--padding <n> Add padding pixels
--color-key <hex> Color to make transparent (e.g., ff00ff)
-h, --help Show help
pack-spritesheet.ts
Pack multiple sprites into a sprite sheet.
deno run --allow-read --allow-write scripts/pack-spritesheet.ts [options]
Options:
--input <pattern> Input files (glob pattern, required)
--output <path> Output sprite sheet path (required)
--columns <n> Number of columns (default: auto)
--padding <n> Padding between sprites (default: 0)
--power-of-two Force power-of-two dimensions
--metadata <path> Output JSON metadata path
-h, --help Show help
Output Metadata:
{
"image": "player-sheet.png",
"size": { "width": 256, "height": 128 },
"frames": [
{ "name": "idle", "x": 0, "y": 0, "width": 64, "height": 64 },
{ "name": "walk-1", "x": 64, "y": 0, "width": 64, "height": 64 }
]
}
generate-import-files.ts
Generate Godot .import files with optimal settings.
deno run --allow-read --allow-write scripts/generate-import-files.ts [options]
Options:
--input <path> Input image or directory (required)
--preset <name> Preset: pixel-art, hd-sprite, ui (default: pixel-art)
--frames <n> Animation frame count (for sprite sheets)
--columns <n> Sprite sheet columns
--fps <n> Animation FPS (default: 12)
-h, --help Show help
Godot Import Settings
Pixel Art Sprites
Filter Mode: Nearest
Compression: Lossless
Mipmaps: Off
Fix Alpha Border: On
HD Sprites
Filter Mode: Linear
Compression: VRAM Compressed
Mipmaps: On
UI Elements
Filter Mode: Linear (or Nearest for pixel UI)
Compression: Lossless
Mipmaps: Off
Examples
Example 1: Pixel Art Character with Walk Animation
# 1. Create batch spec
cat > character-batch.json << 'EOF'
{
"provider": "replicate",
"style": "pixel-art",
"basePrompt": "16-bit pixel art knight, game sprite, transparent background",
"assets": [
{ "name": "knight-idle", "prompt": "standing idle, front view" },
{ "name": "knight-walk-1", "prompt": "walking, left foot forward" },
{ "name": "knight-walk-2", "prompt": "walking, standing straight" },
{ "name": "knight-walk-3", "prompt": "walking, right foot forward" },
{ "name": "knight-walk-4", "prompt": "walking, standing straight" }
]
}
EOF
# 2. Generate images
deno run --allow-env --allow-net --allow-read --allow-write \
scripts/batch-generate.ts --spec character-batch.json --output ./raw/
# 3. Process sprites
for f in ./raw/knight-*.png; do
deno run --allow-read --allow-write scripts/process-sprite.ts \
--input "$f" --output "./processed/$(basename $f)" \
--remove-bg --resize 64x64 --filter nearest
done
# 4. Pack sprite sheet
deno run --allow-read --allow-write scripts/pack-spritesheet.ts \
--input "./processed/knight-*.png" \
--output ./sprites/knight-sheet.png \
--columns 5 --metadata ./sprites/knight-sheet.json
# 5. Generate Godot import
deno run --allow-read --allow-write scripts/generate-import-files.ts \
--input ./sprites/knight-sheet.png --preset pixel-art \
--frames 5 --columns 5 --fps 8
Example 2: Tileset Generation
# Generate individual tiles
deno run --allow-env --allow-net --allow-write scripts/generate-image.ts \
--provider dalle \
--prompt "seamless pixel art grass tile, top-down view, 32x32, game tileset" \
--output ./tiles/grass.png \
--style pixel-art
# Process and resize
deno run --allow-read --allow-write scripts/process-sprite.ts \
--input ./tiles/grass.png --output ./tiles/grass-processed.png \
--resize 32x32 --filter nearest
Example 3: UI Icons
# Batch generate UI icons
cat > ui-batch.json << 'EOF'
{
"provider": "fal",
"style": "vector",
"basePrompt": "flat design game icon, clean edges, solid colors, transparent background",
"assets": [
{ "name": "icon-sword", "prompt": "sword weapon icon" },
{ "name": "icon-shield", "prompt": "shield defense icon" },
{ "name": "icon-potion", "prompt": "health potion bottle icon" },
{ "name": "icon-coin", "prompt": "gold coin currency icon" }
]
}
EOF
deno run --allow-env --allow-net --allow-read --allow-write \
scripts/batch-generate.ts --spec ui-batch.json --output ./icons/
Common Issues
API Key Not Found
Error: OPENAI_API_KEY environment variable is not set
Solution: Export the API key before running:
export OPENAI_API_KEY="sk-..."
Inconsistent Style Across Batch
Problem: Generated images have different styles despite same prompt.
Solutions:
- Use more specific style modifiers
- Use Replicate with seed parameter for reproducibility
- Generate more images and select best matches
- Use img2img with reference image (Replicate)
Background Removal Fails
Problem: --remove-bg doesn't cleanly separate sprite.
Solutions:
- Add "transparent background" or "white background" to prompt
- Use
--color-keywith a specific background color - Use more explicit prompts: "isolated on transparent background"
- Manual cleanup may be needed for complex images
Pixel Art Has Anti-Aliasing
Problem: Generated pixel art has smoothed edges.
Solutions:
- Add "no anti-aliasing", "clean pixels" to prompt
- Generate at larger size, then downscale with nearest neighbor
- Use
--filter nearestin process-sprite.ts - Post-process with palette reduction
Rate Limiting
Problem: API returns 429 rate limit errors.
Solutions:
- Increase
--delayin batch-generate.ts - Reduce
--concurrency - Wait and retry
- Use different provider for large batches
Additional Resources
Prompting Guides
references/prompting/pixel-art.md- Detailed pixel art techniquesreferences/prompting/hand-drawn.md- Illustrated style guidereferences/prompting/consistent-characters.md- Character consistency
API Guides
references/api-guides/openai-dalle.md- DALL-E 3 API referencereferences/api-guides/replicate-sdxl.md- Replicate integrationreferences/api-guides/fal-ai.md- fal.ai guide
Godot Integration
references/godot-integration/import-settings.md- Import configurationreferences/godot-integration/animation-setup.md- AnimatedSprite2D setup
Templates
assets/prompts/pixel-art-templates.json- Pixel art prompt templatesassets/prompts/character-templates.json- Character promptsassets/style-guides/style-guide-template.json- Style guide schema
Limitations
- API-based only: Requires internet and API keys (no local models)
- Style consistency: AI may produce variations despite same prompt
- Resolution constraints: Each provider has size limits
- 2D assets only: Not for 3D models, textures, or complex animations
- Background removal: May require manual cleanup for complex images
- Cost: API calls incur charges, especially for large batches