@volter/game-editor 0.5.67 → 0.5.69
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 +10954 -5077
- package/LICENSE +1 -1
- 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 +6 -6
- package/catalog/project-source/LICENSE +1 -1
- 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/music/music-player.ts +18 -12
- 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 +4106 -3965
- package/dist/assets/{AssetBudgetPanel-x_FNJbfZ.js → AssetBudgetPanel-BMR3AQhc.js} +10 -10
- package/dist/assets/AudioViewer-DESxi7pU.js +1 -0
- package/dist/assets/CanvasBoardDocument-Q_nrYFlB.js +1 -0
- package/dist/assets/CanvasSceneViewport-WZMoKy_F.js +1 -0
- package/dist/assets/ColorInput-C2EK-OnD.js +1 -0
- package/dist/assets/{EntityModelDocument-CzUHsH9E.js → EntityModelDocument-B_4ENTCq.js} +1 -1
- package/dist/assets/{EnvironmentAssetDocument-ByEB7_4A.js → EnvironmentAssetDocument-BZBp6OFJ.js} +1 -1
- package/dist/assets/{GameplaySessionTimeline-dhG-oiqd.js → GameplaySessionTimeline-1ivaucpv.js} +1 -1
- package/dist/assets/ImageViewer-D16OExYu.js +1 -0
- package/dist/assets/{InspectorCanvasPreview-CEr_Kxna.js → InspectorCanvasPreview-BrFjhoiD.js} +1 -1
- package/dist/assets/InspectorObjectPreview-CY5xVsPR.js +1 -0
- package/dist/assets/JsonAssetDocument-CvjTlcdr.js +2 -0
- package/dist/assets/{LiveModuleDocument-DL8QHSlk.js → LiveModuleDocument-ne1o9giX.js} +1 -1
- package/dist/assets/{LutAssetDocument-BImiug2M.js → LutAssetDocument-Cp0v-O7q.js} +1 -1
- package/dist/assets/ModelAssetDocument-Ceu7OIN9.js +1 -0
- package/dist/assets/{NonThreeAuthoringBootstrap-B40qmGGS.js → NonThreeAuthoringBootstrap-DiElZf-e.js} +1 -1
- package/dist/assets/Object3DDocumentToolbar-BLNamqii.js +1 -0
- package/dist/assets/Object3DDocumentViewport-D6QoHfa_.js +2 -0
- package/dist/assets/{Object3DPreview-ClYDoH2L.js → Object3DPreview-ZVokr044.js} +1 -1
- package/dist/assets/OnlineAssetDetail-Dnckd7zB.js +1 -0
- package/dist/assets/PlayBar-DsMitSgy.js +1 -0
- package/dist/assets/{QuarksAssetDocument-B-VOj-n4.js → QuarksAssetDocument-B5J8uHFM.js} +1 -1
- package/dist/assets/ReactCanvasControls-CmfvxJYY.js +1 -0
- package/dist/assets/RootSelectionOverlay-BWsNiSuM.js +1 -0
- package/dist/assets/{ShaderAssetDocument-Kn8IvRGV.js → ShaderAssetDocument-CT7XzsZq.js} +5 -5
- package/dist/assets/ShadowEditor-YO5KEfnz.js +1 -0
- package/dist/assets/{SourceAssetViewer-CLQ95VSD.js → SourceAssetViewer-FSLup2km.js} +1 -1
- package/dist/assets/StageHost-DYfGYwvq.js +2 -0
- package/dist/assets/{StoryPreviewMount-D2lg37et.js → StoryPreviewMount-BhvT5QlB.js} +1 -1
- package/dist/assets/ThreeBoardDocument-B-z2nwnH.js +2 -0
- package/dist/assets/{ThreeIsolationSceneContent-DbYIylZQ.js → ThreeIsolationSceneContent-B5pU4Y6k.js} +1 -1
- package/dist/assets/{ToolObject3DPreview-WEi6C9uU.js → ToolObject3DPreview-VtraiQ4Q.js} +1 -1
- package/dist/assets/Toolbar-M62Gob9T.js +1 -0
- package/dist/assets/{TransientHint-BpDLhRLd.js → TransientHint-Cc40mHWE.js} +1 -1
- package/dist/assets/VideoViewer-BxcUwXQm.js +1 -0
- package/dist/assets/ViewportShadingMenu-BoMPnTVh.js +1 -0
- package/dist/assets/active-ingest-0QjJWb7i.js +3 -0
- package/dist/assets/{animation-clock-Bm80XdqP.js → animation-clock-BXEwUJtz.js} +1 -1
- package/dist/assets/animation-mixers.service-C-Ko4KzM.js +1 -0
- package/dist/assets/animation-timeline.utility-Bl15-rYb.js +1 -0
- package/dist/assets/{asset-budget-asset.menu-CEgP0Kiw.js → asset-budget-asset.menu-BUa3g0Wy.js} +1 -1
- package/dist/assets/{asset-budget.action-D4R1c3wi.js → asset-budget.action-Dl5eVPIo.js} +1 -1
- package/dist/assets/{asset-budget.document-Syzjn1U1.js → asset-budget.document-DJylQ-0h.js} +1 -1
- package/dist/assets/{asset-budget.menu-BbRiqXeM.js → asset-budget.menu-BJtvNMLj.js} +1 -1
- package/dist/assets/asset-editor-persistence-BIbf5u0Q.js +1 -0
- package/dist/assets/asset-loaders-DoNflsHL.js +2 -0
- package/dist/assets/{asset-preview-B1tDziF1.js → asset-preview-DxlSdRZn.js} +1 -1
- package/dist/assets/{audio-unlock.service-ucMfCVBw.js → audio-unlock.service-CTaiyXF9.js} +1 -1
- package/dist/assets/audio.utility-CEmNc68t.js +1 -0
- package/dist/assets/autoplay.service-BZLSUyL8.js +1 -0
- package/dist/assets/{babylon-authoring-adapter-C8mFMXSr.js → babylon-authoring-adapter-BZvV2bz_.js} +1 -1
- package/dist/assets/binding-resolver-DGbk9_XR.js +2 -0
- package/dist/assets/blender-emscripten-engine-B7lfg-RX.js +2 -0
- package/dist/assets/{blender-node-editor.document-C1YmwWls.js → blender-node-editor.document-wXJobGNH.js} +1 -1
- package/dist/assets/{blender-properties-tab-B8lyjgj3.js → blender-properties-tab-7GFf80ev.js} +1 -1
- package/dist/assets/{blender-runtime-host-CyQlImSR.js → blender-runtime-host-CILxrx5T.js} +2 -2
- package/dist/assets/{blender-runtime-skin-BK7ShZ6z.js → blender-runtime-skin-Cd5lQYsC.js} +7 -7
- package/dist/assets/{blender-runtime.document-B0nVQs0P.js → blender-runtime.document-C0r_R49S.js} +7 -7
- package/dist/assets/{blender-timeline.document-CMcdE2CK.js → blender-timeline.document-BaISZMBc.js} +1 -1
- package/dist/assets/{blender-uv-editor.document-CjqNo4sZ.js → blender-uv-editor.document-CT_fsyyA.js} +1 -1
- package/dist/assets/blender-version.status-DzEx7u7k.js +1 -0
- package/dist/assets/blender-wali-engine-DOiQCBXH.js +2 -0
- package/dist/assets/{blender.command-C6NmRBo5.js → blender.command-DdiKd8mZ.js} +1 -1
- package/dist/assets/blender.keymap-BmOBRY7p.js +1 -0
- package/dist/assets/blender.status-BMETIbb2.js +1 -0
- package/dist/assets/board-guides-CjHQ9Ynm.js +1 -0
- package/dist/assets/body-marks-C1LxJtQb.js +1 -0
- package/dist/assets/bridge.command-DXUeavn5.js +3 -0
- package/dist/assets/{browserAll-lF_dLQVz.js → browserAll-Dg46xT22.js} +1 -1
- package/dist/assets/build-player.document-BHwVV3K0.js +1 -0
- package/dist/assets/build-profiles.document-HkpS-Kxa.js +2 -0
- package/dist/assets/build-progress.status-u1J0Rm1D.js +1 -0
- package/dist/assets/build-session-BLboUUbw.js +9 -0
- package/dist/assets/{build.action-DRX2IcYt.js → build.action-C00DL83N.js} +1 -1
- package/dist/assets/{build.command-BGvLaLG0.js → build.command-Cjk_NY75.js} +1 -1
- package/dist/assets/build.header-BWNmNWFT.js +1 -0
- package/dist/assets/{build.menu-UenrjPWS.js → build.menu-BBYtqCIq.js} +1 -1
- package/dist/assets/{build.service-BIUoTY6l.js → build.service-DOU15tKN.js} +1 -1
- package/dist/assets/{camera-DrvaM47S.js → camera-7DGyYW7Y.js} +1 -1
- package/dist/assets/{camera-runtime.inspector-CjJALNO8.js → camera-runtime.inspector-n-jiOR-3.js} +1 -1
- package/dist/assets/canvas-design-mount-CSRHU-ag.js +6 -0
- package/dist/assets/canvas-entry-runtime-BST8yRuK.js +2 -0
- package/dist/assets/{canvas-preview-frames-C0QTagA3.js → canvas-preview-frames-Cja32aW2.js} +1 -1
- package/dist/assets/{canvas-story-capture.service-Dgjr-rT1.js → canvas-story-capture.service-D5R5HJ8n.js} +2 -2
- package/dist/assets/capability-coverage-ByWftxk4.js +7 -0
- package/dist/assets/{collaboration-presence-BVIQuN1l.js → collaboration-presence-D6MC9xJN.js} +1 -1
- package/dist/assets/{collider-C7SbIYKY.js → collider-B78EcUc9.js} +1 -1
- package/dist/assets/{component-board.service-BEsFAw4_.js → component-board.service-BaQI5Oas.js} +2 -2
- package/dist/assets/component-board.service-CkjrsD8x.js +2 -0
- package/dist/assets/{component-board.service-CWFaGMCO.js → component-board.service-Dvjz_g-x.js} +2 -2
- package/dist/assets/component-contracts.service-C3-AXQp7.js +1 -0
- package/dist/assets/component-instance-root-DLI40MiB.js +1 -0
- package/dist/assets/{component-verbs.command-oNtGgzQL.js → component-verbs.command-Brr_WcaR.js} +1 -1
- package/dist/assets/component-verbs.service-DC2sC3j3.js +1 -0
- package/dist/assets/{config-_wCzzlM_.js → config-BI_7osdR.js} +3 -3
- package/dist/assets/{configurations-BXU4GGbV.js → configurations-XP9YLkrt.js} +1 -1
- package/dist/assets/connection.status-BhRwcFx0.js +1 -0
- package/dist/assets/{constraint-5KLYpGm7.js → constraint-Bp1l8hY-.js} +1 -1
- package/dist/assets/constraints.inspector-Dm1cycK3.js +1 -0
- package/dist/assets/{content-bounds-BeuIXKYu.js → content-bounds-DROIchTa.js} +1 -1
- package/dist/assets/{contract-system-adapters-Bic_7sev.js → contract-system-adapters-Cn7OW_ay.js} +1 -1
- package/dist/assets/coverage.service-l42ty7lr.js +3 -0
- package/dist/assets/create-runtime-B_uTwsmi.js +3 -0
- package/dist/assets/curve-THOUsg-j.js +1 -0
- package/dist/assets/{data-asset-DfQ2Pjse.js → data-asset-DAANayR6.js} +1 -1
- package/dist/assets/data-check-core-CHqar_E8.js +1 -0
- package/dist/assets/data-ref-CN34UeVw.js +1 -0
- package/dist/assets/debug-bridge-BD1XVAIB.js +1 -0
- package/dist/assets/debug-registry-ggQWxtu-.js +1 -0
- package/dist/assets/{deferred-ingest-play-BdR4qGk6.js → deferred-ingest-play-B2JUlwlT.js} +2 -2
- package/dist/assets/{design-time-canvas-mount-DPQeHSN2.js → design-time-canvas-mount-as9cN9I6.js} +2 -2
- package/dist/assets/design-time-layers-BRseeSmV.js +1 -0
- package/dist/assets/{design-time-mount.service-Ks-5Wkcs.js → design-time-mount.service-BTVu3yKo.js} +2 -2
- package/dist/assets/{design-time-mount.service-Ca-DZGFV.js → design-time-mount.service-DKvc7lVK.js} +2 -2
- package/dist/assets/design-time-react-mount-C7rB56QD.js +1 -0
- package/dist/assets/{document-preview-three-DThkjI1S.js → document-preview-three-CxmRhCcV.js} +1 -1
- package/dist/assets/{dom-authoring-adapter-BrLU8IJ_.js → dom-authoring-adapter-L8OzXfmE.js} +1 -1
- package/dist/assets/{draco3d-B2cwv46o.js → draco3d-BjNuXv66.js} +1 -1
- package/dist/assets/{edit-mode-audio.service-D4ITNbsm.js → edit-mode-audio.service-BwI5u845.js} +1 -1
- package/dist/assets/edit-mode-authoring-D5f7aHHl.js +1 -0
- package/dist/assets/{edit-mode-networking.service-BNv-FTRh.js → edit-mode-networking.service-DqP_4lbI.js} +1 -1
- package/dist/assets/editor-api-BM7H_F4G.js +1 -0
- package/dist/assets/{editor-layers-BDJnAAzj.js → editor-layers-D-CTUqco.js} +1 -1
- package/dist/assets/editor-presentation-activity-CqJH4G9t.js +1 -0
- package/dist/assets/{editor-shell-store-ChLcVeNB.js → editor-shell-store-DHVWS8cE.js} +1 -1
- package/dist/assets/{entity-object-JmYMfLsx.js → entity-object-MKYemTFM.js} +1 -1
- package/dist/assets/{extend-Cc-nEa_A.js → extend-BrgqZiMY.js} +1 -1
- package/dist/assets/fork-menu-DE2MK3Nq.js +1 -0
- package/dist/assets/{frame-debugger-store-DaCbAYSW.js → frame-debugger-store-BXoLKTdZ.js} +1 -1
- package/dist/assets/game-audio-BeCyd0Ha.js +1 -0
- package/dist/assets/{game-contract-seams-BnPFGLll.js → game-contract-seams-tyKDsfaP.js} +1 -1
- package/dist/assets/{game-css-scope-transform-D_p7cVgW.js → game-css-scope-transform-DcjrwtVc.js} +2 -2
- package/dist/assets/game-document.service-CTb2itHQ.js +1 -0
- package/dist/assets/game-eval.command-CpDKXOQU.js +2 -0
- package/dist/assets/game-module-access-BTInp2NG.js +1 -0
- package/dist/assets/game-network-DW5ARz4R.js +22 -0
- package/dist/assets/{gameplay-export-BzYzLZPi.js → gameplay-export-cHk3v9y-.js} +1 -1
- package/dist/assets/gameplay-replay-HRenPTtU.js +1 -0
- package/dist/assets/gameplay.command-DcY2lKKX.js +1 -0
- package/dist/assets/generation-CdOATubd.css +1 -0
- package/dist/assets/{generation-jobs-BZhOMrp-.js → generation-jobs-CJBehuUp.js} +1 -1
- package/dist/assets/generation.service-BMOc-C9i.js +1 -0
- package/dist/assets/{generations-DVDht_31.js → generations-ssgVOe_6.js} +1 -1
- package/dist/assets/generations.status-B_SmPReI.js +1 -0
- package/dist/assets/hierarchy-marks-BuCO8Ke-.js +1 -0
- package/dist/assets/hierarchy-marks-CsTaTkc7.js +1 -0
- package/dist/assets/hosted-asset-materialization-CiXZI85V.js +2 -0
- package/dist/assets/{ibl-override-material-CiKkaOTW.js → ibl-override-material-CMo_a49U.js} +1 -1
- package/dist/assets/index-B0S4fQQV.js +1 -0
- package/dist/assets/{index-C3Pw-9So.js → index-B9bd4k-t.js} +1 -1
- package/dist/assets/index-BMxv2MNV.js +1 -0
- package/dist/assets/{index-DUZeuA7g.js → index-Bm4_DmRO.js} +1 -1
- package/dist/assets/{index-cNc-iFbq.js → index-BvBlIRwM.js} +1 -1
- package/dist/assets/{index-Ck3JFh48.js → index-BweKDdi_.js} +1 -1
- package/dist/assets/{index-BRJMIUK0.js → index-C5ZAyrKq.js} +346 -345
- package/dist/assets/index-CPiRKiDC.css +1 -0
- package/dist/assets/index-CfpGZrbC.js +1 -0
- package/dist/assets/index-Czvj6whv.js +1 -0
- package/dist/assets/{index-SS9EugVg.js → index-DgPDGGSV.js} +2 -2
- package/dist/assets/{inference-diagnostics-xecGdohW.js → inference-diagnostics-DLt9ql9I.js} +1 -1
- package/dist/assets/{ingest-boot-viewport-DAt8WFSy.js → ingest-boot-viewport-BXVXjYpG.js} +1 -1
- package/dist/assets/ingest-siblings-DWJ7OGB_.js +1 -0
- package/dist/assets/ingest-source-persistence-6ShMoSCa.js +1 -0
- package/dist/assets/ingest.service-BBbX8ibg.js +1 -0
- package/dist/assets/{inspect-Dr4qvDpJ.js → inspect-Cz3Zyx_1.js} +1 -1
- package/dist/assets/inspection-D8fZOHCM.js +1 -0
- package/dist/assets/instances.command-BrdlngrL.js +1 -0
- package/dist/assets/{json-history-resource-DwS10tqD.js → json-history-resource-Uqrihfc8.js} +1 -1
- package/dist/assets/layered-pick-CAVQMPI7.js +1 -0
- package/dist/assets/{light-DcFqVCmv.js → light-CqzsCWeJ.js} +1 -1
- package/dist/assets/{live-project-verbs-C3LzprCe.js → live-project-verbs-CdFmLYOo.js} +1 -1
- package/dist/assets/{machine.document-BzZxubYQ.js → machine.document-DRIFOVaa.js} +1 -1
- package/dist/assets/{machines.finder-BR02bfVG.js → machines.finder-DPCT6few.js} +1 -1
- package/dist/assets/material-BVApn1V_.js +1 -0
- package/dist/assets/{material-factory-COz7qZhC.js → material-factory-B_75xxFD.js} +1 -1
- package/dist/assets/{mesh-DcmO-mWI.js → mesh-DdA3mExo.js} +1 -1
- package/dist/assets/model-asset-sections-D1uxOu2v.css +1 -0
- package/dist/assets/model-asset-sections.service-CJnSIckZ.js +1 -0
- package/dist/assets/{model-inspection-CXHxrafK.js → model-inspection-DvspbmJl.js} +1 -1
- package/dist/assets/{model-thumbnail-BEKPWg4l.js → model-thumbnail-BmQs-h6t.js} +1 -1
- package/dist/assets/{models.finder-c1I0tp2M.js → models.finder-Qv_Hsccy.js} +1 -1
- package/dist/assets/module-mode-MJ4Gbsry.js +2 -0
- package/dist/assets/mount-canvas-ingest-root-BxtM8OaB.js +2 -0
- package/dist/assets/mount-dom-ingest-root-pGatqO46.js +2 -0
- package/dist/assets/mount-ingest-root-C7jb-mCl.js +2 -0
- package/dist/assets/mount-manifest-BfoHBuzn.js +1 -0
- package/dist/assets/mount-readiness-DyAd17pe.js +4 -0
- package/dist/assets/mount-three-ingest-root-Boa5mcaF.js +1 -0
- package/dist/assets/{mounted-authoring-Clftxx0x.js → mounted-authoring-DxMISwvR.js} +1 -1
- package/dist/assets/{mounted-story-viewport-source-B4-eAYGI.js → mounted-story-viewport-source-DfnLxI1f.js} +1 -1
- package/dist/assets/{native-debug-module-2_HVupdg.js → native-debug-module-BlrALjM3.js} +1 -1
- package/dist/assets/{navigation-CH3-zr1n.js → navigation-CqG5o5AR.js} +1 -1
- package/dist/assets/{navmesh.menu-Dfi-Pk-8.js → navmesh.menu-D4TdVDhe.js} +1 -1
- package/dist/assets/{navmesh.service-Cz7QFY-M.js → navmesh.service-DWKT5ruQ.js} +1 -1
- package/dist/assets/network-observer.service-ZRAquNq4.js +1 -0
- package/dist/assets/network.utility-DjeOEvAY.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-DJDEDM0p.js → object3d-document-session-registry-CMRJdFp6.js} +2 -2
- package/dist/assets/{oid-transform-D5Kxt6ij.js → oid-transform-DaA6yW6o.js} +1 -1
- package/dist/assets/{particles-vRp0Lf3o.js → particles-DsQRcDBY.js} +1 -1
- package/dist/assets/{performance-profiler-OwnXQX0M.js → performance-profiler-CMbwGBuk.js} +1 -1
- package/dist/assets/pixi-authoring-adapter-BoBt8bB5.js +1 -0
- package/dist/assets/pixi-live-write-target-CYZgvC6U.js +1 -0
- package/dist/assets/play.command-D9JGJP-e.js +2 -0
- package/dist/assets/pose-guard-CLabLSzf.js +1 -0
- package/dist/assets/presentation-COhHQdmR.js +1 -0
- package/dist/assets/{product-CxmUIxmr.js → product-CaRGoiIH.js} +1 -1
- package/dist/assets/{profiler.action-Dzy9DuAc.js → profiler.action-Cz7HYWjh.js} +1 -1
- package/dist/assets/{profiler.menu-jLDO3U6N.js → profiler.menu-D5aR_FBy.js} +1 -1
- package/dist/assets/profiler.utility-KwxlIPKb.js +1 -0
- package/dist/assets/{project-authoring-session-C3eusefK.js → project-authoring-session-DKXHVwxO.js} +2 -2
- package/dist/assets/project-provenance-BGnJXJwa.js +1 -0
- package/dist/assets/{properties-bone-constraints.inspector-B_PbSMV7.js → properties-bone-constraints.inspector-Bo-sU8eR.js} +1 -1
- package/dist/assets/{properties-bone.inspector-CMDEQuBd.js → properties-bone.inspector-BQiWplQv.js} +1 -1
- package/dist/assets/{properties-collection.inspector-D7Ay8yRj.js → properties-collection.inspector-C5BnR-GE.js} +1 -1
- package/dist/assets/{properties-constraints.inspector-DS1fZgXK.js → properties-constraints.inspector-CyheU12R.js} +1 -1
- package/dist/assets/{properties-data.inspector-k2pGN2Mp.js → properties-data.inspector-CkycARja.js} +1 -1
- package/dist/assets/{properties-material.inspector-Bb3yAGUx.js → properties-material.inspector-Bl_PUmY-.js} +1 -1
- package/dist/assets/{properties-modifiers.inspector-BcJfe-Wy.js → properties-modifiers.inspector-j7SnOxQq.js} +1 -1
- package/dist/assets/{properties-object.inspector-CUSfXJuq.js → properties-object.inspector-DcR3MGLK.js} +1 -1
- package/dist/assets/{properties-output.inspector-BTVW2kn1.js → properties-output.inspector-BLjw6K4b.js} +1 -1
- package/dist/assets/{properties-particles.inspector-Cw0fxx3B.js → properties-particles.inspector-BUIm2-Jf.js} +1 -1
- package/dist/assets/{properties-physics.inspector-C-0bD2bu.js → properties-physics.inspector-DNvRcxb6.js} +1 -1
- package/dist/assets/{properties-render.inspector-C8D5UpjX.js → properties-render.inspector-8FMZ-qoZ.js} +1 -1
- package/dist/assets/{properties-scene.inspector-HjK6QHGg.js → properties-scene.inspector-Dx7_z75k.js} +1 -1
- package/dist/assets/{properties-texture.inspector-CckZgUaI.js → properties-texture.inspector-WT15951-.js} +1 -1
- package/dist/assets/{properties-view-layer.inspector-C1ajtVSk.js → properties-view-layer.inspector-P7VNTdqr.js} +1 -1
- package/dist/assets/{properties-world.inspector-BiT_EdT-.js → properties-world.inspector-B3t1q8TF.js} +1 -1
- package/dist/assets/r3f-design-session-lsbFnoWH.js +2 -0
- package/dist/assets/{r3f-physics-binding-DzrbpqjM.js → r3f-physics-binding-Cx8yhuwt.js} +1 -1
- package/dist/assets/{r3f-source-authoring-adapter-DbbeRcvt.js → r3f-source-authoring-adapter-jH3G0TeH.js} +2 -2
- package/dist/assets/react-canvas-navigation-B_gOe3CI.js +1 -0
- package/dist/assets/react-inspector.service-CZf1vfdX.js +1 -0
- package/dist/assets/react-story-board-CCm2Opwn.js +1 -0
- package/dist/assets/{react-three-rapier.esm-U8J7g6tH.js → react-three-rapier.esm-CHXGG51p.js} +1 -1
- package/dist/assets/react-world-authoring-adapter-CnzxMtYz.js +1 -0
- package/dist/assets/{realm-services-CnY105XU.js → realm-services-Do9J6nsb.js} +1 -1
- package/dist/assets/reflection-probe-capture.inspector-BAjjIybz.js +1 -0
- package/dist/assets/{reflection-probe-BHNGwVyz.js → reflection-probe-sIto9mh0.js} +1 -1
- package/dist/assets/registry-Xnduk02T.js +1 -0
- package/dist/assets/{relative-import-specifier-BFKIWEWs.js → relative-import-specifier-CPFTrxi4.js} +1 -1
- package/dist/assets/{render-env-BkKZ4uMA.js → render-env-YJlI8K0i.js} +1 -1
- package/dist/assets/{render-features-rxbawsRb.js → render-features-DMSV2qKJ.js} +1 -1
- package/dist/assets/{render-settings-DS5leCed.js → render-settings-CRyDhHyz.js} +1 -1
- package/dist/assets/{resolve-three-CVnMRHxw.js → resolve-three-D27rMc37.js} +19 -19
- package/dist/assets/root-seam-contract-gjWUd5uu.js +1 -0
- package/dist/assets/run-selection-B0jOdyYt.js +2 -0
- package/dist/assets/scene-capture-Di9cM1p4.js +1 -0
- package/dist/assets/scene-document.service-XxGs4HHE.js +2 -0
- package/dist/assets/{scene-framing-BQt72ZCw.js → scene-framing-DkZKDwH3.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-BJthDRMu.js +1 -0
- package/dist/assets/{session-CTXsU1lK.js → session-x8E_NJk2.js} +34 -34
- package/dist/assets/{setup-renderer-Cwkl1Ar6.js → setup-renderer-F9mG7t6r.js} +1 -1
- package/dist/assets/{source-object3d-authoring-adapter-DF679Ncb.js → source-object3d-authoring-adapter-CvmFpSUj.js} +1 -1
- package/dist/assets/{source-persistence-backend-CwLYVPXj.js → source-persistence-backend-au3WtEn6.js} +1 -1
- package/dist/assets/{spark-renderer-lifecycle-DfYpvEJa.js → spark-renderer-lifecycle-B6Axb6jm.js} +1 -1
- package/dist/assets/{stage-keyboard-B8BEW592.js → stage-keyboard-BQkndG_D.js} +1 -1
- package/dist/assets/stage-overlay-set-g6eWhuRv.js +1 -0
- package/dist/assets/stage-presence-markers-0CDfO5f4.js +1 -0
- package/dist/assets/stage-transform-tools-BzPl7OIo.js +1 -0
- package/dist/assets/standard-viewport-dressing-BW-dM_1h.js +24 -0
- package/dist/assets/{state-watch.action-DnR5Zjr-.js → state-watch.action-Z1nQ5awu.js} +1 -1
- package/dist/assets/{state-watch.menu-wYLCLsAw.js → state-watch.menu-CQHGUF3W.js} +1 -1
- package/dist/assets/state-watch.utility-DCIg2i79.js +1 -0
- package/dist/assets/{story-capture-BmnwHGDV.js → story-capture-BIrjDKeY.js} +1 -1
- package/dist/assets/story-documents-BvG2xeaR.js +3 -0
- package/dist/assets/{story-documents.service-B6v7Z-WE.js → story-documents.service-DOSEa3ja.js} +1 -1
- package/dist/assets/{story-documents.service-yagl1wGp.js → story-documents.service-y1m7XGMJ.js} +1 -1
- package/dist/assets/{story-media-presence-BqRMu572.js → story-media-presence-HLV-KaMj.js} +1 -1
- package/dist/assets/{story-pixi-preview-Da6afqLg.js → story-pixi-preview-CMhho2gG.js} +1 -1
- package/dist/assets/{story-presentation-DMSYRWaz.js → story-presentation-CYhVv8Ku.js} +1 -1
- package/dist/assets/story-three-preview-CgcLF5lE.js +2 -0
- package/dist/assets/{structural-ids-Br2zjINh.js → structural-ids-BOo2BRoY.js} +1 -1
- package/dist/assets/studio-environment-R9qXUUcC.js +2 -0
- package/dist/assets/{surface-state-1lTOi8FD.js → surface-state-D8Qnowo6.js} +1 -1
- package/dist/assets/{syntactic-prop-specs-eiQXwMIc.js → syntactic-prop-specs-8gkBuc5j.js} +1 -1
- package/dist/assets/team-playtest.service-BBMZ2iyk.js +1 -0
- package/dist/assets/{three-TCuY32m_.js → three-DiL6vMXq.js} +1 -1
- package/dist/assets/three-authoring-adapter-CkLR2zGf.js +1 -0
- package/dist/assets/three-authoring.service-CovhlCGx.js +2 -0
- package/dist/assets/{three-ingest-runtime-B7rtg3QE.js → three-ingest-runtime-CwTqAHgX.js} +1 -1
- package/dist/assets/{three-integration-BdN5Nhsg.js → three-integration-DXOFI88n.js} +2 -2
- package/dist/assets/three-integration.service-rCAqpqSp.js +1 -0
- package/dist/assets/three-projection-core-B7Lf8tOp.js +1 -0
- package/dist/assets/{three-state-DwFE3ay2.js → three-state-BCACvUtm.js} +1 -1
- package/dist/assets/{three-story-capture.service-CvpV3v5a.js → three-story-capture.service-rTFKNtHA.js} +2 -2
- package/dist/assets/{three-story-model-C2r2BuiA.js → three-story-model-BjKr7OMn.js} +1 -1
- package/dist/assets/three-viewport-presentation-CBzvc2v2.js +141 -0
- package/dist/assets/tools-DfctM216.js +1 -0
- package/dist/assets/transform-mode-request-DlEApNrA.js +1 -0
- package/dist/assets/transport-strip-xCg94CuI.js +1 -0
- package/dist/assets/transport.header-BRtdky0x.js +1 -0
- package/dist/assets/{trigger-volume-DP0G1VBe.js → trigger-volume-BLkHmfm9.js} +1 -1
- package/dist/assets/tuples-BDz3wbQL.js +1 -0
- package/dist/assets/ui-board-document-DvbK_HVN.js +2 -0
- package/dist/assets/{user-data-Bpj7diUS.js → user-data-C84W0V47.js} +1 -1
- package/dist/assets/user-data-CODoGZqA.js +1 -0
- package/dist/assets/{utility-view-state-CAfbFbKQ.js → utility-view-state-CDRxZSo-.js} +1 -1
- package/dist/assets/viewport-door-BARIpMu-.js +1 -0
- package/dist/assets/{viewport-root-presentation-vgxsTyj4.js → viewport-root-presentation-hRLF0BeO.js} +1 -1
- package/dist/assets/{viewport-surface-status-cwCiBGa7.js → viewport-surface-status-TUfhXKR9.js} +1 -1
- package/dist/assets/{webworkerAll-Cm3gTjWi.js → webworkerAll-PJtcQ1FD.js} +1 -1
- package/dist/assets/worker-BtXrsgFy.js +2 -0
- package/dist/assets/workspace-arrangement-DqG5sUns.js +1 -0
- package/dist/assets/world-documents-D69XaqUX.js +1 -0
- package/dist/assets/world-root-stage-binding-BgZWZEuD.js +1 -0
- package/dist/assets/{xstate-animation-binding-BGLxcZT_.js → xstate-animation-binding-CIyLzGHs.js} +1 -1
- package/dist/assets/{xstate-animation-meta-D_T441Ru.js → xstate-animation-meta-CbYWup3R.js} +1 -1
- package/dist/volter-shared-react.json +10 -0
- package/dist/volter-shared-three.json +3 -0
- package/dist-node/cli.js +253 -210
- package/dist-node/create.js +103 -82
- package/package.json +23 -20
- 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 -17
- 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/{.claude/skills/vgai-3d-models → .agents/skills/volter-3d-models}/SKILL.md +3 -3
- package/template/{.github/skills/vgai-ingest-existing-game → .agents/skills/volter-ingest-existing-game}/SKILL.md +2 -2
- package/template/.agents/skills/{vgai-music → volter-music}/SKILL.md +35 -11
- package/template/{.claude/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/{.github/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/{.agents/skills/vgai-3d-models → .claude/skills/volter-3d-models}/SKILL.md +3 -3
- package/template/{.agents/skills/vgai-ingest-existing-game → .claude/skills/volter-ingest-existing-game}/SKILL.md +2 -2
- package/template/{.github/skills/vgai-threejs-authoring → .claude/skills/volter-threejs-authoring}/SKILL.md +9 -9
- package/template/.claude/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
- package/template/.claude/skills/{vgai-threejs-authoring → 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/.github/skills/{vgai-3d-models → volter-3d-models}/SKILL.md +3 -3
- package/template/{.claude/skills/vgai-ingest-existing-game → .github/skills/volter-ingest-existing-game}/SKILL.md +2 -2
- 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/{.agents/skills/vgai-threejs-authoring → .github/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
- package/template/.mcp.json +3 -3
- package/template/AGENTS.md +24 -23
- package/template/DEVLOG.md +1 -1
- package/template/IDIOMS.md +3 -3
- package/template/LICENSE +3 -3
- package/template/README.md +12 -12
- package/template/check-idioms.ts +51 -51
- package/template/manifest-entry-modules-plugin.ts +17 -4
- package/template/package.json +12 -12
- package/template/server/loopback.ts +1 -1
- package/template/server/main.ts +4 -4
- package/template/server/rooms/arena-room.ts +8 -8
- package/template/server/rooms/game-room.ts +8 -8
- package/template/server/rooms.ts +2 -2
- 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 +2 -2
- 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 +58 -6
- package/template/src/manifest-entry-modules.d.ts +12 -1
- 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 +11 -11
- 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-BDPqHDfU.js +0 -1
- package/dist/assets/CanvasBoardDocument-mxL0oJ3N.js +0 -1
- package/dist/assets/CanvasSceneViewport-C_mapCwC.js +0 -1
- package/dist/assets/ColorInput-QUPS1pEB.js +0 -1
- package/dist/assets/ImageViewer-tlVvkdM4.js +0 -1
- package/dist/assets/InspectorObjectPreview-W-y079DS.js +0 -1
- package/dist/assets/JsonAssetDocument-CPmcWFPW.js +0 -2
- package/dist/assets/ModelAssetDocument-De1HKuxG.js +0 -1
- package/dist/assets/Object3DDocumentToolbar-Cks81kCS.js +0 -1
- package/dist/assets/Object3DDocumentViewport-DCwiSY3O.js +0 -2
- package/dist/assets/OnlineAssetDetail-CNuwSQRQ.js +0 -1
- package/dist/assets/PlayBar-bT8Xdrap.js +0 -1
- package/dist/assets/ReactCanvasControls-CnJrPj-B.js +0 -1
- package/dist/assets/RootSelectionOverlay-CpaGluQu.js +0 -1
- package/dist/assets/ShadowEditor-CVtMlALn.js +0 -1
- package/dist/assets/StageHost-B89HKcvd.js +0 -2
- package/dist/assets/ThreeBoardDocument-BAgHrbtu.js +0 -2
- package/dist/assets/Toolbar-DkTHnQto.js +0 -1
- package/dist/assets/VideoViewer-DMV8lf4P.js +0 -1
- package/dist/assets/ViewportShadingMenu-CXPi6fl8.js +0 -1
- package/dist/assets/active-ingest-DA426a81.js +0 -3
- package/dist/assets/adapter-runtime-bindings-4cmsRvRh.js +0 -2
- package/dist/assets/animation-mixers.service-DK64IuYq.js +0 -1
- package/dist/assets/animation-timeline.utility-D-g0zrOl.js +0 -1
- package/dist/assets/asset-editor-persistence-BGWIqZdk.js +0 -1
- package/dist/assets/asset-loaders-C0KQI5eY.js +0 -2
- package/dist/assets/audio.utility-BmE9WMUg.js +0 -1
- package/dist/assets/autoplay.service-CjPnv3QW.js +0 -1
- package/dist/assets/binding-resolver-dE0GnZT5.js +0 -2
- package/dist/assets/blender-emscripten-engine-BeWFjMn-.js +0 -2
- package/dist/assets/blender-version.status-OsFoc9SA.js +0 -1
- package/dist/assets/blender-wali-engine-da698rDf.js +0 -2
- package/dist/assets/blender.keymap-_rF_vRX8.js +0 -1
- package/dist/assets/blender.status-ujwGU6dU.js +0 -1
- package/dist/assets/board-guides-BEKPgD9M.js +0 -1
- package/dist/assets/body-marks-RKb_LTwL.js +0 -1
- package/dist/assets/bridge.command-BF00Iefm.js +0 -3
- package/dist/assets/build-profiles.document-CqNrDdh9.js +0 -2
- package/dist/assets/build-progress.status-Bo1ZgJcb.js +0 -1
- package/dist/assets/build-session-GZcSAfPN.js +0 -9
- package/dist/assets/build.header-Bt1kwHWl.js +0 -1
- package/dist/assets/canvas-design-mount-BbLW_Nci.js +0 -6
- package/dist/assets/canvas-entry-runtime-UNYuSfG0.js +0 -2
- package/dist/assets/capability-coverage-DZ-onC5j.js +0 -7
- package/dist/assets/component-board.service-q_TM9BCw.js +0 -2
- package/dist/assets/component-contracts.service-CPbfXE1h.js +0 -1
- package/dist/assets/component-instance-root-B0C5oNEm.js +0 -1
- package/dist/assets/component-verbs.service-CnA11bJq.js +0 -1
- package/dist/assets/connection.status-Yvt0bX0r.js +0 -1
- package/dist/assets/constraints.inspector-4r8jWq5a.js +0 -1
- package/dist/assets/coverage.service-DcpEoBuf.js +0 -3
- package/dist/assets/create-runtime-DBfUy0SO.js +0 -3
- package/dist/assets/curve-DVd18iAX.js +0 -1
- package/dist/assets/data-check-core-CQEjuFyt.js +0 -1
- package/dist/assets/data-ref-CWnkj-HX.js +0 -1
- package/dist/assets/debug-bridge-D3_-EgRE.js +0 -1
- package/dist/assets/debug-registry-P0_YQGWd.js +0 -1
- package/dist/assets/design-time-layers-ChswRUJt.js +0 -1
- package/dist/assets/design-time-react-mount-C85KfXOd.js +0 -1
- package/dist/assets/edit-mode-authoring-DeCxPcHM.js +0 -1
- package/dist/assets/editor-api-BFTIRlWa.js +0 -1
- package/dist/assets/editor-presentation-activity-C7SNSmTd.js +0 -1
- package/dist/assets/entry-adjudication-Dc18TIqT.js +0 -1
- package/dist/assets/fork-menu-DpKqRhF5.js +0 -1
- package/dist/assets/game-audio-CaGKzia4.js +0 -1
- package/dist/assets/game-document.service-Chmt4065.js +0 -1
- package/dist/assets/game-eval.command-DRSvOJ_1.js +0 -2
- package/dist/assets/game-module-access-o3iXZpCA.js +0 -1
- package/dist/assets/game-network-Ct2FQYmu.js +0 -1
- package/dist/assets/gameplay-replay-BwdxV4oF.js +0 -1
- package/dist/assets/gameplay.command-Boqv1hnc.js +0 -1
- package/dist/assets/generation-DhwCUHPf.css +0 -1
- package/dist/assets/generation.service-o9aXlsx4.js +0 -1
- package/dist/assets/generations.status-BvzgHlyk.js +0 -1
- package/dist/assets/hierarchy-marks-BLPfSIym.js +0 -1
- package/dist/assets/hierarchy-marks-Cc_3lxw6.js +0 -1
- package/dist/assets/hosted-asset-materialization-BpbnhJac.js +0 -2
- package/dist/assets/index-0Lm0Nf1M.css +0 -1
- package/dist/assets/index-BHoAKyAC.js +0 -1
- package/dist/assets/index-BeK4RPgj.js +0 -1
- package/dist/assets/index-C1c3eOmm.js +0 -1
- package/dist/assets/index.module-Ycad3DJq.js +0 -1
- package/dist/assets/ingest-siblings-BtiEXLnh.js +0 -1
- package/dist/assets/ingest-source-persistence-Dmdo-UBp.js +0 -1
- package/dist/assets/ingest.service-vbCucMz7.js +0 -1
- package/dist/assets/inspection-CObLhnrs.js +0 -1
- package/dist/assets/instances.command-BwayrqNm.js +0 -1
- package/dist/assets/layered-pick-kiQf53t5.js +0 -1
- package/dist/assets/material-B_V78pTt.js +0 -1
- package/dist/assets/model-asset-sections-CFvvihfx.css +0 -1
- package/dist/assets/model-asset-sections.service-CqSclZGY.js +0 -1
- package/dist/assets/module-mode-BH2R93XP.js +0 -2
- package/dist/assets/mount-canvas-ingest-root-D1z9i5B3.js +0 -2
- package/dist/assets/mount-dom-ingest-root-BAmmNxlm.js +0 -2
- package/dist/assets/mount-ingest-root-DYR0TMIt.js +0 -2
- package/dist/assets/mount-manifest-DdkFYdVA.js +0 -1
- package/dist/assets/mount-readiness-Ds0HvvLH.js +0 -4
- package/dist/assets/mount-three-ingest-root-DVbACDUy.js +0 -1
- package/dist/assets/network-observer.service-Ce83TdsU.js +0 -1
- package/dist/assets/network.utility-DFDul2Xb.js +0 -1
- package/dist/assets/object-marks-DwvIEBOK.js +0 -1
- package/dist/assets/pixi-authoring-adapter-BChknIdC.js +0 -1
- package/dist/assets/pixi-live-write-target-BjDsBQbp.js +0 -1
- package/dist/assets/play-mode-DICV4cKP.js +0 -22
- package/dist/assets/play.command-NHyi5rzF.js +0 -2
- package/dist/assets/pose-guard-DILO6gGq.js +0 -1
- package/dist/assets/presentation-BeNFBfKg.js +0 -1
- package/dist/assets/profiler.utility-Do2Bw7MY.js +0 -1
- package/dist/assets/project-provenance-4ldz-EOG.js +0 -1
- package/dist/assets/r3f-design-session-B5GsZI5M.js +0 -2
- package/dist/assets/react-canvas-navigation-Cp3cOHJa.js +0 -1
- package/dist/assets/react-inspector.service-Bm0OnanU.js +0 -1
- package/dist/assets/react-story-board-GaXqr03H.js +0 -1
- package/dist/assets/react-world-authoring-adapter-DOjv2pYm.js +0 -1
- package/dist/assets/reflection-probe-capture.inspector-DqSW9p1v.js +0 -1
- package/dist/assets/registry-CaCdF63N.js +0 -1
- package/dist/assets/root-seam-contract-CxLZaRio.js +0 -1
- package/dist/assets/run-selection-DzEkGesJ.js +0 -2
- package/dist/assets/scene-capture-0a-bTjT8.js +0 -1
- package/dist/assets/scene-document.service-CeDwVA7t.js +0 -2
- package/dist/assets/seeded-random-BgCwIAAU.js +0 -1
- package/dist/assets/stage-overlay-set-BGE03mqb.js +0 -1
- package/dist/assets/stage-presence-markers-DIP7YMcO.js +0 -1
- package/dist/assets/stage-transform-tools-BQB7EY4l.js +0 -1
- package/dist/assets/standard-viewport-dressing-BCA51Tum.js +0 -24
- package/dist/assets/state-watch.utility-CFG1Tu1m.js +0 -1
- package/dist/assets/story-documents-BTo90DiA.js +0 -3
- package/dist/assets/story-three-preview-R1JvrggS.js +0 -2
- package/dist/assets/studio-environment-DRxxq_QX.js +0 -2
- package/dist/assets/team-playtest.service-hLfjgScx.js +0 -1
- package/dist/assets/three-authoring-adapter-htbnVej2.js +0 -1
- package/dist/assets/three-authoring.service-BIQAtVdX.js +0 -2
- package/dist/assets/three-integration.service-CS8Nvbd2.js +0 -1
- package/dist/assets/three-projection-core-CG01r5Ta.js +0 -1
- package/dist/assets/three-viewport-presentation-B0z_cECu.js +0 -141
- package/dist/assets/tools-B_NJsk05.js +0 -1
- package/dist/assets/transform-mode-request-DzD9aUNA.js +0 -1
- package/dist/assets/transport-strip-CUjNltnb.js +0 -1
- package/dist/assets/transport.header-Bb4FpQ8J.js +0 -1
- package/dist/assets/tuples-DfWSY2tr.js +0 -1
- package/dist/assets/ui-board-document-CCiiXjX9.js +0 -2
- package/dist/assets/user-data-dHvLdpwM.js +0 -1
- package/dist/assets/viewport-door-Bj_ZIP85.js +0 -1
- package/dist/assets/worker-CC9Ug5Ei.js +0 -2
- package/dist/assets/workspace-arrangement-BdAlBwvd.js +0 -1
- package/dist/assets/world-documents-DBybpBq8.js +0 -1
- package/dist/assets/world-root-stage-binding-ZVYIgr74.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/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,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.
|
|
@@ -71,7 +71,29 @@ export default function Theme() {
|
|
|
71
71
|
stage; `role="submix"` makes a GROUP: the `<Track>`s written inside that `<Track>` sum into its
|
|
72
72
|
strip (its devices, sends, fader, pan) instead of the master, and a solo on it solos them all. Devices on any channel, in order: `equalizer` (`bands: [{ type, freq, gain, q }]`,
|
|
73
73
|
types `highPass lowPass lowShelf highShelf bell`), `compressor` (`threshold ratio attack
|
|
74
|
-
release knee makeup
|
|
74
|
+
release knee makeup`, and `sidechain: "<track>"` to compress on another track's signal, as a pad
|
|
75
|
+
ducks under the melody), `limiter` (`ceiling release`), `convolution` (`ir predelay wet`).
|
|
76
|
+
- Movement: `<Lfo target="volume" shape="sine" period="w" depth={3} />` in a `<Channel>` swings
|
|
77
|
+
its volume ±3 dB once a bar (`target` `volume`, `pan` or `send:<bus>`; `shape` `sine triangle
|
|
78
|
+
square saw`; `period` a note value or beats, so it follows the tempo; `phase` 0–1), adding to
|
|
79
|
+
the written value or to the track's lane for that target. The DAWproject export writes it out
|
|
80
|
+
as automation points.
|
|
81
|
+
- Scenes: `<Scene name="Combat">` (a `<Project>` child, after the tracks) holds a
|
|
82
|
+
`<ClipSlot track="Bass"><Clip bars={1}>…</Clip></ClipSlot>` per track that plays in it. A slot's
|
|
83
|
+
clip has no `at`; its notes count from its own start as bar 1 (`at="1:2.5"`), and it loops. A
|
|
84
|
+
scene is one state of the game's music (explore, combat, calm): launched, each of its tracks
|
|
85
|
+
loops its clip from the next bar and every other track stops. The piece still needs its
|
|
86
|
+
arrangement; the scenes render beside it.
|
|
87
|
+
- A recording: a clip holding `<Audio file="audio/take.wav" offset={0.5} gain={-6} />` instead of
|
|
88
|
+
notes plays that WAV (a path from the project folder) from `offset` seconds into it, at `gain`
|
|
89
|
+
dB, for the clip's `bars`; its track needs no instrument device. `check-piece` names a file
|
|
90
|
+
that is not there, and the DAWproject export embeds each recording.
|
|
91
|
+
- A clip may hold several recordings of one part: `<Audio file take="1" />`, `<Audio file
|
|
92
|
+
take="2" />`, … (a looped audio recording writes one per pass); the newest plays, and
|
|
93
|
+
`<Comp take="1" at="5:3" />` plays take 1 from 5:3 on. Leave a person's comp as they set it.
|
|
94
|
+
- A take a person records (Rec in the transport) arrives as notes at their played timing,
|
|
95
|
+
480 ticks a beat (`at="3:2.097917"`, `dur="0.8375"`), in the clip that holds it or a new
|
|
96
|
+
`<Clip name="take">`; quantize it only if they ask.
|
|
75
97
|
- Code that generates notes spells them with `formatAt(beats, beatsPerBar)` and
|
|
76
98
|
`formatPitch(midi)` from `@volter/dawproject`.
|
|
77
99
|
|
|
@@ -159,7 +181,8 @@ Literal `<Note>`s are WRITTEN: the person drags, adds, deletes and reshapes them
|
|
|
159
181
|
Use code for material that follows a rule (a pad over the chord table), literals for what a
|
|
160
182
|
person will shape (melodies, bass lines). When they want to shape generated material, the clip
|
|
161
183
|
editor's Freeze writes it out, or run
|
|
162
|
-
`npx tsx node_modules/@volter/editor-dawproject/scripts/freeze-clip.ts src/music/<piece>.tsx --track <name> --clip <n
|
|
184
|
+
`npx tsx node_modules/@volter/editor-dawproject/scripts/freeze-clip.ts src/music/<piece>.tsx --track <name> --clip <n>`
|
|
185
|
+
(`--scene <name>` instead of `--clip` for that track's launcher slot in a scene).
|
|
163
186
|
|
|
164
187
|
Before rewriting a section, read what the person changed (`git diff`, `git log -p`): change
|
|
165
188
|
only what you were asked to, and leave their edits where they put them.
|
|
@@ -202,11 +225,11 @@ Say what the numbers show; never claim how something sounds.
|
|
|
202
225
|
|
|
203
226
|
The game ships the piece as mastered audio, never as its code. Render it with the project's
|
|
204
227
|
render tool, which writes into `public/music/<piece>/` and records every file it writes in
|
|
205
|
-
`.
|
|
228
|
+
`.volter/provenance.json`:
|
|
206
229
|
|
|
207
230
|
```bash
|
|
208
|
-
npm run --silent
|
|
209
|
-
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 })'
|
|
210
233
|
```
|
|
211
234
|
|
|
212
235
|
The answer's `data.report` is the render's `report.json`. For a draft you only want to measure,
|
|
@@ -215,10 +238,11 @@ renders the same files outside `public/`, unrecorded.
|
|
|
215
238
|
|
|
216
239
|
- The folder gets the whole piece as a seamless loop (`theme.ogg`; `theme.wav` carries a
|
|
217
240
|
`smpl` loop), `sections/<marker>.ogg` with `--sections` (each section its own seamless loop,
|
|
218
|
-
at the whole mix's level), `
|
|
241
|
+
at the whole mix's level), `scenes/<scene>.ogg` for every `<Scene>` (its loop as long as its
|
|
242
|
+
clips take to come round together, at the same level), `stems/<track>.ogg`, and `report.json`. Every `.ogg` has an `.m4a`
|
|
219
243
|
(AAC) beside it for browsers that cannot decode Vorbis; `loadMusic` falls back to it.
|
|
220
244
|
- The same piece renders to the same bytes every time, so an unchanged piece re-rendered leaves
|
|
221
|
-
`.
|
|
245
|
+
`.volter/provenance.json` unchanged.
|
|
222
246
|
- `--one-shot` is a stinger: one pass and its reverb tail, no loop.
|
|
223
247
|
- Loudness defaults to −18 LUFS integrated (`--target portable`); `--target console` is −24.
|
|
224
248
|
The true peak stays under −1 dBTP.
|
|
@@ -234,7 +258,7 @@ import { createMusicPlayer, loadMusic } from './lib/music/music-player';
|
|
|
234
258
|
const render = await (await fetch('/music/theme/report.json')).json();
|
|
235
259
|
const buffers = await loadMusic(context, '/music/theme/', render);
|
|
236
260
|
const music = createMusicPlayer({ context, destination: musicBus, render, buffers });
|
|
237
|
-
music.play('Explore'); // a section's loop, by its marker
|
|
261
|
+
music.play('Explore'); // a section's loop, by its marker, or a scene's, by its name
|
|
238
262
|
music.queue('Battle'); // switch on the next bar line; the old loop fades out
|
|
239
263
|
music.stinger(victory, 'bar'); // a one-shot (rendered with --one-shot) on the next bar line
|
|
240
264
|
```
|
|
@@ -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
|
|
@@ -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.
|
|
@@ -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,
|
|
@@ -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
|