@volter/game-editor 0.5.68 → 0.5.70
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/BUNDLED_NOTICES +10941 -5080
- package/LICENSE +9 -10
- package/LICENSE-BLENDER +2 -2
- package/NOTICE +2 -2
- package/additions/canvas/package.json +8 -0
- package/additions/canvas/src/canvas-mount.ts +46 -0
- package/additions/canvas/src/scene2d.tsx +18 -0
- package/catalog/entries/bake.json +1 -1
- package/catalog/entries/blender.json +3 -3
- package/catalog/entries/music.json +5 -5
- package/catalog/project-source/LICENSE +6 -6
- package/catalog/project-source/src/contributions/bake.kind.ts +2 -2
- package/catalog/project-source/src/contributions/builder-document.tsx +1 -1
- package/catalog/project-source/src/contributions/builder-ui.tsx +3 -3
- package/catalog/project-source/src/contributions/module-source.ts +4 -4
- package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +59 -59
- package/catalog/project-source/src/lib/static-batch/Frozen.tsx +1 -1
- package/catalog/project-source/src/lib/static-batch/mutation-watch.ts +1 -1
- package/catalog/project-source/src/tools/bake-preview.tool.ts +9 -9
- package/dist/.vite/manifest.json +4026 -4026
- package/dist/assets/{AssetBudgetPanel-P2PeL_X5.js → AssetBudgetPanel-DpXsaQ6w.js} +4 -4
- package/dist/assets/AudioViewer-BdTHfNhD.js +1 -0
- package/dist/assets/{CanvasBoardDocument-BFJdTVGp.js → CanvasBoardDocument-DY-7zohc.js} +1 -1
- package/dist/assets/CanvasSceneViewport-57CEFqSM.js +1 -0
- package/dist/assets/ColorInput-Co6tCY9p.js +1 -0
- package/dist/assets/{EntityModelDocument-Du8wIbyK.js → EntityModelDocument-C-lhKrxv.js} +1 -1
- package/dist/assets/{EnvironmentAssetDocument-_SttfMY_.js → EnvironmentAssetDocument-BNe6ANTN.js} +1 -1
- package/dist/assets/{GameplaySessionTimeline-CWudWnfd.js → GameplaySessionTimeline-CryFYfYN.js} +1 -1
- package/dist/assets/ImageViewer-DiD2yIG4.js +1 -0
- package/dist/assets/{InspectorCanvasPreview-CEr_Kxna.js → InspectorCanvasPreview-BrFjhoiD.js} +1 -1
- package/dist/assets/InspectorObjectPreview-BBVO8bDT.js +1 -0
- package/dist/assets/JsonAssetDocument-xyXetSbl.js +2 -0
- package/dist/assets/{LiveModuleDocument-BWjOzO_6.js → LiveModuleDocument-BiAunjHS.js} +1 -1
- package/dist/assets/{LutAssetDocument-DIc6nsht.js → LutAssetDocument-5sW-5rb0.js} +1 -1
- package/dist/assets/{ModelAssetDocument-_CqTsX_A.js → ModelAssetDocument-Bdy7x47a.js} +1 -1
- package/dist/assets/{NonThreeAuthoringBootstrap-C-V23E1e.js → NonThreeAuthoringBootstrap-BP-1bVEr.js} +1 -1
- package/dist/assets/Object3DDocumentToolbar-CvnSLDPI.js +1 -0
- package/dist/assets/Object3DDocumentViewport-BE_OPc8T.js +2 -0
- package/dist/assets/{Object3DPreview-BPHEr3vI.js → Object3DPreview-D3w_dKrX.js} +1 -1
- package/dist/assets/OnlineAssetDetail-BnT8_p1W.js +1 -0
- package/dist/assets/PlayBar-C8Mn-EI0.js +1 -0
- package/dist/assets/{QuarksAssetDocument-4Dne3EHx.js → QuarksAssetDocument-DLMH5Csk.js} +1 -1
- package/dist/assets/ReactCanvasControls-rNz8syVB.js +1 -0
- package/dist/assets/RootSelectionOverlay-Cn2Rbr1N.js +1 -0
- package/dist/assets/{ShaderAssetDocument-W3ZjLCkt.js → ShaderAssetDocument-CsJCsNfA.js} +4 -4
- package/dist/assets/ShadowEditor-jB05hr1W.js +1 -0
- package/dist/assets/{SourceAssetViewer-BGUeDAEv.js → SourceAssetViewer-D0NgGrER.js} +1 -1
- package/dist/assets/StageHost-B3Yt4I7r.js +2 -0
- package/dist/assets/{StoryPreviewMount-Di8uMovM.js → StoryPreviewMount-CzzRn24c.js} +1 -1
- package/dist/assets/ThreeBoardDocument-BoHTN4Vl.js +2 -0
- package/dist/assets/{ThreeIsolationSceneContent-BAKurKW5.js → ThreeIsolationSceneContent-BM-0S6J5.js} +1 -1
- package/dist/assets/{ToolObject3DPreview-CffvGJ1h.js → ToolObject3DPreview-BeM_kx_u.js} +1 -1
- package/dist/assets/Toolbar-BZyog9MR.js +1 -0
- package/dist/assets/{TransientHint-CgmkrmKF.js → TransientHint-RJEkOJoy.js} +1 -1
- package/dist/assets/VideoViewer-CxajgKrf.js +1 -0
- package/dist/assets/ViewportShadingMenu-S2lADFJg.js +1 -0
- package/dist/assets/active-ingest-CjZtqL7Q.js +3 -0
- package/dist/assets/{animation-clock-fLmY_3--.js → animation-clock-CWVW-mqY.js} +1 -1
- package/dist/assets/animation-mixers.service-CpoYw8cs.js +1 -0
- package/dist/assets/animation-timeline.utility-CEerojaB.js +1 -0
- package/dist/assets/{asset-budget-asset.menu-BDRDWrvx.js → asset-budget-asset.menu-Bk6scVWQ.js} +1 -1
- package/dist/assets/{asset-budget.action-tQmNGQHC.js → asset-budget.action-DtBDSfDj.js} +1 -1
- package/dist/assets/{asset-budget.document-BthgX37Z.js → asset-budget.document-R2zyoJ8E.js} +1 -1
- package/dist/assets/{asset-budget.menu-DfyWVH6p.js → asset-budget.menu-D6jza5Bc.js} +1 -1
- package/dist/assets/asset-editor-persistence-DrgwOZIW.js +1 -0
- package/dist/assets/asset-loaders-CUeYIjeH.js +2 -0
- package/dist/assets/{asset-preview-Cv7tfD98.js → asset-preview-CQfnI2cX.js} +1 -1
- package/dist/assets/{audio-unlock.service-BvHvZjzx.js → audio-unlock.service-W3UBKsw9.js} +1 -1
- package/dist/assets/audio.utility-qrXBdGXg.js +1 -0
- package/dist/assets/autoplay.service-DQD3Swo9.js +1 -0
- package/dist/assets/{babylon-authoring-adapter-Cg5ALSpr.js → babylon-authoring-adapter-CS9LZNmz.js} +1 -1
- package/dist/assets/binding-resolver-B9VI52zt.js +2 -0
- package/dist/assets/blender-emscripten-engine-Cd6az4pU.js +2 -0
- package/dist/assets/{blender-node-editor.document-B92MO51u.js → blender-node-editor.document-BWLFvA2g.js} +1 -1
- package/dist/assets/{blender-properties-tab-CDVyDAbf.js → blender-properties-tab-BSmWG9d0.js} +1 -1
- package/dist/assets/{blender-runtime-host-CuniE0sy.js → blender-runtime-host-Cbkie7m4.js} +2 -2
- package/dist/assets/{blender-runtime-skin-B_tOz5j5.js → blender-runtime-skin-C_ATCb-z.js} +7 -7
- package/dist/assets/{blender-runtime.document-DxUwLiEW.js → blender-runtime.document-P9zdgwMt.js} +7 -7
- package/dist/assets/{blender-timeline.document-BdEEoQbK.js → blender-timeline.document-DRwySEJO.js} +1 -1
- package/dist/assets/{blender-uv-editor.document-EMSUlRh4.js → blender-uv-editor.document-CmLoL2Vo.js} +1 -1
- package/dist/assets/blender-version.status-CP4Jqkry.js +1 -0
- package/dist/assets/blender-wali-engine-CZcS3eAd.js +2 -0
- package/dist/assets/{blender.command-BkBML2SY.js → blender.command-BYGm0Q_s.js} +1 -1
- package/dist/assets/blender.status-BMETIbb2.js +1 -0
- package/dist/assets/board-guides-BG-MHK2G.js +1 -0
- package/dist/assets/body-marks-C1LxJtQb.js +1 -0
- package/dist/assets/{bridge.command-VnplZ81v.js → bridge.command-DpUNErKN.js} +3 -3
- package/dist/assets/{browserAll-BCmkqg8n.js → browserAll-DES3i79H.js} +1 -1
- package/dist/assets/{build-player.document-DV7YcJQt.js → build-player.document-B42HrdSU.js} +1 -1
- package/dist/assets/build-profiles.document-Di5CQoH9.js +2 -0
- package/dist/assets/build-progress.status-B4te7-3j.js +1 -0
- package/dist/assets/{build-session-BGe0eGrQ.js → build-session-Yw4JoE8T.js} +2 -2
- package/dist/assets/{build.action-Bdj4ZEL_.js → build.action-B-DBpUj6.js} +1 -1
- package/dist/assets/{build.command-DAWiYvPa.js → build.command-CfWoHNp0.js} +1 -1
- package/dist/assets/build.header-BaURztYD.js +1 -0
- package/dist/assets/{build.menu-BiRNC_xc.js → build.menu-BFBn-dPJ.js} +1 -1
- package/dist/assets/{build.service-Dw9K6VSF.js → build.service-D8gYWB3n.js} +1 -1
- package/dist/assets/{camera-C-qXzXFf.js → camera-C-uR_xQp.js} +1 -1
- package/dist/assets/{camera-runtime.inspector-BDrwWRlU.js → camera-runtime.inspector-BOGGEqVq.js} +1 -1
- package/dist/assets/{canvas-design-mount-DLn49Zle.js → canvas-design-mount-DamLAaWn.js} +4 -4
- package/dist/assets/canvas-entry-runtime-a6N7Rsrj.js +2 -0
- package/dist/assets/{canvas-preview-frames-B5xFRjhQ.js → canvas-preview-frames-XbrKuyJu.js} +1 -1
- package/dist/assets/{canvas-story-capture.service-DQ_leYyi.js → canvas-story-capture.service-DYRdEzkG.js} +2 -2
- package/dist/assets/capability-coverage-7wKVA3PF.js +7 -0
- package/dist/assets/{collaboration-presence-BOS1t8wI.js → collaboration-presence-DaVKEfxs.js} +1 -1
- package/dist/assets/{collider-Bf4Uk6LW.js → collider-BEwlgkG5.js} +1 -1
- package/dist/assets/component-board.service-BWSBM2Bb.js +2 -0
- package/dist/assets/{component-board.service-DFSSCaCf.js → component-board.service-C9ZouakC.js} +2 -2
- package/dist/assets/{component-board.service-CpVXGhz5.js → component-board.service-D2eGKqHf.js} +2 -2
- package/dist/assets/component-contracts.service-D0uElctD.js +1 -0
- package/dist/assets/component-instance-root-C1Xf4SwR.js +1 -0
- package/dist/assets/{component-verbs.command-DGzZAV_Z.js → component-verbs.command-N-Tj8KOS.js} +1 -1
- package/dist/assets/{component-verbs.service-D1rVRogp.js → component-verbs.service-CWh4mQ7X.js} +1 -1
- package/dist/assets/{config-D-EAAhqP.js → config-hmmj-QHZ.js} +4 -4
- package/dist/assets/{configurations-_HZOWZPy.js → configurations-B9Pi_eRN.js} +1 -1
- package/dist/assets/connection.status-C2HPxoww.js +1 -0
- package/dist/assets/{constraint-5KLYpGm7.js → constraint-Bp1l8hY-.js} +1 -1
- package/dist/assets/constraints.inspector-D-h1f3K2.js +1 -0
- package/dist/assets/{content-bounds-DKBD7nsv.js → content-bounds-7UyI42Vj.js} +1 -1
- package/dist/assets/{contract-system-adapters-h6OUBRYA.js → contract-system-adapters-Bq1LGdjs.js} +1 -1
- package/dist/assets/coverage.service-BiBikIsV.js +3 -0
- package/dist/assets/{create-runtime-Bg2uYMfh.js → create-runtime-Cx-q5z2y.js} +2 -2
- package/dist/assets/curve-Co_mro-I.js +1 -0
- package/dist/assets/{data-asset-7Nfmx-28.js → data-asset-Ckx4D_U_.js} +1 -1
- package/dist/assets/data-check-core-CHqar_E8.js +1 -0
- package/dist/assets/data-ref-70PUrMuT.js +1 -0
- package/dist/assets/debug-bridge-CarsgKpm.js +1 -0
- package/dist/assets/debug-registry-DgYNlhH_.js +1 -0
- package/dist/assets/{deferred-ingest-play-Bej67_y9.js → deferred-ingest-play-Bpdhu2i-.js} +2 -2
- package/dist/assets/{design-time-canvas-mount-CFW9ZWuk.js → design-time-canvas-mount-Ca9Q75Ui.js} +2 -2
- package/dist/assets/design-time-layers-BIb71snu.js +1 -0
- package/dist/assets/{design-time-mount.service-DJeAPUB_.js → design-time-mount.service-DL6ZK2TQ.js} +2 -2
- package/dist/assets/{design-time-mount.service-_R1UDCw3.js → design-time-mount.service-zKUVjKAu.js} +2 -2
- package/dist/assets/design-time-react-mount-NrWimSxY.js +1 -0
- package/dist/assets/{document-preview-three-5cbuuJMH.js → document-preview-three-DoDs6q1q.js} +1 -1
- package/dist/assets/{dom-authoring-adapter-CoESNvrM.js → dom-authoring-adapter-adLQog9l.js} +1 -1
- package/dist/assets/{draco3d-Sk9K4AUT.js → draco3d-aUvQF1Zx.js} +1 -1
- package/dist/assets/{edit-mode-audio.service-CH6J-8N7.js → edit-mode-audio.service-CHZ1ultu.js} +1 -1
- package/dist/assets/edit-mode-authoring-ZQuUwc6e.js +1 -0
- package/dist/assets/{edit-mode-networking.service-C4o2pGHX.js → edit-mode-networking.service-C7fk2fL1.js} +1 -1
- package/dist/assets/editor-api-C8MUOrwt.js +1 -0
- package/dist/assets/{editor-layers-B4oYfpj8.js → editor-layers-CGX7iCSP.js} +1 -1
- package/dist/assets/editor-presentation-activity-CqJH4G9t.js +1 -0
- package/dist/assets/{editor-shell-store-Bh1S7M54.js → editor-shell-store-BRqB1JZO.js} +1 -1
- package/dist/assets/{entity-object-B_5Gc0Ky.js → entity-object--ZpqIat7.js} +1 -1
- package/dist/assets/{extend-DcEyE5jI.js → extend-BZQIQ18F.js} +1 -1
- package/dist/assets/{fork-menu-CKjNh3MO.js → fork-menu-CziehkPx.js} +1 -1
- package/dist/assets/{frame-debugger-store-D5YViF_8.js → frame-debugger-store-BOQjrPsh.js} +1 -1
- package/dist/assets/game-audio-BeCyd0Ha.js +1 -0
- package/dist/assets/{game-contract-seams-C0AVYwvO.js → game-contract-seams-Dgqv6S8X.js} +1 -1
- package/dist/assets/{game-css-scope-transform-8GOvVu1s.js → game-css-scope-transform-anfk8vP_.js} +2 -2
- package/dist/assets/game-document.service-CqmgrRUA.js +1 -0
- package/dist/assets/game-eval.command-CoetFm6_.js +2 -0
- package/dist/assets/game-module-access-Cg1EB8Mx.js +1 -0
- package/dist/assets/game-network-BqI-Ehz0.js +22 -0
- package/dist/assets/{gameplay-export-K5AcStVC.js → gameplay-export-D0hZoeSg.js} +1 -1
- package/dist/assets/gameplay-replay-BHz6VAVa.js +1 -0
- package/dist/assets/{gameplay.command-DoWqBWhH.js → gameplay.command-CPc9GKuW.js} +1 -1
- package/dist/assets/generation-CdOATubd.css +1 -0
- package/dist/assets/{generation-jobs-CiabIfR0.js → generation-jobs-D-zXQNZI.js} +1 -1
- package/dist/assets/generation.service-Bwt9lQEG.js +1 -0
- package/dist/assets/{generations-DU9rCeQR.js → generations-d-U9lCVo.js} +1 -1
- package/dist/assets/generations.status-BQ8xhaLN.js +1 -0
- package/dist/assets/hierarchy-marks-CndAXtie.js +1 -0
- package/dist/assets/hierarchy-marks-CsTaTkc7.js +1 -0
- package/dist/assets/hosted-asset-materialization-r2vKfJGY.js +2 -0
- package/dist/assets/{ibl-override-material-CiKkaOTW.js → ibl-override-material-CMo_a49U.js} +1 -1
- package/dist/assets/index-BMxv2MNV.js +1 -0
- package/dist/assets/index-BPVnvJfX.js +1 -0
- package/dist/assets/{index-C4AUQbmq.js → index-BqzpzjSB.js} +1 -1
- package/dist/assets/{index-CC1puVjo.js → index-CMU7lnXk.js} +1 -1
- package/dist/assets/index-CPiRKiDC.css +1 -0
- package/dist/assets/{index-CaG87ZF-.js → index-Cr9NTnJp.js} +271 -270
- package/dist/assets/index-DSMLYme2.js +1 -0
- package/dist/assets/index-DoGlzvsX.js +1 -0
- package/dist/assets/{index-BsYc2Oyj.js → index-dlvCCB72.js} +1 -1
- package/dist/assets/{index-Kb9_s5aP.js → index-xjc_62Ha.js} +1 -1
- package/dist/assets/{index-C20Flc1s.js → index-z0_InXxO.js} +2 -2
- package/dist/assets/{inference-diagnostics-MGcIHEX6.js → inference-diagnostics-D5jfxI5p.js} +1 -1
- package/dist/assets/{ingest-boot-viewport-D2okO6JI.js → ingest-boot-viewport-Be0v44yf.js} +1 -1
- package/dist/assets/ingest-siblings-BowXSozE.js +1 -0
- package/dist/assets/ingest-source-persistence-BGIvThcv.js +1 -0
- package/dist/assets/ingest.service-wVm-ZcTI.js +1 -0
- package/dist/assets/{inspect-C8RP8G5F.js → inspect-CN92MgRT.js} +1 -1
- package/dist/assets/inspection-D8fZOHCM.js +1 -0
- package/dist/assets/instances.command-B6gJuL1Z.js +1 -0
- package/dist/assets/{json-history-resource-CTXRV4GD.js → json-history-resource-C9G_vCX9.js} +1 -1
- package/dist/assets/{layered-pick-B_-BRrRD.js → layered-pick-D9tIz_m7.js} +1 -1
- package/dist/assets/{light-CskDQ8gF.js → light-BGbl1a8K.js} +1 -1
- package/dist/assets/{live-project-verbs-BOAQN3ME.js → live-project-verbs-p1sdTwhF.js} +1 -1
- package/dist/assets/{machine.document-BxOoCOo9.js → machine.document-C1acXU7l.js} +1 -1
- package/dist/assets/{machines.finder-CqEceWzS.js → machines.finder-sOxNTYPx.js} +1 -1
- package/dist/assets/material-D7289cYI.js +1 -0
- package/dist/assets/{material-factory-qB9pzcQf.js → material-factory-D0T-DH8c.js} +1 -1
- package/dist/assets/{mesh-5--4qA-C.js → mesh-1A-HHxD6.js} +1 -1
- package/dist/assets/model-asset-sections-D1uxOu2v.css +1 -0
- package/dist/assets/model-asset-sections.service-DF-mllTL.js +1 -0
- package/dist/assets/{model-inspection-MrJY0U_-.js → model-inspection-CuVwNVvv.js} +1 -1
- package/dist/assets/{model-thumbnail-uk-2sblh.js → model-thumbnail-xm1Fabi2.js} +1 -1
- package/dist/assets/{models.finder-rk8dhgO8.js → models.finder-DrvU1qGk.js} +1 -1
- package/dist/assets/module-mode-BHOAAbgO.js +2 -0
- package/dist/assets/mount-canvas-ingest-root-aVZkVNh4.js +2 -0
- package/dist/assets/mount-dom-ingest-root-eOOGPaxi.js +2 -0
- package/dist/assets/{mount-ingest-root-BC3-1Cw1.js → mount-ingest-root-BsWbEvr_.js} +2 -2
- package/dist/assets/{mount-manifest-QJOB11Kv.js → mount-manifest-t6ipNsoF.js} +1 -1
- package/dist/assets/mount-readiness-DyAd17pe.js +4 -0
- package/dist/assets/mount-three-ingest-root-DIR0wKrN.js +1 -0
- package/dist/assets/{mounted-authoring-B7RL_V28.js → mounted-authoring-DX3DC9PJ.js} +1 -1
- package/dist/assets/{mounted-story-viewport-source-CnYhX3vW.js → mounted-story-viewport-source-D8FqGpci.js} +1 -1
- package/dist/assets/{native-debug-module-B-rWJfWE.js → native-debug-module-CB738yQu.js} +1 -1
- package/dist/assets/{navigation-BVu-aVmF.js → navigation-B9ihB0qU.js} +1 -1
- package/dist/assets/{navmesh.menu-C3M63eR4.js → navmesh.menu-CPxr9LPT.js} +1 -1
- package/dist/assets/{navmesh.service-B0H1fUfn.js → navmesh.service-BAtili_Y.js} +1 -1
- package/dist/assets/network-observer.service-CqTuZNtI.js +1 -0
- package/dist/assets/network.utility-CclYEmfV.js +1 -0
- package/dist/assets/object-marks-BnvSuCTt.js +1 -0
- package/dist/assets/{object3d-authoring-subject-BDrxd1GA.js → object3d-authoring-subject-XccsO0xG.js} +1 -1
- package/dist/assets/{object3d-document-session-registry-OjqzJ86S.js → object3d-document-session-registry-BWeuL0nf.js} +2 -2
- package/dist/assets/{oid-transform-Bzc2ZJSH.js → oid-transform-BYeAsBKI.js} +1 -1
- package/dist/assets/{particles-Be7AvO4c.js → particles-BXiQDiB-.js} +1 -1
- package/dist/assets/{performance-profiler-OwnXQX0M.js → performance-profiler-CMbwGBuk.js} +1 -1
- package/dist/assets/pixi-authoring-adapter-CPsN0Yk7.js +1 -0
- package/dist/assets/pixi-live-write-target-BUbt5ixX.js +1 -0
- package/dist/assets/{play.command-CIGRq8ow.js → play.command-Bz5Ra6Uj.js} +2 -2
- package/dist/assets/pose-guard-CLabLSzf.js +1 -0
- package/dist/assets/presentation-C7ZHYsKF.js +1 -0
- package/dist/assets/{product-BN31wSnB.js → product-MSpbAqgo.js} +1 -1
- package/dist/assets/{profiler.action-D57Kj9ym.js → profiler.action-1Jbc-7Q4.js} +1 -1
- package/dist/assets/{profiler.menu-Dh9Q5DDx.js → profiler.menu-C544DxWZ.js} +1 -1
- package/dist/assets/profiler.utility-QnzedS3X.js +1 -0
- package/dist/assets/{project-authoring-session-LCJAwGrD.js → project-authoring-session-BhNfg7TY.js} +2 -2
- package/dist/assets/project-provenance-BGnJXJwa.js +1 -0
- package/dist/assets/{properties-bone-constraints.inspector-CaIDq5nN.js → properties-bone-constraints.inspector-DRCPfugt.js} +1 -1
- package/dist/assets/{properties-bone.inspector-D2fcQGMF.js → properties-bone.inspector-CYHeZX0p.js} +1 -1
- package/dist/assets/{properties-collection.inspector-CF5AtTAd.js → properties-collection.inspector-DtGhPkiU.js} +1 -1
- package/dist/assets/{properties-constraints.inspector-Bj2itDrS.js → properties-constraints.inspector-TIyIV777.js} +1 -1
- package/dist/assets/{properties-data.inspector-BfRqk0Xo.js → properties-data.inspector-vA0MTaup.js} +1 -1
- package/dist/assets/{properties-material.inspector-Bf8H0mvu.js → properties-material.inspector-C73spBQh.js} +1 -1
- package/dist/assets/{properties-modifiers.inspector-BKShc1TH.js → properties-modifiers.inspector-9oyLBBE0.js} +1 -1
- package/dist/assets/{properties-object.inspector-YBh8ABnN.js → properties-object.inspector-7BuiUgbd.js} +1 -1
- package/dist/assets/{properties-output.inspector-CVkzfs-l.js → properties-output.inspector-CjYAggz2.js} +1 -1
- package/dist/assets/{properties-particles.inspector-ChDpAq-2.js → properties-particles.inspector-DpSfjykX.js} +1 -1
- package/dist/assets/{properties-physics.inspector-BLEM7aMj.js → properties-physics.inspector-BUTvmfU9.js} +1 -1
- package/dist/assets/{properties-render.inspector-vU4D9xLL.js → properties-render.inspector-CEdsDqbI.js} +1 -1
- package/dist/assets/{properties-scene.inspector-C-DoN-kL.js → properties-scene.inspector-4kp0sLNw.js} +1 -1
- package/dist/assets/{properties-texture.inspector-DySxy1oU.js → properties-texture.inspector-Ckpqy9eo.js} +1 -1
- package/dist/assets/{properties-view-layer.inspector-DEKxMahJ.js → properties-view-layer.inspector-CQIFbY8-.js} +1 -1
- package/dist/assets/{properties-world.inspector-m5qL_TQV.js → properties-world.inspector-xZgNV6rI.js} +1 -1
- package/dist/assets/r3f-design-session-D8VF-hty.js +2 -0
- package/dist/assets/{r3f-physics-binding-Bgzzd4ol.js → r3f-physics-binding-oippu1v_.js} +1 -1
- package/dist/assets/{r3f-source-authoring-adapter-C8oMjdTL.js → r3f-source-authoring-adapter-CZJX6VLM.js} +1 -1
- package/dist/assets/react-canvas-navigation-DuzvnFoN.js +1 -0
- package/dist/assets/react-inspector.service-CV4p6nrb.js +1 -0
- package/dist/assets/react-story-board-mhldts6w.js +1 -0
- package/dist/assets/{react-three-rapier.esm-BR2ttgLS.js → react-three-rapier.esm-Bo9LjrZe.js} +1 -1
- package/dist/assets/react-world-authoring-adapter-CuyruDfq.js +1 -0
- package/dist/assets/{realm-services-DefTrXnY.js → realm-services-BtiLE3a-.js} +1 -1
- package/dist/assets/reflection-probe-capture.inspector-mrrOHs-9.js +1 -0
- package/dist/assets/{reflection-probe-BHNGwVyz.js → reflection-probe-sIto9mh0.js} +1 -1
- package/dist/assets/registry-DpUr2YIM.js +1 -0
- package/dist/assets/{relative-import-specifier-DQzkawgj.js → relative-import-specifier-CyT6yU4l.js} +1 -1
- package/dist/assets/{render-env-BZ7LsGfk.js → render-env-C63BGT5v.js} +1 -1
- package/dist/assets/{render-features-C7QwmhCo.js → render-features-CBl6rom9.js} +1 -1
- package/dist/assets/{render-settings-BBvkacR3.js → render-settings-DjarlnjI.js} +1 -1
- package/dist/assets/resolve-three-OiswFiIS.js +702 -0
- package/dist/assets/root-seam-contract-BYLQx4CQ.js +1 -0
- package/dist/assets/{run-selection-BUeubtHj.js → run-selection-BMu0v3qC.js} +1 -1
- package/dist/assets/scene-capture-BLf3lJ44.js +1 -0
- package/dist/assets/scene-document.service-CjPDph5k.js +2 -0
- package/dist/assets/{scene-framing-PVMqGU8h.js → scene-framing-BhNk0WhI.js} +1 -1
- package/dist/assets/{scene-index--lRWLEmW.js → scene-index-DHeKmalD.js} +1 -1
- package/dist/assets/{scene-query-s1y04OVB.js → scene-query-ByZtXA2m.js} +1 -1
- package/dist/assets/seeded-random-DmdE0u-C.js +1 -0
- package/dist/assets/{session-CTXsU1lK.js → session-CeyQA0Dv.js} +35 -35
- package/dist/assets/{setup-renderer-OOw1SykJ.js → setup-renderer-Bf8g2S0f.js} +1 -1
- package/dist/assets/{source-object3d-authoring-adapter-RmutT5Dt.js → source-object3d-authoring-adapter-IDRws2Nk.js} +1 -1
- package/dist/assets/{source-persistence-backend-HviqjKZ2.js → source-persistence-backend-Dzc6MsmN.js} +1 -1
- package/dist/assets/{spark-renderer-lifecycle-DfYpvEJa.js → spark-renderer-lifecycle-B6Axb6jm.js} +1 -1
- package/dist/assets/{stage-keyboard-DDi7S27C.js → stage-keyboard-CpnIYiph.js} +1 -1
- package/dist/assets/stage-overlay-set-BrJzOTCe.js +1 -0
- package/dist/assets/stage-presence-markers-BFTl9Djp.js +1 -0
- package/dist/assets/stage-transform-tools-QaenmSrC.js +1 -0
- package/dist/assets/standard-viewport-dressing-DuKH01r4.js +24 -0
- package/dist/assets/{state-watch.action-DEdb1mNa.js → state-watch.action-BaRZ6YII.js} +1 -1
- package/dist/assets/{state-watch.menu-jWbUM3kw.js → state-watch.menu-DR2AtQ6r.js} +1 -1
- package/dist/assets/state-watch.utility-VW8H9Fgi.js +1 -0
- package/dist/assets/{story-capture-Dj1xkeKH.js → story-capture-BEVV48wm.js} +1 -1
- package/dist/assets/story-documents-DndjqJ7Y.js +3 -0
- package/dist/assets/{story-documents.service-BzQCuNBu.js → story-documents.service-CPrZ7gRM.js} +1 -1
- package/dist/assets/{story-documents.service-iNP-ORNr.js → story-documents.service-wCVmBPhh.js} +1 -1
- package/dist/assets/{story-media-presence-zTPlU9HR.js → story-media-presence-BSX78yVJ.js} +1 -1
- package/dist/assets/{story-pixi-preview-B7THvSl7.js → story-pixi-preview-D4FuH7lJ.js} +1 -1
- package/dist/assets/{story-presentation-BLXYPadR.js → story-presentation-2AxtnKGb.js} +1 -1
- package/dist/assets/story-three-preview-DjObHSAF.js +2 -0
- package/dist/assets/{structural-ids-Br2zjINh.js → structural-ids-BOo2BRoY.js} +1 -1
- package/dist/assets/studio-environment-B--4k2mN.js +2 -0
- package/dist/assets/{surface-state-D9j6qNu8.js → surface-state-CQHVfsma.js} +1 -1
- package/dist/assets/{syntactic-prop-specs-BTnsMOvH.js → syntactic-prop-specs-CewRyC4c.js} +1 -1
- package/dist/assets/team-playtest.service-B9m6CNk7.js +1 -0
- package/dist/assets/{three-oYrcK5SQ.js → three-B86IzdNg.js} +1 -1
- package/dist/assets/three-authoring-adapter-BD8_MtYK.js +1 -0
- package/dist/assets/three-authoring.service-BjJ9wetk.js +2 -0
- package/dist/assets/{three-ingest-runtime-CXKjNysA.js → three-ingest-runtime-CXySzulx.js} +1 -1
- package/dist/assets/{three-integration-CuAnYaTW.js → three-integration-nl5TC6EF.js} +2 -2
- package/dist/assets/three-integration.service-BEk5QkKM.js +1 -0
- package/dist/assets/three-projection-core-D4m8lsPU.js +1 -0
- package/dist/assets/{three-state-wXRU3rLr.js → three-state-C36FeFK4.js} +1 -1
- package/dist/assets/{three-story-capture.service-DMJRcqjr.js → three-story-capture.service-C0icETyL.js} +2 -2
- package/dist/assets/{three-story-model-DgiAP-oQ.js → three-story-model-CqWu9S2a.js} +1 -1
- package/dist/assets/three-viewport-presentation-CCMgGLI2.js +141 -0
- package/dist/assets/tools-BnE3UWVA.js +1 -0
- package/dist/assets/transform-mode-request-CIgYj1Qb.js +1 -0
- package/dist/assets/transport-strip-B1AJKpn-.js +1 -0
- package/dist/assets/transport.header-D-n6dQ5n.js +1 -0
- package/dist/assets/{trigger-volume-DP0G1VBe.js → trigger-volume-BLkHmfm9.js} +1 -1
- package/dist/assets/tuples-uyiMYXrv.js +1 -0
- package/dist/assets/ui-board-document-6e4w4a8B.js +2 -0
- package/dist/assets/{user-data-CqOoAowZ.js → user-data-BXFD1jg-.js} +1 -1
- package/dist/assets/user-data-CODoGZqA.js +1 -0
- package/dist/assets/{utility-view-state-Db97zwDz.js → utility-view-state-I_o0WThv.js} +1 -1
- package/dist/assets/viewport-door-AsLxGhLN.js +1 -0
- package/dist/assets/{viewport-root-presentation-B35t51xX.js → viewport-root-presentation-B1qtThOB.js} +1 -1
- package/dist/assets/{viewport-surface-status-D5kZtFW5.js → viewport-surface-status-CWmQeKTO.js} +1 -1
- package/dist/assets/{webworkerAll-CfKEb4Ao.js → webworkerAll-DC445ANd.js} +1 -1
- package/dist/assets/worker-jepHAPPr.js +2 -0
- package/dist/assets/workspace-arrangement-dkubzCff.js +1 -0
- package/dist/assets/world-documents-psBK5u_2.js +1 -0
- package/dist/assets/world-root-stage-binding-BrvO8VMz.js +1 -0
- package/dist/assets/{xstate-animation-binding-aQEmNSpm.js → xstate-animation-binding-ChVFHSlM.js} +1 -1
- package/dist/assets/{xstate-animation-meta-CnMX1Sc1.js → xstate-animation-meta-D7xnhyCE.js} +1 -1
- package/dist/volter-shared-react.json +10 -0
- package/dist/volter-shared-three.json +3 -0
- package/dist-node/cli.js +247 -209
- package/dist-node/create.js +90 -74
- package/package.json +20 -19
- package/src/contributions.d.ts +1 -1
- package/src/index.ts +10 -10
- package/starter/cube.py +1 -1
- package/template/.agents/references/project-manual.md +17 -18
- package/template/.agents/skills/editor/SKILL.md +6 -6
- package/template/.agents/skills/editor/agents/openai.yaml +3 -3
- package/template/.agents/skills/editor/references/editor-control.md +62 -62
- package/template/.agents/skills/{vgai-3d-models → volter-3d-models}/SKILL.md +3 -3
- package/template/.agents/skills/{vgai-ingest-existing-game → volter-ingest-existing-game}/SKILL.md +3 -3
- package/template/.agents/skills/{vgai-music → volter-music}/SKILL.md +7 -7
- package/template/{.github/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.agents/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/{.claude/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.claude/skills/editor/SKILL.md +6 -6
- package/template/.claude/skills/editor/agents/openai.yaml +3 -3
- package/template/.claude/skills/editor/references/editor-control.md +62 -62
- package/template/{.github/skills/vgai-3d-models → .claude/skills/volter-3d-models}/SKILL.md +3 -3
- package/template/{.github/skills/vgai-ingest-existing-game → .claude/skills/volter-ingest-existing-game}/SKILL.md +3 -3
- package/template/.claude/skills/{vgai-threejs-authoring → volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.claude/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/{.agents/skills/vgai-threejs-authoring → .claude/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.github/copilot-instructions.md +1 -1
- package/template/.github/skills/editor/SKILL.md +6 -6
- package/template/.github/skills/editor/agents/openai.yaml +3 -3
- package/template/.github/skills/editor/references/editor-control.md +62 -62
- package/template/{.claude/skills/vgai-3d-models → .github/skills/volter-3d-models}/SKILL.md +3 -3
- package/template/{.claude/skills/vgai-ingest-existing-game → .github/skills/volter-ingest-existing-game}/SKILL.md +3 -3
- package/template/{.agents/skills/vgai-threejs-authoring → .github/skills/volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.github/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/.github/skills/{vgai-threejs-authoring → volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.mcp.json +3 -3
- package/template/AGENTS.md +25 -25
- package/template/DEVLOG.md +1 -1
- package/template/IDIOMS.md +3 -3
- package/template/LICENSE +3 -3
- package/template/README.md +12 -13
- package/template/check-idioms.ts +71 -95
- package/template/manifest-entry-modules-plugin.ts +17 -4
- package/template/package.json +13 -15
- package/template/server/colyseus-setup.ts +1 -9
- package/template/server/main.ts +4 -9
- package/template/server/rooms/arena-room.ts +10 -10
- package/template/server/rooms/game-room.ts +10 -10
- package/template/server/rooms.ts +3 -5
- package/template/src/bot/QaTester.tsx +1 -1
- package/template/src/bot/bot-station.ts +2 -2
- package/template/src/bot/tester-station.ts +1 -1
- package/template/src/contributions/README.md +1 -1
- package/template/src/contributions/analytics.analytics.tsx +1 -1
- package/template/src/contributions/data.document.tsx +2 -2
- package/template/src/contributions/pages.finder.ts +1 -1
- package/template/src/contributions/tester.inspector.tsx +2 -2
- package/template/src/contributions/use-game-modules.ts +1 -1
- package/template/src/input.ts +1 -1
- package/template/src/lib/reflections/volume-reflection-material.ts +59 -59
- package/template/src/lib/static-batch/Frozen.tsx +1 -1
- package/template/src/lib/static-batch/mutation-watch.ts +1 -1
- package/template/src/main.ts +19 -38
- package/template/src/manifest-entry-modules.d.ts +12 -1
- package/template/src/net/NetworkedPlayers.tsx +3 -3
- package/template/src/prefabs/HeroBox.stories.tsx +1 -1
- package/template/src/world.tsx +1 -1
- package/template/tsconfig.json +1 -1
- package/template/validate-manifest.ts +3 -3
- package/template/vite.config.ts +12 -12
- package/template/{vgai.adapter.ts → volter.adapter.ts} +1 -1
- package/template/{vgai.project.json → volter.project.json} +2 -2
- package/template-dotfiles/gitignore +27 -27
- package/workbench/src/media/game-cover.css +11 -11
- package/workbench/src/product.contribution.ts +28 -28
- package/workbench/src/{vgaiGameSkew.ts → volterGameSkew.ts} +16 -16
- package/dist/assets/AudioViewer-xFb5Wv7A.js +0 -1
- package/dist/assets/CanvasSceneViewport-vqBlOz8P.js +0 -1
- package/dist/assets/ColorInput-CX1UZjYO.js +0 -1
- package/dist/assets/ImageViewer-shZzMd91.js +0 -1
- package/dist/assets/InspectorObjectPreview-BMOvJaOw.js +0 -1
- package/dist/assets/JsonAssetDocument-D_HXneWE.js +0 -2
- package/dist/assets/Object3DDocumentToolbar-BfPH9jz5.js +0 -1
- package/dist/assets/Object3DDocumentViewport-BaXWtATg.js +0 -2
- package/dist/assets/OnlineAssetDetail-BxibUH6K.js +0 -1
- package/dist/assets/PlayBar-DRANyO01.js +0 -1
- package/dist/assets/ReactCanvasControls-K98jOX9b.js +0 -1
- package/dist/assets/RootSelectionOverlay-BQC12Gdd.js +0 -1
- package/dist/assets/ShadowEditor-DP1LWynl.js +0 -1
- package/dist/assets/StageHost-V_0opXFt.js +0 -2
- package/dist/assets/ThreeBoardDocument-tgcaZDqQ.js +0 -2
- package/dist/assets/Toolbar-uLgsrB2z.js +0 -1
- package/dist/assets/VideoViewer-ClUJ6_uy.js +0 -1
- package/dist/assets/ViewportShadingMenu-Bdkc6jcd.js +0 -1
- package/dist/assets/active-ingest-CnAeQcuQ.js +0 -3
- package/dist/assets/animation-mixers.service-DiecMX_A.js +0 -1
- package/dist/assets/animation-timeline.utility-C71vPJgs.js +0 -1
- package/dist/assets/asset-editor-persistence-BQgjOCrm.js +0 -1
- package/dist/assets/asset-loaders-5PIUVvmH.js +0 -2
- package/dist/assets/audio.utility-D9Vk_WYS.js +0 -1
- package/dist/assets/autoplay.service-CFJoLPLw.js +0 -1
- package/dist/assets/binding-resolver-C_9MBSMa.js +0 -2
- package/dist/assets/blender-emscripten-engine-BeWFjMn-.js +0 -2
- package/dist/assets/blender-version.status-DtfwUahB.js +0 -1
- package/dist/assets/blender-wali-engine-da698rDf.js +0 -2
- package/dist/assets/blender.status-ujwGU6dU.js +0 -1
- package/dist/assets/board-guides-_3R1t_-2.js +0 -1
- package/dist/assets/body-marks-RKb_LTwL.js +0 -1
- package/dist/assets/build-profiles.document-CZxDuhzz.js +0 -2
- package/dist/assets/build-progress.status-Dk5u3C67.js +0 -1
- package/dist/assets/build.header--xqH6uTP.js +0 -1
- package/dist/assets/canvas-entry-runtime-DVeh71nC.js +0 -2
- package/dist/assets/capability-coverage-DQgg6UJe.js +0 -7
- package/dist/assets/component-board.service-DgujG90T.js +0 -2
- package/dist/assets/component-contracts.service-Bc_2Xxh_.js +0 -1
- package/dist/assets/component-instance-root-df4ofoOR.js +0 -1
- package/dist/assets/connection.status-CCX-mgmr.js +0 -1
- package/dist/assets/constraints.inspector-CwEEREsf.js +0 -1
- package/dist/assets/coverage.service-CV7b5Sqn.js +0 -3
- package/dist/assets/curve-BKuiAPpj.js +0 -1
- package/dist/assets/data-check-core-CQEjuFyt.js +0 -1
- package/dist/assets/data-ref-DyFQqqX6.js +0 -1
- package/dist/assets/debug-bridge-CESAxmlz.js +0 -1
- package/dist/assets/debug-registry-l7k5Hjc8.js +0 -1
- package/dist/assets/design-time-layers-CQgnmqc8.js +0 -1
- package/dist/assets/design-time-react-mount-CFvIk_rV.js +0 -1
- package/dist/assets/edit-mode-authoring-DBjaBTxM.js +0 -1
- package/dist/assets/editor-api-D2azVray.js +0 -1
- package/dist/assets/editor-presentation-activity-C7SNSmTd.js +0 -1
- package/dist/assets/game-audio-CaGKzia4.js +0 -1
- package/dist/assets/game-document.service-FdG_gFPU.js +0 -1
- package/dist/assets/game-eval.command-4wa9vqWE.js +0 -2
- package/dist/assets/game-module-access-DulnT3NH.js +0 -1
- package/dist/assets/game-network-Bo_nlDR5.js +0 -22
- package/dist/assets/gameplay-replay-CnWnlogY.js +0 -1
- package/dist/assets/generation-DhwCUHPf.css +0 -1
- package/dist/assets/generation.service-D2yeZaJu.js +0 -1
- package/dist/assets/generations.status-3CrPw_n5.js +0 -1
- package/dist/assets/hierarchy-marks-BLPfSIym.js +0 -1
- package/dist/assets/hierarchy-marks-C25dY2fR.js +0 -1
- package/dist/assets/hosted-asset-materialization-DYdcFlDf.js +0 -2
- package/dist/assets/index-B5WjeCHm.css +0 -1
- package/dist/assets/index-BcH5GC3b.js +0 -1
- package/dist/assets/index-CwCDkEl1.js +0 -1
- package/dist/assets/index-n3QdTv-T.js +0 -1
- package/dist/assets/index.module-Ycad3DJq.js +0 -1
- package/dist/assets/ingest-siblings-CkxW__go.js +0 -1
- package/dist/assets/ingest-source-persistence-6peGfPAS.js +0 -1
- package/dist/assets/ingest.service-Cc73WMIW.js +0 -1
- package/dist/assets/inspection-CObLhnrs.js +0 -1
- package/dist/assets/instances.command-CxKGnrNl.js +0 -1
- package/dist/assets/material-BwFzKPi0.js +0 -1
- package/dist/assets/model-asset-sections-CFvvihfx.css +0 -1
- package/dist/assets/model-asset-sections.service-TZ2SaBmH.js +0 -1
- package/dist/assets/module-mode-B79jV5tQ.js +0 -2
- package/dist/assets/mount-canvas-ingest-root-BhaYNuhY.js +0 -2
- package/dist/assets/mount-dom-ingest-root-BQb1u0LX.js +0 -2
- package/dist/assets/mount-readiness-Ds0HvvLH.js +0 -4
- package/dist/assets/mount-three-ingest-root-DIDBfvIH.js +0 -1
- package/dist/assets/network-observer.service-CiR4Q9Q0.js +0 -1
- package/dist/assets/network.utility-CNG3eJ0E.js +0 -1
- package/dist/assets/object-marks-DwvIEBOK.js +0 -1
- package/dist/assets/pixi-authoring-adapter-B42K4md-.js +0 -1
- package/dist/assets/pixi-live-write-target-D56tQEe_.js +0 -1
- package/dist/assets/pose-guard-DILO6gGq.js +0 -1
- package/dist/assets/presentation-DGBuGP6i.js +0 -1
- package/dist/assets/profiler.utility-DLNySW3w.js +0 -1
- package/dist/assets/project-provenance-4ldz-EOG.js +0 -1
- package/dist/assets/r3f-design-session-C0DPEChS.js +0 -2
- package/dist/assets/react-canvas-navigation-Jowa_lJq.js +0 -1
- package/dist/assets/react-inspector.service-TfTdj_Qk.js +0 -1
- package/dist/assets/react-story-board-Bx7qYytV.js +0 -1
- package/dist/assets/react-world-authoring-adapter-C1jPW_cN.js +0 -1
- package/dist/assets/reflection-probe-capture.inspector-C-6zrzZb.js +0 -1
- package/dist/assets/registry-Z28XSZHF.js +0 -1
- package/dist/assets/resolve-three-C7zDbK29.js +0 -702
- package/dist/assets/root-seam-contract-rGNbiX6q.js +0 -1
- package/dist/assets/scene-capture-BTWgUzhI.js +0 -1
- package/dist/assets/scene-document.service-DJJp-la1.js +0 -2
- package/dist/assets/seeded-random-38To73fI.js +0 -1
- package/dist/assets/stage-overlay-set-olkNSZmq.js +0 -1
- package/dist/assets/stage-presence-markers-cznMN_qq.js +0 -1
- package/dist/assets/stage-transform-tools-BDUZqRIR.js +0 -1
- package/dist/assets/standard-viewport-dressing-BZyuxyVl.js +0 -24
- package/dist/assets/state-watch.utility-DDmn3G25.js +0 -1
- package/dist/assets/story-documents-8ehMyYHo.js +0 -3
- package/dist/assets/story-three-preview-B1nNiPwP.js +0 -2
- package/dist/assets/studio-environment-yaKaHPxH.js +0 -2
- package/dist/assets/team-playtest.service-Ds9tkO4q.js +0 -1
- package/dist/assets/three-authoring-adapter-BrkGH4cd.js +0 -1
- package/dist/assets/three-authoring.service-DoamZDMx.js +0 -2
- package/dist/assets/three-integration.service-Db-VabIm.js +0 -1
- package/dist/assets/three-projection-core-jBJVt6O0.js +0 -1
- package/dist/assets/three-viewport-presentation-CgO3eWJ-.js +0 -141
- package/dist/assets/tools-B_NJsk05.js +0 -1
- package/dist/assets/transform-mode-request-BnKpgRUW.js +0 -1
- package/dist/assets/transport-strip-a9yLoPsI.js +0 -1
- package/dist/assets/transport.header-CpfoppXc.js +0 -1
- package/dist/assets/tuples-CKsHOV9T.js +0 -1
- package/dist/assets/ui-board-document-DtTR_mBr.js +0 -2
- package/dist/assets/user-data-dHvLdpwM.js +0 -1
- package/dist/assets/viewport-door-DVkMQazS.js +0 -1
- package/dist/assets/worker-CC9Ug5Ei.js +0 -2
- package/dist/assets/workspace-arrangement-DIMM7ska.js +0 -1
- package/dist/assets/world-documents-C4t3iOD-.js +0 -1
- package/dist/assets/world-root-stage-binding-ydl3JN1a.js +0 -1
- package/dist/vgai-shared-react.json +0 -10
- package/dist/vgai-shared-three.json +0 -3
- package/template/.agents/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
- package/template/.claude/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
- package/template/.github/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
- package/template/server/loopback.ts +0 -76
- /package/dist/assets/{vgai-shared-fontawesome-CU65D4Ij.js → volter-shared-fontawesome-CU65D4Ij.js} +0 -0
- /package/dist/assets/{vgai-shared-jsx-dev-runtime-DFDKL7fx.js → volter-shared-jsx-dev-runtime-DFDKL7fx.js} +0 -0
- /package/dist/assets/{vgai-shared-jsx-runtime-DIqBpTut.js → volter-shared-jsx-runtime-DIqBpTut.js} +0 -0
- /package/dist/assets/{vgai-shared-react-BT7rMc2H.js → volter-shared-react-BT7rMc2H.js} +0 -0
- /package/dist/assets/{vgai-shared-react-dom-DFajMqMT.js → volter-shared-react-dom-DFajMqMT.js} +0 -0
- /package/dist/assets/{vgai-shared-react-dom-client-S0ozfl6_.js → volter-shared-react-dom-client-S0ozfl6_.js} +0 -0
- /package/dist/assets/{vgai-shared-three-DH4yxKwt.js → volter-shared-three-DH4yxKwt.js} +0 -0
- /package/template/{.vgai → .volter}/assets.json +0 -0
- /package/template/{.vgai → .volter}/provenance.json +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Detailed
|
|
1
|
+
# Detailed Volter game project reference
|
|
2
2
|
|
|
3
3
|
This is the procedural reference behind the compact project `AGENTS.md`
|
|
4
4
|
router. Load only the section the current decision needs. The source files
|
|
@@ -23,7 +23,7 @@ registry supplies their semantics.
|
|
|
23
23
|
## Starting a game
|
|
24
24
|
|
|
25
25
|
Read the brief, create the first `ROADMAP.md` arc, inspect
|
|
26
|
-
`
|
|
26
|
+
`volter.project.json`, then start the editor immediately:
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
29
|
npm run dev
|
|
@@ -46,12 +46,12 @@ has one `status:` and one `Summary:`; do not add acceptance criteria yet.
|
|
|
46
46
|
finishes, covering what changed, why, important decisions, the live playtest
|
|
47
47
|
outcome, and what remains. Link only evidence you inspected. Copy selected
|
|
48
48
|
screenshots into `media/screenshots/` and selected short clips into
|
|
49
|
-
`media/clips/`; bounded `.
|
|
49
|
+
`media/clips/`; bounded `.volter/` history is working material, not a permanent
|
|
50
50
|
journal attachment.
|
|
51
51
|
|
|
52
52
|
## Source architecture
|
|
53
53
|
|
|
54
|
-
Read `
|
|
54
|
+
Read `volter.project.json` and `src/main.ts` first. Every manifest root has one
|
|
55
55
|
adapter and lifecycle. Its entry is the source document: TSX for a Three or
|
|
56
56
|
Canvas root, JSX for a DOM root. Do not call `createRoot`, `hydrateRoot`, or
|
|
57
57
|
`ReactDOM.render` inside a root component: mounting belongs to `src/main.ts`
|
|
@@ -92,7 +92,7 @@ genuine exception with a reason.
|
|
|
92
92
|
The world node is the entity. Behavior on an R3F root is an ordinary React
|
|
93
93
|
component using `useFrame`; physics is ordinary `@react-three/rapier` JSX.
|
|
94
94
|
Use the ecosystem library directly. No mirror tree, gameplay registry, or
|
|
95
|
-
|
|
95
|
+
volter phase vocabulary belongs in game code.
|
|
96
96
|
|
|
97
97
|
## Playable slices
|
|
98
98
|
|
|
@@ -191,7 +191,7 @@ project inherits may error and these three throw until they are rewritten:
|
|
|
191
191
|
- Analytics shows game-specific charts and metrics from the selected recorded
|
|
192
192
|
Gameplay Session, using the editor's existing playback controls.
|
|
193
193
|
|
|
194
|
-
All three stubs emit `
|
|
194
|
+
All three stubs emit `VOLTER_STUB_UNIMPLEMENTED`, which makes the live console and
|
|
195
195
|
`check-idioms` report remaining work. Rewrite the files whole in the game's
|
|
196
196
|
vocabulary.
|
|
197
197
|
|
|
@@ -226,12 +226,12 @@ Build charts from the selected log at the shared cursor.
|
|
|
226
226
|
Record motion while Play runs:
|
|
227
227
|
|
|
228
228
|
```bash
|
|
229
|
-
npm run --silent
|
|
229
|
+
npm run --silent volter -- eval 'return editor.recording.start({ fps: 30 })'
|
|
230
230
|
# direct tester goals and advance with game.waitSimTime(...)
|
|
231
|
-
npm run --silent
|
|
231
|
+
npm run --silent volter -- eval 'return editor.recording.stop()'
|
|
232
232
|
```
|
|
233
233
|
|
|
234
|
-
Recordings are standard WebM files under `.
|
|
234
|
+
Recordings are standard WebM files under `.volter/recordings/`. Use ordinary
|
|
235
235
|
`ffprobe`/`ffmpeg` to inspect and trim them.
|
|
236
236
|
|
|
237
237
|
## Game data
|
|
@@ -258,7 +258,7 @@ small set of authored parameters; the generated table is build output.
|
|
|
258
258
|
|
|
259
259
|
## UI roots
|
|
260
260
|
|
|
261
|
-
A player HUD is a `dom` root in `
|
|
261
|
+
A player HUD is a `dom` root in `volter.project.json`, default-exporting an
|
|
262
262
|
ordinary React component. It reads the project's own React context/store and
|
|
263
263
|
uses normal React subscriptions. Do not mount a second React root from project
|
|
264
264
|
code, and do not use Drei `Html` for a HUD—it is absent from clean composite
|
|
@@ -266,7 +266,7 @@ captures.
|
|
|
266
266
|
|
|
267
267
|
`src/main.ts` mounts the roots the manifest declares for the standalone game,
|
|
268
268
|
and the editor mounts the same entries itself. The source component itself
|
|
269
|
-
stays free of
|
|
269
|
+
stays free of volter runtime context.
|
|
270
270
|
|
|
271
271
|
## Capabilities and assets
|
|
272
272
|
|
|
@@ -274,8 +274,8 @@ Capabilities are optional standard libraries copied into the project. Before
|
|
|
274
274
|
writing reusable plumbing, list what already exists:
|
|
275
275
|
|
|
276
276
|
```bash
|
|
277
|
-
npm run --silent
|
|
278
|
-
npm run --silent
|
|
277
|
+
npm run --silent volter -- add
|
|
278
|
+
npm run --silent volter -- add <id>
|
|
279
279
|
```
|
|
280
280
|
|
|
281
281
|
The copied source under `src/lib/` is project-owned and editable. Use its
|
|
@@ -283,7 +283,7 @@ native library API; do not wrap Three, Rapier, Pixi, React, Colyseus, or XState
|
|
|
283
283
|
behind another programming model.
|
|
284
284
|
|
|
285
285
|
For 3D, 2D, animation, humanoid, environment, or generated assets, load the
|
|
286
|
-
matching `.agents/skills/
|
|
286
|
+
matching `.agents/skills/volter-*` skill before acting. The 3D asset floor is a
|
|
287
287
|
named prefab component, a colocated story, named nodes, and inspected visual
|
|
288
288
|
evidence. Provider generation must go through the provider-native skill and
|
|
289
289
|
`ctx.projectOutputs.write(...)`; never spend funds by calling a provider ad
|
|
@@ -291,7 +291,7 @@ hoc.
|
|
|
291
291
|
|
|
292
292
|
Repeatable creative sequences are flat scripts under
|
|
293
293
|
`scripts/<task>/steps/`, with a README at each meaningful step and
|
|
294
|
-
intermediates under `.
|
|
294
|
+
intermediates under `.volter/tmp/<task>/`. Helpers under `src/lib/<domain>/` are
|
|
295
295
|
only for reusable, purely mechanical operations—not workflow runners,
|
|
296
296
|
registries, or auto-judges.
|
|
297
297
|
|
|
@@ -322,9 +322,8 @@ After every slice:
|
|
|
322
322
|
```bash
|
|
323
323
|
npm run check-idioms
|
|
324
324
|
npm run typecheck
|
|
325
|
-
npm run validate
|
|
326
325
|
npm run validate-manifest
|
|
327
|
-
npm run --silent
|
|
326
|
+
npm run --silent volter -- status
|
|
328
327
|
```
|
|
329
328
|
|
|
330
329
|
Then verify through the live editor-owned session:
|
|
@@ -341,7 +340,7 @@ Then verify through the live editor-owned session:
|
|
|
341
340
|
8. Inspect hierarchy and Content: prefabs appear as prefabs, repeated
|
|
342
341
|
primitives are collapsed under their owner, and independent entities are
|
|
343
342
|
not hidden in scenery.
|
|
344
|
-
9. `npm run --silent
|
|
343
|
+
9. `npm run --silent volter -- console` must be silent. Any unresolved warning/error is
|
|
345
344
|
remaining work or must be explicitly acknowledged with an honest reason.
|
|
346
345
|
10. Commit the verified slice immediately. When the arc finishes, update
|
|
347
346
|
`DEVLOG.md` with the judged result and reviewed media.
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: editor
|
|
3
|
-
description: Launch, control, inspect, and verify a
|
|
3
|
+
description: Launch, control, inspect, and verify a Volter game through its live visual editor. Use for editor sessions, Play mode, selection, hierarchy or inspector work, screenshots, status, logs, restart after setup changes, or the live playtest loop.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Control the
|
|
6
|
+
# Control the Volter editor
|
|
7
7
|
|
|
8
8
|
## Open the observable session
|
|
9
9
|
|
|
10
10
|
1. Run `npm run dev` from the game project. Let it auto-open unless the run is
|
|
11
11
|
genuinely unattended CI.
|
|
12
12
|
2. Tell the user the printed editor URL and keep the process running.
|
|
13
|
-
3. Run `npm run --silent
|
|
13
|
+
3. Run `npm run --silent volter -- status`; require `connected: true` before treating the
|
|
14
14
|
response as live state. A running server without a browser tab only has a
|
|
15
15
|
cached snapshot.
|
|
16
16
|
4. Use Play mode for user-visible game runs. The standalone page
|
|
@@ -18,8 +18,8 @@ description: Launch, control, inspect, and verify a VGAI game through its live v
|
|
|
18
18
|
exported it refuses to mount, so the editor is the one surface for a game
|
|
19
19
|
in development.
|
|
20
20
|
|
|
21
|
-
Always invoke the scaffold-pinned CLI as `npm run --silent
|
|
22
|
-
a bare global `
|
|
21
|
+
Always invoke the scaffold-pinned CLI as `npm run --silent volter -- <verb>`. Never use
|
|
22
|
+
a bare global `volter` command, which may come from a different checkout.
|
|
23
23
|
|
|
24
24
|
## Verify the loop
|
|
25
25
|
|
|
@@ -38,7 +38,7 @@ a bare global `vgai` command, which may come from a different checkout.
|
|
|
38
38
|
- Read persisted Play logs and visible pixels as well as state. Screenshots
|
|
39
39
|
must make the result being claimed legible.
|
|
40
40
|
- **Every `npx volter-game-editor play` records video automatically** — the ack prints the
|
|
41
|
-
recording path (`.
|
|
41
|
+
recording path (`.volter/recordings/play-latest.webm`, replaced by the next
|
|
42
42
|
play; `npx volter-game-editor play --record <name>` keeps a clip forever), play auto-stops
|
|
43
43
|
after 2 idle minutes, and stopping finalizes the WebM. A claim about
|
|
44
44
|
MOTION (an effect, an animation, a stutter, anything that lives between
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
|
-
display_name: "Control the
|
|
3
|
-
short_description: "Operate and inspect the live
|
|
4
|
-
default_prompt: "Use $editor to open, control, inspect, and verify this game in the
|
|
2
|
+
display_name: "Control the Volter Editor"
|
|
3
|
+
short_description: "Operate and inspect the live Volter editor"
|
|
4
|
+
default_prompt: "Use $editor to open, control, inspect, and verify this game in the Volter editor."
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
|
|
5
5
|
- [CLI invocation](#cli-invocation--use-the-project-local-cli)
|
|
6
6
|
- [Quick start](#quick-start)
|
|
7
|
-
- [Connection precondition](#precondition-most-verbs-need-a-connected-browser-tab-not-just-
|
|
8
|
-
- [**Drive the running game — `npx volter-game-editor eval`**](#drive-the-running-game--
|
|
7
|
+
- [Connection precondition](#precondition-most-verbs-need-a-connected-browser-tab-not-just-volter-edit-running)
|
|
8
|
+
- [**Drive the running game — `npx volter-game-editor eval`**](#drive-the-running-game--volter-eval-the-general-door)
|
|
9
9
|
- [CLI reference](#cli-reference)
|
|
10
10
|
- [Entity IDs](#entity-ids)
|
|
11
11
|
- [Typical workflows](#typical-workflows)
|
|
12
12
|
- [SDK](#sdk-programmatic-access)
|
|
13
13
|
|
|
14
|
-
Use the `
|
|
14
|
+
Use the `volter` CLI to create projects, launch the editor, and control it programmatically. The editor is a browser-based WebGL app; the CLI sends commands to it over HTTP.
|
|
15
15
|
|
|
16
16
|
**Driving a running GAME is a different question from driving the editor**, and
|
|
17
17
|
it has one answer: `npx volter-game-editor eval`. Read that section before the verb list — the
|
|
@@ -19,31 +19,31 @@ verbs cover the editor, and a game's own commands are never verbs.
|
|
|
19
19
|
|
|
20
20
|
## CLI invocation — use the project-local CLI
|
|
21
21
|
|
|
22
|
-
Inside this scaffold, invoke every CLI verb as `npm run --silent
|
|
22
|
+
Inside this scaffold, invoke every CLI verb as `npm run --silent volter -- <verb>`. The
|
|
23
23
|
script points at the versioned `@volter/game-editor` installed with this project. Never
|
|
24
|
-
use a bare global `
|
|
24
|
+
use a bare global `volter` command here: another installation can own that binary
|
|
25
25
|
and can silently target the wrong session or apply different manifest rules.
|
|
26
26
|
|
|
27
27
|
## Quick Start
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
npm run --silent
|
|
30
|
+
npm run --silent volter -- create "My Game" # Scaffold a new project in ./my-game
|
|
31
31
|
cd my-game
|
|
32
|
-
npm run --silent
|
|
33
|
-
npm run --silent
|
|
34
|
-
npm run --silent
|
|
32
|
+
npm run --silent volter -- edit . # Launch editor + open browser
|
|
33
|
+
npm run --silent volter -- play # Enter play mode
|
|
34
|
+
npm run --silent volter -- restart # Remount all game roots — acks only when the session is READY
|
|
35
35
|
# again (relay up, tab attached, play measured running); exits
|
|
36
36
|
# non-zero naming the gap otherwise. No sleep-then-play dance.
|
|
37
|
-
npm run --silent
|
|
38
|
-
npm run --silent
|
|
37
|
+
npm run --silent volter -- status # Check editor state
|
|
38
|
+
npm run --silent volter -- eval --list # Everything you can drive — ask this FIRST
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
**Port cross-talk:** the default editor port (5173) is shared across every
|
|
42
|
-
|
|
42
|
+
Volter project on the machine. `npm run --silent volter -- edit .` never silently retargets a
|
|
43
43
|
DIFFERENT project's already-running editor — if one is already open
|
|
44
44
|
elsewhere, this one starts a second instance on a fresh free port and prints
|
|
45
45
|
that URL instead (use `--switch` to retarget the existing one on purpose).
|
|
46
|
-
If you might have another
|
|
46
|
+
If you might have another volter-game-editor project's tab open in the browser already,
|
|
47
47
|
don't assume it's this project: read the URL `npx volter-game-editor edit` actually prints
|
|
48
48
|
(check `npx volter-game-editor sessions` to see every live session's port → project), or pass
|
|
49
49
|
`npx volter-game-editor edit --port <n>` to pin an explicit port for this project so a stale
|
|
@@ -74,7 +74,7 @@ one legitimate case is a fully unattended CI job that then drives the
|
|
|
74
74
|
editor itself, e.g. via Playwright:
|
|
75
75
|
|
|
76
76
|
```bash
|
|
77
|
-
npm run --silent
|
|
77
|
+
npm run --silent volter -- edit . --no-open # ONLY when no human could be watching (e.g. CI)
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
```ts
|
|
@@ -85,7 +85,7 @@ npm run --silent vgai -- edit . --no-open # ONLY when no human could be watching
|
|
|
85
85
|
await page.goto('http://localhost:5173', { waitUntil: 'load' });
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
Once that page has loaded, it registers as a connected client and `
|
|
88
|
+
Once that page has loaded, it registers as a connected client and `volter-game-editor
|
|
89
89
|
status`/`npx volter-game-editor play`/etc. from another shell will reach it for real.
|
|
90
90
|
|
|
91
91
|
## Drive the running game — `npx volter-game-editor eval`, the general door
|
|
@@ -97,12 +97,12 @@ is no command registry, provider registry, or fixed game vocabulary to learn.
|
|
|
97
97
|
`{ editor, game, page, tools, session }` from `@volter/game-live` already in scope:
|
|
98
98
|
|
|
99
99
|
```bash
|
|
100
|
-
npm run --silent
|
|
101
|
-
npm run --silent
|
|
102
|
-
npm run --silent
|
|
103
|
-
npm run --silent
|
|
104
|
-
npm run --silent
|
|
105
|
-
npm run --silent
|
|
100
|
+
npm run --silent volter -- eval --list # what's in scope (no session needed)
|
|
101
|
+
npm run --silent volter -- eval 'return game.run(async ({ modules }) => { const arena = await modules("src/sim/arena.ts"); return arena.readArena(); })'
|
|
102
|
+
npm run --silent volter -- eval 'return game.run(async ({ modules }) => { const arena = await modules("src/sim/arena.ts"); arena.setupBossWave(); return arena.readArena(); })'
|
|
103
|
+
npm run --silent volter -- eval 'return game.run(async ({ modules }) => { const tester = await modules("src/bot/tester-station.ts"); return tester.hireTester("sweep"); })'
|
|
104
|
+
npm run --silent volter -- eval 'await game.waitSimTime({simSeconds: 4})'
|
|
105
|
+
npm run --silent volter -- eval 'await editor.grid(false)' # the editor half, same door
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
`--list` walks the live binding objects themselves rather than a written list,
|
|
@@ -112,7 +112,7 @@ template's `src/tools/use-game-modules.ts` shows how a literal contribution
|
|
|
112
112
|
reads the exact same running instances.
|
|
113
113
|
|
|
114
114
|
**NEVER pilot a realtime game from the developer REPL, with synthetic key
|
|
115
|
-
events, rAF loops, wall-clock sleeps, or direct `window.
|
|
115
|
+
events, rAF loops, wall-clock sleeps, or direct `window.__volter*`/scene-graph
|
|
116
116
|
reads.** Arrange expensive preconditions with exported setup functions, then
|
|
117
117
|
hire the resident tester to act through the game's real input store.
|
|
118
118
|
`waitSimTime` advances deterministically even while the editor tab is HIDDEN.
|
|
@@ -137,9 +137,9 @@ providers every other tool reads.
|
|
|
137
137
|
### Project Management (no running editor needed)
|
|
138
138
|
|
|
139
139
|
```bash
|
|
140
|
-
npm run --silent
|
|
141
|
-
npm run --silent
|
|
142
|
-
npm run --silent
|
|
140
|
+
npm run --silent volter -- create <name> [location] # Empty project (default location: ./<name>)
|
|
141
|
+
npm run --silent volter -- create <name> [location] --template game # Game composition; also empty, website, models
|
|
142
|
+
npm run --silent volter -- edit [project-path] # Launch editor for project (default: cwd).
|
|
143
143
|
# Reuses the session already serving THIS
|
|
144
144
|
# project; otherwise starts a NEW instance on
|
|
145
145
|
# a free port rather than silently retargeting
|
|
@@ -148,15 +148,15 @@ npm run --silent vgai -- edit [project-path] # Launch editor for project
|
|
|
148
148
|
# --switch retarget an existing instance
|
|
149
149
|
# instead of starting a new one
|
|
150
150
|
# --port <n> force a port for a fresh instance
|
|
151
|
-
npm run --silent
|
|
151
|
+
npm run --silent volter -- sessions # List live editor sessions (port -> project)
|
|
152
152
|
```
|
|
153
153
|
|
|
154
154
|
### Scene & Project Info (needs running editor)
|
|
155
155
|
|
|
156
156
|
```bash
|
|
157
|
-
npm run --silent
|
|
158
|
-
npm run --silent
|
|
159
|
-
npm run --silent
|
|
157
|
+
npm run --silent volter -- open <path> # Switch project in running editor
|
|
158
|
+
npm run --silent volter -- project # Show current project info
|
|
159
|
+
npm run --silent volter -- projects # List recent projects
|
|
160
160
|
```
|
|
161
161
|
|
|
162
162
|
`open` / `project` / `projects` stay first-class for a concrete reason: project
|
|
@@ -166,11 +166,11 @@ management lives on `EditorClient` and was never lifted onto `@volter/editor-liv
|
|
|
166
166
|
### Play Control
|
|
167
167
|
|
|
168
168
|
```bash
|
|
169
|
-
npm run --silent
|
|
170
|
-
npm run --silent
|
|
169
|
+
npm run --silent volter -- play # Enter play mode
|
|
170
|
+
npm run --silent volter -- restart # Dispose + remount every game root — waits out a relaunching dev
|
|
171
171
|
# server, re-ensures the one tab, and acks only once play is
|
|
172
172
|
# measured running (a failure names the next step)
|
|
173
|
-
npm run --silent
|
|
173
|
+
npm run --silent volter -- stop # Exit play mode
|
|
174
174
|
```
|
|
175
175
|
|
|
176
176
|
`pause` / `resume` / `step` were REMOVED — `npx volter-game-editor eval 'editor.pause()'`,
|
|
@@ -191,16 +191,16 @@ exposes, so they were deleted rather than kept as aliases. Typing one now
|
|
|
191
191
|
errors with its exact replacement:
|
|
192
192
|
|
|
193
193
|
```bash
|
|
194
|
-
npm run --silent
|
|
195
|
-
npm run --silent
|
|
196
|
-
npm run --silent
|
|
197
|
-
npm run --silent
|
|
198
|
-
npm run --silent
|
|
199
|
-
npm run --silent
|
|
200
|
-
npm run --silent
|
|
201
|
-
npm run --silent
|
|
202
|
-
npm run --silent
|
|
203
|
-
npm run --silent
|
|
194
|
+
npm run --silent volter -- eval 'editor.select("<entityId>")' # or "all"
|
|
195
|
+
npm run --silent volter -- eval 'editor.deselect()'
|
|
196
|
+
npm run --silent volter -- eval 'editor.focus("<entityId>")' # omit arg = current selection
|
|
197
|
+
npm run --silent volter -- eval 'editor.view("top")' # top|front|right|perspective
|
|
198
|
+
npm run --silent volter -- eval 'editor.showPanel("inspector")' # viewport|inspector|console|build
|
|
199
|
+
npm run --silent volter -- eval 'editor.openAsset("<path>", "<kind>")'
|
|
200
|
+
npm run --silent volter -- eval 'editor.grid(false)'
|
|
201
|
+
npm run --silent volter -- eval 'editor.helpers(true)'
|
|
202
|
+
npm run --silent volter -- eval 'editor.stats(true)'
|
|
203
|
+
npm run --silent volter -- eval 'editor.shading("wireframe")' # solid|unlit|wireframe|normals|overdraw
|
|
204
204
|
```
|
|
205
205
|
|
|
206
206
|
The advantage is not brevity — it is that one door composes. Selecting an
|
|
@@ -208,7 +208,7 @@ entity, framing it, and capturing the result is a single round trip instead of
|
|
|
208
208
|
four processes:
|
|
209
209
|
|
|
210
210
|
```bash
|
|
211
|
-
npm run --silent
|
|
211
|
+
npm run --silent volter -- eval 'await editor.select(id); await editor.focus(); await editor.shading("wireframe"); return editor.screenshot()'
|
|
212
212
|
```
|
|
213
213
|
|
|
214
214
|
Shading is temporary, render-only editor state: it never rewrites scene or
|
|
@@ -222,7 +222,7 @@ bounds toggles; use `setHelperType()` through the SDK when you need one category
|
|
|
222
222
|
### State
|
|
223
223
|
|
|
224
224
|
```bash
|
|
225
|
-
npm run --silent
|
|
225
|
+
npm run --silent volter -- status # Print full editor state as JSON
|
|
226
226
|
```
|
|
227
227
|
|
|
228
228
|
The `status` command returns:
|
|
@@ -240,9 +240,9 @@ The `status` command returns:
|
|
|
240
240
|
### Verification — the LIVE playtest, in as many seats as it needs
|
|
241
241
|
|
|
242
242
|
```bash
|
|
243
|
-
npm run --silent
|
|
244
|
-
npm run --silent
|
|
245
|
-
npm run --silent
|
|
243
|
+
npm run --silent volter -- eval 'return game.run(async ({ modules }) => { const mechanic = await modules("src/sim/<mechanic>.ts"); mechanic.<setup>(); return mechanic.<read>(); })'
|
|
244
|
+
npm run --silent volter -- eval 'return game.run(async ({ modules }) => { const tester = await modules("src/bot/tester-station.ts"); return tester.hireTester("<goal>"); })'
|
|
245
|
+
npm run --silent volter -- eval 'return game.run(async ({ modules }) => { const tester = await modules("src/bot/tester-station.ts"); return tester.describeTester(); })'
|
|
246
246
|
```
|
|
247
247
|
|
|
248
248
|
Verification IS the interactive playtest: cheats set the situation, the
|
|
@@ -270,7 +270,7 @@ functions, which is exactly why the door is general.
|
|
|
270
270
|
|
|
271
271
|
```bash
|
|
272
272
|
--url <url> # Editor URL (default: http://localhost:5173)
|
|
273
|
-
# Also:
|
|
273
|
+
# Also: VOLTER_EDITOR_URL env var
|
|
274
274
|
```
|
|
275
275
|
|
|
276
276
|
## Entity IDs
|
|
@@ -278,7 +278,7 @@ functions, which is exactly why the door is general.
|
|
|
278
278
|
Entity ids are minted by the active authoring adapter (a three world's are
|
|
279
279
|
keyed on the OID its source carries — stable across reloads). To find one:
|
|
280
280
|
|
|
281
|
-
1. `npm run --silent
|
|
281
|
+
1. `npm run --silent volter -- eval 'return editor.hierarchy()'` — the hierarchy panel's
|
|
282
282
|
rows as data, each with its `id` and label
|
|
283
283
|
2. Use that id with `editor.select("<id>")` / `editor.focus("<id>")` through
|
|
284
284
|
`npx volter-game-editor eval`
|
|
@@ -288,29 +288,29 @@ keyed on the OID its source carries — stable across reloads). To find one:
|
|
|
288
288
|
### Start a new project from scratch
|
|
289
289
|
|
|
290
290
|
```bash
|
|
291
|
-
npm run --silent
|
|
291
|
+
npm run --silent volter -- create "My Platformer"
|
|
292
292
|
cd my-platformer
|
|
293
|
-
npm run --silent
|
|
293
|
+
npm run --silent volter -- edit .
|
|
294
294
|
```
|
|
295
295
|
|
|
296
296
|
### Show the user an entity you just created/modified
|
|
297
297
|
|
|
298
298
|
```bash
|
|
299
299
|
# After editing the world's TSX source — select and frame the entity in one round trip:
|
|
300
|
-
npm run --silent
|
|
300
|
+
npm run --silent volter -- eval 'await editor.select("<entity-id>"); await editor.focus()'
|
|
301
301
|
```
|
|
302
302
|
|
|
303
303
|
### Test gameplay
|
|
304
304
|
|
|
305
305
|
```bash
|
|
306
|
-
npm run --silent
|
|
307
|
-
npm run --silent
|
|
308
|
-
npm run --silent
|
|
309
|
-
npm run --silent
|
|
310
|
-
npm run --silent
|
|
311
|
-
npm run --silent
|
|
312
|
-
npm run --silent
|
|
313
|
-
npm run --silent
|
|
306
|
+
npm run --silent volter -- play
|
|
307
|
+
npm run --silent volter -- eval 'return game.run(async ({ modules }) => { const mechanic = await modules("src/sim/<mechanic>.ts"); mechanic.<setup>(); return mechanic.<read>(); })'
|
|
308
|
+
npm run --silent volter -- eval 'return game.run(async ({ modules }) => { const tester = await modules("src/bot/tester-station.ts"); return tester.hireTester("<goal>"); })'
|
|
309
|
+
npm run --silent volter -- eval 'await game.waitSimTime({simSeconds: 5})'
|
|
310
|
+
npm run --silent volter -- eval 'return game.run(async ({ modules }) => { const mechanic = await modules("src/sim/<mechanic>.ts"); return mechanic.<read>(); })'
|
|
311
|
+
npm run --silent volter -- screenshot # and LOOK at the pixels
|
|
312
|
+
npm run --silent volter -- restart # after an init-time source change
|
|
313
|
+
npm run --silent volter -- stop
|
|
314
314
|
```
|
|
315
315
|
|
|
316
316
|
Arrange and read through the mechanic's own exported functions; let the
|
|
@@ -321,7 +321,7 @@ disagrees.
|
|
|
321
321
|
### Debug a specific view angle
|
|
322
322
|
|
|
323
323
|
```bash
|
|
324
|
-
npm run --silent
|
|
324
|
+
npm run --silent volter -- eval 'await editor.view("top"); await editor.shading("wireframe"); await editor.helpers(true)'
|
|
325
325
|
```
|
|
326
326
|
|
|
327
327
|
## SDK (Programmatic Access)
|
|
@@ -358,6 +358,6 @@ the right import for editor-only automation that has no game running — plus th
|
|
|
358
358
|
handful of project-management calls (`createProject()`, `openProject()`,
|
|
359
359
|
`getProject()`, `listRecentProjects()`) that `@volter/editor-live` does not re-expose.
|
|
360
360
|
|
|
361
|
-
Run `npm run --silent
|
|
361
|
+
Run `npm run --silent volter -- eval --list` for the current member list on every binding.
|
|
362
362
|
It walks the live objects at runtime, so it is accurate in a way this page
|
|
363
363
|
cannot promise to be.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: volter-3d-models
|
|
3
3
|
description: Model and revise game props with ordinary Blender Python through the Blender MCP and export the asset for a reusable Three.js prefab. Use when asked to model a prop, shape, machine, or other game object. For placement, stories and gameplay follow .agents/references/project-manual.md; for procedural geometry generated during gameplay use ordinary Three.js.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -12,7 +12,7 @@ Blender coordinates are **Z-up**, distances are metres, and angles are radians.
|
|
|
12
12
|
|
|
13
13
|
Start the game's editor with `npm run dev` **in the background**, keep it running
|
|
14
14
|
while authoring, and tell the user its URL. Connect the project's `blender`
|
|
15
|
-
server in `.mcp.json` (`npm run --silent
|
|
15
|
+
server in `.mcp.json` (`npm run --silent volter -- blender-mcp`).
|
|
16
16
|
The **Model** document is your Blender viewport; the **Scene** composes game
|
|
17
17
|
objects. Inspect the model there, then inspect its placement in the game.
|
|
18
18
|
|
|
@@ -43,7 +43,7 @@ For an asset revision, edit it in Blender and re-export to the same asset path.
|
|
|
43
43
|
Check its game placements and preserve the selected starter's studio and
|
|
44
44
|
verification requirements. Before handoff, run the game's build and inspect the
|
|
45
45
|
exported game. Keep input assets and runtime exports in version control;
|
|
46
|
-
keep scratch files in `.
|
|
46
|
+
keep scratch files in `.volter/tmp/`.
|
|
47
47
|
|
|
48
48
|
For animation and skinning, a static mesh export is not proof that an animated
|
|
49
49
|
character is game-ready.
|
package/template/.agents/skills/{vgai-ingest-existing-game → volter-ingest-existing-game}/SKILL.md
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: volter-ingest-existing-game
|
|
3
3
|
description: >
|
|
4
4
|
Take an existing, unmodified web game (three.js, PixiJS, or React) to FULL
|
|
5
|
-
|
|
5
|
+
volter editor integration: mount it through the adapter seam, declare its
|
|
6
6
|
real capabilities through the game contract, drive every adapter slot to a
|
|
7
7
|
terminal state (implemented, or verified implemented-empty), and prove it
|
|
8
8
|
live through the product's own doors. Use when asked to ingest, adapt,
|
|
@@ -30,7 +30,7 @@ orders. Mounting the game is STEP ONE of seven, not the deliverable.
|
|
|
30
30
|
objects; the navigation slots show the host-computation form (host BFS
|
|
31
31
|
over the game's own public graph, labeled as the host's in so many
|
|
32
32
|
words).
|
|
33
|
-
- The contract shapes: `packages/project/src/adapter/ingest/game-contract.ts`
|
|
33
|
+
- The contract shapes: `packages/editor-project/src/adapter/ingest/game-contract.ts`
|
|
34
34
|
(root · lifecycle · systems.commands/state/hierarchy · systemAdapters) and
|
|
35
35
|
`contract-system-adapters.ts` (the projection that rejects malformed
|
|
36
36
|
claims — a `present` missing required members, or an `empty` without
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: volter-music
|
|
3
3
|
description: Compose this game's music as code the person edits with you in the editor's DAW, render it to seamless OGG loops, section loops, stems and stingers, and play them in the game. Use when asked to write, arrange, revise or deliver music or a stinger.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -13,10 +13,10 @@ gesture they make rewrites the literal it touched in this same file.
|
|
|
13
13
|
|
|
14
14
|
## Set up once
|
|
15
15
|
|
|
16
|
-
1. `npm run --silent
|
|
16
|
+
1. `npm run --silent volter -- add music`: adds `@volter/dawproject` (the elements) and
|
|
17
17
|
`@volter/editor-dawproject` (the document, the renderer, the checks), copies
|
|
18
18
|
`src/lib/music/music-player.ts` and the render tool, and selects the piece finder in
|
|
19
|
-
`
|
|
19
|
+
`volter.adapter.ts` (`documents.find`: `{ finder: 'piecesFromModules', include:
|
|
20
20
|
['src/music/**/*.tsx'] }`), so every piece under `src/music/` opens as a document. When the
|
|
21
21
|
adapter is not a literal `defineAdapter({ … })` table it cannot edit, it says so and prints
|
|
22
22
|
the selection to add by hand.
|
|
@@ -225,11 +225,11 @@ Say what the numbers show; never claim how something sounds.
|
|
|
225
225
|
|
|
226
226
|
The game ships the piece as mastered audio, never as its code. Render it with the project's
|
|
227
227
|
render tool, which writes into `public/music/<piece>/` and records every file it writes in
|
|
228
|
-
`.
|
|
228
|
+
`.volter/provenance.json`:
|
|
229
229
|
|
|
230
230
|
```bash
|
|
231
|
-
npm run --silent
|
|
232
|
-
npm run --silent
|
|
231
|
+
npm run --silent volter -- eval 'return await tools.run("project.music.render", { piece: "src/music/theme.tsx", sections: true }, { confirm: true })'
|
|
232
|
+
npm run --silent volter -- eval 'return await tools.run("project.music.render", { piece: "src/music/victory.tsx", oneShot: true }, { confirm: true })'
|
|
233
233
|
```
|
|
234
234
|
|
|
235
235
|
The answer's `data.report` is the render's `report.json`. For a draft you only want to measure,
|
|
@@ -242,7 +242,7 @@ renders the same files outside `public/`, unrecorded.
|
|
|
242
242
|
clips take to come round together, at the same level), `stems/<track>.ogg`, and `report.json`. Every `.ogg` has an `.m4a`
|
|
243
243
|
(AAC) beside it for browsers that cannot decode Vorbis; `loadMusic` falls back to it.
|
|
244
244
|
- The same piece renders to the same bytes every time, so an unchanged piece re-rendered leaves
|
|
245
|
-
`.
|
|
245
|
+
`.volter/provenance.json` unchanged.
|
|
246
246
|
- `--one-shot` is a stinger: one pass and its reverb tail, no loop.
|
|
247
247
|
- Loudness defaults to −18 LUFS integrated (`--target portable`); `--target console` is −24.
|
|
248
248
|
The true peak stays under −1 dBTP.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Build, rig, animate, diagnose, and visually refine polished native Three.js scenes and procedural assets with direct Object3D code, reusable construction helpers, geometry libraries, and an inspect-render-critique loop. Use for procedural models, rigid mechanical armatures, environments, static props, stylized materials, lighting, cameras, scene composition, or an agent-focused Blender-like workflow. Use
|
|
2
|
+
name: volter-threejs-authoring
|
|
3
|
+
description: Build, rig, animate, diagnose, and visually refine polished native Three.js scenes and procedural assets with direct Object3D code, reusable construction helpers, geometry libraries, and an inspect-render-critique loop. Use for procedural models, rigid mechanical armatures, environments, static props, stylized materials, lighting, cameras, scene composition, or an agent-focused Blender-like workflow. Use volter-3d-models when the result should be a Blender source document with an exported GLB. Do not use for Blender bpy work or imported skeletal retargeting.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
#
|
|
6
|
+
# Volter Three.js Authoring
|
|
7
7
|
|
|
8
8
|
Author ordinary project source against Three.js. Treat the source module and
|
|
9
9
|
live `Object3D` graph as truth. Use helpers for leverage, not as a replacement
|
|
@@ -14,7 +14,7 @@ scene language.
|
|
|
14
14
|
1. Read the project instructions and architecture.
|
|
15
15
|
2. Locate the Three root or modeling build entry, existing helpers,
|
|
16
16
|
renderer setup, and verification commands.
|
|
17
|
-
3. Start or reuse the
|
|
17
|
+
3. Start or reuse the Volter editor immediately and keep it open.
|
|
18
18
|
4. Capture a fixed-camera visual baseline.
|
|
19
19
|
5. Inspect the live hierarchy, selected-object facts, renderer state, and
|
|
20
20
|
console before changing code.
|
|
@@ -23,7 +23,7 @@ Never introduce a parallel entity tree, semantic operation log, generated
|
|
|
23
23
|
scene JSON, or wrapper around ordinary Three.js access for agent control. Give
|
|
24
24
|
important objects stable `Object3D.name` values or project metadata.
|
|
25
25
|
|
|
26
|
-
Use `
|
|
26
|
+
Use `volter-3d-models` for Blender-sourced assets; prefab placement, stories and the
|
|
27
27
|
naming floor are in `.agents/references/project-manual.md`.
|
|
28
28
|
|
|
29
29
|
## Choose the lowest sufficient layer
|
|
@@ -67,7 +67,7 @@ Use raw Three.js whenever a helper becomes awkward.
|
|
|
67
67
|
Keep shader source in ordinary `.vert`, `.frag`, or `.glsl` files and bind it
|
|
68
68
|
with `THREE.ShaderMaterial` directly. A sibling `name.vert.glsl` +
|
|
69
69
|
`name.frag.glsl` pair is the portable convention Asset Lab recognizes; it is
|
|
70
|
-
not a
|
|
70
|
+
not a Volter format. Keep authored uniform defaults, defines, textures, and
|
|
71
71
|
material composition beside the owning material in TS/TSX, where the runtime
|
|
72
72
|
actually reads them. Never add a `.shader.json`, uniform sidecar, or generated
|
|
73
73
|
shader graph to duplicate those facts.
|
|
@@ -86,7 +86,7 @@ postprocessing, or the game's actual texture bindings.
|
|
|
86
86
|
## Compose postprocessing directly
|
|
87
87
|
|
|
88
88
|
When a game needs postprocessing, add `@react-three/postprocessing` to that
|
|
89
|
-
project and import its components directly. Do not create a
|
|
89
|
+
project and import its components directly. Do not create a Volter chain file,
|
|
90
90
|
effect registry, wrapper component, or JSON descriptor. The owning scene's JSX
|
|
91
91
|
is already the ordered chain; conditionally render one effect to bypass it and
|
|
92
92
|
move its JSX child to reorder it. Keep the finishing order restrained: render,
|
|
@@ -267,12 +267,12 @@ is `npx volter-game-editor screenshot`, and the module lane is the asset loop:
|
|
|
267
267
|
the camera. The corollary is a real blind spot: an asset lane auto-frames
|
|
268
268
|
its subject, so it can NEVER show you a wrong origin, a floating contact
|
|
269
269
|
plane, or a scale that disagrees with the world. Only a scene shot can —
|
|
270
|
-
`npx volter-game-editor screenshot` with no target (play mode, whole stack) or `
|
|
270
|
+
`npx volter-game-editor screenshot` with no target (play mode, whole stack) or `volter-game-editor
|
|
271
271
|
screenshot <entityId>` (one entity where it stands, under the scene's own
|
|
272
272
|
lighting).
|
|
273
273
|
|
|
274
274
|
> Engine-repo aside — not for game projects. When you are working inside the
|
|
275
|
-
>
|
|
275
|
+
> volter engine checkout itself (no game project, no editor session), the
|
|
276
276
|
> equivalent is `node packages/engine/e2e/turntable/capture.mjs <subject>`,
|
|
277
277
|
> run from the checkout root; it boots and tears down its own server. Point
|
|
278
278
|
> it at your own builder with `capture.mjs file --module
|
|
@@ -5,7 +5,7 @@ small project helper, or a specialist geometry library.
|
|
|
5
5
|
|
|
6
6
|
**MODELING IS BLENDER'S.** A model is a `.blend`, authored in the real Blender
|
|
7
7
|
running headless in the editor tab, and a game loads the GLB it exports. Reach
|
|
8
|
-
for `
|
|
8
|
+
for `volter-3d-models` (bpy through the Blender MCP).
|
|
9
9
|
|
|
10
10
|
**Add a capability before you look for its source.** Everything under
|
|
11
11
|
`src/lib/` below is a CAPABILITY, not scaffold contents — a fresh project has
|