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