mcpField
A
asset-gen

asset-gen

github.com/htdtCreative & media7.2k67 installsUpdated 2w ago
Repository

About asset-gen

A workflow skill for generating game assets with local GPU tools from godogen_assets. It covers image, 3D, rigging, motion, voice, and sound generation, along with output review and asset tracking.

Key features

  1. 01Text-to-image and image editing
  2. 02Image-to-textured-GLB generation
  3. 03Humanoid rigging and motion
  4. 04Voice lines and lip-sync clips
  5. 05Sound effects and ambience loops
  6. 06Asset review and manifest guidance

Use cases

  1. 01Create a character from concept image to animation
  2. 02Generate props and prepare them for characters to hold
  3. 03Produce game voice lines and sound effects

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/htdt/godogen --skill asset-gen

After installing, type/asset-genin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

api.md
motion.md
rembg.md
tools/
asset_gen.py
find_loop_frame.py
grid_slice.py
loop_audio.py
rembg_matting.py
requirements.txt

Details

From the project README

Asset Generator

Assets come from 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.

CommandMakesREADME in the checkout
qwen-imagePNG from text; rgba: real transparency; edit -i ref.png: image-to-imageimage/
gen3dtextured GLB from an imagemesh/
mia-rigMixamo-rigged humanoid from a GLBrig/
add-moves, gen-movesidle/walk/run/jump onto a rig; custom moves from text promptsmotion/
grip-propa prop made holdable; add-moves --hold puts it in a character's handmotion/
lipsyncspeaking mouth + lip-synced clip from a voice linelipsync/
stable-audiosound effects, seamless ambience loopssfx/
qwen-ttsvoice lines from a description, or cloned from a reference linevoice/

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
NameDescriptionSizePathCost
cratewooden supply crate0.8m${RUNTIME_ASSET_DIR}/glb/crate.glblocal
themevillage shop music8 bars / 22.6 s loop${RUNTIME_ASSET_DIR}/audio/shop_loop.ogg4¢

Comments

Markdown supported