@bitmagic/cli 0.1.52-dev.4 → 0.1.52-dev.6
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 +52 -5
- package/dist/assets/add.d.ts +1 -27
- package/dist/assets/add.js +5 -52
- package/dist/assets/add.js.map +1 -1
- package/dist/assets/voxelize-glb.d.ts +37 -0
- package/dist/assets/voxelize-glb.js +65 -0
- package/dist/assets/voxelize-glb.js.map +1 -0
- package/dist/commands/assets.d.ts +2 -1
- package/dist/commands/assets.js +1 -25
- package/dist/commands/assets.js.map +1 -1
- package/dist/commands/generate.d.ts +26 -0
- package/dist/commands/generate.js +144 -18
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/number-flag.d.ts +7 -0
- package/dist/commands/number-flag.js +38 -0
- package/dist/commands/number-flag.js.map +1 -0
- package/dist/editor/journal.d.ts +31 -0
- package/dist/editor/journal.js +42 -0
- package/dist/editor/journal.js.map +1 -1
- package/dist/editor/server.js +196 -4
- package/dist/editor/server.js.map +1 -1
- package/dist/editor/shell-page.js +127 -27
- package/dist/editor/shell-page.js.map +1 -1
- package/dist/editor/voxel-save.d.ts +47 -0
- package/dist/editor/voxel-save.js +53 -0
- package/dist/editor/voxel-save.js.map +1 -0
- package/dist/generate/model.d.ts +36 -0
- package/dist/generate/model.js +90 -0
- package/dist/generate/model.js.map +1 -0
- package/dist/project/jobs.d.ts +1 -1
- package/dist/scaffold/project-files.js +17 -11
- package/dist/scaffold/project-files.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { isJsonObject } from '../project/world-json.js';
|
|
2
|
+
function assetsOf(world) {
|
|
3
|
+
return Array.isArray(world.assets) ? world.assets : [];
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Returns null when there is nothing safe to write.
|
|
7
|
+
*
|
|
8
|
+
* An asset with no id is the one shape that must never be guessed at: the engine has already
|
|
9
|
+
* uploaded the bytes and reported success, so a host that shrugs here produces a save that "worked"
|
|
10
|
+
* and reaches no file. The caller turns this into a loud refusal instead.
|
|
11
|
+
*/
|
|
12
|
+
export function buildVoxelSaveModifications(payload, world) {
|
|
13
|
+
const asset = payload.asset;
|
|
14
|
+
if (!isJsonObject(asset) || typeof asset.id !== 'string' || asset.id === '')
|
|
15
|
+
return null;
|
|
16
|
+
const assetId = asset.id;
|
|
17
|
+
const existing = assetsOf(world).some((item) => isJsonObject(item) && item.id === assetId);
|
|
18
|
+
const modifications = [existing
|
|
19
|
+
? {
|
|
20
|
+
type: 'updateRoot',
|
|
21
|
+
path: ['assets'],
|
|
22
|
+
predicate: (item) => isJsonObject(item) && item.id === assetId,
|
|
23
|
+
// Field by field, so anything the agent added since LOAD_GAME survives. See the header.
|
|
24
|
+
value: (item) => ({ ...(isJsonObject(item) ? item : {}), ...asset }),
|
|
25
|
+
}
|
|
26
|
+
: {
|
|
27
|
+
type: 'upsertRoot',
|
|
28
|
+
path: ['assets'],
|
|
29
|
+
predicate: (item) => isJsonObject(item) && item.id === assetId,
|
|
30
|
+
value: asset,
|
|
31
|
+
}];
|
|
32
|
+
// Instances the save minted. Upserted by id rather than pushed, so a retry of the same save does
|
|
33
|
+
// not leave two copies of one object standing in the same place.
|
|
34
|
+
const instances = Array.isArray(payload.environmentObjects) ? payload.environmentObjects : [];
|
|
35
|
+
for (const instance of instances) {
|
|
36
|
+
if (!isJsonObject(instance) || typeof instance.id !== 'string' || instance.id === '')
|
|
37
|
+
continue;
|
|
38
|
+
const instanceId = instance.id;
|
|
39
|
+
modifications.push({
|
|
40
|
+
type: 'upsertRoot',
|
|
41
|
+
path: ['environmentObjects'],
|
|
42
|
+
predicate: (item) => isJsonObject(item) && item.id === instanceId,
|
|
43
|
+
value: instance,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
modifications,
|
|
48
|
+
assetId,
|
|
49
|
+
assetName: typeof asset.name === 'string' && asset.name !== '' ? asset.name : assetId,
|
|
50
|
+
merged: existing,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=voxel-save.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voxel-save.js","sourceRoot":"","sources":["../../src/editor/voxel-save.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,YAAY,EAAmB,MAAM,0BAA0B,CAAC;AAkBzE,SAAS,QAAQ,CAAC,KAAiB;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,OAAyB,EACzB,KAAiB;IAEjB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACzF,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IAEzB,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC3F,MAAM,aAAa,GAA4B,CAAC,QAAQ;YACtD,CAAC,CAAC;gBACA,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,CAAC,QAAQ,CAAC;gBAChB,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO;gBACvE,wFAAwF;gBACxF,KAAK,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC;aAC9E;YACD,CAAC,CAAC;gBACA,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,CAAC,QAAQ,CAAC;gBAChB,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,OAAO;gBACvE,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;IAEL,iGAAiG;IACjG,iEAAiE;IACjE,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,EAAE,KAAK,QAAQ,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE;YAAE,SAAS;QAC/F,MAAM,UAAU,GAAG,QAAQ,CAAC,EAAE,CAAC;QAC/B,aAAa,CAAC,IAAI,CAAC;YACjB,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,CAAC,oBAAoB,CAAC;YAC5B,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,UAAU;YAC1E,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,aAAa;QACb,OAAO;QACP,SAAS,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;QACrF,MAAM,EAAE,QAAQ;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Environment } from '../config/environments.js';
|
|
2
|
+
import { type VoxelizeFlags, type VoxelizeGlb } from '../assets/voxelize-glb.js';
|
|
3
|
+
import type { ProjectContext } from '../project/context.js';
|
|
4
|
+
export interface GenerateModelOptions {
|
|
5
|
+
context: ProjectContext;
|
|
6
|
+
environment: Environment;
|
|
7
|
+
token: string;
|
|
8
|
+
prompt: string;
|
|
9
|
+
/** Asset name; defaults to a slug of the prompt. This is the name game code places by. */
|
|
10
|
+
name?: string;
|
|
11
|
+
/** Pre-minted `asset_…` id, so code already referencing it resolves once this lands. */
|
|
12
|
+
assetId?: string;
|
|
13
|
+
voxel: VoxelizeFlags;
|
|
14
|
+
/** Skip the paid generation and bake this mesh instead — how a failed run is retried for free. */
|
|
15
|
+
glbUrl?: string;
|
|
16
|
+
fetchImpl?: typeof globalThis.fetch;
|
|
17
|
+
/** Injected in tests so the lane is exercised without Chrome. */
|
|
18
|
+
voxelize?: VoxelizeGlb;
|
|
19
|
+
now?: () => Date;
|
|
20
|
+
log: (message: string) => void;
|
|
21
|
+
}
|
|
22
|
+
export interface GenerateModelResult {
|
|
23
|
+
assetId: string;
|
|
24
|
+
assetName: string;
|
|
25
|
+
assetUrl?: string;
|
|
26
|
+
voxelCount?: number;
|
|
27
|
+
/** The mesh this was baked from — carried so a later failure can be retried without paying. */
|
|
28
|
+
glbUrl: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A usable asset name from the creator's sentence. Names are what game code places by, so this
|
|
32
|
+
* favours something short and typeable over something faithful: the prompt itself is kept on the
|
|
33
|
+
* asset's `description`, which is where the full wording belongs.
|
|
34
|
+
*/
|
|
35
|
+
export declare function modelNameFromPrompt(prompt: string): string;
|
|
36
|
+
export declare function generateAndInstallModel(options: GenerateModelOptions): Promise<GenerateModelResult>;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { CliError } from '../errors.js';
|
|
2
|
+
import { mintAssetId, validateAssetName } from '../assets/file-kind.js';
|
|
3
|
+
import { assertEngineHonouredId, voxelizeGlbIntoAsset, } from '../assets/voxelize-glb.js';
|
|
4
|
+
import { applyModificationsToWorld } from '../forge/apply-modifications.js';
|
|
5
|
+
import { projectWorldJsonPath } from '../forge/run-pipeline.js';
|
|
6
|
+
import { requestGeneration } from './stream.js';
|
|
7
|
+
import { isJsonObject, readWorldJson } from '../project/world-json.js';
|
|
8
|
+
/**
|
|
9
|
+
* The wire type. `prop` is the api-server generator that turns a prompt into a mesh; see the file
|
|
10
|
+
* header for why this command does not define one of its own.
|
|
11
|
+
*/
|
|
12
|
+
const MESH_GENERATOR_TYPE = 'prop';
|
|
13
|
+
/**
|
|
14
|
+
* A usable asset name from the creator's sentence. Names are what game code places by, so this
|
|
15
|
+
* favours something short and typeable over something faithful: the prompt itself is kept on the
|
|
16
|
+
* asset's `description`, which is where the full wording belongs.
|
|
17
|
+
*/
|
|
18
|
+
export function modelNameFromPrompt(prompt) {
|
|
19
|
+
const words = prompt.toLowerCase().replace(/[^a-z0-9\s-]/g, ' ').split(/\s+/).filter((w) => w !== '');
|
|
20
|
+
const camel = words.slice(0, 4).map((w, i) => (i === 0 ? w : w[0].toUpperCase() + w.slice(1))).join('');
|
|
21
|
+
return camel === '' ? 'model' : camel;
|
|
22
|
+
}
|
|
23
|
+
export async function generateAndInstallModel(options) {
|
|
24
|
+
const { context, environment, token, prompt, log } = options;
|
|
25
|
+
const now = options.now ?? (() => new Date());
|
|
26
|
+
// Everything refusable for free, before a spark is spent.
|
|
27
|
+
const name = validateAssetName(options.name ?? modelNameFromPrompt(prompt));
|
|
28
|
+
const assetId = options.assetId ?? mintAssetId();
|
|
29
|
+
const worldPath = projectWorldJsonPath(context.root);
|
|
30
|
+
const world = readWorldJson(worldPath);
|
|
31
|
+
const assets = Array.isArray(world.assets) ? world.assets : [];
|
|
32
|
+
if (assets.some((item) => isJsonObject(item) && item.name === name && item.id !== assetId)) {
|
|
33
|
+
log(`note: another asset is already named "${name}". Assets looked up by name resolve to the `
|
|
34
|
+
+ 'FIRST match — pass --name to give this one its own.');
|
|
35
|
+
}
|
|
36
|
+
let glbUrl = options.glbUrl;
|
|
37
|
+
if (glbUrl === undefined) {
|
|
38
|
+
const outcome = await requestGeneration(environment, token, MESH_GENERATOR_TYPE, { gameId: context.metadata.gameId, prompt }, { fetch: options.fetchImpl ?? globalThis.fetch, onProgress: log });
|
|
39
|
+
if (!outcome.success)
|
|
40
|
+
throw new CliError(`${outcome.message} world.json is unchanged.`);
|
|
41
|
+
if (!outcome.glbUrl) {
|
|
42
|
+
throw new CliError('The generator reported success but returned no mesh. world.json is unchanged.');
|
|
43
|
+
}
|
|
44
|
+
glbUrl = outcome.glbUrl;
|
|
45
|
+
log(`Mesh generated: ${glbUrl}`);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
log(`Reusing the mesh at ${glbUrl} — skipping generation.`);
|
|
49
|
+
}
|
|
50
|
+
// From here the mesh is PAID FOR, so every failure names the command that resumes without
|
|
51
|
+
// paying again — the same contract `generate prop` and `generate vehicle` make.
|
|
52
|
+
const retryHint = 'The generated mesh is kept — retry the browser step for free with:\n'
|
|
53
|
+
+ ` bitmagic generate model --glb-url ${glbUrl} --asset-id ${assetId} --name "${name}"`;
|
|
54
|
+
const voxelize = options.voxelize ?? voxelizeGlbIntoAsset;
|
|
55
|
+
const engineAsset = await voxelize({
|
|
56
|
+
context, environment, token, name, glbUrl, assetId, voxel: options.voxel, retryHint,
|
|
57
|
+
requestPrefix: 'model', log,
|
|
58
|
+
});
|
|
59
|
+
assertEngineHonouredId(engineAsset, assetId, name, `the mesh is kept at ${glbUrl}`);
|
|
60
|
+
// The Asset Forger embeds no scene description, so the engine's record comes back with none and
|
|
61
|
+
// its `production.prompt` is empty. Carrying the prompt across is what makes a later HQ
|
|
62
|
+
// regeneration ask for the same object rather than a generic one.
|
|
63
|
+
const asset = {
|
|
64
|
+
...engineAsset,
|
|
65
|
+
description: typeof engineAsset.description === 'string' && engineAsset.description.trim() !== ''
|
|
66
|
+
? engineAsset.description
|
|
67
|
+
: prompt,
|
|
68
|
+
production: {
|
|
69
|
+
method: 'generated',
|
|
70
|
+
at: now().toISOString(),
|
|
71
|
+
prompt,
|
|
72
|
+
sourceUrl: glbUrl,
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
const modification = {
|
|
76
|
+
type: 'upsertRoot',
|
|
77
|
+
path: ['assets'],
|
|
78
|
+
predicate: (item) => isJsonObject(item) && item.id === assetId,
|
|
79
|
+
value: asset,
|
|
80
|
+
};
|
|
81
|
+
applyModificationsToWorld(worldPath, [modification], { subject: 'The generated model' });
|
|
82
|
+
return {
|
|
83
|
+
assetId,
|
|
84
|
+
assetName: name,
|
|
85
|
+
...(typeof asset.url === 'string' ? { assetUrl: asset.url } : {}),
|
|
86
|
+
...(typeof asset.voxelCount === 'number' ? { voxelCount: asset.voxelCount } : {}),
|
|
87
|
+
glbUrl,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/generate/model.ts"],"names":[],"mappings":"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"}
|
package/dist/project/jobs.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ForgeProgressSnapshot } from '../forge/progress.js';
|
|
2
2
|
import type { ForgeLayoutMap } from '@bitmagic/world-forger/pipeline/index.js';
|
|
3
3
|
/** Which command is running. Shown as-is in the dev view, so these are creator-facing words. */
|
|
4
|
-
export type JobKind = 'skybox' | 'sound' | 'image' | 'character' | 'animation' | 'prop' | 'vehicle' | 'forge' | 'cover' | 'hq' | 'judge' | 'upload';
|
|
4
|
+
export type JobKind = 'skybox' | 'sound' | 'image' | 'character' | 'animation' | 'prop' | 'vehicle' | 'forge' | 'cover' | 'hq' | 'judge' | 'upload' | 'model';
|
|
5
5
|
export interface JobRecord {
|
|
6
6
|
jobId: string;
|
|
7
7
|
kind: JobKind;
|
|
@@ -821,6 +821,7 @@ bitmagic generate image --name hero-portrait --prompt "..." [--width 512] [-
|
|
|
821
821
|
bitmagic generate character --name guard --prompt "..." [--apply-to-player]
|
|
822
822
|
bitmagic generate animation --family gait --name LimpStride --based-on walk [--dial limpSide=right]
|
|
823
823
|
bitmagic generate animation --spec clip.json # melee and oneShot clips: a spec file
|
|
824
|
+
bitmagic generate model --prompt "a mossy stone arch" [--height 3]
|
|
824
825
|
bitmagic generate vehicle --prompt "a rusty orange pickup" | --preset VAN
|
|
825
826
|
\`\`\`
|
|
826
827
|
|
|
@@ -841,11 +842,10 @@ Four things worth knowing before you use these:
|
|
|
841
842
|
4. **A running \`bitmagic dev\` picks the new asset up on its own.** It reloads the browser once
|
|
842
843
|
the write settles; \`bitmagic reload\` forces it if you want it now.
|
|
843
844
|
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
hand-edit \`world.json\` to point at a model you have neither generated nor added.
|
|
845
|
+
Three lanes make a 3D object, and the wrong one wastes a generation: \`generate model\` mints a NEW
|
|
846
|
+
asset from a prompt, \`generate prop --asset <id>\` UPGRADES a placeholder (every instance changes
|
|
847
|
+
with it), \`assets add <file>\` uploads one you already have. **Block types** are the one thing no
|
|
848
|
+
subcommand makes; never hand-edit \`world.json\` to point at an asset you have not made.
|
|
849
849
|
|
|
850
850
|
## Forging a whole level
|
|
851
851
|
|
|
@@ -1257,7 +1257,7 @@ description: Use when this Bitmagic game needs a new skybox, sound effect, image
|
|
|
1257
1257
|
|
|
1258
1258
|
# Generating game assets
|
|
1259
1259
|
|
|
1260
|
-
The \`bitmagic\` CLI generates content directly into this project.
|
|
1260
|
+
The \`bitmagic\` CLI generates content directly into this project. Seven types work today:
|
|
1261
1261
|
|
|
1262
1262
|
| Command | Makes | Lands in |
|
|
1263
1263
|
|---|---|---|
|
|
@@ -1266,6 +1266,7 @@ The \`bitmagic\` CLI generates content directly into this project. Six types wor
|
|
|
1266
1266
|
| \`bitmagic generate image --name <id> --prompt "..."\` | a 2D image | \`assets[]\` |
|
|
1267
1267
|
| \`bitmagic generate character --name <id> --prompt "..."\` | a rigged character | \`assets[]\` |
|
|
1268
1268
|
| \`bitmagic generate animation --family gait ...\` or \`--spec <file>\` | an animation clip | \`assets[]\` |
|
|
1269
|
+
| \`bitmagic generate model --prompt "..."\` | a new 3D model | \`assets[]\` |
|
|
1269
1270
|
| \`bitmagic generate vehicle --prompt "..."\` | a drivable vehicle | \`assets[]\` |
|
|
1270
1271
|
|
|
1271
1272
|
\`--help\` on any subcommand lists its full flags.
|
|
@@ -1275,6 +1276,13 @@ spec in one of three families — \`gait\` (the only one with a flag form), \`me
|
|
|
1275
1276
|
(lists of key poses, so they come from a \`--spec\` file). It is also the cheapest, one spark a
|
|
1276
1277
|
clip, because it is solved locally rather than generated by a model.
|
|
1277
1278
|
|
|
1279
|
+
\`model\` is the one to reach for when the game needs an object that does not exist yet — a new
|
|
1280
|
+
asset from a sentence. It needs Chrome and a free port between 3000 and 3199, because only the
|
|
1281
|
+
engine can voxelize. \`--height\` scales it (interiors fill solid below 6 m and stay hollow above,
|
|
1282
|
+
so a building is not baked as a solid block), and \`--name\` sets what game code places by. Do not
|
|
1283
|
+
confuse it with \`prop\`, which REPLACES an existing placeholder and changes every instance already
|
|
1284
|
+
placed.
|
|
1285
|
+
|
|
1278
1286
|
\`vehicle\` is the one that needs more than a prompt to be useful. It creates a NEW asset (it does
|
|
1279
1287
|
not upgrade an existing one), it needs Chrome and a free port between 3000 and 3199 because only
|
|
1280
1288
|
the engine can voxelize, and \`--preset VAN\` builds a standard vehicle without calling the designer
|
|
@@ -1342,11 +1350,9 @@ assets list\` shows what is there; \`bitmagic assets remove <id>\` takes one out
|
|
|
1342
1350
|
|
|
1343
1351
|
## What is not available
|
|
1344
1352
|
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
assets add\` (above) uploads one the creator already has. Do not hand-edit \`world.json\` to
|
|
1349
|
-
reference a model you have neither generated nor added — the game will fail to load it.
|
|
1353
|
+
**Block types** are the one thing no subcommand makes — those still need the web editor. Do not
|
|
1354
|
+
hand-edit \`world.json\` to reference an asset you have neither generated nor added; the game will
|
|
1355
|
+
fail to load it.
|
|
1350
1356
|
`;
|
|
1351
1357
|
}
|
|
1352
1358
|
/**
|
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitmagic/cli",
|
|
3
|
-
"version": "0.1.52-dev.
|
|
3
|
+
"version": "0.1.52-dev.6",
|
|
4
4
|
"description": "Build Bitmagic games from your own agent tool",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"author": "Bitmagic Oy",
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
"fflate": "^0.8.2",
|
|
24
24
|
"playwright-core": "^1.59.1",
|
|
25
25
|
"tar": "^7.4.3",
|
|
26
|
-
"@bitmagic/
|
|
27
|
-
"@bitmagic/animation-forger": "0.1.7-dev.
|
|
28
|
-
"@bitmagic/
|
|
26
|
+
"@bitmagic/world-forger": "0.1.12-dev.6",
|
|
27
|
+
"@bitmagic/animation-forger": "0.1.7-dev.6",
|
|
28
|
+
"@bitmagic/asset-core": "0.2.7-dev.6"
|
|
29
29
|
},
|
|
30
30
|
"devDependencies": {
|
|
31
31
|
"@eslint/js": "^9.38.0",
|