@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
|
@@ -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
|
|
@@ -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
|
package/template/.mcp.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"mcpServers": {
|
|
3
|
-
"
|
|
3
|
+
"volter": {
|
|
4
4
|
"command": "npm",
|
|
5
|
-
"args": ["run", "--silent", "
|
|
5
|
+
"args": ["run", "--silent", "volter", "--", "mcp", "."]
|
|
6
6
|
},
|
|
7
7
|
"blender": {
|
|
8
8
|
"command": "npm",
|
|
9
|
-
"args": ["run", "--silent", "
|
|
9
|
+
"args": ["run", "--silent", "volter", "--", "blender-mcp"]
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
}
|
package/template/AGENTS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# AGENTS.md —
|
|
1
|
+
# AGENTS.md — VOLTER Game Project
|
|
2
2
|
|
|
3
|
-
A standalone game built with
|
|
3
|
+
A standalone game built with VOLTER — work here, not in the engine repo.
|
|
4
4
|
The editor is the authoring and verification surface.
|
|
5
5
|
|
|
6
6
|
## Route the request first
|
|
@@ -9,9 +9,9 @@ The editor is the authoring and verification surface.
|
|
|
9
9
|
| --- | --- |
|
|
10
10
|
| Build or change this game | This file + the relevant `.agents/references/project-manual.md` section |
|
|
11
11
|
| Open, play, or verify it | `.agents/skills/editor/SKILL.md` |
|
|
12
|
-
| Model or revise a game prop with Blender | `.agents/skills/
|
|
13
|
-
| The game needs a 3D asset placed, rigged, or baked | `.agents/skills/
|
|
14
|
-
| Other craft (2D/3D art, animation, humanoids, generated assets) | The matching `.agents/skills/
|
|
12
|
+
| Model or revise a game prop with Blender | `.agents/skills/volter-3d-models/SKILL.md` |
|
|
13
|
+
| The game needs a 3D asset placed, rigged, or baked | `.agents/skills/volter-3d-models/SKILL.md` (model and export); placement, stories and baking in `.agents/references/project-manual.md` |
|
|
14
|
+
| Other craft (2D/3D art, animation, humanoids, generated assets) | The matching `.agents/skills/volter-*/SKILL.md` |
|
|
15
15
|
| Import an existing web game | Read-only compatibility report; never rewrite its source |
|
|
16
16
|
| Browse or modify an example | Read-only, or scaffold a copy; user games never go in `examples/` |
|
|
17
17
|
|
|
@@ -21,7 +21,7 @@ generated projections (never edit); `CLAUDE.md` and
|
|
|
21
21
|
|
|
22
22
|
**Capabilities are this project's standard libraries, and they are ADDED.**
|
|
23
23
|
Before writing reusable plumbing, run
|
|
24
|
-
bare `npm run --silent
|
|
24
|
+
bare `npm run --silent volter -- add` (lists), inspect the match, and `add <id>` it —
|
|
25
25
|
the installed source is project-owned and editable. A doc naming
|
|
26
26
|
`src/lib/<x>` describes what that capability installs.
|
|
27
27
|
|
|
@@ -29,7 +29,7 @@ the installed source is project-owned and editable. A doc naming
|
|
|
29
29
|
|
|
30
30
|
1. Read the brief; write the initial `ROADMAP.md` task first (shape:
|
|
31
31
|
the ROADMAP rule below).
|
|
32
|
-
2. Read `
|
|
32
|
+
2. Read `volter.project.json` — each root's `adapter` owns its document
|
|
33
33
|
and lifecycle; read the root entry files and any data schema before
|
|
34
34
|
editing. `src/main.ts` is the game's own standalone boot: it mounts each
|
|
35
35
|
root with its own library (`<Canvas>` for `three`, react-dom for `dom`);
|
|
@@ -37,7 +37,7 @@ the installed source is project-owned and editable. A doc naming
|
|
|
37
37
|
3. Start the editor now (`npm run dev`); tell the user the URL in your
|
|
38
38
|
FIRST visible message. Keep it running and narrate as you build. The
|
|
39
39
|
editor IS the Code-OSS workbench this machine declares in
|
|
40
|
-
`.
|
|
40
|
+
`.volter/workbench.json` (the product's `create --workbench <dir>` writes it); with
|
|
41
41
|
no declaration `npm run dev` refuses and prints the exact JSON to write —
|
|
42
42
|
write it, do not work around it.
|
|
43
43
|
4. Multiplayer: every SEAT is a person — an INSTANCE in one editor,
|
|
@@ -85,19 +85,19 @@ request needs.
|
|
|
85
85
|
- **`DEVLOG.md` is the development journal, not a second tracker.** One
|
|
86
86
|
entry per arc: what changed, why, decisions, playtest outcome, what
|
|
87
87
|
remains — with reviewed screenshots (a clip when motion matters)
|
|
88
|
-
promoted from `.
|
|
88
|
+
promoted from `.volter/` history into `media/`; inspect every artifact
|
|
89
89
|
you attach, never the latest blindly.
|
|
90
90
|
- **Record through the eval door**: Play running →
|
|
91
91
|
`eval 'return editor.recording.start({ fps: 30 })'`, drive via
|
|
92
92
|
`game.*`, `eval 'return editor.recording.stop()'` → WebM under
|
|
93
|
-
`.
|
|
93
|
+
`.volter/recordings/`. Inspect/trim with ordinary `ffmpeg`; no wrappers.
|
|
94
94
|
- **Keep Three source modular:** thin `src/world.tsx`; compositions in
|
|
95
95
|
`src/scenes/*Scene.tsx` (no stories); placeables in `src/prefabs/` with
|
|
96
96
|
stories; support in `src/components/`. Owned parts stay inside their
|
|
97
97
|
owner; independent entities never hide in scenery; no monoliths, no
|
|
98
98
|
prefab-per-primitive. E10/E11 enforce declared classifications and W10
|
|
99
99
|
warns when a Three project silently loses all prefabs. Characters are ALWAYS rigged models
|
|
100
|
-
authored in Blender (`
|
|
100
|
+
authored in Blender (`volter-3d-models`), never primitive stacks.
|
|
101
101
|
- Use Three.js, PixiJS, React, Rapier, and Colyseus directly — no
|
|
102
102
|
wrappers, no parallel ECS or mirror tree.
|
|
103
103
|
- The world node is the entity. On a TSX root, behavior is a React
|
|
@@ -109,8 +109,9 @@ request needs.
|
|
|
109
109
|
unrecognized manifest key is rejected. Never call `createRoot`,
|
|
110
110
|
`hydrateRoot`, or `ReactDOM.render` from project code.
|
|
111
111
|
- One component, one concern.
|
|
112
|
-
-
|
|
113
|
-
|
|
112
|
+
- UI is React DOM: a player HUD, menus and screens are the `dom` root
|
|
113
|
+
(`src/ui/game.tsx`, over the world), never a Pixi `canvas` root and never
|
|
114
|
+
drei `Html` (invisible in captures). A `canvas` root is 2D game rendering.
|
|
114
115
|
- Never fabricate first-party data, modify imported game source without
|
|
115
116
|
consent, or author schema fields with no runtime reader. The game's
|
|
116
117
|
numbers and tables are plain typed literals under `src/data/`.
|
|
@@ -120,7 +121,7 @@ request needs.
|
|
|
120
121
|
- Keep reference images and motion studies in `references/`; Content shows
|
|
121
122
|
them without shipping them. Put assets the game loads in `public/`.
|
|
122
123
|
- Repeatable sequences: flat scripts in `scripts/<task>/steps/` (README
|
|
123
|
-
per step); intermediates in `.
|
|
124
|
+
per step); intermediates in `.volter/tmp/<task>/`. Helpers in
|
|
124
125
|
`src/lib/<domain>/` only when reusable and purely mechanical; no
|
|
125
126
|
runners, task graphs, or auto-judges.
|
|
126
127
|
- Editor control is observation and verification; write through source
|
|
@@ -146,9 +147,9 @@ endless rewrite cycle. Playtest live; the play log is the receipt.
|
|
|
146
147
|
the only all-clear.
|
|
147
148
|
4. Enter Play and look. Capture a legible screenshot; **a hidden tab
|
|
148
149
|
captures t≈0** — drive `game.waitSimTime` first.
|
|
149
|
-
5. Drive the game with `npm run --silent
|
|
150
|
+
5. Drive the game with `npm run --silent volter -- eval '<js>'` — the one general
|
|
150
151
|
door (`{ editor, game, page, tools, session }`). Never synthetic
|
|
151
|
-
keys, rAF loops, wall-clock sleeps, or `window.
|
|
152
|
+
keys, rAF loops, wall-clock sleeps, or `window.__volter*` reads.
|
|
152
153
|
6. Repeat for the few varied situations that could expose the change;
|
|
153
154
|
the observations and screenshots ARE the proof.
|
|
154
155
|
7. Inspect the live hierarchy against the taxonomy above; every prefab
|
|
@@ -162,17 +163,17 @@ endless rewrite cycle. Playtest live; the play log is the receipt.
|
|
|
162
163
|
## Commands
|
|
163
164
|
|
|
164
165
|
```bash
|
|
165
|
-
npm run dev # open/reuse this project's editor (the workbench .
|
|
166
|
-
npm run --silent
|
|
167
|
-
npm run --silent
|
|
168
|
-
npm run --silent
|
|
169
|
-
npm run --silent
|
|
170
|
-
npm run --silent
|
|
166
|
+
npm run dev # open/reuse this project's editor (the workbench .volter/workbench.json names)
|
|
167
|
+
npm run --silent volter -- status # require connected: true
|
|
168
|
+
npm run --silent volter -- play # editor Play mode
|
|
169
|
+
npm run --silent volter -- restart # remount after init-time edits
|
|
170
|
+
npm run --silent volter -- screenshot # visible evidence
|
|
171
|
+
npm run --silent volter -- eval '<js>' # THE door onto the running game
|
|
171
172
|
npm run check-idioms # every slice
|
|
172
173
|
npm run validate # manifest/files + React design states
|
|
173
174
|
npm run typecheck # THE gate: src + src/tools + server
|
|
174
175
|
npm run dev:standalone # EXPORTED builds only
|
|
175
176
|
```
|
|
176
177
|
|
|
177
|
-
Always `npm run --silent
|
|
178
|
+
Always `npm run --silent volter -- <verb>`, never a bare `volter` (a global one may
|
|
178
179
|
belong to another checkout).
|
package/template/DEVLOG.md
CHANGED
|
@@ -16,5 +16,5 @@ every small edit. Put the newest entry first and cover:
|
|
|
16
16
|
Evidence linked here is durable project material. Review the actual candidate
|
|
17
17
|
captures, reject unclear or unrepresentative frames, and watch each selected
|
|
18
18
|
clip from beginning to end. Copy only the chosen media out of the bounded
|
|
19
|
-
`.
|
|
19
|
+
`.volter/` run history into `media/screenshots/` or `media/clips/` before linking
|
|
20
20
|
it here. Never cite an unreviewed capture merely because it is the latest one.
|