@bitmagic/cli 0.1.65-dev.2 → 0.1.65-dev.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +137 -14
- package/assets/skills/trailer-craft.md +180 -0
- package/dist/assets/materials.d.ts +9 -0
- package/dist/assets/materials.js +10 -2
- package/dist/assets/materials.js.map +1 -1
- package/dist/cli.d.ts +9 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/character.d.ts +18 -0
- package/dist/commands/character.js +268 -0
- package/dist/commands/character.js.map +1 -0
- package/dist/commands/forge.d.ts +15 -0
- package/dist/commands/forge.js +143 -38
- package/dist/commands/forge.js.map +1 -1
- package/dist/commands/generate.d.ts +31 -13
- package/dist/commands/generate.js +48 -56
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/trailer.js +1 -1
- package/dist/commands/trailer.js.map +1 -1
- package/dist/editor/animation-preview-page.js +43 -1
- package/dist/editor/animation-preview-page.js.map +1 -1
- package/dist/editor/asset-detail-panel.d.ts +2 -2
- package/dist/editor/asset-detail-panel.js +21 -0
- package/dist/editor/asset-detail-panel.js.map +1 -1
- package/dist/editor/asset-viewer.js +31 -8
- package/dist/editor/asset-viewer.js.map +1 -1
- package/dist/editor/shell-page.js +63 -1
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/forge/edit-target.d.ts +30 -0
- package/dist/forge/edit-target.js +88 -0
- package/dist/forge/edit-target.js.map +1 -0
- package/dist/forge/prune-store.d.ts +46 -0
- package/dist/forge/prune-store.js +86 -0
- package/dist/forge/prune-store.js.map +1 -0
- package/dist/forge/remote-store.d.ts +36 -0
- package/dist/forge/remote-store.js +113 -0
- package/dist/forge/remote-store.js.map +1 -0
- package/dist/forge/run-pipeline.js +5 -1
- package/dist/forge/run-pipeline.js.map +1 -1
- package/dist/forge/stream.d.ts +5 -1
- package/dist/forge/stream.js +4 -0
- package/dist/forge/stream.js.map +1 -1
- package/dist/generate/character-body.d.ts +79 -0
- package/dist/generate/character-body.js +100 -0
- package/dist/generate/character-body.js.map +1 -0
- package/dist/mobile/asset-hosts.d.ts +7 -9
- package/dist/mobile/asset-hosts.js +7 -16
- package/dist/mobile/asset-hosts.js.map +1 -1
- package/dist/project/character-search.d.ts +30 -0
- package/dist/project/character-search.js +82 -0
- package/dist/project/character-search.js.map +1 -0
- package/dist/scaffold/asset-pipeline-skill-files.d.ts +38 -0
- package/dist/scaffold/asset-pipeline-skill-files.js +202 -0
- package/dist/scaffold/asset-pipeline-skill-files.js.map +1 -0
- package/dist/scaffold/blender-level-skill-files.js +3 -2
- package/dist/scaffold/blender-level-skill-files.js.map +1 -1
- package/dist/scaffold/project-files.js +16 -12
- package/dist/scaffold/project-files.js.map +1 -1
- package/dist/scaffold/project.js +4 -1
- package/dist/scaffold/project.js.map +1 -1
- package/dist/scaffold/skill-files.d.ts +32 -5
- package/dist/scaffold/skill-files.js +102 -63
- package/dist/scaffold/skill-files.js.map +1 -1
- package/dist/telemetry/creator-prompt.d.ts +18 -2
- package/dist/telemetry/creator-prompt.js +24 -3
- package/dist/telemetry/creator-prompt.js.map +1 -1
- package/dist/telemetry/report.js +31 -16
- package/dist/telemetry/report.js.map +1 -1
- package/package.json +4 -4
|
@@ -12,18 +12,16 @@
|
|
|
12
12
|
* that redirection: which hosts are ours to fetch on the browser's behalf, and the reversible path
|
|
13
13
|
* that carries one.
|
|
14
14
|
*
|
|
15
|
-
* The host
|
|
16
|
-
*
|
|
17
|
-
* `
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* more likely to be a creator's own endpoint than an asset we should be relaying.
|
|
15
|
+
* The host allowlist itself lives in `@bitmagic/asset-core` (`managed-hosts.ts`) and is
|
|
16
|
+
* re-exported here, because api-server needs the same answer when it decides whether a
|
|
17
|
+
* caller-supplied library `assetUrl` may be stored — and two copies of a security-relevant
|
|
18
|
+
* allowlist drift. `esm.sh` and everything else is deliberately left alone: it serves the import
|
|
19
|
+
* map's modules and already answers `*`.
|
|
21
20
|
*/
|
|
21
|
+
import { isManagedAssetHost, MANAGED_HOST_SUFFIXES } from '@bitmagic/asset-core';
|
|
22
|
+
export { isManagedAssetHost, MANAGED_HOST_SUFFIXES };
|
|
22
23
|
/** The bridge route every proxied asset is fetched through. Trailing slash included. */
|
|
23
24
|
export declare const CDN_PROXY_PREFIX = "/__bm/cdn/";
|
|
24
|
-
/** Host suffixes that identify a bitmagic-controlled asset host. See the file header. */
|
|
25
|
-
export declare const MANAGED_HOST_SUFFIXES: readonly ["bitmagic.ai", "bitmagic.cloud"];
|
|
26
|
-
export declare function isManagedAssetHost(hostname: string): boolean;
|
|
27
25
|
/**
|
|
28
26
|
* The same-origin path that stands in for `url`, or null when the URL is not ours to proxy.
|
|
29
27
|
*
|
|
@@ -12,25 +12,16 @@
|
|
|
12
12
|
* that redirection: which hosts are ours to fetch on the browser's behalf, and the reversible path
|
|
13
13
|
* that carries one.
|
|
14
14
|
*
|
|
15
|
-
* The host
|
|
16
|
-
*
|
|
17
|
-
* `
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* more likely to be a creator's own endpoint than an asset we should be relaying.
|
|
15
|
+
* The host allowlist itself lives in `@bitmagic/asset-core` (`managed-hosts.ts`) and is
|
|
16
|
+
* re-exported here, because api-server needs the same answer when it decides whether a
|
|
17
|
+
* caller-supplied library `assetUrl` may be stored — and two copies of a security-relevant
|
|
18
|
+
* allowlist drift. `esm.sh` and everything else is deliberately left alone: it serves the import
|
|
19
|
+
* map's modules and already answers `*`.
|
|
21
20
|
*/
|
|
21
|
+
import { isManagedAssetHost, MANAGED_HOST_SUFFIXES } from '@bitmagic/asset-core';
|
|
22
|
+
export { isManagedAssetHost, MANAGED_HOST_SUFFIXES };
|
|
22
23
|
/** The bridge route every proxied asset is fetched through. Trailing slash included. */
|
|
23
24
|
export const CDN_PROXY_PREFIX = '/__bm/cdn/';
|
|
24
|
-
/** Host suffixes that identify a bitmagic-controlled asset host. See the file header. */
|
|
25
|
-
export const MANAGED_HOST_SUFFIXES = ['bitmagic.ai', 'bitmagic.cloud'];
|
|
26
|
-
/** A hostname with no port and no credentials — what a proxy path's first segment may hold. */
|
|
27
|
-
const HOSTNAME = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/;
|
|
28
|
-
export function isManagedAssetHost(hostname) {
|
|
29
|
-
const host = hostname.toLowerCase();
|
|
30
|
-
if (!HOSTNAME.test(host))
|
|
31
|
-
return false;
|
|
32
|
-
return MANAGED_HOST_SUFFIXES.some((suffix) => host === suffix || host.endsWith(`.${suffix}`));
|
|
33
|
-
}
|
|
34
25
|
/**
|
|
35
26
|
* The same-origin path that stands in for `url`, or null when the URL is not ours to proxy.
|
|
36
27
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-hosts.js","sourceRoot":"","sources":["../../src/mobile/asset-hosts.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"asset-hosts.js","sourceRoot":"","sources":["../../src/mobile/asset-hosts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,CAAC;AAErD,wFAAwF;AACxF,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC7E,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACxF,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,OAAO,GAAG,gBAAgB,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AACnF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,WAAW,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare function characterSearchPath(root: string): string;
|
|
2
|
+
/** One row as the search displayed it. The shape `libraryPick` needs, plus the caption. */
|
|
3
|
+
export interface CharacterCandidate {
|
|
4
|
+
sid: string;
|
|
5
|
+
assetUrl: string;
|
|
6
|
+
description: string;
|
|
7
|
+
subject: string | null;
|
|
8
|
+
similarity: number;
|
|
9
|
+
}
|
|
10
|
+
export interface CharacterSearchRecord {
|
|
11
|
+
/** The prompt that produced this list — `add --id` reuses it as the asset's brief. */
|
|
12
|
+
prompt: string;
|
|
13
|
+
/** Which shelf was searched. `add` sends the matching `voxelize` so the media cannot cross. */
|
|
14
|
+
representation: 'voxel' | 'lowpoly';
|
|
15
|
+
/** The floor automatic substitution would have applied, for the "auto" column. */
|
|
16
|
+
threshold: number;
|
|
17
|
+
searchedAt: string;
|
|
18
|
+
candidates: CharacterCandidate[];
|
|
19
|
+
}
|
|
20
|
+
/** The last search, or null when there is none to trust. */
|
|
21
|
+
export declare function readCharacterSearch(root: string): CharacterSearchRecord | null;
|
|
22
|
+
export declare function writeCharacterSearch(root: string, record: CharacterSearchRecord): void;
|
|
23
|
+
/**
|
|
24
|
+
* The cached row with this id, or null.
|
|
25
|
+
*
|
|
26
|
+
* Case-insensitive on the id because a creator reads it off a table and retypes
|
|
27
|
+
* it, and the corpus uses one case throughout — so a capital letter is a typo
|
|
28
|
+
* with an obvious intent, not a different character.
|
|
29
|
+
*/
|
|
30
|
+
export declare function findCachedCandidate(record: CharacterSearchRecord, sid: string): CharacterCandidate | null;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The candidates the last `bitmagic character search` returned, so
|
|
3
|
+
* `bitmagic character add --id <sid>` can name one of them.
|
|
4
|
+
*
|
|
5
|
+
* The search already fetched every row it displayed — sid, URL, caption and
|
|
6
|
+
* score. Keeping them means `add --id` needs nothing but the id: no second
|
|
7
|
+
* query, no re-ranking, and no asking the creator to retype the prompt that
|
|
8
|
+
* produced the list they are looking at. It also means `add` cannot drift from
|
|
9
|
+
* what was on screen, which a re-search could (the catalogue grows).
|
|
10
|
+
*
|
|
11
|
+
* Lives under `.bitmagic/` like `reference.json` and `cover.json`: generated,
|
|
12
|
+
* machine-written state. NOT in `bitmagic.json`, deliberately — that file is
|
|
13
|
+
* inside the publish fingerprint (shared/asset-core's publish-source.ts), so
|
|
14
|
+
* recording a search there would invalidate a passing `bitmagic verify` every
|
|
15
|
+
* time somebody browsed the shelf.
|
|
16
|
+
*
|
|
17
|
+
* Readers are lenient, like `readCoverRecord` and the reference records: a
|
|
18
|
+
* corrupt or absent file reads as "no search yet", because the worst case is one
|
|
19
|
+
* re-run of a free command, and a hard error would wedge the very command that
|
|
20
|
+
* would have replaced the bad file.
|
|
21
|
+
*
|
|
22
|
+
* There is deliberately no expiry. The catalogue only changes when someone
|
|
23
|
+
* promotes to it, and a stale row fails loudly and harmlessly (the URL 404s) —
|
|
24
|
+
* where a timeout would expire a list the creator is still reading. `add` prints
|
|
25
|
+
* the search's own timestamp instead, so age is visible rather than enforced.
|
|
26
|
+
*/
|
|
27
|
+
import * as path from 'path';
|
|
28
|
+
import { readJsonFile, writeJsonAtomic } from '../atomic-json.js';
|
|
29
|
+
const SEARCH_FILE = path.join('.bitmagic', 'character-search.json');
|
|
30
|
+
export function characterSearchPath(root) {
|
|
31
|
+
return path.join(root, SEARCH_FILE);
|
|
32
|
+
}
|
|
33
|
+
function isCandidate(value) {
|
|
34
|
+
if (typeof value !== 'object' || value === null)
|
|
35
|
+
return false;
|
|
36
|
+
const row = value;
|
|
37
|
+
return typeof row.sid === 'string' && row.sid !== ''
|
|
38
|
+
&& typeof row.assetUrl === 'string' && row.assetUrl !== ''
|
|
39
|
+
&& typeof row.similarity === 'number';
|
|
40
|
+
}
|
|
41
|
+
/** The last search, or null when there is none to trust. */
|
|
42
|
+
export function readCharacterSearch(root) {
|
|
43
|
+
const raw = readJsonFile(characterSearchPath(root));
|
|
44
|
+
if (typeof raw !== 'object' || raw === null)
|
|
45
|
+
return null;
|
|
46
|
+
const record = raw;
|
|
47
|
+
if (typeof record.prompt !== 'string')
|
|
48
|
+
return null;
|
|
49
|
+
if (record.representation !== 'voxel' && record.representation !== 'lowpoly')
|
|
50
|
+
return null;
|
|
51
|
+
if (!Array.isArray(record.candidates))
|
|
52
|
+
return null;
|
|
53
|
+
const candidates = record.candidates.filter(isCandidate).map((row) => ({
|
|
54
|
+
sid: row.sid,
|
|
55
|
+
assetUrl: row.assetUrl,
|
|
56
|
+
description: typeof row.description === 'string' ? row.description : '',
|
|
57
|
+
subject: typeof row.subject === 'string' ? row.subject : null,
|
|
58
|
+
similarity: row.similarity,
|
|
59
|
+
}));
|
|
60
|
+
return {
|
|
61
|
+
prompt: record.prompt,
|
|
62
|
+
representation: record.representation,
|
|
63
|
+
threshold: typeof record.threshold === 'number' ? record.threshold : 0,
|
|
64
|
+
searchedAt: typeof record.searchedAt === 'string' ? record.searchedAt : '',
|
|
65
|
+
candidates,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export function writeCharacterSearch(root, record) {
|
|
69
|
+
writeJsonAtomic(characterSearchPath(root), record);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The cached row with this id, or null.
|
|
73
|
+
*
|
|
74
|
+
* Case-insensitive on the id because a creator reads it off a table and retypes
|
|
75
|
+
* it, and the corpus uses one case throughout — so a capital letter is a typo
|
|
76
|
+
* with an obvious intent, not a different character.
|
|
77
|
+
*/
|
|
78
|
+
export function findCachedCandidate(record, sid) {
|
|
79
|
+
const wanted = sid.trim().toLowerCase();
|
|
80
|
+
return record.candidates.find((row) => row.sid.toLowerCase() === wanted) ?? null;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=character-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-search.js","sourceRoot":"","sources":["../../src/project/character-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<skills dir>/choosing-asset-pipelines/SKILL.md` — WHICH lane makes a given thing, before any
|
|
3
|
+
* command runs.
|
|
4
|
+
*
|
|
5
|
+
* Exists because the GDK grew several ways to make the same thing — a level from the baseline
|
|
6
|
+
* terrain, `bitmagic forge` (five modes), a Blender script or a Unity port; a character from the
|
|
7
|
+
* free block default, a free library hit, a voxel forge or a low-poly forge at four times the
|
|
8
|
+
* price — and the routing knowledge sat in five places: the per-command reference in
|
|
9
|
+
* `generating-assets`, the "one forge" rule in `planning-a-game`, the Blender skill's §0 gate, the
|
|
10
|
+
* hosted Creator agent's GLB-vs-voxel rules (which never reach a CLI project at all), and code
|
|
11
|
+
* comments. An agent took the first lane it remembered, and a creator had to know Bitmagic's
|
|
12
|
+
* internals to steer it. This file is the table by NEED: conditions (art style, model class,
|
|
13
|
+
* local tooling, prototype vs polished), rough cost, rough time, recommended order — and the rule
|
|
14
|
+
* for when the agent decides alone versus asks the creator with a recommendation.
|
|
15
|
+
*
|
|
16
|
+
* It is a shipped skill so that `bitmagic upgrade` re-renders it in every project with every CLI
|
|
17
|
+
* release — that is the whole update mechanism; nothing here is hand-maintained in a creator's
|
|
18
|
+
* project. Same file-layout contract as `skill-files.ts`: a pure function returning the markdown
|
|
19
|
+
* as a template literal, every backtick inside escaped as \` and every `${` escaped, except the
|
|
20
|
+
* `${PRIMARY_SKILLS_DIR}` interpolations, which are the point (sibling skills are cited by the
|
|
21
|
+
* fixed path every agent's project has, never by a vendor path). Imports only `agent-targets.js`
|
|
22
|
+
* so `project.ts` can import this without a cycle.
|
|
23
|
+
*
|
|
24
|
+
* What keeps it honest, and what does not:
|
|
25
|
+
* - `__tests__/asset-pipeline-skill-files.test.ts` fails when a `bitmagic generate` subcommand
|
|
26
|
+
* exists with no row here, when a row names a subcommand or a skill directory that does not
|
|
27
|
+
* exist, or when one of the need sections or the two defaults (audio opt-in, block characters)
|
|
28
|
+
* disappears. So a new generator cannot ship without a row.
|
|
29
|
+
* - Prices and timings are NOT test-checked. Sparks come from `api-server/src/llm/llm_cost.json`
|
|
30
|
+
* (`toolCosts`, 1 spark = $0.01): glb/model/prop 3, voxel character 15, low-poly character 60,
|
|
31
|
+
* library-only 0, skybox and background 5, image 3, cover and reference 6, block-type 3, sound
|
|
32
|
+
* 12, music 0.25/s, video 1.35/s, authored animation 1, video-to-motion 15; forge and vehicle
|
|
33
|
+
* are usage-priced, presets free. Timings are observed. The CLI cannot import that file, so a
|
|
34
|
+
* price, flag or backend change is invisible to the test — which is why the release checklist
|
|
35
|
+
* (`.claude/skills/generate-release-checklist`) asks for this file to be re-read whenever a
|
|
36
|
+
* generator or `toolCosts` changes. Every figure is written as approximate for the same reason.
|
|
37
|
+
*/
|
|
38
|
+
export declare function renderAssetPipelinesSkill(): string;
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<skills dir>/choosing-asset-pipelines/SKILL.md` — WHICH lane makes a given thing, before any
|
|
3
|
+
* command runs.
|
|
4
|
+
*
|
|
5
|
+
* Exists because the GDK grew several ways to make the same thing — a level from the baseline
|
|
6
|
+
* terrain, `bitmagic forge` (five modes), a Blender script or a Unity port; a character from the
|
|
7
|
+
* free block default, a free library hit, a voxel forge or a low-poly forge at four times the
|
|
8
|
+
* price — and the routing knowledge sat in five places: the per-command reference in
|
|
9
|
+
* `generating-assets`, the "one forge" rule in `planning-a-game`, the Blender skill's §0 gate, the
|
|
10
|
+
* hosted Creator agent's GLB-vs-voxel rules (which never reach a CLI project at all), and code
|
|
11
|
+
* comments. An agent took the first lane it remembered, and a creator had to know Bitmagic's
|
|
12
|
+
* internals to steer it. This file is the table by NEED: conditions (art style, model class,
|
|
13
|
+
* local tooling, prototype vs polished), rough cost, rough time, recommended order — and the rule
|
|
14
|
+
* for when the agent decides alone versus asks the creator with a recommendation.
|
|
15
|
+
*
|
|
16
|
+
* It is a shipped skill so that `bitmagic upgrade` re-renders it in every project with every CLI
|
|
17
|
+
* release — that is the whole update mechanism; nothing here is hand-maintained in a creator's
|
|
18
|
+
* project. Same file-layout contract as `skill-files.ts`: a pure function returning the markdown
|
|
19
|
+
* as a template literal, every backtick inside escaped as \` and every `${` escaped, except the
|
|
20
|
+
* `${PRIMARY_SKILLS_DIR}` interpolations, which are the point (sibling skills are cited by the
|
|
21
|
+
* fixed path every agent's project has, never by a vendor path). Imports only `agent-targets.js`
|
|
22
|
+
* so `project.ts` can import this without a cycle.
|
|
23
|
+
*
|
|
24
|
+
* What keeps it honest, and what does not:
|
|
25
|
+
* - `__tests__/asset-pipeline-skill-files.test.ts` fails when a `bitmagic generate` subcommand
|
|
26
|
+
* exists with no row here, when a row names a subcommand or a skill directory that does not
|
|
27
|
+
* exist, or when one of the need sections or the two defaults (audio opt-in, block characters)
|
|
28
|
+
* disappears. So a new generator cannot ship without a row.
|
|
29
|
+
* - Prices and timings are NOT test-checked. Sparks come from `api-server/src/llm/llm_cost.json`
|
|
30
|
+
* (`toolCosts`, 1 spark = $0.01): glb/model/prop 3, voxel character 15, low-poly character 60,
|
|
31
|
+
* library-only 0, skybox and background 5, image 3, cover and reference 6, block-type 3, sound
|
|
32
|
+
* 12, music 0.25/s, video 1.35/s, authored animation 1, video-to-motion 15; forge and vehicle
|
|
33
|
+
* are usage-priced, presets free. Timings are observed. The CLI cannot import that file, so a
|
|
34
|
+
* price, flag or backend change is invisible to the test — which is why the release checklist
|
|
35
|
+
* (`.claude/skills/generate-release-checklist`) asks for this file to be re-read whenever a
|
|
36
|
+
* generator or `toolCosts` changes. Every figure is written as approximate for the same reason.
|
|
37
|
+
*/
|
|
38
|
+
import { PRIMARY_SKILLS_DIR } from './agent-targets.js';
|
|
39
|
+
export function renderAssetPipelinesSkill() {
|
|
40
|
+
return `---
|
|
41
|
+
name: choosing-asset-pipelines
|
|
42
|
+
description: Pick the lane that makes a given thing for this Bitmagic game — a whole level, a character, a building, a small prop, a vehicle, a weapon, the sky, block textures, an image or cover, an animation, audio, a cutscene — choosing between the free built-in, bitmagic generate, bitmagic forge, a Blender build, a Unity port and the creator's own files, with approximate sparks and wall-clock minutes per option and the rule for when to ask the creator first. Use before any generation, forge or Blender build, and whenever two routes could make the same thing.
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
# Choosing an asset pipeline
|
|
46
|
+
|
|
47
|
+
Most things this game needs can be made three or four ways, and the ways differ by a hundred
|
|
48
|
+
sparks and by twenty minutes. This file is the routing table: find the need, take the first row
|
|
49
|
+
whose conditions hold, say which you took. Flags and refusals for every command are in
|
|
50
|
+
\`${PRIMARY_SKILLS_DIR}/generating-assets/SKILL.md\`; this file only decides.
|
|
51
|
+
|
|
52
|
+
Costs are **approximate** — sparks are rounded and times are typical, not promised. \`bitmagic
|
|
53
|
+
usage\` is the truth about what was actually spent.
|
|
54
|
+
|
|
55
|
+
## Know these four things first
|
|
56
|
+
|
|
57
|
+
1. **Art style** — \`artStyle\` in \`src/work/game.json\`: \`voxel\` (default) or \`low-poly\`. A declared
|
|
58
|
+
switch, not a per-asset flag: in a low-poly game \`generate model|prop\`, \`assets add\` and
|
|
59
|
+
\`generate character\` keep meshes instead of voxelizing (and a character costs four times more),
|
|
60
|
+
the Blender level route opens, and built-in weapons should use their \`_lowpoly\` twins. Set it
|
|
61
|
+
before the first cover.
|
|
62
|
+
2. **Your model class** — frontier (Claude Fable / Opus 5, GPT-6 class) or not. Only the Blender
|
|
63
|
+
route depends on it; its §0 says "if you are not sure you are one, you are not".
|
|
64
|
+
3. **Local tooling** — Google Chrome (\`forge\`, \`generate model|prop|vehicle\`, \`assets add *.glb\` in
|
|
65
|
+
a voxel game, \`verify\`); Blender 4.2+ (Blender levels); \`ffmpeg\` (\`trailer\`, video contact
|
|
66
|
+
sheets); a Unity project to port. Probe once with the checks each skill gives.
|
|
67
|
+
4. **Purpose** — **prototype** (slice 1, prove the loop, the creator will iterate) or **polished**
|
|
68
|
+
("final", "ship it", "make it look great", publishing). Take it from their words. Unsaid:
|
|
69
|
+
assume prototype for slice 1 and note the upgrade as a backlog item.
|
|
70
|
+
|
|
71
|
+
## Decide, say so, ask only when it is expensive
|
|
72
|
+
|
|
73
|
+
Default: you decide, and state the assumption in one line before running anything:
|
|
74
|
+
|
|
75
|
+
> Assuming *prototype*: using \`<route>\` (~N sparks, ~T). Say "polished" and I will use \`<alt>\`.
|
|
76
|
+
|
|
77
|
+
Ask first only when BOTH hold: the recommended option is expensive — tens of sparks or many
|
|
78
|
+
minutes (a forge, a low-poly character, a \`--video\` animation, a long music track, a Blender build)
|
|
79
|
+
— AND the creator has not said prototype or polished. Recommended option first, answerable in a word:
|
|
80
|
+
|
|
81
|
+
> \`<need>\`: I recommend \`<A>\` (~N sparks, ~T) because \`<why>\`; the alternative is \`<B>\` (~N, ~T).
|
|
82
|
+
> Which — or just say prototype / polished and I will pick?
|
|
83
|
+
|
|
84
|
+
Never ask about a free or seconds-long option, never ask twice for the same need, never run two
|
|
85
|
+
paid options to compare. If the allowance is nearly gone
|
|
86
|
+
(\`${PRIMARY_SKILLS_DIR}/checking-usage/SKILL.md\`), say so before an expensive one.
|
|
87
|
+
|
|
88
|
+
## By need
|
|
89
|
+
|
|
90
|
+
Rows are in recommended order: take the first whose conditions hold.
|
|
91
|
+
|
|
92
|
+
### A whole level
|
|
93
|
+
|
|
94
|
+
| Route | Conditions | ~Cost | Notes |
|
|
95
|
+
|---|---|---|---|
|
|
96
|
+
| The baseline's procedural voxel terrain (already there) | prototype, or the terrain is not the mechanic | free, instant | Slice 1's world unless the game cannot be played without its shape (planning skill) |
|
|
97
|
+
| \`bitmagic forge --prompt "..."\` (\`--city\`, \`--dungeon\`, \`--platformer\`, \`--freeform\` or \`--vessel\`, at most one) | Chrome; terrain IS the mechanic (skiing, a circuit, open-world driving, an enclosed dungeon) or polished | usage-priced, tens of sparks; many minutes (the bake alone can take twenty) | One forge per game; \`--edit --level <id>\` changes a forged level, \`--resume <jobId>\` after a failure. AGENTS.md "Forging a whole level" |
|
|
98
|
+
| \`${PRIMARY_SKILLS_DIR}/building-levels-in-blender/SKILL.md\` | frontier model AND Blender 4.2+ AND \`artStyle: "low-poly"\`; a DESIGNED place (interior, station, set), not natural terrain | free in sparks; an hour or more of your time | Its §0 is the gate; audited with ray casts, loaded by \`MeshLevel\` |
|
|
99
|
+
| \`${PRIMARY_SKILLS_DIR}/converting-unity-levels/SKILL.md\` | the creator has a Unity scene to bring over | free in sparks; minutes to hours | Reuses their prefabs, FBX, colliders; not a way to make a level from nothing |
|
|
100
|
+
|
|
101
|
+
### A character (player or NPC)
|
|
102
|
+
|
|
103
|
+
| Route | Conditions | ~Cost | Notes |
|
|
104
|
+
|---|---|---|---|
|
|
105
|
+
| A block character built in code (the default) | any; recolours, outfits, a blocky knight/robot/wizard | free, seconds | \`character-system.md\`, \`npc-appearance.md\`. Highres and block **never coexist** — going highres means the whole cast goes |
|
|
106
|
+
| \`bitmagic generate character --name <id> --prompt "..."\` | the look is genuinely custom; the whole cast will be highres | free and seconds on a library match; else ~15 sparks, ~1.5–4 min (voxel) or ~60 sparks, ~3 min (low-poly) | Library-first by default. \`--head-scale\` / \`--mesh-model\` always forge. \`--apply-to-player\` sets the player |
|
|
107
|
+
| \`... --library-only\` | prototype; a close-enough body will do | free, instant | Nearest stored body, or fails and charges nothing |
|
|
108
|
+
| \`... --no-library\` | polished; exactly this one | ~15 (voxel) / ~60 (low-poly) sparks; minutes | The costly row: ask first if purpose is unknown |
|
|
109
|
+
|
|
110
|
+
### A building or landmark
|
|
111
|
+
|
|
112
|
+
| Route | Conditions | ~Cost | Notes |
|
|
113
|
+
|---|---|---|---|
|
|
114
|
+
| A structure a forge already placed, or a \`building\` hotspot | the level was forged | free | \`environment-objects.md\` |
|
|
115
|
+
| \`bitmagic generate model --prompt "..." --height <m>\` | a new named structure the code places | ~3 sparks; ~10 s voxel, minutes for a mesh | Chrome in a voxel game; above 6 m stays hollow |
|
|
116
|
+
| \`bitmagic generate prop --asset <id> --prompt "..."\` | a placeholder or forge asset is already placed and looks bad | ~3 sparks; ~10 s | REPLACES that asset; every placed instance upgrades. Never for a new object |
|
|
117
|
+
| \`bitmagic assets add <file.glb>\` (\`--keep-glb\` for a mesh) | the creator has the model | free; seconds to a minute | Chrome to voxelize in a voxel game |
|
|
118
|
+
|
|
119
|
+
### A small prop (a crate, a lantern, a pickup)
|
|
120
|
+
|
|
121
|
+
| Route | Conditions | ~Cost | Notes |
|
|
122
|
+
|---|---|---|---|
|
|
123
|
+
| An asset already in \`assets[]\` (\`bitmagic assets list\`) | one fits | free | The same object twice is the commonest waste |
|
|
124
|
+
| \`bitmagic generate model --prompt "..." --name <id>\` | a new object the code spawns or places | ~3 sparks; ~10 s voxel | Cheap enough not to ask. \`environmentObjects[]\` or \`engine.spawnAsset()\` — \`environment-objects.md\` |
|
|
125
|
+
| \`bitmagic assets add <file>\` | the creator has a \`.glb\`/\`.vxl\` | free | |
|
|
126
|
+
| Plain three.js geometry in code | a marker, trigger or debug prop nobody looks at | free, no browser | Do not hand-build what a 3-spark model makes better |
|
|
127
|
+
|
|
128
|
+
### A vehicle
|
|
129
|
+
|
|
130
|
+
| Route | Conditions | ~Cost | Notes |
|
|
131
|
+
|---|---|---|---|
|
|
132
|
+
| \`bitmagic generate vehicle --preset <NAME>\` (\`--preset ?\` lists them) | no bespoke look needed; prototype | free; ~a minute (Chrome) | Physics, lights, AI built in either way; spawn via \`engine.getVehicleSpawner().spawnAndEnterFromAsset(...)\` |
|
|
133
|
+
| \`bitmagic generate vehicle --prompt "..."\` | the look is the point | usage-priced, several sparks; several minutes | NEW asset each run; ask first when purpose is unknown |
|
|
134
|
+
|
|
135
|
+
### A weapon
|
|
136
|
+
|
|
137
|
+
| Route | Conditions | ~Cost | Notes |
|
|
138
|
+
|---|---|---|---|
|
|
139
|
+
| A built-in id (\`sword\`, \`assault_rifle\`, \`bow\`…) or its \`_lowpoly\` twin via \`weaponStyleId(base, 'lowpoly')\` | any; match the twin to \`artStyle\` | free, instant | Wired into damage, animations, pickups, NPC use. \`weapon-visuals.md\`, \`combat-system.md\` |
|
|
140
|
+
| \`bitmagic generate model --prompt "..."\` | a genuinely custom look | ~3 sparks; ~10 s | A mesh only — still wire it to a built-in's combat behaviour |
|
|
141
|
+
|
|
142
|
+
### The sky
|
|
143
|
+
|
|
144
|
+
| Route | Conditions | ~Cost | Notes |
|
|
145
|
+
|---|---|---|---|
|
|
146
|
+
| The engine's default sky | prototype; no strong setting | free | |
|
|
147
|
+
| \`bitmagic generate skybox --description "..."\` | a free-look or third-person camera | ~5 sparks; ~a minute | Usually earns its place in slice 1 |
|
|
148
|
+
| \`bitmagic generate background --description "..."\` | a fixed sidescroller or top-down camera | ~5 sparks; ~a minute | SAME field as skybox; the second run silently replaces the first |
|
|
149
|
+
|
|
150
|
+
### Block textures
|
|
151
|
+
|
|
152
|
+
| Route | Conditions | ~Cost | Notes |
|
|
153
|
+
|---|---|---|---|
|
|
154
|
+
| A built-in block name (\`stone\`, \`grass\`, \`sand\`, \`marble\`…) | one fits | free | \`custom-block-types.md\` |
|
|
155
|
+
| A plain-colour \`customBlockTypes[]\` entry by hand | prototype; a colour is enough | free | snake_case, never a built-in's name |
|
|
156
|
+
| \`bitmagic generate block-type --name <id> --description "..."\` | the surface needs a real texture (\`--side-description\` for a second) | ~3 sparks (~6 with sides); seconds to a minute | Same \`--name\` replaces the entry |
|
|
157
|
+
|
|
158
|
+
### Images, cover, reference
|
|
159
|
+
|
|
160
|
+
| Route | Conditions | ~Cost | Notes |
|
|
161
|
+
|---|---|---|---|
|
|
162
|
+
| \`bitmagic assets add <png>\` | the creator has the picture | free | |
|
|
163
|
+
| \`bitmagic generate image --name <id> --prompt "..."\` | a portrait, icon, poster, HUD art | ~3 sparks; ~30 s | |
|
|
164
|
+
| \`bitmagic cover\` | always, early — after \`artStyle\` is set, before \`verify\` | ~6 sparks; minutes | Prompt comes from \`GAME-DESIGN.md\`; an unchanged design regenerates nothing |
|
|
165
|
+
| \`bitmagic reference make\` / \`accept\` | the idea names a place or a look; the HUMAN accepts | ~6 sparks per candidate; ~a minute | Steers every later skybox, block, cover and forge |
|
|
166
|
+
|
|
167
|
+
### Animation
|
|
168
|
+
|
|
169
|
+
| Route | Conditions | ~Cost | Notes |
|
|
170
|
+
|---|---|---|---|
|
|
171
|
+
| A built-in clip (\`mGenIdle01\`, \`mGenWalk01\`, \`mKicking01\`, \`mPunching01\`…) | one fits | free, instant | \`animation-assets.md\`; locomotion auto-plays |
|
|
172
|
+
| \`bitmagic generate animation --family gait ...\` or \`--spec <file>\` | a gait variant, a melee move, a key-pose one-shot | ~1 spark; ~1 s | Solved locally; the cheapest generator |
|
|
173
|
+
| \`bitmagic generate animation --video <clip>\` (\`--video-prompt "..."\` generates the clip first) | a motion only footage captures | ~15 sparks (plus video seconds with \`--video-prompt\`); minutes | Ask first when purpose is unknown |
|
|
174
|
+
|
|
175
|
+
### Audio
|
|
176
|
+
|
|
177
|
+
| Route | Conditions | ~Cost | Notes |
|
|
178
|
+
|---|---|---|---|
|
|
179
|
+
| None | the creator has not asked for sound | free | Audio is added only on request — never by default |
|
|
180
|
+
| Web Audio synthesis in code | ordinary SFX: a beep, a hit, a pickup | free | \`audio-system.md\` |
|
|
181
|
+
| \`bitmagic assets add <file.mp3/.opus>\` | the creator has the track | free | |
|
|
182
|
+
| \`bitmagic generate sound --prompt "..."\` | they asked for a premium or generated effect | ~12 sparks; ~30 s | One prompt, one effect |
|
|
183
|
+
| \`bitmagic generate music --prompt "..." --duration <s>\` | they asked for original music | ~0.25 sparks/s (30 s ≈ 8, 120 s ≈ 30); ~a minute | Ask first for a long track when purpose is unknown; \`--out --no-world\` for a trailer bed |
|
|
184
|
+
|
|
185
|
+
### A cutscene or video
|
|
186
|
+
|
|
187
|
+
| Route | Conditions | ~Cost | Notes |
|
|
188
|
+
|---|---|---|---|
|
|
189
|
+
| \`bitmagic generate video --prompt "..." --duration 5\` | a story beat played by \`engine.playVideo()\` | ~1.35 sparks/s (5 s ≈ 7); ~40 s | Read the frame sheet before wiring; needs a user gesture to play. \`video-cutscenes.md\` |
|
|
190
|
+
| \`... --image <png>\` | animate a still you have (cover, reference) | same sparks; ~3 min | Comes back in the image's shape, not 16:9 |
|
|
191
|
+
| \`bitmagic trailer\` (\`${PRIMARY_SKILLS_DIR}/making-a-trailer/SKILL.md\`) | a trailer or highlight reel of real gameplay | free apart from an optional music bed; \`ffmpeg\` | Cut from a recording, not generated |
|
|
192
|
+
|
|
193
|
+
## After you have chosen
|
|
194
|
+
|
|
195
|
+
- Pass \`--original-prompt "<the creator's request, verbatim>"\` on every command.
|
|
196
|
+
- Each generation writes \`src/work/world.json\`; re-read it if you hold a copy.
|
|
197
|
+
- One generation per decision. Decide the prompt, run it once, use what comes back.
|
|
198
|
+
- Flags, reference-image rules, refusals: \`${PRIMARY_SKILLS_DIR}/generating-assets/SKILL.md\`. What it
|
|
199
|
+
cost: \`bitmagic usage\`.
|
|
200
|
+
`;
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=asset-pipeline-skill-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-pipeline-skill-files.js","sourceRoot":"","sources":["../../src/scaffold/asset-pipeline-skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,UAAU,yBAAyB;IACvC,OAAO;;;;;;;;;;IAUL,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoCjB,kBAAkB;;;;;;;;;;;;MAYjB,kBAAkB;MAClB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BA4FI,kBAAkB;;;;;;;8CAOA,kBAAkB;;CAE/D,CAAC;AACF,CAAC"}
|
|
@@ -60,7 +60,7 @@ any kind; this path is for places that are designed, not grown.
|
|
|
60
60
|
assumes voxels until told otherwise: put \`"artStyle": "low-poly"\` at the top level of
|
|
61
61
|
\`src/work/game.json\` (or scaffold with \`bitmagic init --art-style low-poly\`). That one field
|
|
62
62
|
switches the cover and reference prompts to low-poly, makes \`assets add\` and \`generate model|prop\`
|
|
63
|
-
keep meshes instead of voxelizing, makes \`
|
|
63
|
+
keep meshes instead of voxelizing, makes \`bitmagic character generate\` keep the textured rig, drops the
|
|
64
64
|
engine's voxel lighting/bloom presets, and gives \`bitmagic judge\` the medium when
|
|
65
65
|
\`## Art direction\` is missing. Set it before the first cover, or the cover is a picture of cubes.
|
|
66
66
|
|
|
@@ -600,7 +600,8 @@ bitmagic assets add build/level/<name>.glb --name <name> --keep-glb --asset-id l
|
|
|
600
600
|
| \`bitmagic cover\`, \`bitmagic reference make\` | MagicaVoxel-style prompt lead and tail | flat-shaded low-poly lead and tail; same image model |
|
|
601
601
|
| \`bitmagic assets add x.glb\` | voxelized in a headless browser | kept as a \`glb\` asset (\`--voxelize\` to bake) |
|
|
602
602
|
| \`bitmagic generate model\` / \`prop\` | voxel master baked in the browser | mesh generated, re-uploaded, registered as \`glb\` (\`--voxelize\` to bake) |
|
|
603
|
-
| \`bitmagic generate
|
|
603
|
+
| \`bitmagic character generate\` | voxelized rig, library search | textured low-poly rig, its own library shelf where enabled (\`--voxelize\` to override) |
|
|
604
|
+
| \`bitmagic character search\` / \`add\` | searches the voxel shelf | searches the low-poly shelf; free, never forges |
|
|
604
605
|
| \`bitmagic generate vehicle\` | voxel car | voxel car anyway — the builder is voxel-native; it says so |
|
|
605
606
|
| engine on load | sunset hemisphere light + faint bloom | neither; \`MeshLevel\`'s own lighting stands |
|
|
606
607
|
| \`bitmagic judge\` with no \`## Art direction\` | grades style as it finds it | judges within low-poly |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blender-level-skill-files.js","sourceRoot":"","sources":["../../src/scaffold/blender-level-skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8QR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyER,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mCAAmC;IACjD,OAAO
|
|
1
|
+
{"version":3,"file":"blender-level-skill-files.js","sourceRoot":"","sources":["../../src/scaffold/blender-level-skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,MAAM,UAAU,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8QR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2FR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyER,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mCAAmC;IACjD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgHR,CAAC;AACF,CAAC"}
|
|
@@ -813,9 +813,9 @@ If you are unsure whether one is already running, \`bitmagic reload\` says so an
|
|
|
813
813
|
they stay current with it. Every one is plain markdown at
|
|
814
814
|
\`${PRIMARY_SKILLS_DIR}/<name>/SKILL.md\`, readable whether or not your harness loads skills by
|
|
815
815
|
itself: \`planning-a-game/\` (what to build first), \`finding-engine-apis/\` (engine docs),
|
|
816
|
-
\`generating-assets/\`, \`
|
|
817
|
-
\`publishing-a-game/\`, \`judging-quality/\`, \`checking-usage/\`,
|
|
818
|
-
\`converting-unity-levels/\`, \`building-levels-in-blender/\`.${mirrorClause}
|
|
816
|
+
\`generating-assets/\`, \`choosing-asset-pipelines/\`, \`working-with-the-creator/\`,
|
|
817
|
+
\`theming-the-hud/\`, \`publishing-a-game/\`, \`judging-quality/\`, \`checking-usage/\`,
|
|
818
|
+
\`making-a-trailer/\`, \`converting-unity-levels/\`, \`building-levels-in-blender/\`.${mirrorClause}
|
|
819
819
|
\`upgrade\` rewrites every copy, so edits to them are lost; skills you add yourself are never
|
|
820
820
|
touched.
|
|
821
821
|
- \`.claude/settings.json\` — **Claude Code only, and yours**: seeded with one Stop hook that runs
|
|
@@ -1079,7 +1079,7 @@ bitmagic generate block-type --name mossy_brick --description "damp green moss o
|
|
|
1079
1079
|
bitmagic generate sound --prompt "heavy wooden door slamming" [--duration 3] [--loop]
|
|
1080
1080
|
bitmagic generate music --prompt "driving synthwave, no vocals" [--duration 30] [--instrumental] [--out bed.mp3 --no-world]
|
|
1081
1081
|
bitmagic generate image --name hero-portrait --prompt "..." [--width 512] [--height 512]
|
|
1082
|
-
bitmagic generate
|
|
1082
|
+
bitmagic character generate --name guard --prompt "..." [--apply-to-player] [--fresh] # or FREE off the shelf: character search --prompt "..." then character add --name guard --id <sid>
|
|
1083
1083
|
bitmagic generate animation --family gait --name LimpStride --based-on walk [--dial limpSide=right]
|
|
1084
1084
|
bitmagic generate animation --spec clip.json # melee and oneShot clips: a spec file
|
|
1085
1085
|
bitmagic generate video --prompt "the castle gates swing open" [--duration 5] [--image cover.png]
|
|
@@ -1087,7 +1087,7 @@ bitmagic generate model --prompt "a mossy stone arch" [--height 3]
|
|
|
1087
1087
|
bitmagic generate vehicle --prompt "a rusty orange pickup" | --preset VAN
|
|
1088
1088
|
\`\`\`
|
|
1089
1089
|
|
|
1090
|
-
Run \`bitmagic generate <type> --help\` for the full flags of any one.
|
|
1090
|
+
Run \`bitmagic generate <type> --help\` for the full flags of any one, or \`bitmagic character <verb> --help\` — characters are their own group, where \`generate\` costs sparks and \`search\`/\`add\` are free because they use the ready-made library instead of forging.
|
|
1091
1091
|
|
|
1092
1092
|
**Always add \`--original-prompt "<creator's request, verbatim>"\`** — to EVERY \`bitmagic\` command, \`build\`/\`verify\`/\`dev\`/\`reload\`/\`publish\` included. Never affects output; it is what counts the prompts shown on the game's public page.
|
|
1093
1093
|
|
|
@@ -1103,8 +1103,8 @@ Two things before you use them:
|
|
|
1103
1103
|
Three lanes make a 3D object, and the wrong one wastes a generation: \`generate model\` mints a NEW
|
|
1104
1104
|
asset, \`generate prop --asset <id>\` UPGRADES a placeholder, \`assets add <file>\` uploads your own.
|
|
1105
1105
|
Splats, video and \`.vox\`/\`.fbx\` still need the web editor; never reference an asset you did not
|
|
1106
|
-
make.
|
|
1107
|
-
|
|
1106
|
+
make. Which lane fits which NEED — rough sparks and minutes, and when to ask first — is
|
|
1107
|
+
\`${PRIMARY_SKILLS_DIR}/choosing-asset-pipelines/SKILL.md\`; flags, reference-image rules and refusals, \`${PRIMARY_SKILLS_DIR}/generating-assets/SKILL.md\`.
|
|
1108
1108
|
|
|
1109
1109
|
## Forging a whole level
|
|
1110
1110
|
|
|
@@ -1116,9 +1116,9 @@ This designs a scene, builds its geometry, bakes it to voxels and writes the fin
|
|
|
1116
1116
|
terrain, props, spawn points — into \`src/work/world.json\`. \`bitmagic levels list | add | rename
|
|
1117
1117
|
| set-start | remove\` manages them afterwards (free, local; \`set-start\` picks the boot level). Add
|
|
1118
1118
|
\`--city\`, \`--dungeon\`, \`--platformer\`, \`--freeform\` or \`--vessel\` (a ship as the level) — at most
|
|
1119
|
-
one — for a different kind of place; omit them all for natural terrain. A place designed part by
|
|
1120
|
-
instead be
|
|
1121
|
-
whose first section says when that path is yours (a frontier model, Blender installable).
|
|
1119
|
+
one — for a different kind of place; omit them all for natural terrain. A place designed part by
|
|
1120
|
+
part — an interior, a station, a stylised set — can instead be scripted in Blender: \`${PRIMARY_SKILLS_DIR}/building-levels-in-blender/SKILL.md\`,
|
|
1121
|
+
whose first section says when that path is yours (a frontier model, Blender installable). All the level lanes side by side, with costs: \`${PRIMARY_SKILLS_DIR}/choosing-asset-pipelines/SKILL.md\`.
|
|
1122
1122
|
|
|
1123
1123
|
**Art style is a declared switch.** \`"artStyle": "low-poly"\` in \`src/work/game.json\` (or
|
|
1124
1124
|
\`bitmagic init --art-style low-poly\`) makes a Blender level a low-poly GAME: \`cover\`/\`reference\`
|
|
@@ -1316,6 +1316,8 @@ forge is backlog item 1, run once the loop is proven. A designed place — an in
|
|
|
1316
1316
|
stylised set the creator has a picture of — has a second route, building it in Blender from a
|
|
1317
1317
|
script (\`${PRIMARY_SKILLS_DIR}/building-levels-in-blender/SKILL.md\`, gated on the model and on
|
|
1318
1318
|
Blender being available). That route is a low-poly game: set \`artStyle: "low-poly"\` in game.json first.
|
|
1319
|
+
The level lanes and every other asset lane side by side, with costs and when to ask the creator:
|
|
1320
|
+
\`${PRIMARY_SKILLS_DIR}/choosing-asset-pipelines/SKILL.md\`.
|
|
1319
1321
|
|
|
1320
1322
|
## Step 5 — hand it back
|
|
1321
1323
|
|
|
@@ -1535,13 +1537,15 @@ The \`bitmagic\` CLI generates content directly into this project. Eleven types
|
|
|
1535
1537
|
| \`bitmagic generate sound --prompt "..."\` | a sound effect | \`assets[]\` |
|
|
1536
1538
|
| \`bitmagic generate music --prompt "..." [--duration 30]\` | a music track (loops by default; billed per second) | \`assets[]\` (or a file with \`--out <mp3> --no-world\`) |
|
|
1537
1539
|
| \`bitmagic generate image --name <id> --prompt "..."\` | a 2D image | \`assets[]\` |
|
|
1538
|
-
| \`bitmagic generate
|
|
1540
|
+
| \`bitmagic character generate --name <id> --prompt "..."\` | a rigged character; substitutes a close-enough ready-made one when the library has it (\`--fresh\` always forges). \`character search --prompt "..."\` then \`character add --name <id> --id <sid>\` instead is **free** and never forges — prefer it when any plausible body will do | \`assets[]\` |
|
|
1539
1541
|
| \`bitmagic generate animation --family gait ...\` or \`--spec <file>\` | an animation clip | \`assets[]\` |
|
|
1540
1542
|
| \`bitmagic generate video --prompt "..." [--duration 5] [--image <png>]\` | a short 720p clip for a cutscene (billed per second) | \`assets[]\`, played with \`engine.playVideo("<id>")\` |
|
|
1541
1543
|
| \`bitmagic generate model --prompt "..."\` | a new 3D model | \`assets[]\` |
|
|
1542
1544
|
| \`bitmagic generate vehicle --prompt "..."\` | a drivable vehicle | \`assets[]\` |
|
|
1543
1545
|
|
|
1544
|
-
\`--help\` on any subcommand lists its full flags.
|
|
1546
|
+
\`--help\` on any subcommand lists its full flags. Which of these — or a forge, a Blender build, a
|
|
1547
|
+
built-in, or a file of the creator's own — fits a given need, with rough sparks and minutes:
|
|
1548
|
+
\`${PRIMARY_SKILLS_DIR}/choosing-asset-pipelines/SKILL.md\`.
|
|
1545
1549
|
|
|
1546
1550
|
**Every \`bitmagic\` command takes \`--original-prompt "<the creator's request, verbatim>"\` —
|
|
1547
1551
|
always pass it**, on the everyday loop (\`build\`, \`verify\`, \`dev\`, \`reload\`, \`publish\`) as much as
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
|