Godot asset gen
Generate 2D game assets: PNG images through Google, OpenAI, Meshy, or WaveSpeed; Meshy text-to-image/image-to-image and three-view 3D references; MP4 video for animated sprite sheets; background removal, grid slicing, loop detection, and budget-based planning. Wan 2.7 is the content-permissive route. Meshy outputs can feed godot-asset-gen-3d by task ID. Requires the selected provider key plus local imagemagick/rembg/ffmpeg dependencies.From its SKILL.md
npx -y skills add cnqdztp/godot-skills --skill godot-asset-genAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
8.5 KB, as published. Nobody here has run it
2D Asset Generator
Generate PNG images and sprite animations. 3D (GLB / rigging / animation via Tripo3D or Meshy) lives in godot-asset-gen-3d.
Image models
Model (--model) | Vendor | Sizes | Cost (est. ¢) | Best for |
|---|---|---|---|---|
gemini-3.1-flash-lite-image | 512/1K/2K/4K | 2/3/5/8 | cheap drafts, textures, kits | |
gemini-3.1-flash-image default | 512/1K/2K/4K | 5/7/10/15 | precise prompt following — refs, characters, layouts | |
gemini-3-pro-image | 1K/2K/4K | 15/20/30 | hero art, 4K quality ceiling | |
gemini-2.5-flash-image | 1K | 4 | legacy cheap fallback (Nano Banana) | |
gpt-image-2 | OpenAI | 1K/2K | 10/15 | alternative style; strong text-in-image |
meshy-nano-banana | Meshy | provider-controlled | 3 credits | low-cost text or reference edit |
meshy-nano-banana-2 | Meshy | provider-controlled | 6 credits | balanced generation; multi-view 3D refs |
meshy-nano-banana-pro | Meshy | provider-controlled | 9 credits | higher-quality generation/edit |
meshy-gpt-image-2 | Meshy | provider-controlled | 9 text / 12 edit credits | high-fidelity Meshy route |
wan-2.7-t2i / -pro | Alibaba | 1K/2K(/4K pro) | 2-12 | content-permissive t2i (spicy/nudity game art other providers refuse) |
wan-2.7-edit / -pro | Alibaba | 1K/2K(/4K pro) | 3-15 | content-permissive image EDIT (requires --image) |
Cent costs are estimates. Meshy reports service credits and must never be converted to cents; re-check Meshy pricing before a batch.
Providers (--provider)
| Route | Key | Notes |
|---|---|---|
official | GOOGLE_API_KEY / OPENAI_API_KEY | Google AI Studio / OpenAI direct |
wavespeed | WAVESPEED_API_KEY | wavespeed.ai relay; the ONLY route for wan-2.7-* |
meshy | MESHY_API_KEY | Meshy Text-to-Image / Image-to-Image; multi-view and pose controls |
auto (default) | — | Meshy models use Meshy; other models prefer their official API, then WaveSpeed |
Before a Meshy image task, read the complete meshy/reference.md. Do not load it for unrelated providers.
Video models (video --video-model) — for animated sprites
| Model | Route | Cost | Res | Duration |
|---|---|---|---|---|
seedance-2.0 | Volcano Ark 直链 (ARK_API_KEY) | 1.0¢/s | up to 1080p | 4-15s |
seedance-2.0-fast default | Ark 直链 | 0.8¢/s | 720p | 4-15s |
seedance-2.0-mini | Ark 直链 | 0.6¢/s | 720p | 4-15s |
wan-2.7 | wavespeed | ~5¢/s (est.) | 720p | 5/10s |
Seedance model ids are Ark inference endpoints, overridable via SEEDANCE_2_0_EP / SEEDANCE_2_0_FAST_EP / SEEDANCE_2_0_MINI_EP.
CLI Reference
Set SKILL_DIR to the absolute directory containing this SKILL.md; do not
assume a Claude-, Codex-, or repository-specific install path. Run from the project root.
Keep runtime-loaded outputs under assets/; review-only refs/scratch elsewhere.
Generate / edit image
python3 "$SKILL_DIR/tools/asset_gen.py" image \
--prompt "the full prompt" -o assets/img/bucket.png
--model(defaultgemini-3.1-flash-image),--provider auto|official|wavespeed|meshy--size 512|1K|2K|4K,--aspect-ratio 1:1|16:9|...(default 1:1)--image path— reference/edit input, repeatable (wan edit & gemini support multi-ref)- Meshy:
--provider meshy --model meshy-*;--multi-view; optional--pose-mode a-pose|t-pose; Image-to-Image accepts 1-5--imageinputs
Typical picks:
- cheap texture/kit →
--model gemini-3.1-flash-lite-image - precise prop/character → default model
- hero/keyart →
--model gemini-3-pro-image --size 2K - spicy content →
--model wan-2.7-t2i-pro; spicy edit →--model wan-2.7-edit-pro --image src.png - 3D-ready multi-view →
--provider meshy --model meshy-nano-banana-2 --multi-view
Meshy multi-view → 3D handoff
python3 "$SKILL_DIR/tools/asset_gen.py" image \
--provider meshy --model meshy-nano-banana-2 --multi-view \
--prompt "single stylized clockwork knight, clean silhouette" \
-o assets/img/clockwork_knight.png
The result JSON and <output>.meshy.json include the Meshy image task ID. The
3D skill can pass it directly to Multi-Image-to-3D, preserving all generated
views without a download/re-upload round trip:
python3 "$ASSET_3D_SKILL_DIR/tools/asset_gen_3d.py" glb \
--provider meshy --meshy-image-task IMAGE_TASK_ID \
-o assets/glb/clockwork_knight.glb
If Meshy polling times out, do not submit again:
python3 "$SKILL_DIR/tools/asset_gen.py" resume-image \
-o assets/img/clockwork_knight.png
Remove background
Read rembg.md (CLI, BG-color strategy, batch mode).
Item kit (one image, N props)
2x2/3x3 grid in one generation, then slice:
python3 "$SKILL_DIR/tools/grid_slice.py" grid.png \
-o assets/img/items/ --grid 2x2 --names "bucket,stool,ladle,lantern"
Animated sprite (ref → pose → video → slice → loop → rembg)
- Reference (image, 1:1, solid BG color per rembg.md)
- Pose frame (image +
--imageref, prompt = the action pose) - Video (pose frame as first_frame):
python3 "$SKILL_DIR/tools/asset_gen.py" video \
--prompt "walking to the right, smooth walk cycle, solid dark-green background" \
--image assets/img/knight_walk_pose.png \
--video-model seedance-2.0-mini --duration 4 -o assets/video/knight_walk.mp4
- Frames:
ffmpeg -i knight_walk.mp4 -vsync 0 frames/%04d.png - Loop trim (cycles only):
python3 .../tools/find_loop_frame.py frames/ - Batch rembg:
python3 .../tools/rembg_matting.py --batch frames/ -o assets/img/knight_walk/
A 4s mini video = ~2.4¢; a full walk cycle (ref 7¢ + pose 7¢ + video 2.4¢) ≈ 17¢.
Set budget
python3 "$SKILL_DIR/tools/asset_gen.py" set_budget 500
Only call when the user explicitly provides a budget. Shared assets/budget.json (the 3D skill records into the same file).
Output format
JSON to stdout. Cent-priced routes return cost_cents; Meshy returns credits,
task_id, and paths for multi-view output. Progress/API noise goes to stderr:
_log=$(mktemp)
result=$(python3 .../asset_gen.py image --prompt "..." -o p.png 2>"$_log") || tail -20 "$_log"
Image Resolution
Use full generation resolution; downscale only to hit game PPU targets.
1Kdefault: textures, sprites, refs2K: HQ objects, backgrounds, title screens4K(gemini pro/lite, wan pro): large maps, panoramas
Small sprites problem
1024px downscaled to 64px goes muddy. Mitigations: design at 128px+; generate kits (more px per object); prompt bold simple forms (thick outlines, flat colors) that survive downscale.
What to Generate — Cheatsheet
For transparency, read rembg.md first (BG color strategy).
- Background/scenic (2-10¢): flash-lite for simple; flash/pro
--size 2K --aspect-ratio 16:9for precise layout. No post-processing. - Texture (2-3¢): flash-lite. "Top-down view, uniform lighting, no shadows, seamless tileable."
- Single prop/sprite: flash (precise) or flash-lite (cheap); solid BG color → rembg.
- Character design (7¢): flash 1K; variants via
--imageref (prompt only the CHANGE). - Spicy/nudity content: wan-2.7 family via wavespeed only; same composition rules apply.
- 3D model reference → then hand off to the godot-asset-gen-3d skill: "3/4 front elevated camera angle, solid white background, matte finish, single centered subject, opaque glass."
Visual Pitfalls
- Direction/orientation: generators can't do left/right reliably — generate ONE facing, flip at runtime.
- Video size consistency: resize 1024px stills DOWN to video frame size before rembg (
magick input.png -resize 720x720 -filter Lanczos out.png). - Playback fps: video frames are ~24fps; drive playback at
1.0/24.0, don't restart the loop on input jitter. - Image-to-image prompting: with
--image, don't re-describe the subject — prompt only what CHANGES. - Generate multiple images in parallel via multiple Bash calls in one message.
- Review PNGs before building on them (bad ref poisons every downstream step).