Game Development Matrix (S4 — v2 capability-based)
Scenario S4. All asset-creation capabilities covered via the S3/S5 stacks; the structural gap is distribution (Steam/itch/console stores) and alternative engines (Unity/Unreal).
Schema: docs/cli-matrix/matrix_registry.schema.md. Matrix plan: docs/cli-matrix/cli-matrix-plan.md.
Install
cli-hub matrix install game-development
cli-hub matrix info game-development
cli-hub matrix preflight game-development --json
Provider selection constraints
- Use preflight as an availability report, not as a provider selector.
- Treat provider order as documentation order only.
- Choose from user requirements, output quality bar, offline needs, credential state, install cost, and provider notes.
- Escalate to paid or metered APIs only when credentials are already present or the user explicitly consents.
Preflight
Run cli-hub matrix preflight game-development --json first. Use the manual block below for extra probes or older cli-hub versions.
cli-hub list --json
python - <<'PY'
import importlib.util
for m in ("pygame","arcade","panda3d","ursina","trimesh","pygltflib","PIL",
"pydub","librosa","music21","mido","abjad","diffusers","replicate",
"posthog","gymnasium"):
print(m, importlib.util.find_spec(m) is not None)
PY
for b in godot blender aseprite butler steamcmd ffmpeg pyinstaller; do
command -v "$b" >/dev/null && echo "$b: yes" || echo "$b: no"
done
for e in STEAM_USERNAME STEAM_PASSWORD ITCH_API_KEY EPIC_DEV_TOKEN \
PLAY_CONSOLE_KEY APP_STORE_CONNECT_KEY \
REPLICATE_API_TOKEN OPENAI_API_KEY STABILITY_API_KEY IDEOGRAM_API_KEY \
POSTHOG_API_KEY GAMEANALYTICS_KEY PLAYFAB_TITLE_KEY SENTRY_DSN; do
[ -n "${!e}" ] && echo "$e: set" || echo "$e: unset"
done
Suggest-to-user template
To enable <capability> via <provider>, please set <ENV_VAR>.
Cost: <cost notes>
Quality: <quality tier>
Reply 'skip' to fall back to <next provider>.
Example: To publish to Steam, please install steamcmd and set STEAM_USERNAME + STEAM_PASSWORD (use a dedicated build account to limit credential risk). Cost: one-time $100 Steamworks fee. Reply 'skip' to fall back to itch.io via butler which only needs ITCH_API_KEY.
Capabilities
game.engine — engine authoring / project manipulation
| Provider |
Kind |
Requires |
Cost |
Quality |
Offline |
cli-anything-godot |
harness-cli |
Godot installed |
free |
sota |
yes |
pygame |
python |
pkg |
free |
good |
yes |
arcade |
python |
pkg |
free |
good |
yes |
panda3d |
python |
pkg |
free |
high |
yes |
ursina |
python |
pkg |
free |
good |
yes |
| Unity / Unreal |
— |
— |
— |
— |
— |
asset.3d — 3D game assets
See S3 matrix. Primary: cli-anything-blender, cli-anything-freecad, trimesh, pygltflib.
asset.2d — sprites, tiles, UI art
| Provider |
Kind |
Requires |
Cost |
Quality |
Offline |
cli-anything-krita |
harness-cli |
Krita installed |
free |
sota |
yes |
cli-anything-inkscape |
harness-cli |
Inkscape installed |
free |
sota |
yes |
Pillow |
python |
pkg |
free |
good |
yes |
aseprite |
native |
binary (commercial) |
paid |
sota |
yes |
pyxel |
python |
pkg |
free |
good |
yes |
| OpenAI GPT-Image-1 |
api |
OPENAI_API_KEY |
metered |
sota |
no |
| Scenario GG |
api |
SCENARIO_API_KEY |
paid |
sota |
no |
| Leonardo AI |
api |
LEONARDO_API_KEY |
paid |
high |
no |
asset.audio — sfx and gameplay audio
| Provider |
Kind |
Requires |
Cost |
Quality |
Offline |
cli-anything-audacity |
harness-cli |
Audacity |
free |
high |
yes |
pydub / librosa / soundfile |
python |
pkg |
free |
good |
yes |
sfxr / jsfxr |
native |
binary |
free |
good |
yes |
| ElevenLabs SFX |
api |
ELEVENLABS_API_KEY |
paid |
sota |
no |
| Mubert |
api |
MUBERT_API_KEY |
metered |
high |
no |
asset.notation — music notation / score export
| Provider |
Kind |
Requires |
Cost |
Quality |
Offline |
cli-anything-musescore |
harness-cli |
MuseScore installed |
free |
sota |
yes |
music21 |
python |
pkg |
free |
high |
yes |
mido |
python |
pkg |
free |
good |
yes |
abjad |
python |
pkg |
free |
high |
yes |
ai.gen-asset — AI-generated art/audio for games
| Provider |
Kind |
Requires |
Cost |
Quality |
Offline |
cli-anything-comfyui |
harness-cli |
ComfyUI installed |
free |
high |
yes |
jimeng |
public-cli |
bin |
metered |
high |
no |
diffusers |
python |
pkg + weights |
free |
good |
yes |
replicate |
python |
REPLICATE_API_TOKEN |
metered |
high |
no |
| Scenario GG |
api |
SCENARIO_API_KEY |
paid |
sota |
no |
| Leonardo AI |
api |
LEONARDO_API_KEY |
paid |
high |
no |
| OpenAI GPT-Image-1 |
api |
OPENAI_API_KEY |
metered |
sota |
no |
| Stability |
api |
STABILITY_API_KEY |
metered |
high |
no |
playtest.agent — agent-driven play / testing
| Provider |
Kind |
Requires |
Cost |
Quality |
Offline |
cli-anything-slay-the-spire-ii |
harness-cli |
StS II + bridge mod |
free |
sota |
yes |
gymnasium envs |
python |
pkg |
free |
high |
yes |
Headless game + scripted input (e.g. Godot --headless with GUT) |
harness-cli |
Godot |
free |
good |
yes |
Distinctive capability — very few agent stacks can drive a live GUI game loop.
build.package — package a game binary / bundle
| Provider |
Kind |
Requires |
Cost |
Quality |
Offline |
cli-anything-godot (export presets) |
harness-cli |
Godot export templates |
free |
sota |
yes |
pyinstaller (pygame/arcade) |
python |
pkg |
free |
good |
yes |
butler (itch packager) |
native |
binary |
free |
high |
yes |
publish.store — upload a build to a store
| Provider |
Kind |
Requires |
Cost |
Quality |
Offline |
steamcmd |
native |
binary + Steam account + app ID |
paid (fee) |
sota |
no |
butler (itch.io) |
native |
binary + ITCH_API_KEY |
free |
high |
no |
| Epic Games Services |
api |
EPIC_DEV_TOKEN |
paid |
high |
no |
| Google Play Developer |
api |
PLAY_CONSOLE_KEY + service account |
paid |
high |
no |
| App Store Connect |
api |
APP_STORE_CONNECT_KEY |
paid |
high |
no |
Known gap — no harness-level abstraction; escalate via the suggest-to-user template with platform-specific preflight.
telemetry.ingest — gameplay analytics / crash reports
| Provider |
Kind |
Requires |
Cost |
Quality |
Offline |
sentry |
public-cli |
bin + SENTRY_DSN |
free-paid |
high |
no |
posthog |
python |
pkg + POSTHOG_API_KEY |
free-paid |
high |
no |
| GameAnalytics |
api |
GAMEANALYTICS_KEY |
free |
good |
no |
| Unity Analytics |
api |
Unity project token |
metered |
high |
no |
| PlayFab |
api |
PLAYFAB_TITLE_KEY |
metered |
high |
no |
Recipes
godot-jam-game — minimal end-to-end for a game jam.
Uses: game.engine, asset.2d, asset.audio, build.package, (optional publish.store).
agent-bot — train / evaluate an agent against an existing game.
Uses: playtest.agent, telemetry.ingest.
ai-indie-short — AI-generated art + simple engine loop.
Uses: ai.gen-asset, asset.2d, game.engine, asset.audio, build.package.
steam-release — ship to Steam with crash reporting.
Uses: build.package, publish.store, telemetry.ingest.
music-driven-game — composed score integrated with gameplay.
Uses: asset.notation, asset.audio, game.engine.
reality-to-game — photogrammetry asset → import → ship.
Uses: (S3 photogrammetry.reconstruct), asset.3d, game.engine, build.package.
Known gaps
publish.store — Steam/itch/console wrappers are native-only; escalate with explicit credentials.
game.engine for Unity/Unreal — only Godot harness exists.
telemetry.ingest — Sentry works; no first-party for GameAnalytics/PlayFab.
asset.notation — uniquely strong (MuseScore) but rarely used in practice; keep as a differentiator.
Agent guidance
- Start in Godot unless the user has explicitly asked for Unity/Unreal — it's the only engine we harness.
- Keep asset pipelines deterministic — re-runnable seeds for
ai.gen-asset, versioned source .aseprite/.krita files, scriptable Blender bakes.
playtest.agent needs a bridge. Most commercial games lack API access; agents should ask the user if modding is permitted before attempting.
- Version builds immediately.
build.package output goes into builds/<version>/ with a manifest so publish.store has deterministic uploads.
- Don't auto-publish.
publish.store must always be gated behind explicit user confirmation — uploading a broken build is expensive to roll back.
1---2name: cli-hub-matrix-game-development3description: Capability-based multi-tool matrix for game development: engine, 3D/2D/audio assets, AI-generated assets, agent playtesting, packaging, store publishing, and telemetry.4---5
6# Game Development Matrix (S4 — v2 capability-based)
7
8Scenario **S4**. All asset-creation capabilities covered via the S3/S5 stacks; the structural gap is **distribution** (Steam/itch/console stores) and alternative engines (Unity/Unreal).
9
10Schema: [`docs/cli-matrix/matrix_registry.schema.md`](../../docs/cli-matrix/matrix_registry.schema.md). Matrix plan: [`docs/cli-matrix/cli-matrix-plan.md`](../../docs/cli-matrix/cli-matrix-plan.md).
11
12## Install
13
14```bash
15cli-hub matrix install game-development
16cli-hub matrix info game-development
17cli-hub matrix preflight game-development --json
18```
19
20---
21
22## Provider selection constraints
23
241. Use preflight as an availability report, not as a provider selector.
252. Treat provider order as documentation order only.
263. Choose from user requirements, output quality bar, offline needs, credential state, install cost, and provider notes.
274. Escalate to paid or metered APIs only when credentials are already present or the user explicitly consents.
28
29---
30
31## Preflight
32
33Run `cli-hub matrix preflight game-development --json` first. Use the manual block below for extra probes or older `cli-hub` versions.
34
35```bash
36cli-hub list --json
37python - <<'PY'
38import importlib.util
39for m in ("pygame","arcade","panda3d","ursina","trimesh","pygltflib","PIL",
40 "pydub","librosa","music21","mido","abjad","diffusers","replicate",
41 "posthog","gymnasium"):
42 print(m, importlib.util.find_spec(m) is not None)
43PY
44for b in godot blender aseprite butler steamcmd ffmpeg pyinstaller; do
45 command -v "$b" >/dev/null && echo "$b: yes" || echo "$b: no"
46done
47for e in STEAM_USERNAME STEAM_PASSWORD ITCH_API_KEY EPIC_DEV_TOKEN \
48 PLAY_CONSOLE_KEY APP_STORE_CONNECT_KEY \
49 REPLICATE_API_TOKEN OPENAI_API_KEY STABILITY_API_KEY IDEOGRAM_API_KEY \
50 POSTHOG_API_KEY GAMEANALYTICS_KEY PLAYFAB_TITLE_KEY SENTRY_DSN; do
51 [ -n "${!e}" ] && echo "$e: set" || echo "$e: unset"
52done
53```
54
55---
56
57## Suggest-to-user template
58
59```
60To enable <capability> via <provider>, please set <ENV_VAR>.
61 Cost: <cost notes>
62 Quality: <quality tier>
63Reply 'skip' to fall back to <next provider>.
64```
65
66Example: *To publish to Steam, please install `steamcmd` and set `STEAM_USERNAME` + `STEAM_PASSWORD` (use a dedicated build account to limit credential risk). Cost: one-time $100 Steamworks fee. Reply 'skip' to fall back to itch.io via `butler` which only needs `ITCH_API_KEY`.*
67
68---
69
70## Capabilities
71
72### `game.engine` — engine authoring / project manipulation
73
74| Provider | Kind | Requires | Cost | Quality | Offline |
75|---|---|---|---|---|---|
76| `cli-anything-godot` | harness-cli | Godot installed | free | sota | yes |
77| `pygame` | python | pkg | free | good | yes |
78| `arcade` | python | pkg | free | good | yes |
79| `panda3d` | python | pkg | free | high | yes |
80| `ursina` | python | pkg | free | good | yes |
81| Unity / Unreal | — | — | — | — | — |
82
83### `asset.3d` — 3D game assets
84
85See S3 matrix. Primary: `cli-anything-blender`, `cli-anything-freecad`, `trimesh`, `pygltflib`.
86
87### `asset.2d` — sprites, tiles, UI art
88
89| Provider | Kind | Requires | Cost | Quality | Offline |
90|---|---|---|---|---|---|
91| `cli-anything-krita` | harness-cli | Krita installed | free | sota | yes |
92| `cli-anything-inkscape` | harness-cli | Inkscape installed | free | sota | yes |
93| `Pillow` | python | pkg | free | good | yes |
94| `aseprite` | native | binary (commercial) | paid | sota | yes |
95| `pyxel` | python | pkg | free | good | yes |
96| OpenAI GPT-Image-1 | api | `OPENAI_API_KEY` | metered | sota | no |
97| Scenario GG | api | `SCENARIO_API_KEY` | paid | sota | no |
98| Leonardo AI | api | `LEONARDO_API_KEY` | paid | high | no |
99
100### `asset.audio` — sfx and gameplay audio
101
102| Provider | Kind | Requires | Cost | Quality | Offline |
103|---|---|---|---|---|---|
104| `cli-anything-audacity` | harness-cli | Audacity | free | high | yes |
105| `pydub` / `librosa` / `soundfile` | python | pkg | free | good | yes |
106| `sfxr` / `jsfxr` | native | binary | free | good | yes |
107| ElevenLabs SFX | api | `ELEVENLABS_API_KEY` | paid | sota | no |
108| Mubert | api | `MUBERT_API_KEY` | metered | high | no |
109
110### `asset.notation` — music notation / score export
111
112| Provider | Kind | Requires | Cost | Quality | Offline |
113|---|---|---|---|---|---|
114| `cli-anything-musescore` | harness-cli | MuseScore installed | free | sota | yes |
115| `music21` | python | pkg | free | high | yes |
116| `mido` | python | pkg | free | good | yes |
117| `abjad` | python | pkg | free | high | yes |
118
119### `ai.gen-asset` — AI-generated art/audio for games
120
121| Provider | Kind | Requires | Cost | Quality | Offline |
122|---|---|---|---|---|---|
123| `cli-anything-comfyui` | harness-cli | ComfyUI installed | free | high | yes |
124| `jimeng` | public-cli | bin | metered | high | no |
125| `diffusers` | python | pkg + weights | free | good | yes |
126| `replicate` | python | `REPLICATE_API_TOKEN` | metered | high | no |
127| Scenario GG | api | `SCENARIO_API_KEY` | paid | sota | no |
128| Leonardo AI | api | `LEONARDO_API_KEY` | paid | high | no |
129| OpenAI GPT-Image-1 | api | `OPENAI_API_KEY` | metered | sota | no |
130| Stability | api | `STABILITY_API_KEY` | metered | high | no |
131
132### `playtest.agent` — agent-driven play / testing
133
134| Provider | Kind | Requires | Cost | Quality | Offline |
135|---|---|---|---|---|---|
136| `cli-anything-slay-the-spire-ii` | harness-cli | StS II + bridge mod | free | sota | yes |
137| `gymnasium` envs | python | pkg | free | high | yes |
138| Headless game + scripted input (e.g. Godot `--headless` with GUT) | harness-cli | Godot | free | good | yes |
139
140Distinctive capability — very few agent stacks can drive a live GUI game loop.
141
142### `build.package` — package a game binary / bundle
143
144| Provider | Kind | Requires | Cost | Quality | Offline |
145|---|---|---|---|---|---|
146| `cli-anything-godot` (export presets) | harness-cli | Godot export templates | free | sota | yes |
147| `pyinstaller` (pygame/arcade) | python | pkg | free | good | yes |
148| `butler` (itch packager) | native | binary | free | high | yes |
149
150### `publish.store` — upload a build to a store
151
152| Provider | Kind | Requires | Cost | Quality | Offline |
153|---|---|---|---|---|---|
154| `steamcmd` | native | binary + Steam account + app ID | paid (fee) | sota | no |
155| `butler` (itch.io) | native | binary + `ITCH_API_KEY` | free | high | no |
156| Epic Games Services | api | `EPIC_DEV_TOKEN` | paid | high | no |
157| Google Play Developer | api | `PLAY_CONSOLE_KEY` + service account | paid | high | no |
158| App Store Connect | api | `APP_STORE_CONNECT_KEY` | paid | high | no |
159
160**Known gap** — no harness-level abstraction; escalate via the suggest-to-user template with platform-specific preflight.
161
162### `telemetry.ingest` — gameplay analytics / crash reports
163
164| Provider | Kind | Requires | Cost | Quality | Offline |
165|---|---|---|---|---|---|
166| `sentry` | public-cli | bin + `SENTRY_DSN` | free-paid | high | no |
167| `posthog` | python | pkg + `POSTHOG_API_KEY` | free-paid | high | no |
168| GameAnalytics | api | `GAMEANALYTICS_KEY` | free | good | no |
169| Unity Analytics | api | Unity project token | metered | high | no |
170| PlayFab | api | `PLAYFAB_TITLE_KEY` | metered | high | no |
171
172---
173
174## Recipes
175
176- **`godot-jam-game`** — minimal end-to-end for a game jam.
177 Uses: `game.engine`, `asset.2d`, `asset.audio`, `build.package`, (optional `publish.store`).
178
179- **`agent-bot`** — train / evaluate an agent against an existing game.
180 Uses: `playtest.agent`, `telemetry.ingest`.
181
182- **`ai-indie-short`** — AI-generated art + simple engine loop.
183 Uses: `ai.gen-asset`, `asset.2d`, `game.engine`, `asset.audio`, `build.package`.
184
185- **`steam-release`** — ship to Steam with crash reporting.
186 Uses: `build.package`, `publish.store`, `telemetry.ingest`.
187
188- **`music-driven-game`** — composed score integrated with gameplay.
189 Uses: `asset.notation`, `asset.audio`, `game.engine`.
190
191- **`reality-to-game`** — photogrammetry asset → import → ship.
192 Uses: (S3 `photogrammetry.reconstruct`), `asset.3d`, `game.engine`, `build.package`.
193
194---
195
196## Known gaps
197
198- **`publish.store`** — Steam/itch/console wrappers are native-only; escalate with explicit credentials.
199- **`game.engine` for Unity/Unreal** — only Godot harness exists.
200- **`telemetry.ingest`** — Sentry works; no first-party for GameAnalytics/PlayFab.
201- **`asset.notation`** — uniquely strong (MuseScore) but rarely used in practice; keep as a differentiator.
202
203---
204
205## Agent guidance
206
207- **Start in Godot** unless the user has explicitly asked for Unity/Unreal — it's the only engine we harness.
208- **Keep asset pipelines deterministic** — re-runnable seeds for `ai.gen-asset`, versioned source `.aseprite`/`.krita` files, scriptable Blender bakes.
209- **`playtest.agent` needs a bridge.** Most commercial games lack API access; agents should ask the user if modding is permitted before attempting.
210- **Version builds immediately.** `build.package` output goes into `builds/<version>/` with a manifest so `publish.store` has deterministic uploads.
211- **Don't auto-publish.** `publish.store` must always be gated behind explicit user confirmation — uploading a broken build is expensive to roll back.