@bitmagic/world-forger 0.1.2 → 0.1.4
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/dist/artifact-types.d.ts +27 -0
- package/dist/artifact-types.d.ts.map +1 -1
- package/dist/generated/game-data-schema.d.ts +84 -0
- package/dist/generated/game-data-schema.d.ts.map +1 -1
- package/dist/generated/game-data-schema.js +99 -0
- package/dist/generated/game-data-schema.js.map +1 -1
- package/dist/pipeline/create-level-archetypes.d.ts.map +1 -1
- package/dist/pipeline/create-level-archetypes.js +30 -2
- package/dist/pipeline/create-level-archetypes.js.map +1 -1
- package/dist/pipeline/deps.d.ts +17 -0
- package/dist/pipeline/deps.d.ts.map +1 -1
- package/dist/pipeline/index.d.ts +1 -0
- package/dist/pipeline/index.d.ts.map +1 -1
- package/dist/pipeline/index.js +1 -0
- package/dist/pipeline/index.js.map +1 -1
- package/dist/pipeline/persist-level.d.ts +11 -0
- package/dist/pipeline/persist-level.d.ts.map +1 -1
- package/dist/pipeline/persist-level.js +6 -2
- package/dist/pipeline/persist-level.js.map +1 -1
- package/dist/pipeline/place-and-persist-level.d.ts.map +1 -1
- package/dist/pipeline/place-and-persist-level.js +28 -0
- package/dist/pipeline/place-and-persist-level.js.map +1 -1
- package/dist/pipeline/progress-types.d.ts +103 -0
- package/dist/pipeline/progress-types.d.ts.map +1 -0
- package/dist/pipeline/progress-types.js +67 -0
- package/dist/pipeline/progress-types.js.map +1 -0
- package/dist/pipeline/transport-types.d.ts +13 -0
- package/dist/pipeline/transport-types.d.ts.map +1 -1
- package/dist/pipeline/voxelize-level.d.ts +21 -0
- package/dist/pipeline/voxelize-level.d.ts.map +1 -1
- package/dist/pipeline/voxelize-level.js +84 -2
- package/dist/pipeline/voxelize-level.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pipeline/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC"}
|
|
@@ -34,6 +34,17 @@ export interface PersistLevelInput {
|
|
|
34
34
|
archetypeAssets: Array<Record<string, unknown>>;
|
|
35
35
|
/** Placed instance records (already reconciled to writable asset ids). */
|
|
36
36
|
instances: Array<Record<string, unknown>>;
|
|
37
|
+
/**
|
|
38
|
+
* Instance ids the caller is removing outright — today the starter template's scattered
|
|
39
|
+
* trees/rocks, which the forged level orphans.
|
|
40
|
+
*
|
|
41
|
+
* They have to be dropped HERE and not only by the caller's `removeRoot`, because the
|
|
42
|
+
* `setRoot` below is the LAST word on `environmentObjects`: `keptInstances` filters by
|
|
43
|
+
* `levelId`, untagged scatter has none, so it survives and the setRoot puts back exactly what
|
|
44
|
+
* the removeRoot deleted. The sibling ASSET removal is not undone (assets are only upserted),
|
|
45
|
+
* so the net effect was six deleted assets whose instances still referenced them. (issues/816)
|
|
46
|
+
*/
|
|
47
|
+
removedInstanceIds?: ReadonlySet<string>;
|
|
37
48
|
spawn: {
|
|
38
49
|
x: number;
|
|
39
50
|
y: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist-level.d.ts","sourceRoot":"","sources":["../../src/pipeline/persist-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,qBAAqB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAU/F;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,cAAc,CAAC;IAClC,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,0EAA0E;IAC1E,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,oDAAoD;IACpD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvC,yFAAyF;IACzF,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C;;;;OAIG;IACH,cAAc,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvF,yDAAyD;IACzD,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B;;;mBAGe;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAuBD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"persist-level.d.ts","sourceRoot":"","sources":["../../src/pipeline/persist-level.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,qBAAqB,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAU/F;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB,EAAE,cAAc,CAAC;IAClC,+EAA+E;IAC/E,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,0EAA0E;IAC1E,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C;;;;;;;;;OASG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5C,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,oDAAoD;IACpD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;OAKG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACvC,yFAAyF;IACzF,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1C;;;;OAIG;IACH,cAAc,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvF,yDAAyD;IACzD,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B;;;mBAGe;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAuBD,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CAgM3F"}
|
|
@@ -51,9 +51,13 @@ export function buildLevelPersistModifications(input) {
|
|
|
51
51
|
const taggedNew = levelId === null
|
|
52
52
|
? input.instances
|
|
53
53
|
: input.instances.map((o) => ({ ...o, levelId }));
|
|
54
|
+
const removedIds = input.removedInstanceIds ?? new Set();
|
|
55
|
+
const survivingBase = removedIds.size === 0
|
|
56
|
+
? baseInstances
|
|
57
|
+
: baseInstances.filter((o) => !removedIds.has(String(o.id ?? '')));
|
|
54
58
|
const keptInstances = levelId === null
|
|
55
|
-
?
|
|
56
|
-
:
|
|
59
|
+
? survivingBase.filter((o) => !taggedNew.some((n) => n.id === o.id))
|
|
60
|
+
: survivingBase.filter((o) => o.levelId !== levelId);
|
|
57
61
|
const finalInstances = [...keptInstances, ...taggedNew];
|
|
58
62
|
// ── Asset upserts: level asset + baked archetypes (never reused stubs) ──
|
|
59
63
|
const modifications = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist-level.js","sourceRoot":"","sources":["../../src/pipeline/persist-level.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"persist-level.js","sourceRoot":"","sources":["../../src/pipeline/persist-level.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-and-persist-level.d.ts","sourceRoot":"","sources":["../../src/pipeline/place-and-persist-level.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAgC,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AACzG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"place-and-persist-level.d.ts","sourceRoot":"","sources":["../../src/pipeline/place-and-persist-level.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAgC,iBAAiB,EAAqB,MAAM,gBAAgB,CAAC;AACzG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAUnE,OAAO,KAAK,EAAE,iBAAiB,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAOlE,kDAAkD;AAClD,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,OAAO,EAAE,iBAAiB,CAAC;IAC3B;;;OAGG;IACH,aAAa,EAAE,qBAAqB,EAAE,CAAC;IACvC;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;CACtC;AAsED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC/C,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC;IAAE,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgBlF;AA+BD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,iBAAiB,GAAG;IAC/D,SAAS,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1E,cAAc,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;CACjG,CAgBA;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,qBAAqB,CAAC,CA4OhC"}
|
|
@@ -4,6 +4,7 @@ import { isCladdingModule, isSkippedArchetype, moduleOverBudgetNote, skipNote, s
|
|
|
4
4
|
import { buildLevelPersistModifications } from './persist-level.js';
|
|
5
5
|
import { buildSpawnPointEntries } from './spawn-points.js';
|
|
6
6
|
import { planStarterScatterRemoval } from './starter-scatter.js';
|
|
7
|
+
import { emitForgeProgress } from './progress-types.js';
|
|
7
8
|
import { ASSET_LOD0_VOXEL_BUDGET, SPAWN_CLEARANCE_M, WATER_SURFACE_Y } from '../forge-constants.js';
|
|
8
9
|
/** Instance placements per BATCH_PLACE_VOXEL_OBJECTS message. */
|
|
9
10
|
const PLACEMENT_BATCH_SIZE = 200;
|
|
@@ -32,6 +33,14 @@ async function placeInstances(deps, placements) {
|
|
|
32
33
|
const placedInstances = [];
|
|
33
34
|
for (let i = 0; i < placements.length; i += PLACEMENT_BATCH_SIZE) {
|
|
34
35
|
const batch = placements.slice(i, i + PLACEMENT_BATCH_SIZE);
|
|
36
|
+
// One event per 200-placement batch — already coarse enough not to need a throttle.
|
|
37
|
+
emitForgeProgress(deps, {
|
|
38
|
+
step: 'persist',
|
|
39
|
+
phase: 'update',
|
|
40
|
+
message: `Placing objects (${i}/${placements.length})`,
|
|
41
|
+
completed: i,
|
|
42
|
+
total: placements.length,
|
|
43
|
+
});
|
|
35
44
|
const requestId = forgeRequestId('place');
|
|
36
45
|
const result = await deps.transport.sendAndWait({
|
|
37
46
|
type: 'BATCH_PLACE_VOXEL_OBJECTS',
|
|
@@ -158,6 +167,13 @@ export async function placeAndPersistLevel(store, deps) {
|
|
|
158
167
|
if (skippedNames.size > 0) {
|
|
159
168
|
deps.logger.warn({ jobId: store.jobId, skipped: [...skippedNames], droppedPlacements: forge.placements.length - placements.length }, 'Archetypes skipped at bake time — their instances are dropped, the level keeps everything else');
|
|
160
169
|
}
|
|
170
|
+
emitForgeProgress(deps, {
|
|
171
|
+
step: 'persist',
|
|
172
|
+
phase: 'start',
|
|
173
|
+
message: `Placing ${placements.length} object${placements.length === 1 ? '' : 's'} and saving the level`,
|
|
174
|
+
completed: 0,
|
|
175
|
+
total: placements.length,
|
|
176
|
+
});
|
|
161
177
|
// Place the archetype instances from the library (exact world-space transforms).
|
|
162
178
|
const placedInstances = await placeInstances(deps, placements);
|
|
163
179
|
const movement = await store.get('platformer-movement');
|
|
@@ -293,6 +309,9 @@ export async function placeAndPersistLevel(store, deps) {
|
|
|
293
309
|
// artifact predates waterLevelYWorld.
|
|
294
310
|
const persistPlan = buildLevelPersistModifications({
|
|
295
311
|
existingWorldJson: await deps.worldJson.readForPersistPlan(),
|
|
312
|
+
// Also dropped from the plan's own kept set, not just removed by the modification above —
|
|
313
|
+
// see `removedInstanceIds` on PersistLevelInput for why the removeRoot alone was undone.
|
|
314
|
+
removedInstanceIds: removedObjectIds,
|
|
296
315
|
levelAsset: persistedAsset,
|
|
297
316
|
levelName: input.name,
|
|
298
317
|
archetypeAssets: validArchetypeAssets,
|
|
@@ -328,6 +347,15 @@ export async function placeAndPersistLevel(store, deps) {
|
|
|
328
347
|
levelId: persistPlan.levelId, isStartLevel: persistPlan.isStartLevel,
|
|
329
348
|
purgedAssets: persistPlan.purgedAssetIds, persistNotes: persistPlan.notes,
|
|
330
349
|
}, 'Level, library assets, instances and spawn planned for world.json');
|
|
350
|
+
// `done` for the STEP, not for the job: the host still has to apply the modifications this
|
|
351
|
+
// returns (and, in the CLI lane, write the heightfield sidecar) before the level exists.
|
|
352
|
+
emitForgeProgress(deps, {
|
|
353
|
+
step: 'persist',
|
|
354
|
+
phase: 'done',
|
|
355
|
+
message: `Placed ${reconciledInstances.length} object${reconciledInstances.length === 1 ? '' : 's'}`,
|
|
356
|
+
completed: placements.length,
|
|
357
|
+
total: placements.length,
|
|
358
|
+
});
|
|
331
359
|
return {
|
|
332
360
|
summary: buildSummary(forge, bake, input, archetypeAssets),
|
|
333
361
|
modifications: [...starterScatterRemovals, ...persistPlan.modifications],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"place-and-persist-level.js","sourceRoot":"","sources":["../../src/pipeline/place-and-persist-level.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"place-and-persist-level.js","sourceRoot":"","sources":["../../src/pipeline/place-and-persist-level.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The forge's progress vocabulary — what a run says about itself while it runs.
|
|
3
|
+
*
|
|
4
|
+
* A forge is thirty to sixty minutes long and, until this existed, said almost nothing: the CLI
|
|
5
|
+
* API emitted six free-text sentences across steps 1-2 and the web lane emitted eight events for
|
|
6
|
+
* the whole run. Both hosts had somewhere to render more; neither had anything to render. So the
|
|
7
|
+
* PIPELINE emits, in one shape, and each host decides how to draw it — `bitmagic dev` as a live
|
|
8
|
+
* five-step list, the Creator as detail lines under its World Forger branch.
|
|
9
|
+
*
|
|
10
|
+
* Two things make this worth a shared type rather than a string per host:
|
|
11
|
+
*
|
|
12
|
+
* - **Step identity.** The five steps were previously spelled out in four places (the web lane's
|
|
13
|
+
* runner, the Creator's tool labels, the CLI's `[n/5]` banners, api-server's progress strings)
|
|
14
|
+
* with nothing keeping them in step. {@link FORGE_STEPS} is the one list.
|
|
15
|
+
* - **The summary.** The interesting question during a forge is not "which step" but "what world
|
|
16
|
+
* am I getting" — and the answer exists long before the level does. The design step knows the
|
|
17
|
+
* approach and the size; the forge artifact knows every object, its instance count, the
|
|
18
|
+
* placement total, the terrain bands and the water level. All of it is available BEFORE the
|
|
19
|
+
* twenty-plus minute browser half begins. {@link ForgeProgressSummary} is that answer.
|
|
20
|
+
*
|
|
21
|
+
* Best-effort throughout: see {@link emitForgeProgress}.
|
|
22
|
+
*/
|
|
23
|
+
import type { ForgeDeps } from './deps.js';
|
|
24
|
+
import type { ForgeArtifact } from './job-types.js';
|
|
25
|
+
/** The five pipeline steps, in order. */
|
|
26
|
+
export type ForgeStepKey = 'design' | 'forge' | 'archetypes' | 'voxelize' | 'persist';
|
|
27
|
+
/**
|
|
28
|
+
* The steps with their creator-facing labels — the single source of truth for both.
|
|
29
|
+
*
|
|
30
|
+
* Hosts derive their step numbering (`[3/5]`) from this array's order rather than hardcoding a
|
|
31
|
+
* count, so adding or renaming a step is one edit here.
|
|
32
|
+
*/
|
|
33
|
+
export declare const FORGE_STEPS: ReadonlyArray<{
|
|
34
|
+
readonly key: ForgeStepKey;
|
|
35
|
+
readonly label: string;
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* How the designer chose to build this level.
|
|
39
|
+
*
|
|
40
|
+
* The same five words the private half's `DesignApproach` uses — restated rather than imported
|
|
41
|
+
* because the dependency only runs the other way (that package imports this one), and because
|
|
42
|
+
* these strings are now on a public wire and a host renders them. Keep the two in step; the design
|
|
43
|
+
* step assigns one to the other and will not compile if they drift.
|
|
44
|
+
*/
|
|
45
|
+
export type ForgeDesignApproach = 'natural' | 'city' | 'platformer' | 'dungeon' | 'freeform';
|
|
46
|
+
/** Cap on {@link ForgeProgressSummary.objects} — this rides on every host's progress frame, and a
|
|
47
|
+
* city forge can produce hundreds of archetypes. The biggest kinds are the informative ones. */
|
|
48
|
+
export declare const FORGE_SUMMARY_OBJECT_CAP = 20;
|
|
49
|
+
/**
|
|
50
|
+
* What the level being built actually contains. Every field is optional: a summary is assembled
|
|
51
|
+
* from whatever the emitting step happens to know, and a host renders the fields that are present.
|
|
52
|
+
*/
|
|
53
|
+
export interface ForgeProgressSummary {
|
|
54
|
+
approach?: ForgeDesignApproach;
|
|
55
|
+
sizeX?: number;
|
|
56
|
+
sizeZ?: number;
|
|
57
|
+
/** The biggest object kinds first, capped at {@link FORGE_SUMMARY_OBJECT_CAP}. */
|
|
58
|
+
objects?: Array<{
|
|
59
|
+
name: string;
|
|
60
|
+
instances: number;
|
|
61
|
+
reused?: boolean;
|
|
62
|
+
}>;
|
|
63
|
+
/** Total object kinds, including any beyond the cap above. */
|
|
64
|
+
objectKinds?: number;
|
|
65
|
+
placements?: number;
|
|
66
|
+
markers?: number;
|
|
67
|
+
terrainBands?: string[];
|
|
68
|
+
/** World-space sea level, or null for a level with no water. */
|
|
69
|
+
waterLevelY?: number | null;
|
|
70
|
+
}
|
|
71
|
+
export interface ForgeProgressEvent {
|
|
72
|
+
step: ForgeStepKey;
|
|
73
|
+
phase: 'start' | 'update' | 'done';
|
|
74
|
+
/** A human sentence. Every host already has somewhere to put one of these. */
|
|
75
|
+
message: string;
|
|
76
|
+
/** Determinate progress within the step. Only steps 3-5 have a countable unit; steps 1-2 are an
|
|
77
|
+
* LLM call and a synchronous geometry build, and neither can report a fraction of itself. */
|
|
78
|
+
completed?: number;
|
|
79
|
+
total?: number;
|
|
80
|
+
/** What the step is working on right now — an archetype name, a bake phase label. */
|
|
81
|
+
detail?: string;
|
|
82
|
+
summary?: ForgeProgressSummary;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Report progress, never fail because of it.
|
|
86
|
+
*
|
|
87
|
+
* The reporter belongs to the host, which will be writing a file, serializing an SSE frame or
|
|
88
|
+
* pushing onto a stream that may already have closed. None of that is worth failing a paid,
|
|
89
|
+
* thirty-minute forge for, so a throwing reporter is swallowed here rather than at every call
|
|
90
|
+
* site — the same trade `cli/src/project/jobs.ts` makes for its own bookkeeping.
|
|
91
|
+
*/
|
|
92
|
+
export declare function emitForgeProgress(deps: ForgeDeps, event: ForgeProgressEvent): void;
|
|
93
|
+
/**
|
|
94
|
+
* Describe a forged level from the artifact alone — pure, so it is testable without a forge.
|
|
95
|
+
*
|
|
96
|
+
* `approach` is filled only where the artifact proves it: a spec carrying a `dungeon` or `city`
|
|
97
|
+
* view is definitionally that approach, while terrain, platformer and freeform are
|
|
98
|
+
* indistinguishable from here. The design step knows which of the three it chose and says so on
|
|
99
|
+
* its own `done` event, which lands first — so a host that merges summaries has the answer either
|
|
100
|
+
* way, and this function does not guess.
|
|
101
|
+
*/
|
|
102
|
+
export declare function summarizeForgeArtifact(artifact: ForgeArtifact): ForgeProgressSummary;
|
|
103
|
+
//# sourceMappingURL=progress-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-types.d.ts","sourceRoot":"","sources":["../../src/pipeline/progress-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,yCAAyC;AACzC,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;AAEtF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,aAAa,CAAC;IAAE,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAMpF,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAE7F;iGACiG;AACjG,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACvE,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnC,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB;kGAC8F;IAC9F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAOlF;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,aAAa,GAAG,oBAAoB,CAwBpF"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The steps with their creator-facing labels — the single source of truth for both.
|
|
3
|
+
*
|
|
4
|
+
* Hosts derive their step numbering (`[3/5]`) from this array's order rather than hardcoding a
|
|
5
|
+
* count, so adding or renaming a step is one edit here.
|
|
6
|
+
*/
|
|
7
|
+
export const FORGE_STEPS = [
|
|
8
|
+
{ key: 'design', label: 'Designing scene' },
|
|
9
|
+
{ key: 'forge', label: 'Forging terrain' },
|
|
10
|
+
{ key: 'archetypes', label: 'Creating objects' },
|
|
11
|
+
{ key: 'voxelize', label: 'Baking level' },
|
|
12
|
+
{ key: 'persist', label: 'Placing & saving' },
|
|
13
|
+
];
|
|
14
|
+
/** Cap on {@link ForgeProgressSummary.objects} — this rides on every host's progress frame, and a
|
|
15
|
+
* city forge can produce hundreds of archetypes. The biggest kinds are the informative ones. */
|
|
16
|
+
export const FORGE_SUMMARY_OBJECT_CAP = 20;
|
|
17
|
+
/**
|
|
18
|
+
* Report progress, never fail because of it.
|
|
19
|
+
*
|
|
20
|
+
* The reporter belongs to the host, which will be writing a file, serializing an SSE frame or
|
|
21
|
+
* pushing onto a stream that may already have closed. None of that is worth failing a paid,
|
|
22
|
+
* thirty-minute forge for, so a throwing reporter is swallowed here rather than at every call
|
|
23
|
+
* site — the same trade `cli/src/project/jobs.ts` makes for its own bookkeeping.
|
|
24
|
+
*/
|
|
25
|
+
export function emitForgeProgress(deps, event) {
|
|
26
|
+
if (!deps.onProgress)
|
|
27
|
+
return;
|
|
28
|
+
try {
|
|
29
|
+
deps.onProgress(event);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Bookkeeping never fails the thing it is bookkeeping for.
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Describe a forged level from the artifact alone — pure, so it is testable without a forge.
|
|
37
|
+
*
|
|
38
|
+
* `approach` is filled only where the artifact proves it: a spec carrying a `dungeon` or `city`
|
|
39
|
+
* view is definitionally that approach, while terrain, platformer and freeform are
|
|
40
|
+
* indistinguishable from here. The design step knows which of the three it chose and says so on
|
|
41
|
+
* its own `done` event, which lands first — so a host that merges summaries has the answer either
|
|
42
|
+
* way, and this function does not guess.
|
|
43
|
+
*/
|
|
44
|
+
export function summarizeForgeArtifact(artifact) {
|
|
45
|
+
const objects = artifact.archetypes
|
|
46
|
+
.map((archetype) => ({
|
|
47
|
+
name: archetype.name,
|
|
48
|
+
instances: archetype.instanceCount,
|
|
49
|
+
...(archetype.reuse ? { reused: true } : {}),
|
|
50
|
+
}))
|
|
51
|
+
.sort((a, b) => b.instances - a.instances);
|
|
52
|
+
const approach = artifact.spec.dungeon
|
|
53
|
+
? 'dungeon'
|
|
54
|
+
: artifact.spec.city ? 'city' : undefined;
|
|
55
|
+
return {
|
|
56
|
+
...(approach ? { approach } : {}),
|
|
57
|
+
sizeX: artifact.spec.size.x,
|
|
58
|
+
sizeZ: artifact.spec.size.z,
|
|
59
|
+
objects: objects.slice(0, FORGE_SUMMARY_OBJECT_CAP),
|
|
60
|
+
objectKinds: objects.length,
|
|
61
|
+
placements: artifact.placements.length,
|
|
62
|
+
markers: artifact.markers.length,
|
|
63
|
+
terrainBands: artifact.terrainBands.map((band) => band.name),
|
|
64
|
+
...(artifact.waterLevelYWorld === undefined ? {} : { waterLevelY: artifact.waterLevelYWorld }),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=progress-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-types.js","sourceRoot":"","sources":["../../src/pipeline/progress-types.ts"],"names":[],"mappings":"AA4BA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAA0E;IAChG,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC3C,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE;IAC1C,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAChD,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE;IAC1C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE;CACrC,CAAC;AAYX;iGACiG;AACjG,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAmC3C;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAe,EAAE,KAAyB;IAC1E,IAAI,CAAC,IAAI,CAAC,UAAU;QAAE,OAAO;IAC7B,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,2DAA2D;IAC7D,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAuB;IAC5D,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU;SAChC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnB,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,SAAS,EAAE,SAAS,CAAC,aAAa;QAClC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7C,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAE7C,MAAM,QAAQ,GAAoC,QAAQ,CAAC,IAAI,CAAC,OAAO;QACrE,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5C,OAAO;QACL,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC;QACnD,WAAW,EAAE,OAAO,CAAC,MAAM;QAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,MAAM;QACtC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM;QAChC,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5D,GAAG,CAAC,QAAQ,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAC;KAC/F,CAAC;AACJ,CAAC"}
|
|
@@ -22,6 +22,19 @@ export interface ForgeTransportOptions {
|
|
|
22
22
|
* mid-flight — only genuine silence for `timeoutMs` fails the attempt.
|
|
23
23
|
*/
|
|
24
24
|
progressType?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Called with each `progressType` message as it arrives.
|
|
27
|
+
*
|
|
28
|
+
* Both transports already SEE these messages — that is how `progressType` re-arms the idle
|
|
29
|
+
* timer above — and both used to drop them afterwards, which meant the level bake's real
|
|
30
|
+
* chunk counts (`VOXELIZE_GLB_AS_LEVEL_PROGRESS` carries `chunkIndex`/`totalChunks`) existed on
|
|
31
|
+
* the wire for twenty minutes and reached no user in either lane. This is the one hook that
|
|
32
|
+
* turns the longest, quietest step in the pipeline into a determinate one.
|
|
33
|
+
*
|
|
34
|
+
* Best-effort: a transport must swallow anything this throws rather than fail the bake it is
|
|
35
|
+
* reporting on.
|
|
36
|
+
*/
|
|
37
|
+
onProgress?: (message: Record<string, unknown>) => void;
|
|
25
38
|
}
|
|
26
39
|
export interface ForgeTransport {
|
|
27
40
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport-types.d.ts","sourceRoot":"","sources":["../../src/pipeline/transport-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB;IACpC;;yCAEqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"transport-types.d.ts","sourceRoot":"","sources":["../../src/pipeline/transport-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB;IACpC;;yCAEqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;CAC5C"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import type { ForgedWorkStore } from './forged-work-store.js';
|
|
10
10
|
import type { ForgeDeps } from './deps.js';
|
|
11
|
+
import { type ForgeProgressEvent } from './progress-types.js';
|
|
11
12
|
/**
|
|
12
13
|
* Idle timeout for the level bake: it runs chunk-by-chunk in the browser and
|
|
13
14
|
* emits VOXELIZE_GLB_AS_LEVEL_PROGRESS per chunk, each of which re-arms this
|
|
@@ -16,6 +17,26 @@ import type { ForgeDeps } from './deps.js';
|
|
|
16
17
|
* frozen) fails the attempt.
|
|
17
18
|
*/
|
|
18
19
|
export declare const VOXELIZE_TIMEOUT_MS: number;
|
|
20
|
+
/**
|
|
21
|
+
* Minimum gap between bake progress events reaching the host.
|
|
22
|
+
*
|
|
23
|
+
* The engine emits one message per chunk and a large level has thousands. Every host on the
|
|
24
|
+
* receiving end does something with a cost — a temp-file-and-rename job record write, an SSE frame,
|
|
25
|
+
* a node in a log tree — so the throttle belongs HERE, at the one place both lanes pass through,
|
|
26
|
+
* rather than being reinvented (and forgotten) per host.
|
|
27
|
+
*/
|
|
28
|
+
export declare const BAKE_PROGRESS_MIN_INTERVAL_MS = 3000;
|
|
29
|
+
/**
|
|
30
|
+
* Turn one bake payload into a progress event, or null when it should be dropped by the throttle.
|
|
31
|
+
*
|
|
32
|
+
* The final chunk and the label-only phases ALWAYS pass: the last chunk is what tells a watcher the
|
|
33
|
+
* loop finished rather than stalled, and the phase labels are the only thing said during the upload
|
|
34
|
+
* that follows it. Exported for unit testing — this is the whole of the bake's progress logic, and
|
|
35
|
+
* it is worth being able to exercise it without a browser.
|
|
36
|
+
*/
|
|
37
|
+
export declare function bakeProgressEvent(message: Record<string, unknown>, state: {
|
|
38
|
+
lastAt: number;
|
|
39
|
+
}, at: number): ForgeProgressEvent | null;
|
|
19
40
|
/**
|
|
20
41
|
* Bake the level. Tagged instance groups are skipped (objectAssetInstances).
|
|
21
42
|
* Single attempt: a timed-out bake must not be silently re-run.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voxelize-level.d.ts","sourceRoot":"","sources":["../../src/pipeline/voxelize-level.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"voxelize-level.d.ts","sourceRoot":"","sources":["../../src/pipeline/voxelize-level.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAK3C,OAAO,EAAqB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEjF;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,QAAiB,CAAC;AAIlD;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAsBlD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EACzB,EAAE,EAAE,MAAM,GACT,kBAAkB,GAAG,IAAI,CA2B3B;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAgF1F"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { requireArtifact } from './artifact-store.js';
|
|
2
2
|
import { ForgeStepError } from './errors.js';
|
|
3
3
|
import { forgeRequestId } from './request-id.js';
|
|
4
|
+
import { emitForgeProgress } from './progress-types.js';
|
|
4
5
|
/**
|
|
5
6
|
* Idle timeout for the level bake: it runs chunk-by-chunk in the browser and
|
|
6
7
|
* emits VOXELIZE_GLB_AS_LEVEL_PROGRESS per chunk, each of which re-arms this
|
|
@@ -11,6 +12,63 @@ import { forgeRequestId } from './request-id.js';
|
|
|
11
12
|
export const VOXELIZE_TIMEOUT_MS = 20 * 60 * 1000;
|
|
12
13
|
/** Progress message the bake emits per chunk; resets the idle timeout above. */
|
|
13
14
|
const VOXELIZE_PROGRESS_TYPE = 'VOXELIZE_GLB_AS_LEVEL_PROGRESS';
|
|
15
|
+
/**
|
|
16
|
+
* Minimum gap between bake progress events reaching the host.
|
|
17
|
+
*
|
|
18
|
+
* The engine emits one message per chunk and a large level has thousands. Every host on the
|
|
19
|
+
* receiving end does something with a cost — a temp-file-and-rename job record write, an SSE frame,
|
|
20
|
+
* a node in a log tree — so the throttle belongs HERE, at the one place both lanes pass through,
|
|
21
|
+
* rather than being reinvented (and forgotten) per host.
|
|
22
|
+
*/
|
|
23
|
+
export const BAKE_PROGRESS_MIN_INTERVAL_MS = 3000;
|
|
24
|
+
function asBakeProgress(message) {
|
|
25
|
+
const { chunkIndex, totalChunks } = message;
|
|
26
|
+
if (typeof chunkIndex !== 'number' || typeof totalChunks !== 'number')
|
|
27
|
+
return null;
|
|
28
|
+
return {
|
|
29
|
+
chunkIndex,
|
|
30
|
+
totalChunks,
|
|
31
|
+
...(typeof message.nonEmptyChunks === 'number' ? { nonEmptyChunks: message.nonEmptyChunks } : {}),
|
|
32
|
+
...(typeof message.label === 'string' ? { label: message.label } : {}),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Turn one bake payload into a progress event, or null when it should be dropped by the throttle.
|
|
37
|
+
*
|
|
38
|
+
* The final chunk and the label-only phases ALWAYS pass: the last chunk is what tells a watcher the
|
|
39
|
+
* loop finished rather than stalled, and the phase labels are the only thing said during the upload
|
|
40
|
+
* that follows it. Exported for unit testing — this is the whole of the bake's progress logic, and
|
|
41
|
+
* it is worth being able to exercise it without a browser.
|
|
42
|
+
*/
|
|
43
|
+
export function bakeProgressEvent(message, state, at) {
|
|
44
|
+
const progress = asBakeProgress(message);
|
|
45
|
+
if (progress === null)
|
|
46
|
+
return null;
|
|
47
|
+
const isPhaseLabel = progress.totalChunks <= 0;
|
|
48
|
+
const isFinalChunk = !isPhaseLabel && progress.chunkIndex + 1 >= progress.totalChunks;
|
|
49
|
+
if (!isFinalChunk && !isPhaseLabel && at - state.lastAt < BAKE_PROGRESS_MIN_INTERVAL_MS)
|
|
50
|
+
return null;
|
|
51
|
+
state.lastAt = at;
|
|
52
|
+
if (isPhaseLabel) {
|
|
53
|
+
return {
|
|
54
|
+
step: 'voxelize',
|
|
55
|
+
phase: 'update',
|
|
56
|
+
message: `Baking the level — ${progress.label ?? 'working'}`,
|
|
57
|
+
...(progress.label ? { detail: progress.label } : {}),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
const done = progress.chunkIndex + 1;
|
|
61
|
+
const percent = Math.floor((done / progress.totalChunks) * 100);
|
|
62
|
+
const filled = progress.nonEmptyChunks === undefined ? '' : `, ${progress.nonEmptyChunks} non-empty`;
|
|
63
|
+
return {
|
|
64
|
+
step: 'voxelize',
|
|
65
|
+
phase: 'update',
|
|
66
|
+
message: `Baking the level — chunk ${done}/${progress.totalChunks} (${percent}%${filled})`,
|
|
67
|
+
completed: done,
|
|
68
|
+
total: progress.totalChunks,
|
|
69
|
+
...(progress.label ? { detail: progress.label } : {}),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
14
72
|
/**
|
|
15
73
|
* Bake the level. Tagged instance groups are skipped (objectAssetInstances).
|
|
16
74
|
* Single attempt: a timed-out bake must not be silently re-run.
|
|
@@ -19,6 +77,14 @@ export async function voxelizeLevel(store, deps) {
|
|
|
19
77
|
const input = await requireArtifact(store, 'input');
|
|
20
78
|
const forge = await requireArtifact(store, 'forge');
|
|
21
79
|
const requestId = forgeRequestId();
|
|
80
|
+
emitForgeProgress(deps, {
|
|
81
|
+
step: 'voxelize',
|
|
82
|
+
phase: 'start',
|
|
83
|
+
message: 'Baking the level (the long step — chunk progress follows)',
|
|
84
|
+
});
|
|
85
|
+
// -Infinity, not 0: the FIRST message must always pass. A zero start throttles it whenever the
|
|
86
|
+
// clock begins near zero, which is exactly the moment a watcher most needs to see the bake begin.
|
|
87
|
+
const throttle = { lastAt: -Infinity };
|
|
22
88
|
const result = await deps.transport.sendAndWait({
|
|
23
89
|
type: 'VOXELIZE_GLB_AS_LEVEL',
|
|
24
90
|
requestId,
|
|
@@ -30,8 +96,17 @@ export async function voxelizeLevel(store, deps) {
|
|
|
30
96
|
options: forge.voxelizeOptions,
|
|
31
97
|
}, 'VOXELIZE_GLB_AS_LEVEL_RESULT', VOXELIZE_TIMEOUT_MS,
|
|
32
98
|
// Single attempt (a timed-out bake must not be silently re-fired), but the
|
|
33
|
-
// timeout is now idle-based: per-chunk progress re-arms it
|
|
34
|
-
|
|
99
|
+
// timeout is now idle-based: per-chunk progress re-arms it — and the same
|
|
100
|
+
// messages are now also reported on, rather than only counted.
|
|
101
|
+
{
|
|
102
|
+
maxRetries: 1,
|
|
103
|
+
progressType: VOXELIZE_PROGRESS_TYPE,
|
|
104
|
+
onProgress: (message) => {
|
|
105
|
+
const event = bakeProgressEvent(message, throttle, Date.now());
|
|
106
|
+
if (event)
|
|
107
|
+
emitForgeProgress(deps, event);
|
|
108
|
+
},
|
|
109
|
+
});
|
|
35
110
|
if (!result) {
|
|
36
111
|
throw new ForgeStepError('Level voxelization timed out. The editor (browser) must be open for baking. The designed GLB was uploaded and can be voxelized manually from the Assets tab.', forge.glbUrl);
|
|
37
112
|
}
|
|
@@ -58,6 +133,13 @@ export async function voxelizeLevel(store, deps) {
|
|
|
58
133
|
...(notes.length > 0 ? { notes } : {}),
|
|
59
134
|
};
|
|
60
135
|
await store.put('level-bake', bake);
|
|
136
|
+
emitForgeProgress(deps, {
|
|
137
|
+
step: 'voxelize',
|
|
138
|
+
phase: 'done',
|
|
139
|
+
message: bake.nonEmptyChunkCount === undefined
|
|
140
|
+
? 'Level baked'
|
|
141
|
+
: `Level baked (${bake.nonEmptyChunkCount} non-empty chunks)`,
|
|
142
|
+
});
|
|
61
143
|
deps.logger.info({ jobId: store.jobId, vwldUrl: bake.vwldUrl, chunks: bake.nonEmptyChunkCount, navUrl: forge.navUrl, unmatched }, 'Level baked');
|
|
62
144
|
}
|
|
63
145
|
//# sourceMappingURL=voxelize-level.js.map
|