5,468,402 AI resources indexedWorking toward the world’s largest AI resource index.

PDF

Asset Gen

Generate game assets, locally and free by default with godogen_assets: images and transparent PNGs (Qwen-Image), textured GLB models (TRELLIS.2), rigged humanoids with generated moves and lip-synced speech, sound effects and voice lines. Paid APIs cover what the local tools can't make — Gemini / xAI Grok images, animated sprites from video, Tripo 3D, Gemini TTS voice acting, Lyria music. Use whenever a game needs generated art or audio.

Installable skillMITBy htdtUpdated Nov 6, 2026
INTENDED FORInstall in a listed agent.

instructions.md

---
name: asset-gen
display_name: Asset Generator
short_description: Generate game images, 3D models, animated characters, sound effects, voice and music
default_prompt: "Use ${ASSET_SKILL_COMMAND} to generate images, 3D models, characters, or audio for this game."
allow_implicit_invocation: true
description: |
  Generate game assets, locally and free by default with godogen_assets: images and transparent PNGs (Qwen-Image), textured GLB models (TRELLIS.2), rigged humanoids with generated moves and lip-synced speech, sound effects and voice lines. Paid APIs cover what the local tools can't make — Gemini / xAI Grok images, animated sprites from video, Tripo 3D, Gemini TTS voice acting, Lyria music. Use whenever a game needs generated art or audio.
---

# Asset Generator

Assets come from [godogen_assets](https://github.com/htdt/godogen_assets): local generators on this machine's GPU, one command per task, free. Its checkout here is `${GODOGEN_ASSETS}`, and its docs are the reference; this page is the TL;DR plus what the game needs on top. Read `${GODOGEN_ASSETS}/README.md` once (conventions, a character start to finish, checking results), and a part's README up to `How it works` before first using its tool.

| Command | Makes | README in the checkout |
|---------|-------|------------------------|
| `qwen-image` | PNG from text; `rgba`: real transparency; `edit -i ref.png`: image-to-image | `image/` |
| `gen3d` | textured GLB from an image | `mesh/` |
| `mia-rig` | Mixamo-rigged humanoid from a GLB | `rig/` |
| `add-moves`, `gen-moves` | idle/walk/run/jump onto a rig; custom moves from text prompts | `motion/` |
| `grip-prop` | a prop made holdable; `add-moves --hold` puts it in a character's hand | `motion/` |
| `lipsync` | speaking mouth + lip-synced clip from a voice line | `lipsync/` |
| `stable-audio` | sound effects, seamless ambience loops | `sfx/` |
| `qwen-tts` | voice lines from a description, or cloned from a reference line | `voice/` |

A character: `qwen-image rgba` (T-pose) → `gen3d` → `mia-rig --fingers --anim none` → `add-moves`, with `gen-moves` for custom moves and `lipsync` for speech. Props stop after `gen3d`; one a character holds goes on through `grip-prop` and `add-moves --hold`, never by an offset tuned in the engine.

- **Always pass `-o`** into the project; without it, results land in the godogen_assets checkout.
- **One GPU job at a time, minutes per call.** Run GPU tools as one sequential batch with a long timeout or in the background, never as parallel calls.
- **Game budget.** `gen3d` defaults to ~500k triangles and 2048² textures; pass `--faces` / `--tex` (30000 / 1024 for a character).
- **Style families.** Generate one hero asset, derive the rest with `qwen-image edit -i hero.png`, prompting only what changes.
- **Small sprites.** A 1024px image downscaled to 64px looks muddy: design display sizes ≥128px, prompt bold flat forms, or generate a kit (several objects in one image) and slice it with `python3 ${ASSET_GEN_SKILL_DIR}/tools/grid_slice.py kit.png -o out/ --grid 2x2 --names "a,b,c,d"`.
- **Direction.** Generators get left/right and facing wrong; generate one direction and flip at runtime.
- **Audio format.** Every tool picks it from the `-o` extension. Bevy's default features decode only Ogg Vorbis, so write `.ogg` for Bevy.
- **Review before building on it.** Look at every PNG. You can't look at a GLB or hear a WAV: render GLBs (`${GODOGEN_ASSETS}/README.md`, Checking results) and read audio as a spectrogram (`${GODOGEN_ASSETS}/sfx/README.md`).

Moves that drive gameplay — root-motion locomotion, attacks, state machines, anything held, ridden or aimed, characters that touch each other: read `${ASSET_GEN_SKILL_DIR}/motion.md`.

## Blender

Some 3D is better built than generated. A `bpy` script run headless (`blender -b -P make_turret.py`, exporting with `bpy.ops.export_scene.gltf`) is often the better path when:

- the shape must be exact or articulated: a vehicle whose wheels turn, a door on its hinge, a turret that aims, kit pieces that snap together;
- a generated GLB needs work: split into parts, new pivots, decimation, several merged into one;
- the animation is outside the humanoid tools: mechanical parts, a creature of a few bones, keyframed or procedural clips.

Check what it writes like any GLB. Without `blender` on `PATH`, `asset-blender script.py -- args` runs the script in godogen_assets' Blender (its `print` goes to stderr).

## Paid APIs

`${ASSET_GEN_SKILL_DIR}/api.md` covers Gemini / xAI Grok images, animated sprites from Grok video, Tripo 3D, Gemini TTS and Lyria music. Read it only when an asset needs one:

- godogen_assets isn't on this machine (its checkout above reads `none`), or a command answers `not installed` — that part isn't set up;
- the local tools don't make it: frame-by-frame animated 2D sprites, music, one character voice acting many emotions, vocal barks, two-speaker dialogue, a language `qwen-tts` lacks, a rig for a non-humanoid;
- a local result stays wrong after rewording and a few seeds.

Paid calls cost real money: confirm with the user before the first one.

## Asset manifest (in README.md)

Track every generated asset in `README.md` with an **in-game Size** column — without it, coders consistently scale assets wrong. `gen3d` models come out 1.0 tall with no real scale, so this column is where their size is decided:

- 3D models: meters, e.g. `4m long`, `1.8m tall`, `0.3m`
- Textures: tile size, e.g. `2m tile`
- Backgrounds: pixel size + behavior, e.g. `1920x1080, fullscreen`
- Sprites: display pixels, e.g. `128x128 px`
- Audio: length + use, e.g. `1.2 s one-shot`, `8 bars / 22.6 s loop`

| Name | Description | Size | Path | Cost |
|------|-------------|------|------|------|
| crate | wooden supply crate | 0.8m | ${RUNTIME_ASSET_DIR}/glb/crate.glb | local |
| theme | village shop music | 8 bars / 22.6 s loop | ${RUNTIME_ASSET_DIR}/audio/shop_loop.ogg | 4¢ |

Discuss this resource

Platform guidance

Includes the original skill and its supporting files. Review scripts and install any external dependencies before use.