Game assets with fal skill
Generate game assets with fal (fal.ai) through the fal MCP server, the `um fal` CLI (REST) or `fal api`.
by rehan-remade·MIT license·★ 1,016 Stars on the repo·GitHub ↗
- Download the ZIP below (don't unzip it).
- In Claude.ai, open Settings › Capabilities.
- Under Skills, click Upload skill and pick the ZIP.
- Turn the skill on, then ask Claude to use it.
Checked ·commit 15d6f9d
Files of Game assets with fal
rehan-remade/
Shared references2SKILL.md reads these from elsewhere in the repo. Not in the ZIP.
Get them on GitHub ↗Show the full text112 lines
Game assets with fal
fal runs hundreds of generative models behind one API key. Use it whenever the mod needs something that doesn't exist yet: a weapon sprite, a boss, a unit rendered from 16 angles, a tileable floor, a laser sound, boss music, a voiced line.
Setup (check once per session)
Key.
FAL_KEYmust be set (create one at https://fal.ai/dashboard/keys).um falalso reads it from a.envfile (FAL_KEY=...) in the working folder. Never write the key into mod files;um publish checkflags leaked keys.MCP. fal's hosted MCP server is
https://mcp.fal.ai/mcpwith headerAuthorization: Bearer $FAL_KEY. The repo pre-configures it for each agent:- Claude Code:
.mcp.json - Codex:
.codex/config.toml - Cursor:
.cursor/mcp.json - VS Code/Copilot:
.vscode/mcp.json - Gemini CLI:
gemini-extension.json
To add it by hand:
- Claude Code:
claude mcp add --transport http fal https://mcp.fal.ai/mcp --header "Authorization: Bearer $FAL_KEY" - Codex (
~/.codex/config.toml):[mcp_servers.fal]withurl = "https://mcp.fal.ai/mcp"andbearer_token_env_var = "FAL_KEY" - anything else: point its MCP config at the URL and header above.
MCP tools:
search_models,recommend_model,get_model_schema,get_pricing,run_model,submit_job/check_job/get_job_result,upload_file,search_docs.
- Claude Code:
CLI alternatives:
pip install falgivesfal api <endpoint> key=value key:=json; the genmedia CLI (genmedia run ... --json --download) is agent-friendly too.
Which interface
- Discovery (what's the best model for X right now, its inputs, its price): fal MCP
recommend_model/search_models/get_model_schema/get_pricing, orum fal search,um fal schema <endpoint>,um fal price <endpoint>. The catalog changes weekly. The defaults below were current in September 2026; check before a big batch. - Anything that must land on disk (every game asset):
um fal <recipe>. It uploads local inputs, queues, polls, downloads every output file, and appends the endpoint, inputs, seed and request id to<out>/fal_manifest.jsonl, so every asset can be traced and regenerated. - Quick look or one-off where a URL is enough: MCP
run_model.
Recipes (um fal <recipe> --help for options; --model overrides the endpoint; --set k=v passes extra inputs)
| Asset | Command | Default endpoint |
|---|---|---|
| Sprite / icon, transparent background | um fal sprite "<subject, view, style>" --name x |
openai/gpt-image-2 (background=transparent) |
| Concept art, key art, backgrounds | um fal image "<prompt>" --aspect 16:9 |
fal-ai/nano-banana-2 |
| Consistent variants, extra frames, recolors, same character new pose | um fal edit "<change>" --ref base.png |
fal-ai/nano-banana-2/edit |
| Background removal | um fal rmbg in.png |
fal-ai/birefnet/v2 |
| Clean pixel art from any image | um fal pixelate in.png --colors 24 |
fal-ai/image2pixel |
| Upscale | um fal upscale in.png --factor 2 |
fal-ai/seedvr/upscale/image |
| Seamless tiling texture | um fal texture "mossy cobblestone" |
fal-ai/z-image/turbo/tiling |
| PBR maps (basecolor, normal, roughness, metalness, height) | um fal pbr "rusted sheet metal" |
fal-ai/patina/material |
| Image → textured 3D model (GLB) | um fal model3d concept.png [--engine trellis2|hunyuan|tripo|meshy] |
fal-ai/trellis-2 |
| Auto-rig a humanoid, optional animations | um fal rig character.glb --animate |
fal-ai/meshy/rigging |
| Sound effect | um fal sfx "plasma rifle shot, punchy" --seconds 1.2 |
fal-ai/elevenlabs/sound-effects/v2 |
| Music | um fal music "tense boss battle, chiptune, 150 bpm" --seconds 90 |
elevenlabs/music/v2.5 |
| Voice line | um fal voice "You dare challenge me?" --voice-id Adam |
fal-ai/elevenlabs/tts/eleven-v3 |
| Trailer / cutscene clip | um fal video still.png "camera orbits the boss" |
bytedance/seedance-2.5/image-to-video |
| Anything else | um fal run <endpoint> key=value key:=json [email protected] |
any |
Other useful endpoints:
- 3D:
tripo3d/tripo/remeshandfal-ai/meshy/v5/remesh(low-poly, game-ready),fal-ai/trellis-2/retexture. - Motion:
fal-ai/hunyuan-motion(text → motion). - Icons:
fal-ai/recraft/v4.1/text-to-vector(SVG icons). - Video cutouts:
pixelcut/video-background-removal. - Music:
google/lyria-3.5. - Voice:
fal-ai/minimax/speech-2.8-hd.
Prompting game art that fits the game
- Look at the game's own assets first: pixel size, outline, palette, perspective, facing, how busy they are. Put that into a reusable style suffix. For Terraria: "16-bit pixel art game sprite in the style of Terraria, crisp dark outline, limited palette, centered, plain flat white background, no shadow, no text".
- Describe the view and orientation explicitly: "perfectly horizontal side view with the muzzle pointing right" for held weapons, "seen from the side facing left" for enemies, "pointing straight down" for a falling bomb. Engines have conventions (Terraria items point right, NPCs face left) and fixing orientation afterwards costs quality.
- Backgrounds: transparent (gpt-image-2) or a flat colour that
um sprite cutoutcan flood-fill. Avoid gradients, scenery and ground shadows. If a soft shadow sneaks in, use--grey/--keep-topin cutout. - Player / team colour: ask for "bright saturated blue accents" on the parts that should take the
player's colour, then
um sprite team-mask --hue blueturns them into a mask. - Consistency across a set: generate one hero image, then derive the rest with the edit endpoint and the
hero as
--ref("same robot, now firing, muzzle flash"). Don't ask one prompt for a whole sprite sheet; grids come out uneven. - Many angles or frames of the same object: go 3D. Take the concept, run
um fal model3d, thenum render3dfrom the game's camera (asset-pipeline skill). That's how the AoE2 robotaxi got 16 consistent headings × 5 animations. - No text or logos in art unless wanted: models love to add them.
Audio for engines
- The SFX and music endpoints return MP3. Convert to what the engine wants:
ffmpeg -i x.mp3 -ar 44100 x.wav(XNA/tModLoader, most engines);ffmpeg -i x.mp3 -c:a libvorbis -q:a 5 x.ogg(Minecraft, Godot, Unity);- trim silence first:
-af silenceremove=start_periods=1:start_threshold=-50dB.
- Loops:
um fal sfx ... --loop, or ask the music model for a loopable track and crossfade the ends. - Keep SFX short (0.2-2 s) and normalize loudness (
-af loudnorm=I=-16) so they sit with the game's own sounds.
Cost and etiquette
- Price the expensive stuff: before batching 3D, video or long music, check the price
(
um fal price <endpoint>/ MCPget_pricing). For more than about 20 generations or anything video-sized, tell the user the rough cost first. - Iterate cheap: use low quality or resolution while exploring (
--quality low,--res 0.5K), then re-run the winners at full quality with the same prompt (and seed where supported). - Reproducibility: keep
fal_manifest.jsonlwith the assets; it records prompts, seeds and request ids. - Credits: in the mod's README, credit that assets were generated with fal and name the models. Check a model's license page for commercial use.
| 1 | |
| 2 | name fal-assets |
| 3 | description Generate game assets with fal (fal.ai) through the fal MCP server, the `um fal` CLI (REST) or `fal api`. Covers sprites and icons with transparent backgrounds, consistent variants and animation frames, pixel art, seamless textures, PBR material maps, image-to-3D models, remeshing, auto-rigging, sound effects, music, voice lines, and trailer or cutscene video. Use whenever a mod needs new art, audio or 3D models, or the user mentions fal, generating sprites, textures, models, SFX or music for a game. |
| 4 | |
| 5 | |
| 6 | # Game assets with fal |
| 7 | |
| 8 | fal runs hundreds of generative models behind one API key. Use it whenever the mod needs something that |
| 9 | doesn't exist yet: a weapon sprite, a boss, a unit rendered from 16 angles, a tileable floor, a laser sound, |
| 10 | boss music, a voiced line. |
| 11 | |
| 12 | ## Setup (check once per session) |
| 13 | **Key.** `FAL_KEY` must be set (create one at https://fal.ai/dashboard/keys). `um fal` also reads it from |
| 14 | a `.env` file (`FAL_KEY=...`) in the working folder. Never write the key into mod files; `um publish check` |
| 15 | flags leaked keys. |
| 16 | **MCP.** fal's hosted MCP server is `https://mcp.fal.ai/mcp` with header `Authorization: Bearer $FAL_KEY`. |
| 17 | The repo pre-configures it for each agent: |
| 18 | Claude Code: `.mcp.json` |
| 19 | Codex: `.codex/config.toml` |
| 20 | Cursor: `.cursor/mcp.json` |
| 21 | VS Code/Copilot: `.vscode/mcp.json` |
| 22 | Gemini CLI: `gemini-extension.json` |
| 23 | |
| 24 | To add it by hand: |
| 25 | Claude Code: `claude mcp add --transport http fal https://mcp.fal.ai/mcp --header "Authorization: Bearer $FAL_KEY"` |
| 26 | Codex (`~/.codex/config.toml`): `[mcp_servers.fal]` with `url = "https://mcp.fal.ai/mcp"` and |
| 27 | `bearer_token_env_var = "FAL_KEY"` |
| 28 | anything else: point its MCP config at the URL and header above. |
| 29 | MCP tools: `search_models`, `recommend_model`, `get_model_schema`, `get_pricing`, `run_model`, |
| 30 | `submit_job`/`check_job`/`get_job_result`, `upload_file`, `search_docs`. |
| 31 | **CLI alternatives:** `pip install fal` gives `fal api <endpoint> key=value key:=json`; the genmedia CLI |
| 32 | (`genmedia run ... --json --download`) is agent-friendly too. |
| 33 | |
| 34 | ## Which interface |
| 35 | **Discovery** (what's the best model for X right now, its inputs, its price): fal MCP |
| 36 | `recommend_model` / `search_models` / `get_model_schema` / `get_pricing`, or `um fal search`, |
| 37 | `um fal schema <endpoint>`, `um fal price <endpoint>`. The catalog changes weekly. The defaults below were |
| 38 | current in September 2026; check before a big batch. |
| 39 | **Anything that must land on disk** (every game asset): `um fal <recipe>`. It uploads local inputs, |
| 40 | queues, polls, downloads every output file, and appends the endpoint, inputs, seed and request id to |
| 41 | `<out>/fal_manifest.jsonl`, so every asset can be traced and regenerated. |
| 42 | **Quick look or one-off** where a URL is enough: MCP `run_model`. |
| 43 | |
| 44 | ## Recipes (`um fal <recipe> --help` for options; `--model` overrides the endpoint; `--set k=v` passes extra inputs) |
| 45 | |
| 46 | | Asset | Command | Default endpoint | |
| 47 | |---|---|---| |
| 48 | | Sprite / icon, transparent background | `um fal sprite "<subject, view, style>" --name x` | `openai/gpt-image-2` (`background=transparent`) | |
| 49 | | Concept art, key art, backgrounds | `um fal image "<prompt>" --aspect 16:9` | `fal-ai/nano-banana-2` | |
| 50 | | Consistent variants, extra frames, recolors, same character new pose | `um fal edit "<change>" --ref base.png` | `fal-ai/nano-banana-2/edit` | |
| 51 | | Background removal | `um fal rmbg in.png` | `fal-ai/birefnet/v2` | |
| 52 | | Clean pixel art from any image | `um fal pixelate in.png --colors 24` | `fal-ai/image2pixel` | |
| 53 | | Upscale | `um fal upscale in.png --factor 2` | `fal-ai/seedvr/upscale/image` | |
| 54 | | Seamless tiling texture | `um fal texture "mossy cobblestone"` | `fal-ai/z-image/turbo/tiling` | |
| 55 | | PBR maps (basecolor, normal, roughness, metalness, height) | `um fal pbr "rusted sheet metal"` | `fal-ai/patina/material` | |
| 56 | | Image → textured 3D model (GLB) | `um fal model3d concept.png [--engine trellis2\|hunyuan\|tripo\|meshy]` | `fal-ai/trellis-2` | |
| 57 | | Auto-rig a humanoid, optional animations | `um fal rig character.glb --animate` | `fal-ai/meshy/rigging` | |
| 58 | | Sound effect | `um fal sfx "plasma rifle shot, punchy" --seconds 1.2` | `fal-ai/elevenlabs/sound-effects/v2` | |
| 59 | | Music | `um fal music "tense boss battle, chiptune, 150 bpm" --seconds 90` | `elevenlabs/music/v2.5` | |
| 60 | | Voice line | `um fal voice "You dare challenge me?" --voice-id Adam` | `fal-ai/elevenlabs/tts/eleven-v3` | |
| 61 | | Trailer / cutscene clip | `um fal video still.png "camera orbits the boss"` | `bytedance/seedance-2.5/image-to-video` | |
| 62 | | Anything else | `um fal run <endpoint> key=value key:=json [email protected]` | any | |
| 63 | |
| 64 | Other useful endpoints: |
| 65 | 3D: `tripo3d/tripo/remesh` and `fal-ai/meshy/v5/remesh` (low-poly, game-ready), `fal-ai/trellis-2/retexture`. |
| 66 | Motion: `fal-ai/hunyuan-motion` (text → motion). |
| 67 | Icons: `fal-ai/recraft/v4.1/text-to-vector` (SVG icons). |
| 68 | Video cutouts: `pixelcut/video-background-removal`. |
| 69 | Music: `google/lyria-3.5`. |
| 70 | Voice: `fal-ai/minimax/speech-2.8-hd`. |
| 71 | |
| 72 | ## Prompting game art that fits the game |
| 73 | **Look at the game's own assets first:** pixel size, outline, palette, perspective, facing, how busy they |
| 74 | are. Put that into a reusable style suffix. For Terraria: *"16-bit pixel art game sprite in the style of |
| 75 | Terraria, crisp dark outline, limited palette, centered, plain flat white background, no shadow, no |
| 76 | text"*. |
| 77 | **Describe the view and orientation explicitly:** "perfectly horizontal side view with the muzzle pointing |
| 78 | right" for held weapons, "seen from the side facing left" for enemies, "pointing straight down" for a |
| 79 | falling bomb. Engines have conventions (Terraria items point right, NPCs face left) and fixing |
| 80 | orientation afterwards costs quality. |
| 81 | **Backgrounds:** transparent (gpt-image-2) or a flat colour that `um sprite cutout` can flood-fill. |
| 82 | Avoid gradients, scenery and ground shadows. If a soft shadow sneaks in, use `--grey` / `--keep-top` |
| 83 | in cutout. |
| 84 | **Player / team colour:** ask for "bright saturated blue accents" on the parts that should take the |
| 85 | player's colour, then `um sprite team-mask --hue blue` turns them into a mask. |
| 86 | **Consistency across a set:** generate one hero image, then derive the rest with the edit endpoint and the |
| 87 | hero as `--ref` ("same robot, now firing, muzzle flash"). Don't ask one prompt for a whole sprite sheet; |
| 88 | grids come out uneven. |
| 89 | **Many angles or frames of the same object:** go 3D. Take the concept, run `um fal model3d`, then |
| 90 | `um render3d` from the game's camera (asset-pipeline skill). That's how the AoE2 robotaxi got 16 |
| 91 | consistent headings × 5 animations. |
| 92 | **No text or logos** in art unless wanted: models love to add them. |
| 93 | |
| 94 | ## Audio for engines |
| 95 | The SFX and music endpoints return MP3. Convert to what the engine wants: |
| 96 | `ffmpeg -i x.mp3 -ar 44100 x.wav` (XNA/tModLoader, most engines); |
| 97 | `ffmpeg -i x.mp3 -c:a libvorbis -q:a 5 x.ogg` (Minecraft, Godot, Unity); |
| 98 | trim silence first: `-af silenceremove=start_periods=1:start_threshold=-50dB`. |
| 99 | Loops: `um fal sfx ... --loop`, or ask the music model for a loopable track and crossfade the ends. |
| 100 | Keep SFX short (0.2-2 s) and normalize loudness (`-af loudnorm=I=-16`) so they sit with the game's own |
| 101 | sounds. |
| 102 | |
| 103 | ## Cost and etiquette |
| 104 | **Price the expensive stuff:** before batching 3D, video or long music, check the price |
| 105 | (`um fal price <endpoint>` / MCP `get_pricing`). For more than about 20 generations or anything |
| 106 | video-sized, tell the user the rough cost first. |
| 107 | **Iterate cheap:** use low quality or resolution while exploring (`--quality low`, `--res 0.5K`), then |
| 108 | re-run the winners at full quality with the same prompt (and seed where supported). |
| 109 | **Reproducibility:** keep `fal_manifest.jsonl` with the assets; it records prompts, seeds and request ids. |
| 110 | **Credits:** in the mod's README, credit that assets were generated with fal and name the models. Check a |
| 111 | model's license page for commercial use. |
| 112 |
Discussion
Alternatives
Browse more free Claude skills or everything in Development.