@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.
Files changed (568) hide show
  1. package/BUNDLED_NOTICES +10954 -5077
  2. package/LICENSE +1 -1
  3. package/LICENSE-BLENDER +2 -2
  4. package/NOTICE +2 -2
  5. package/additions/canvas/package.json +8 -0
  6. package/additions/canvas/src/canvas-mount.ts +46 -0
  7. package/additions/canvas/src/scene2d.tsx +18 -0
  8. package/catalog/entries/bake.json +1 -1
  9. package/catalog/entries/blender.json +3 -3
  10. package/catalog/entries/music.json +6 -6
  11. package/catalog/project-source/LICENSE +1 -1
  12. package/catalog/project-source/src/contributions/bake.kind.ts +2 -2
  13. package/catalog/project-source/src/contributions/builder-document.tsx +1 -1
  14. package/catalog/project-source/src/contributions/builder-ui.tsx +3 -3
  15. package/catalog/project-source/src/contributions/module-source.ts +4 -4
  16. package/catalog/project-source/src/lib/music/music-player.ts +18 -12
  17. package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +59 -59
  18. package/catalog/project-source/src/lib/static-batch/Frozen.tsx +1 -1
  19. package/catalog/project-source/src/lib/static-batch/mutation-watch.ts +1 -1
  20. package/catalog/project-source/src/tools/bake-preview.tool.ts +9 -9
  21. package/dist/.vite/manifest.json +4106 -3965
  22. package/dist/assets/{AssetBudgetPanel-x_FNJbfZ.js → AssetBudgetPanel-BMR3AQhc.js} +10 -10
  23. package/dist/assets/AudioViewer-DESxi7pU.js +1 -0
  24. package/dist/assets/CanvasBoardDocument-Q_nrYFlB.js +1 -0
  25. package/dist/assets/CanvasSceneViewport-WZMoKy_F.js +1 -0
  26. package/dist/assets/ColorInput-C2EK-OnD.js +1 -0
  27. package/dist/assets/{EntityModelDocument-CzUHsH9E.js → EntityModelDocument-B_4ENTCq.js} +1 -1
  28. package/dist/assets/{EnvironmentAssetDocument-ByEB7_4A.js → EnvironmentAssetDocument-BZBp6OFJ.js} +1 -1
  29. package/dist/assets/{GameplaySessionTimeline-dhG-oiqd.js → GameplaySessionTimeline-1ivaucpv.js} +1 -1
  30. package/dist/assets/ImageViewer-D16OExYu.js +1 -0
  31. package/dist/assets/{InspectorCanvasPreview-CEr_Kxna.js → InspectorCanvasPreview-BrFjhoiD.js} +1 -1
  32. package/dist/assets/InspectorObjectPreview-CY5xVsPR.js +1 -0
  33. package/dist/assets/JsonAssetDocument-CvjTlcdr.js +2 -0
  34. package/dist/assets/{LiveModuleDocument-DL8QHSlk.js → LiveModuleDocument-ne1o9giX.js} +1 -1
  35. package/dist/assets/{LutAssetDocument-BImiug2M.js → LutAssetDocument-Cp0v-O7q.js} +1 -1
  36. package/dist/assets/ModelAssetDocument-Ceu7OIN9.js +1 -0
  37. package/dist/assets/{NonThreeAuthoringBootstrap-B40qmGGS.js → NonThreeAuthoringBootstrap-DiElZf-e.js} +1 -1
  38. package/dist/assets/Object3DDocumentToolbar-BLNamqii.js +1 -0
  39. package/dist/assets/Object3DDocumentViewport-D6QoHfa_.js +2 -0
  40. package/dist/assets/{Object3DPreview-ClYDoH2L.js → Object3DPreview-ZVokr044.js} +1 -1
  41. package/dist/assets/OnlineAssetDetail-Dnckd7zB.js +1 -0
  42. package/dist/assets/PlayBar-DsMitSgy.js +1 -0
  43. package/dist/assets/{QuarksAssetDocument-B-VOj-n4.js → QuarksAssetDocument-B5J8uHFM.js} +1 -1
  44. package/dist/assets/ReactCanvasControls-CmfvxJYY.js +1 -0
  45. package/dist/assets/RootSelectionOverlay-BWsNiSuM.js +1 -0
  46. package/dist/assets/{ShaderAssetDocument-Kn8IvRGV.js → ShaderAssetDocument-CT7XzsZq.js} +5 -5
  47. package/dist/assets/ShadowEditor-YO5KEfnz.js +1 -0
  48. package/dist/assets/{SourceAssetViewer-CLQ95VSD.js → SourceAssetViewer-FSLup2km.js} +1 -1
  49. package/dist/assets/StageHost-DYfGYwvq.js +2 -0
  50. package/dist/assets/{StoryPreviewMount-D2lg37et.js → StoryPreviewMount-BhvT5QlB.js} +1 -1
  51. package/dist/assets/ThreeBoardDocument-B-z2nwnH.js +2 -0
  52. package/dist/assets/{ThreeIsolationSceneContent-DbYIylZQ.js → ThreeIsolationSceneContent-B5pU4Y6k.js} +1 -1
  53. package/dist/assets/{ToolObject3DPreview-WEi6C9uU.js → ToolObject3DPreview-VtraiQ4Q.js} +1 -1
  54. package/dist/assets/Toolbar-M62Gob9T.js +1 -0
  55. package/dist/assets/{TransientHint-BpDLhRLd.js → TransientHint-Cc40mHWE.js} +1 -1
  56. package/dist/assets/VideoViewer-BxcUwXQm.js +1 -0
  57. package/dist/assets/ViewportShadingMenu-BoMPnTVh.js +1 -0
  58. package/dist/assets/active-ingest-0QjJWb7i.js +3 -0
  59. package/dist/assets/{animation-clock-Bm80XdqP.js → animation-clock-BXEwUJtz.js} +1 -1
  60. package/dist/assets/animation-mixers.service-C-Ko4KzM.js +1 -0
  61. package/dist/assets/animation-timeline.utility-Bl15-rYb.js +1 -0
  62. package/dist/assets/{asset-budget-asset.menu-CEgP0Kiw.js → asset-budget-asset.menu-BUa3g0Wy.js} +1 -1
  63. package/dist/assets/{asset-budget.action-D4R1c3wi.js → asset-budget.action-Dl5eVPIo.js} +1 -1
  64. package/dist/assets/{asset-budget.document-Syzjn1U1.js → asset-budget.document-DJylQ-0h.js} +1 -1
  65. package/dist/assets/{asset-budget.menu-BbRiqXeM.js → asset-budget.menu-BJtvNMLj.js} +1 -1
  66. package/dist/assets/asset-editor-persistence-BIbf5u0Q.js +1 -0
  67. package/dist/assets/asset-loaders-DoNflsHL.js +2 -0
  68. package/dist/assets/{asset-preview-B1tDziF1.js → asset-preview-DxlSdRZn.js} +1 -1
  69. package/dist/assets/{audio-unlock.service-ucMfCVBw.js → audio-unlock.service-CTaiyXF9.js} +1 -1
  70. package/dist/assets/audio.utility-CEmNc68t.js +1 -0
  71. package/dist/assets/autoplay.service-BZLSUyL8.js +1 -0
  72. package/dist/assets/{babylon-authoring-adapter-C8mFMXSr.js → babylon-authoring-adapter-BZvV2bz_.js} +1 -1
  73. package/dist/assets/binding-resolver-DGbk9_XR.js +2 -0
  74. package/dist/assets/blender-emscripten-engine-B7lfg-RX.js +2 -0
  75. package/dist/assets/{blender-node-editor.document-C1YmwWls.js → blender-node-editor.document-wXJobGNH.js} +1 -1
  76. package/dist/assets/{blender-properties-tab-B8lyjgj3.js → blender-properties-tab-7GFf80ev.js} +1 -1
  77. package/dist/assets/{blender-runtime-host-CyQlImSR.js → blender-runtime-host-CILxrx5T.js} +2 -2
  78. package/dist/assets/{blender-runtime-skin-BK7ShZ6z.js → blender-runtime-skin-Cd5lQYsC.js} +7 -7
  79. package/dist/assets/{blender-runtime.document-B0nVQs0P.js → blender-runtime.document-C0r_R49S.js} +7 -7
  80. package/dist/assets/{blender-timeline.document-CMcdE2CK.js → blender-timeline.document-BaISZMBc.js} +1 -1
  81. package/dist/assets/{blender-uv-editor.document-CjqNo4sZ.js → blender-uv-editor.document-CT_fsyyA.js} +1 -1
  82. package/dist/assets/blender-version.status-DzEx7u7k.js +1 -0
  83. package/dist/assets/blender-wali-engine-DOiQCBXH.js +2 -0
  84. package/dist/assets/{blender.command-C6NmRBo5.js → blender.command-DdiKd8mZ.js} +1 -1
  85. package/dist/assets/blender.keymap-BmOBRY7p.js +1 -0
  86. package/dist/assets/blender.status-BMETIbb2.js +1 -0
  87. package/dist/assets/board-guides-CjHQ9Ynm.js +1 -0
  88. package/dist/assets/body-marks-C1LxJtQb.js +1 -0
  89. package/dist/assets/bridge.command-DXUeavn5.js +3 -0
  90. package/dist/assets/{browserAll-lF_dLQVz.js → browserAll-Dg46xT22.js} +1 -1
  91. package/dist/assets/build-player.document-BHwVV3K0.js +1 -0
  92. package/dist/assets/build-profiles.document-HkpS-Kxa.js +2 -0
  93. package/dist/assets/build-progress.status-u1J0Rm1D.js +1 -0
  94. package/dist/assets/build-session-BLboUUbw.js +9 -0
  95. package/dist/assets/{build.action-DRX2IcYt.js → build.action-C00DL83N.js} +1 -1
  96. package/dist/assets/{build.command-BGvLaLG0.js → build.command-Cjk_NY75.js} +1 -1
  97. package/dist/assets/build.header-BWNmNWFT.js +1 -0
  98. package/dist/assets/{build.menu-UenrjPWS.js → build.menu-BBYtqCIq.js} +1 -1
  99. package/dist/assets/{build.service-BIUoTY6l.js → build.service-DOU15tKN.js} +1 -1
  100. package/dist/assets/{camera-DrvaM47S.js → camera-7DGyYW7Y.js} +1 -1
  101. package/dist/assets/{camera-runtime.inspector-CjJALNO8.js → camera-runtime.inspector-n-jiOR-3.js} +1 -1
  102. package/dist/assets/canvas-design-mount-CSRHU-ag.js +6 -0
  103. package/dist/assets/canvas-entry-runtime-BST8yRuK.js +2 -0
  104. package/dist/assets/{canvas-preview-frames-C0QTagA3.js → canvas-preview-frames-Cja32aW2.js} +1 -1
  105. package/dist/assets/{canvas-story-capture.service-Dgjr-rT1.js → canvas-story-capture.service-D5R5HJ8n.js} +2 -2
  106. package/dist/assets/capability-coverage-ByWftxk4.js +7 -0
  107. package/dist/assets/{collaboration-presence-BVIQuN1l.js → collaboration-presence-D6MC9xJN.js} +1 -1
  108. package/dist/assets/{collider-C7SbIYKY.js → collider-B78EcUc9.js} +1 -1
  109. package/dist/assets/{component-board.service-BEsFAw4_.js → component-board.service-BaQI5Oas.js} +2 -2
  110. package/dist/assets/component-board.service-CkjrsD8x.js +2 -0
  111. package/dist/assets/{component-board.service-CWFaGMCO.js → component-board.service-Dvjz_g-x.js} +2 -2
  112. package/dist/assets/component-contracts.service-C3-AXQp7.js +1 -0
  113. package/dist/assets/component-instance-root-DLI40MiB.js +1 -0
  114. package/dist/assets/{component-verbs.command-oNtGgzQL.js → component-verbs.command-Brr_WcaR.js} +1 -1
  115. package/dist/assets/component-verbs.service-DC2sC3j3.js +1 -0
  116. package/dist/assets/{config-_wCzzlM_.js → config-BI_7osdR.js} +3 -3
  117. package/dist/assets/{configurations-BXU4GGbV.js → configurations-XP9YLkrt.js} +1 -1
  118. package/dist/assets/connection.status-BhRwcFx0.js +1 -0
  119. package/dist/assets/{constraint-5KLYpGm7.js → constraint-Bp1l8hY-.js} +1 -1
  120. package/dist/assets/constraints.inspector-Dm1cycK3.js +1 -0
  121. package/dist/assets/{content-bounds-BeuIXKYu.js → content-bounds-DROIchTa.js} +1 -1
  122. package/dist/assets/{contract-system-adapters-Bic_7sev.js → contract-system-adapters-Cn7OW_ay.js} +1 -1
  123. package/dist/assets/coverage.service-l42ty7lr.js +3 -0
  124. package/dist/assets/create-runtime-B_uTwsmi.js +3 -0
  125. package/dist/assets/curve-THOUsg-j.js +1 -0
  126. package/dist/assets/{data-asset-DfQ2Pjse.js → data-asset-DAANayR6.js} +1 -1
  127. package/dist/assets/data-check-core-CHqar_E8.js +1 -0
  128. package/dist/assets/data-ref-CN34UeVw.js +1 -0
  129. package/dist/assets/debug-bridge-BD1XVAIB.js +1 -0
  130. package/dist/assets/debug-registry-ggQWxtu-.js +1 -0
  131. package/dist/assets/{deferred-ingest-play-BdR4qGk6.js → deferred-ingest-play-B2JUlwlT.js} +2 -2
  132. package/dist/assets/{design-time-canvas-mount-DPQeHSN2.js → design-time-canvas-mount-as9cN9I6.js} +2 -2
  133. package/dist/assets/design-time-layers-BRseeSmV.js +1 -0
  134. package/dist/assets/{design-time-mount.service-Ks-5Wkcs.js → design-time-mount.service-BTVu3yKo.js} +2 -2
  135. package/dist/assets/{design-time-mount.service-Ca-DZGFV.js → design-time-mount.service-DKvc7lVK.js} +2 -2
  136. package/dist/assets/design-time-react-mount-C7rB56QD.js +1 -0
  137. package/dist/assets/{document-preview-three-DThkjI1S.js → document-preview-three-CxmRhCcV.js} +1 -1
  138. package/dist/assets/{dom-authoring-adapter-BrLU8IJ_.js → dom-authoring-adapter-L8OzXfmE.js} +1 -1
  139. package/dist/assets/{draco3d-B2cwv46o.js → draco3d-BjNuXv66.js} +1 -1
  140. package/dist/assets/{edit-mode-audio.service-D4ITNbsm.js → edit-mode-audio.service-BwI5u845.js} +1 -1
  141. package/dist/assets/edit-mode-authoring-D5f7aHHl.js +1 -0
  142. package/dist/assets/{edit-mode-networking.service-BNv-FTRh.js → edit-mode-networking.service-DqP_4lbI.js} +1 -1
  143. package/dist/assets/editor-api-BM7H_F4G.js +1 -0
  144. package/dist/assets/{editor-layers-BDJnAAzj.js → editor-layers-D-CTUqco.js} +1 -1
  145. package/dist/assets/editor-presentation-activity-CqJH4G9t.js +1 -0
  146. package/dist/assets/{editor-shell-store-ChLcVeNB.js → editor-shell-store-DHVWS8cE.js} +1 -1
  147. package/dist/assets/{entity-object-JmYMfLsx.js → entity-object-MKYemTFM.js} +1 -1
  148. package/dist/assets/{extend-Cc-nEa_A.js → extend-BrgqZiMY.js} +1 -1
  149. package/dist/assets/fork-menu-DE2MK3Nq.js +1 -0
  150. package/dist/assets/{frame-debugger-store-DaCbAYSW.js → frame-debugger-store-BXoLKTdZ.js} +1 -1
  151. package/dist/assets/game-audio-BeCyd0Ha.js +1 -0
  152. package/dist/assets/{game-contract-seams-BnPFGLll.js → game-contract-seams-tyKDsfaP.js} +1 -1
  153. package/dist/assets/{game-css-scope-transform-D_p7cVgW.js → game-css-scope-transform-DcjrwtVc.js} +2 -2
  154. package/dist/assets/game-document.service-CTb2itHQ.js +1 -0
  155. package/dist/assets/game-eval.command-CpDKXOQU.js +2 -0
  156. package/dist/assets/game-module-access-BTInp2NG.js +1 -0
  157. package/dist/assets/game-network-DW5ARz4R.js +22 -0
  158. package/dist/assets/{gameplay-export-BzYzLZPi.js → gameplay-export-cHk3v9y-.js} +1 -1
  159. package/dist/assets/gameplay-replay-HRenPTtU.js +1 -0
  160. package/dist/assets/gameplay.command-DcY2lKKX.js +1 -0
  161. package/dist/assets/generation-CdOATubd.css +1 -0
  162. package/dist/assets/{generation-jobs-BZhOMrp-.js → generation-jobs-CJBehuUp.js} +1 -1
  163. package/dist/assets/generation.service-BMOc-C9i.js +1 -0
  164. package/dist/assets/{generations-DVDht_31.js → generations-ssgVOe_6.js} +1 -1
  165. package/dist/assets/generations.status-B_SmPReI.js +1 -0
  166. package/dist/assets/hierarchy-marks-BuCO8Ke-.js +1 -0
  167. package/dist/assets/hierarchy-marks-CsTaTkc7.js +1 -0
  168. package/dist/assets/hosted-asset-materialization-CiXZI85V.js +2 -0
  169. package/dist/assets/{ibl-override-material-CiKkaOTW.js → ibl-override-material-CMo_a49U.js} +1 -1
  170. package/dist/assets/index-B0S4fQQV.js +1 -0
  171. package/dist/assets/{index-C3Pw-9So.js → index-B9bd4k-t.js} +1 -1
  172. package/dist/assets/index-BMxv2MNV.js +1 -0
  173. package/dist/assets/{index-DUZeuA7g.js → index-Bm4_DmRO.js} +1 -1
  174. package/dist/assets/{index-cNc-iFbq.js → index-BvBlIRwM.js} +1 -1
  175. package/dist/assets/{index-Ck3JFh48.js → index-BweKDdi_.js} +1 -1
  176. package/dist/assets/{index-BRJMIUK0.js → index-C5ZAyrKq.js} +346 -345
  177. package/dist/assets/index-CPiRKiDC.css +1 -0
  178. package/dist/assets/index-CfpGZrbC.js +1 -0
  179. package/dist/assets/index-Czvj6whv.js +1 -0
  180. package/dist/assets/{index-SS9EugVg.js → index-DgPDGGSV.js} +2 -2
  181. package/dist/assets/{inference-diagnostics-xecGdohW.js → inference-diagnostics-DLt9ql9I.js} +1 -1
  182. package/dist/assets/{ingest-boot-viewport-DAt8WFSy.js → ingest-boot-viewport-BXVXjYpG.js} +1 -1
  183. package/dist/assets/ingest-siblings-DWJ7OGB_.js +1 -0
  184. package/dist/assets/ingest-source-persistence-6ShMoSCa.js +1 -0
  185. package/dist/assets/ingest.service-BBbX8ibg.js +1 -0
  186. package/dist/assets/{inspect-Dr4qvDpJ.js → inspect-Cz3Zyx_1.js} +1 -1
  187. package/dist/assets/inspection-D8fZOHCM.js +1 -0
  188. package/dist/assets/instances.command-BrdlngrL.js +1 -0
  189. package/dist/assets/{json-history-resource-DwS10tqD.js → json-history-resource-Uqrihfc8.js} +1 -1
  190. package/dist/assets/layered-pick-CAVQMPI7.js +1 -0
  191. package/dist/assets/{light-DcFqVCmv.js → light-CqzsCWeJ.js} +1 -1
  192. package/dist/assets/{live-project-verbs-C3LzprCe.js → live-project-verbs-CdFmLYOo.js} +1 -1
  193. package/dist/assets/{machine.document-BzZxubYQ.js → machine.document-DRIFOVaa.js} +1 -1
  194. package/dist/assets/{machines.finder-BR02bfVG.js → machines.finder-DPCT6few.js} +1 -1
  195. package/dist/assets/material-BVApn1V_.js +1 -0
  196. package/dist/assets/{material-factory-COz7qZhC.js → material-factory-B_75xxFD.js} +1 -1
  197. package/dist/assets/{mesh-DcmO-mWI.js → mesh-DdA3mExo.js} +1 -1
  198. package/dist/assets/model-asset-sections-D1uxOu2v.css +1 -0
  199. package/dist/assets/model-asset-sections.service-CJnSIckZ.js +1 -0
  200. package/dist/assets/{model-inspection-CXHxrafK.js → model-inspection-DvspbmJl.js} +1 -1
  201. package/dist/assets/{model-thumbnail-BEKPWg4l.js → model-thumbnail-BmQs-h6t.js} +1 -1
  202. package/dist/assets/{models.finder-c1I0tp2M.js → models.finder-Qv_Hsccy.js} +1 -1
  203. package/dist/assets/module-mode-MJ4Gbsry.js +2 -0
  204. package/dist/assets/mount-canvas-ingest-root-BxtM8OaB.js +2 -0
  205. package/dist/assets/mount-dom-ingest-root-pGatqO46.js +2 -0
  206. package/dist/assets/mount-ingest-root-C7jb-mCl.js +2 -0
  207. package/dist/assets/mount-manifest-BfoHBuzn.js +1 -0
  208. package/dist/assets/mount-readiness-DyAd17pe.js +4 -0
  209. package/dist/assets/mount-three-ingest-root-Boa5mcaF.js +1 -0
  210. package/dist/assets/{mounted-authoring-Clftxx0x.js → mounted-authoring-DxMISwvR.js} +1 -1
  211. package/dist/assets/{mounted-story-viewport-source-B4-eAYGI.js → mounted-story-viewport-source-DfnLxI1f.js} +1 -1
  212. package/dist/assets/{native-debug-module-2_HVupdg.js → native-debug-module-BlrALjM3.js} +1 -1
  213. package/dist/assets/{navigation-CH3-zr1n.js → navigation-CqG5o5AR.js} +1 -1
  214. package/dist/assets/{navmesh.menu-Dfi-Pk-8.js → navmesh.menu-D4TdVDhe.js} +1 -1
  215. package/dist/assets/{navmesh.service-Cz7QFY-M.js → navmesh.service-DWKT5ruQ.js} +1 -1
  216. package/dist/assets/network-observer.service-ZRAquNq4.js +1 -0
  217. package/dist/assets/network.utility-DjeOEvAY.js +1 -0
  218. package/dist/assets/object-marks-BnvSuCTt.js +1 -0
  219. package/dist/assets/{object3d-authoring-subject-BDrxd1GA.js → object3d-authoring-subject-XccsO0xG.js} +1 -1
  220. package/dist/assets/{object3d-document-session-registry-DJDEDM0p.js → object3d-document-session-registry-CMRJdFp6.js} +2 -2
  221. package/dist/assets/{oid-transform-D5Kxt6ij.js → oid-transform-DaA6yW6o.js} +1 -1
  222. package/dist/assets/{particles-vRp0Lf3o.js → particles-DsQRcDBY.js} +1 -1
  223. package/dist/assets/{performance-profiler-OwnXQX0M.js → performance-profiler-CMbwGBuk.js} +1 -1
  224. package/dist/assets/pixi-authoring-adapter-BoBt8bB5.js +1 -0
  225. package/dist/assets/pixi-live-write-target-CYZgvC6U.js +1 -0
  226. package/dist/assets/play.command-D9JGJP-e.js +2 -0
  227. package/dist/assets/pose-guard-CLabLSzf.js +1 -0
  228. package/dist/assets/presentation-COhHQdmR.js +1 -0
  229. package/dist/assets/{product-CxmUIxmr.js → product-CaRGoiIH.js} +1 -1
  230. package/dist/assets/{profiler.action-Dzy9DuAc.js → profiler.action-Cz7HYWjh.js} +1 -1
  231. package/dist/assets/{profiler.menu-jLDO3U6N.js → profiler.menu-D5aR_FBy.js} +1 -1
  232. package/dist/assets/profiler.utility-KwxlIPKb.js +1 -0
  233. package/dist/assets/{project-authoring-session-C3eusefK.js → project-authoring-session-DKXHVwxO.js} +2 -2
  234. package/dist/assets/project-provenance-BGnJXJwa.js +1 -0
  235. package/dist/assets/{properties-bone-constraints.inspector-B_PbSMV7.js → properties-bone-constraints.inspector-Bo-sU8eR.js} +1 -1
  236. package/dist/assets/{properties-bone.inspector-CMDEQuBd.js → properties-bone.inspector-BQiWplQv.js} +1 -1
  237. package/dist/assets/{properties-collection.inspector-D7Ay8yRj.js → properties-collection.inspector-C5BnR-GE.js} +1 -1
  238. package/dist/assets/{properties-constraints.inspector-DS1fZgXK.js → properties-constraints.inspector-CyheU12R.js} +1 -1
  239. package/dist/assets/{properties-data.inspector-k2pGN2Mp.js → properties-data.inspector-CkycARja.js} +1 -1
  240. package/dist/assets/{properties-material.inspector-Bb3yAGUx.js → properties-material.inspector-Bl_PUmY-.js} +1 -1
  241. package/dist/assets/{properties-modifiers.inspector-BcJfe-Wy.js → properties-modifiers.inspector-j7SnOxQq.js} +1 -1
  242. package/dist/assets/{properties-object.inspector-CUSfXJuq.js → properties-object.inspector-DcR3MGLK.js} +1 -1
  243. package/dist/assets/{properties-output.inspector-BTVW2kn1.js → properties-output.inspector-BLjw6K4b.js} +1 -1
  244. package/dist/assets/{properties-particles.inspector-Cw0fxx3B.js → properties-particles.inspector-BUIm2-Jf.js} +1 -1
  245. package/dist/assets/{properties-physics.inspector-C-0bD2bu.js → properties-physics.inspector-DNvRcxb6.js} +1 -1
  246. package/dist/assets/{properties-render.inspector-C8D5UpjX.js → properties-render.inspector-8FMZ-qoZ.js} +1 -1
  247. package/dist/assets/{properties-scene.inspector-HjK6QHGg.js → properties-scene.inspector-Dx7_z75k.js} +1 -1
  248. package/dist/assets/{properties-texture.inspector-CckZgUaI.js → properties-texture.inspector-WT15951-.js} +1 -1
  249. package/dist/assets/{properties-view-layer.inspector-C1ajtVSk.js → properties-view-layer.inspector-P7VNTdqr.js} +1 -1
  250. package/dist/assets/{properties-world.inspector-BiT_EdT-.js → properties-world.inspector-B3t1q8TF.js} +1 -1
  251. package/dist/assets/r3f-design-session-lsbFnoWH.js +2 -0
  252. package/dist/assets/{r3f-physics-binding-DzrbpqjM.js → r3f-physics-binding-Cx8yhuwt.js} +1 -1
  253. package/dist/assets/{r3f-source-authoring-adapter-DbbeRcvt.js → r3f-source-authoring-adapter-jH3G0TeH.js} +2 -2
  254. package/dist/assets/react-canvas-navigation-B_gOe3CI.js +1 -0
  255. package/dist/assets/react-inspector.service-CZf1vfdX.js +1 -0
  256. package/dist/assets/react-story-board-CCm2Opwn.js +1 -0
  257. package/dist/assets/{react-three-rapier.esm-U8J7g6tH.js → react-three-rapier.esm-CHXGG51p.js} +1 -1
  258. package/dist/assets/react-world-authoring-adapter-CnzxMtYz.js +1 -0
  259. package/dist/assets/{realm-services-CnY105XU.js → realm-services-Do9J6nsb.js} +1 -1
  260. package/dist/assets/reflection-probe-capture.inspector-BAjjIybz.js +1 -0
  261. package/dist/assets/{reflection-probe-BHNGwVyz.js → reflection-probe-sIto9mh0.js} +1 -1
  262. package/dist/assets/registry-Xnduk02T.js +1 -0
  263. package/dist/assets/{relative-import-specifier-BFKIWEWs.js → relative-import-specifier-CPFTrxi4.js} +1 -1
  264. package/dist/assets/{render-env-BkKZ4uMA.js → render-env-YJlI8K0i.js} +1 -1
  265. package/dist/assets/{render-features-rxbawsRb.js → render-features-DMSV2qKJ.js} +1 -1
  266. package/dist/assets/{render-settings-DS5leCed.js → render-settings-CRyDhHyz.js} +1 -1
  267. package/dist/assets/{resolve-three-CVnMRHxw.js → resolve-three-D27rMc37.js} +19 -19
  268. package/dist/assets/root-seam-contract-gjWUd5uu.js +1 -0
  269. package/dist/assets/run-selection-B0jOdyYt.js +2 -0
  270. package/dist/assets/scene-capture-Di9cM1p4.js +1 -0
  271. package/dist/assets/scene-document.service-XxGs4HHE.js +2 -0
  272. package/dist/assets/{scene-framing-BQt72ZCw.js → scene-framing-DkZKDwH3.js} +1 -1
  273. package/dist/assets/{scene-index--lRWLEmW.js → scene-index-DHeKmalD.js} +1 -1
  274. package/dist/assets/{scene-query-s1y04OVB.js → scene-query-ByZtXA2m.js} +1 -1
  275. package/dist/assets/seeded-random-BJthDRMu.js +1 -0
  276. package/dist/assets/{session-CTXsU1lK.js → session-x8E_NJk2.js} +34 -34
  277. package/dist/assets/{setup-renderer-Cwkl1Ar6.js → setup-renderer-F9mG7t6r.js} +1 -1
  278. package/dist/assets/{source-object3d-authoring-adapter-DF679Ncb.js → source-object3d-authoring-adapter-CvmFpSUj.js} +1 -1
  279. package/dist/assets/{source-persistence-backend-CwLYVPXj.js → source-persistence-backend-au3WtEn6.js} +1 -1
  280. package/dist/assets/{spark-renderer-lifecycle-DfYpvEJa.js → spark-renderer-lifecycle-B6Axb6jm.js} +1 -1
  281. package/dist/assets/{stage-keyboard-B8BEW592.js → stage-keyboard-BQkndG_D.js} +1 -1
  282. package/dist/assets/stage-overlay-set-g6eWhuRv.js +1 -0
  283. package/dist/assets/stage-presence-markers-0CDfO5f4.js +1 -0
  284. package/dist/assets/stage-transform-tools-BzPl7OIo.js +1 -0
  285. package/dist/assets/standard-viewport-dressing-BW-dM_1h.js +24 -0
  286. package/dist/assets/{state-watch.action-DnR5Zjr-.js → state-watch.action-Z1nQ5awu.js} +1 -1
  287. package/dist/assets/{state-watch.menu-wYLCLsAw.js → state-watch.menu-CQHGUF3W.js} +1 -1
  288. package/dist/assets/state-watch.utility-DCIg2i79.js +1 -0
  289. package/dist/assets/{story-capture-BmnwHGDV.js → story-capture-BIrjDKeY.js} +1 -1
  290. package/dist/assets/story-documents-BvG2xeaR.js +3 -0
  291. package/dist/assets/{story-documents.service-B6v7Z-WE.js → story-documents.service-DOSEa3ja.js} +1 -1
  292. package/dist/assets/{story-documents.service-yagl1wGp.js → story-documents.service-y1m7XGMJ.js} +1 -1
  293. package/dist/assets/{story-media-presence-BqRMu572.js → story-media-presence-HLV-KaMj.js} +1 -1
  294. package/dist/assets/{story-pixi-preview-Da6afqLg.js → story-pixi-preview-CMhho2gG.js} +1 -1
  295. package/dist/assets/{story-presentation-DMSYRWaz.js → story-presentation-CYhVv8Ku.js} +1 -1
  296. package/dist/assets/story-three-preview-CgcLF5lE.js +2 -0
  297. package/dist/assets/{structural-ids-Br2zjINh.js → structural-ids-BOo2BRoY.js} +1 -1
  298. package/dist/assets/studio-environment-R9qXUUcC.js +2 -0
  299. package/dist/assets/{surface-state-1lTOi8FD.js → surface-state-D8Qnowo6.js} +1 -1
  300. package/dist/assets/{syntactic-prop-specs-eiQXwMIc.js → syntactic-prop-specs-8gkBuc5j.js} +1 -1
  301. package/dist/assets/team-playtest.service-BBMZ2iyk.js +1 -0
  302. package/dist/assets/{three-TCuY32m_.js → three-DiL6vMXq.js} +1 -1
  303. package/dist/assets/three-authoring-adapter-CkLR2zGf.js +1 -0
  304. package/dist/assets/three-authoring.service-CovhlCGx.js +2 -0
  305. package/dist/assets/{three-ingest-runtime-B7rtg3QE.js → three-ingest-runtime-CwTqAHgX.js} +1 -1
  306. package/dist/assets/{three-integration-BdN5Nhsg.js → three-integration-DXOFI88n.js} +2 -2
  307. package/dist/assets/three-integration.service-rCAqpqSp.js +1 -0
  308. package/dist/assets/three-projection-core-B7Lf8tOp.js +1 -0
  309. package/dist/assets/{three-state-DwFE3ay2.js → three-state-BCACvUtm.js} +1 -1
  310. package/dist/assets/{three-story-capture.service-CvpV3v5a.js → three-story-capture.service-rTFKNtHA.js} +2 -2
  311. package/dist/assets/{three-story-model-C2r2BuiA.js → three-story-model-BjKr7OMn.js} +1 -1
  312. package/dist/assets/three-viewport-presentation-CBzvc2v2.js +141 -0
  313. package/dist/assets/tools-DfctM216.js +1 -0
  314. package/dist/assets/transform-mode-request-DlEApNrA.js +1 -0
  315. package/dist/assets/transport-strip-xCg94CuI.js +1 -0
  316. package/dist/assets/transport.header-BRtdky0x.js +1 -0
  317. package/dist/assets/{trigger-volume-DP0G1VBe.js → trigger-volume-BLkHmfm9.js} +1 -1
  318. package/dist/assets/tuples-BDz3wbQL.js +1 -0
  319. package/dist/assets/ui-board-document-DvbK_HVN.js +2 -0
  320. package/dist/assets/{user-data-Bpj7diUS.js → user-data-C84W0V47.js} +1 -1
  321. package/dist/assets/user-data-CODoGZqA.js +1 -0
  322. package/dist/assets/{utility-view-state-CAfbFbKQ.js → utility-view-state-CDRxZSo-.js} +1 -1
  323. package/dist/assets/viewport-door-BARIpMu-.js +1 -0
  324. package/dist/assets/{viewport-root-presentation-vgxsTyj4.js → viewport-root-presentation-hRLF0BeO.js} +1 -1
  325. package/dist/assets/{viewport-surface-status-cwCiBGa7.js → viewport-surface-status-TUfhXKR9.js} +1 -1
  326. package/dist/assets/{webworkerAll-Cm3gTjWi.js → webworkerAll-PJtcQ1FD.js} +1 -1
  327. package/dist/assets/worker-BtXrsgFy.js +2 -0
  328. package/dist/assets/workspace-arrangement-DqG5sUns.js +1 -0
  329. package/dist/assets/world-documents-D69XaqUX.js +1 -0
  330. package/dist/assets/world-root-stage-binding-BgZWZEuD.js +1 -0
  331. package/dist/assets/{xstate-animation-binding-BGLxcZT_.js → xstate-animation-binding-CIyLzGHs.js} +1 -1
  332. package/dist/assets/{xstate-animation-meta-D_T441Ru.js → xstate-animation-meta-CbYWup3R.js} +1 -1
  333. package/dist/volter-shared-react.json +10 -0
  334. package/dist/volter-shared-three.json +3 -0
  335. package/dist-node/cli.js +253 -210
  336. package/dist-node/create.js +103 -82
  337. package/package.json +23 -20
  338. package/src/contributions.d.ts +1 -1
  339. package/src/index.ts +10 -10
  340. package/starter/cube.py +1 -1
  341. package/template/.agents/references/project-manual.md +17 -17
  342. package/template/.agents/skills/editor/SKILL.md +6 -6
  343. package/template/.agents/skills/editor/agents/openai.yaml +3 -3
  344. package/template/.agents/skills/editor/references/editor-control.md +62 -62
  345. package/template/{.claude/skills/vgai-3d-models → .agents/skills/volter-3d-models}/SKILL.md +3 -3
  346. package/template/{.github/skills/vgai-ingest-existing-game → .agents/skills/volter-ingest-existing-game}/SKILL.md +2 -2
  347. package/template/.agents/skills/{vgai-music → volter-music}/SKILL.md +35 -11
  348. package/template/{.claude/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/SKILL.md +9 -9
  349. package/template/.agents/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
  350. package/template/{.github/skills/vgai-threejs-authoring → .agents/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
  351. package/template/.claude/skills/editor/SKILL.md +6 -6
  352. package/template/.claude/skills/editor/agents/openai.yaml +3 -3
  353. package/template/.claude/skills/editor/references/editor-control.md +62 -62
  354. package/template/{.agents/skills/vgai-3d-models → .claude/skills/volter-3d-models}/SKILL.md +3 -3
  355. package/template/{.agents/skills/vgai-ingest-existing-game → .claude/skills/volter-ingest-existing-game}/SKILL.md +2 -2
  356. package/template/{.github/skills/vgai-threejs-authoring → .claude/skills/volter-threejs-authoring}/SKILL.md +9 -9
  357. package/template/.claude/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
  358. package/template/.claude/skills/{vgai-threejs-authoring → volter-threejs-authoring}/references/helper-catalog.md +1 -1
  359. package/template/.github/copilot-instructions.md +1 -1
  360. package/template/.github/skills/editor/SKILL.md +6 -6
  361. package/template/.github/skills/editor/agents/openai.yaml +3 -3
  362. package/template/.github/skills/editor/references/editor-control.md +62 -62
  363. package/template/.github/skills/{vgai-3d-models → volter-3d-models}/SKILL.md +3 -3
  364. package/template/{.claude/skills/vgai-ingest-existing-game → .github/skills/volter-ingest-existing-game}/SKILL.md +2 -2
  365. package/template/{.agents/skills/vgai-threejs-authoring → .github/skills/volter-threejs-authoring}/SKILL.md +9 -9
  366. package/template/.github/skills/volter-threejs-authoring/agents/openai.yaml +4 -0
  367. package/template/{.agents/skills/vgai-threejs-authoring → .github/skills/volter-threejs-authoring}/references/helper-catalog.md +1 -1
  368. package/template/.mcp.json +3 -3
  369. package/template/AGENTS.md +24 -23
  370. package/template/DEVLOG.md +1 -1
  371. package/template/IDIOMS.md +3 -3
  372. package/template/LICENSE +3 -3
  373. package/template/README.md +12 -12
  374. package/template/check-idioms.ts +51 -51
  375. package/template/manifest-entry-modules-plugin.ts +17 -4
  376. package/template/package.json +12 -12
  377. package/template/server/loopback.ts +1 -1
  378. package/template/server/main.ts +4 -4
  379. package/template/server/rooms/arena-room.ts +8 -8
  380. package/template/server/rooms/game-room.ts +8 -8
  381. package/template/server/rooms.ts +2 -2
  382. package/template/src/bot/QaTester.tsx +1 -1
  383. package/template/src/bot/bot-station.ts +2 -2
  384. package/template/src/bot/tester-station.ts +1 -1
  385. package/template/src/contributions/README.md +1 -1
  386. package/template/src/contributions/analytics.analytics.tsx +1 -1
  387. package/template/src/contributions/data.document.tsx +2 -2
  388. package/template/src/contributions/pages.finder.ts +1 -1
  389. package/template/src/contributions/tester.inspector.tsx +2 -2
  390. package/template/src/contributions/use-game-modules.ts +1 -1
  391. package/template/src/input.ts +2 -2
  392. package/template/src/lib/reflections/volume-reflection-material.ts +59 -59
  393. package/template/src/lib/static-batch/Frozen.tsx +1 -1
  394. package/template/src/lib/static-batch/mutation-watch.ts +1 -1
  395. package/template/src/main.ts +58 -6
  396. package/template/src/manifest-entry-modules.d.ts +12 -1
  397. package/template/src/prefabs/HeroBox.stories.tsx +1 -1
  398. package/template/src/world.tsx +1 -1
  399. package/template/tsconfig.json +1 -1
  400. package/template/validate-manifest.ts +3 -3
  401. package/template/vite.config.ts +11 -11
  402. package/template/{vgai.adapter.ts → volter.adapter.ts} +1 -1
  403. package/template/{vgai.project.json → volter.project.json} +2 -2
  404. package/template-dotfiles/gitignore +27 -27
  405. package/workbench/src/media/game-cover.css +11 -11
  406. package/workbench/src/product.contribution.ts +28 -28
  407. package/workbench/src/{vgaiGameSkew.ts → volterGameSkew.ts} +16 -16
  408. package/dist/assets/AudioViewer-BDPqHDfU.js +0 -1
  409. package/dist/assets/CanvasBoardDocument-mxL0oJ3N.js +0 -1
  410. package/dist/assets/CanvasSceneViewport-C_mapCwC.js +0 -1
  411. package/dist/assets/ColorInput-QUPS1pEB.js +0 -1
  412. package/dist/assets/ImageViewer-tlVvkdM4.js +0 -1
  413. package/dist/assets/InspectorObjectPreview-W-y079DS.js +0 -1
  414. package/dist/assets/JsonAssetDocument-CPmcWFPW.js +0 -2
  415. package/dist/assets/ModelAssetDocument-De1HKuxG.js +0 -1
  416. package/dist/assets/Object3DDocumentToolbar-Cks81kCS.js +0 -1
  417. package/dist/assets/Object3DDocumentViewport-DCwiSY3O.js +0 -2
  418. package/dist/assets/OnlineAssetDetail-CNuwSQRQ.js +0 -1
  419. package/dist/assets/PlayBar-bT8Xdrap.js +0 -1
  420. package/dist/assets/ReactCanvasControls-CnJrPj-B.js +0 -1
  421. package/dist/assets/RootSelectionOverlay-CpaGluQu.js +0 -1
  422. package/dist/assets/ShadowEditor-CVtMlALn.js +0 -1
  423. package/dist/assets/StageHost-B89HKcvd.js +0 -2
  424. package/dist/assets/ThreeBoardDocument-BAgHrbtu.js +0 -2
  425. package/dist/assets/Toolbar-DkTHnQto.js +0 -1
  426. package/dist/assets/VideoViewer-DMV8lf4P.js +0 -1
  427. package/dist/assets/ViewportShadingMenu-CXPi6fl8.js +0 -1
  428. package/dist/assets/active-ingest-DA426a81.js +0 -3
  429. package/dist/assets/adapter-runtime-bindings-4cmsRvRh.js +0 -2
  430. package/dist/assets/animation-mixers.service-DK64IuYq.js +0 -1
  431. package/dist/assets/animation-timeline.utility-D-g0zrOl.js +0 -1
  432. package/dist/assets/asset-editor-persistence-BGWIqZdk.js +0 -1
  433. package/dist/assets/asset-loaders-C0KQI5eY.js +0 -2
  434. package/dist/assets/audio.utility-BmE9WMUg.js +0 -1
  435. package/dist/assets/autoplay.service-CjPnv3QW.js +0 -1
  436. package/dist/assets/binding-resolver-dE0GnZT5.js +0 -2
  437. package/dist/assets/blender-emscripten-engine-BeWFjMn-.js +0 -2
  438. package/dist/assets/blender-version.status-OsFoc9SA.js +0 -1
  439. package/dist/assets/blender-wali-engine-da698rDf.js +0 -2
  440. package/dist/assets/blender.keymap-_rF_vRX8.js +0 -1
  441. package/dist/assets/blender.status-ujwGU6dU.js +0 -1
  442. package/dist/assets/board-guides-BEKPgD9M.js +0 -1
  443. package/dist/assets/body-marks-RKb_LTwL.js +0 -1
  444. package/dist/assets/bridge.command-BF00Iefm.js +0 -3
  445. package/dist/assets/build-profiles.document-CqNrDdh9.js +0 -2
  446. package/dist/assets/build-progress.status-Bo1ZgJcb.js +0 -1
  447. package/dist/assets/build-session-GZcSAfPN.js +0 -9
  448. package/dist/assets/build.header-Bt1kwHWl.js +0 -1
  449. package/dist/assets/canvas-design-mount-BbLW_Nci.js +0 -6
  450. package/dist/assets/canvas-entry-runtime-UNYuSfG0.js +0 -2
  451. package/dist/assets/capability-coverage-DZ-onC5j.js +0 -7
  452. package/dist/assets/component-board.service-q_TM9BCw.js +0 -2
  453. package/dist/assets/component-contracts.service-CPbfXE1h.js +0 -1
  454. package/dist/assets/component-instance-root-B0C5oNEm.js +0 -1
  455. package/dist/assets/component-verbs.service-CnA11bJq.js +0 -1
  456. package/dist/assets/connection.status-Yvt0bX0r.js +0 -1
  457. package/dist/assets/constraints.inspector-4r8jWq5a.js +0 -1
  458. package/dist/assets/coverage.service-DcpEoBuf.js +0 -3
  459. package/dist/assets/create-runtime-DBfUy0SO.js +0 -3
  460. package/dist/assets/curve-DVd18iAX.js +0 -1
  461. package/dist/assets/data-check-core-CQEjuFyt.js +0 -1
  462. package/dist/assets/data-ref-CWnkj-HX.js +0 -1
  463. package/dist/assets/debug-bridge-D3_-EgRE.js +0 -1
  464. package/dist/assets/debug-registry-P0_YQGWd.js +0 -1
  465. package/dist/assets/design-time-layers-ChswRUJt.js +0 -1
  466. package/dist/assets/design-time-react-mount-C85KfXOd.js +0 -1
  467. package/dist/assets/edit-mode-authoring-DeCxPcHM.js +0 -1
  468. package/dist/assets/editor-api-BFTIRlWa.js +0 -1
  469. package/dist/assets/editor-presentation-activity-C7SNSmTd.js +0 -1
  470. package/dist/assets/entry-adjudication-Dc18TIqT.js +0 -1
  471. package/dist/assets/fork-menu-DpKqRhF5.js +0 -1
  472. package/dist/assets/game-audio-CaGKzia4.js +0 -1
  473. package/dist/assets/game-document.service-Chmt4065.js +0 -1
  474. package/dist/assets/game-eval.command-DRSvOJ_1.js +0 -2
  475. package/dist/assets/game-module-access-o3iXZpCA.js +0 -1
  476. package/dist/assets/game-network-Ct2FQYmu.js +0 -1
  477. package/dist/assets/gameplay-replay-BwdxV4oF.js +0 -1
  478. package/dist/assets/gameplay.command-Boqv1hnc.js +0 -1
  479. package/dist/assets/generation-DhwCUHPf.css +0 -1
  480. package/dist/assets/generation.service-o9aXlsx4.js +0 -1
  481. package/dist/assets/generations.status-BvzgHlyk.js +0 -1
  482. package/dist/assets/hierarchy-marks-BLPfSIym.js +0 -1
  483. package/dist/assets/hierarchy-marks-Cc_3lxw6.js +0 -1
  484. package/dist/assets/hosted-asset-materialization-BpbnhJac.js +0 -2
  485. package/dist/assets/index-0Lm0Nf1M.css +0 -1
  486. package/dist/assets/index-BHoAKyAC.js +0 -1
  487. package/dist/assets/index-BeK4RPgj.js +0 -1
  488. package/dist/assets/index-C1c3eOmm.js +0 -1
  489. package/dist/assets/index.module-Ycad3DJq.js +0 -1
  490. package/dist/assets/ingest-siblings-BtiEXLnh.js +0 -1
  491. package/dist/assets/ingest-source-persistence-Dmdo-UBp.js +0 -1
  492. package/dist/assets/ingest.service-vbCucMz7.js +0 -1
  493. package/dist/assets/inspection-CObLhnrs.js +0 -1
  494. package/dist/assets/instances.command-BwayrqNm.js +0 -1
  495. package/dist/assets/layered-pick-kiQf53t5.js +0 -1
  496. package/dist/assets/material-B_V78pTt.js +0 -1
  497. package/dist/assets/model-asset-sections-CFvvihfx.css +0 -1
  498. package/dist/assets/model-asset-sections.service-CqSclZGY.js +0 -1
  499. package/dist/assets/module-mode-BH2R93XP.js +0 -2
  500. package/dist/assets/mount-canvas-ingest-root-D1z9i5B3.js +0 -2
  501. package/dist/assets/mount-dom-ingest-root-BAmmNxlm.js +0 -2
  502. package/dist/assets/mount-ingest-root-DYR0TMIt.js +0 -2
  503. package/dist/assets/mount-manifest-DdkFYdVA.js +0 -1
  504. package/dist/assets/mount-readiness-Ds0HvvLH.js +0 -4
  505. package/dist/assets/mount-three-ingest-root-DVbACDUy.js +0 -1
  506. package/dist/assets/network-observer.service-Ce83TdsU.js +0 -1
  507. package/dist/assets/network.utility-DFDul2Xb.js +0 -1
  508. package/dist/assets/object-marks-DwvIEBOK.js +0 -1
  509. package/dist/assets/pixi-authoring-adapter-BChknIdC.js +0 -1
  510. package/dist/assets/pixi-live-write-target-BjDsBQbp.js +0 -1
  511. package/dist/assets/play-mode-DICV4cKP.js +0 -22
  512. package/dist/assets/play.command-NHyi5rzF.js +0 -2
  513. package/dist/assets/pose-guard-DILO6gGq.js +0 -1
  514. package/dist/assets/presentation-BeNFBfKg.js +0 -1
  515. package/dist/assets/profiler.utility-Do2Bw7MY.js +0 -1
  516. package/dist/assets/project-provenance-4ldz-EOG.js +0 -1
  517. package/dist/assets/r3f-design-session-B5GsZI5M.js +0 -2
  518. package/dist/assets/react-canvas-navigation-Cp3cOHJa.js +0 -1
  519. package/dist/assets/react-inspector.service-Bm0OnanU.js +0 -1
  520. package/dist/assets/react-story-board-GaXqr03H.js +0 -1
  521. package/dist/assets/react-world-authoring-adapter-DOjv2pYm.js +0 -1
  522. package/dist/assets/reflection-probe-capture.inspector-DqSW9p1v.js +0 -1
  523. package/dist/assets/registry-CaCdF63N.js +0 -1
  524. package/dist/assets/root-seam-contract-CxLZaRio.js +0 -1
  525. package/dist/assets/run-selection-DzEkGesJ.js +0 -2
  526. package/dist/assets/scene-capture-0a-bTjT8.js +0 -1
  527. package/dist/assets/scene-document.service-CeDwVA7t.js +0 -2
  528. package/dist/assets/seeded-random-BgCwIAAU.js +0 -1
  529. package/dist/assets/stage-overlay-set-BGE03mqb.js +0 -1
  530. package/dist/assets/stage-presence-markers-DIP7YMcO.js +0 -1
  531. package/dist/assets/stage-transform-tools-BQB7EY4l.js +0 -1
  532. package/dist/assets/standard-viewport-dressing-BCA51Tum.js +0 -24
  533. package/dist/assets/state-watch.utility-CFG1Tu1m.js +0 -1
  534. package/dist/assets/story-documents-BTo90DiA.js +0 -3
  535. package/dist/assets/story-three-preview-R1JvrggS.js +0 -2
  536. package/dist/assets/studio-environment-DRxxq_QX.js +0 -2
  537. package/dist/assets/team-playtest.service-hLfjgScx.js +0 -1
  538. package/dist/assets/three-authoring-adapter-htbnVej2.js +0 -1
  539. package/dist/assets/three-authoring.service-BIQAtVdX.js +0 -2
  540. package/dist/assets/three-integration.service-CS8Nvbd2.js +0 -1
  541. package/dist/assets/three-projection-core-CG01r5Ta.js +0 -1
  542. package/dist/assets/three-viewport-presentation-B0z_cECu.js +0 -141
  543. package/dist/assets/tools-B_NJsk05.js +0 -1
  544. package/dist/assets/transform-mode-request-DzD9aUNA.js +0 -1
  545. package/dist/assets/transport-strip-CUjNltnb.js +0 -1
  546. package/dist/assets/transport.header-Bb4FpQ8J.js +0 -1
  547. package/dist/assets/tuples-DfWSY2tr.js +0 -1
  548. package/dist/assets/ui-board-document-CCiiXjX9.js +0 -2
  549. package/dist/assets/user-data-dHvLdpwM.js +0 -1
  550. package/dist/assets/viewport-door-Bj_ZIP85.js +0 -1
  551. package/dist/assets/worker-CC9Ug5Ei.js +0 -2
  552. package/dist/assets/workspace-arrangement-BdAlBwvd.js +0 -1
  553. package/dist/assets/world-documents-DBybpBq8.js +0 -1
  554. package/dist/assets/world-root-stage-binding-ZVYIgr74.js +0 -1
  555. package/dist/vgai-shared-react.json +0 -10
  556. package/dist/vgai-shared-three.json +0 -3
  557. package/template/.agents/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
  558. package/template/.claude/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
  559. package/template/.github/skills/vgai-threejs-authoring/agents/openai.yaml +0 -4
  560. /package/dist/assets/{vgai-shared-fontawesome-CU65D4Ij.js → volter-shared-fontawesome-CU65D4Ij.js} +0 -0
  561. /package/dist/assets/{vgai-shared-jsx-dev-runtime-DFDKL7fx.js → volter-shared-jsx-dev-runtime-DFDKL7fx.js} +0 -0
  562. /package/dist/assets/{vgai-shared-jsx-runtime-DIqBpTut.js → volter-shared-jsx-runtime-DIqBpTut.js} +0 -0
  563. /package/dist/assets/{vgai-shared-react-BT7rMc2H.js → volter-shared-react-BT7rMc2H.js} +0 -0
  564. /package/dist/assets/{vgai-shared-react-dom-DFajMqMT.js → volter-shared-react-dom-DFajMqMT.js} +0 -0
  565. /package/dist/assets/{vgai-shared-react-dom-client-S0ozfl6_.js → volter-shared-react-dom-client-S0ozfl6_.js} +0 -0
  566. /package/dist/assets/{vgai-shared-three-DH4yxKwt.js → volter-shared-three-DH4yxKwt.js} +0 -0
  567. /package/template/{.vgai → .volter}/assets.json +0 -0
  568. /package/template/{.vgai → .volter}/provenance.json +0 -0
@@ -18,7 +18,7 @@
18
18
  * - Server picks behavior (idle/patrol/chase/flee) + target position.
19
19
  * - Client handles smooth navmesh pathfinding.
20
20
  *
21
- * Also handles `__vgai:debugCommand` { name, args, requestId } — a
21
+ * Also handles `__volter:debugCommand` { name, args, requestId } — a
22
22
  * `locus: 'server'` debug command's client leg (the "Multiplayer locus"
23
23
  * note);
24
24
  * see `DEBUG_COMMANDS`/`onCreate` below.
@@ -152,15 +152,15 @@ export class ArenaRoom extends Room {
152
152
  // Off by default (FROZEN DECISION: env-var OR room-option) — the loopback harness/
153
153
  // the loopback harness (`../loopback.ts`) opt in via the room option; a
154
154
  // plain `npm run server` boot never accepts debug commands unless
155
- // VGAI_ALLOW_DEBUG_COMMANDS is set in its environment.
155
+ // VOLTER_ALLOW_DEBUG_COMMANDS is set in its environment.
156
156
  const debugCommandsAllowed =
157
- options?.allowDebugCommands === true || Boolean(process.env['VGAI_ALLOW_DEBUG_COMMANDS']);
157
+ options?.allowDebugCommands === true || Boolean(process.env['VOLTER_ALLOW_DEBUG_COMMANDS']);
158
158
 
159
159
  this.onMessage(
160
- '__vgai:debugCommand',
160
+ '__volter:debugCommand',
161
161
  (client, message: { name: string; args?: unknown[]; requestId: string }) => {
162
162
  if (!debugCommandsAllowed) {
163
- client.send('__vgai:debugCommandResult', {
163
+ client.send('__volter:debugCommandResult', {
164
164
  requestId: message.requestId,
165
165
  ok: false,
166
166
  error: 'debug commands disabled',
@@ -169,7 +169,7 @@ export class ArenaRoom extends Room {
169
169
  }
170
170
  const handler = DEBUG_COMMANDS[message.name];
171
171
  if (!handler) {
172
- client.send('__vgai:debugCommandResult', {
172
+ client.send('__volter:debugCommandResult', {
173
173
  requestId: message.requestId,
174
174
  ok: false,
175
175
  error: `debug: no server command registered under "${message.name}"`,
@@ -178,13 +178,13 @@ export class ArenaRoom extends Room {
178
178
  }
179
179
  try {
180
180
  const result = handler(this, client, message.args ?? []);
181
- client.send('__vgai:debugCommandResult', {
181
+ client.send('__volter:debugCommandResult', {
182
182
  requestId: message.requestId,
183
183
  ok: true,
184
184
  result,
185
185
  });
186
186
  } catch (err) {
187
- client.send('__vgai:debugCommandResult', {
187
+ client.send('__volter:debugCommandResult', {
188
188
  requestId: message.requestId,
189
189
  ok: false,
190
190
  error: err instanceof Error ? err.message : String(err),
@@ -7,7 +7,7 @@
7
7
  *
8
8
  * Messages (client → server only):
9
9
  * position { x, y, z } — client movement input
10
- * __vgai:debugCommand { name, args, requestId } — a `locus: 'server'`
10
+ * __volter:debugCommand { name, args, requestId } — a `locus: 'server'`
11
11
  * debug command's client leg (the "Multiplayer locus" note,
12
12
  * build plan Task 4.2); see
13
13
  * `DEBUG_COMMANDS`/`onCreate` below.
@@ -155,9 +155,9 @@ export class GameRoom extends Room {
155
155
  // Off by default (FROZEN DECISION: env-var OR room-option) — the loopback harness/
156
156
  // the loopback harness (`../loopback.ts`) opt in via the room option; a
157
157
  // plain `npm run server` boot never accepts debug commands unless
158
- // VGAI_ALLOW_DEBUG_COMMANDS is set in its environment.
158
+ // VOLTER_ALLOW_DEBUG_COMMANDS is set in its environment.
159
159
  const debugCommandsAllowed =
160
- options?.allowDebugCommands === true || Boolean(process.env['VGAI_ALLOW_DEBUG_COMMANDS']);
160
+ options?.allowDebugCommands === true || Boolean(process.env['VOLTER_ALLOW_DEBUG_COMMANDS']);
161
161
 
162
162
  // Handle client messages
163
163
  this.onMessage('position', (client, position: { x: number; y: number; z: number }) => {
@@ -170,10 +170,10 @@ export class GameRoom extends Room {
170
170
  });
171
171
 
172
172
  this.onMessage(
173
- '__vgai:debugCommand',
173
+ '__volter:debugCommand',
174
174
  (client, message: { name: string; args?: unknown[]; requestId: string }) => {
175
175
  if (!debugCommandsAllowed) {
176
- client.send('__vgai:debugCommandResult', {
176
+ client.send('__volter:debugCommandResult', {
177
177
  requestId: message.requestId,
178
178
  ok: false,
179
179
  error: 'debug commands disabled',
@@ -182,7 +182,7 @@ export class GameRoom extends Room {
182
182
  }
183
183
  const handler = DEBUG_COMMANDS[message.name];
184
184
  if (!handler) {
185
- client.send('__vgai:debugCommandResult', {
185
+ client.send('__volter:debugCommandResult', {
186
186
  requestId: message.requestId,
187
187
  ok: false,
188
188
  error: `debug: no server command registered under "${message.name}"`,
@@ -191,13 +191,13 @@ export class GameRoom extends Room {
191
191
  }
192
192
  try {
193
193
  const result = handler(this, client, message.args ?? []);
194
- client.send('__vgai:debugCommandResult', {
194
+ client.send('__volter:debugCommandResult', {
195
195
  requestId: message.requestId,
196
196
  ok: true,
197
197
  result,
198
198
  });
199
199
  } catch (err) {
200
- client.send('__vgai:debugCommandResult', {
200
+ client.send('__volter:debugCommandResult', {
201
201
  requestId: message.requestId,
202
202
  ok: false,
203
203
  error: err instanceof Error ? err.message : String(err),
@@ -10,6 +10,6 @@ import { ArenaRoom } from './rooms/arena-room.js';
10
10
  import { GameRoom } from './rooms/game-room.js';
11
11
 
12
12
  export const rooms = [
13
- { name: 'game_room', handler: GameRoom, matchBy: ['vgaiPlaytest'] },
14
- { name: 'arena_room', handler: ArenaRoom, matchBy: ['vgaiPlaytest'] },
13
+ { name: 'game_room', handler: GameRoom, matchBy: ['volterPlaytest'] },
14
+ { name: 'arena_room', handler: ArenaRoom, matchBy: ['volterPlaytest'] },
15
15
  ];
@@ -4,7 +4,7 @@
4
4
  * tick IS frame work. Everything else about the tester (its doors, its run
5
5
  * state, its repertoire) is plain application code in
6
6
  * `src/bot/tester-station.ts`, reached directly as a running module by the
7
- * Tester contribution and `vgai eval`.
7
+ * Tester contribution and `volter-game-editor eval`.
8
8
  *
9
9
  * The tester's hands run in the INPUT phase — before everything. Fiber sorts
10
10
  * `useFrame` callbacks ascending, and this world's own behavior hooks sit at
@@ -3,10 +3,10 @@
3
3
  *
4
4
  * The resident QA tester (`src/bot/tester-station.ts`) plays this game from
5
5
  * INSIDE the page, directed live from the REPL through `hireTester`. This module
6
- * holds what it is doing so the game's Tester surface and `vgai eval`
6
+ * holds what it is doing so the game's Tester surface and `volter-game-editor eval`
7
7
  * both watch one run, and it implements the operator controls the tester
8
8
  * honors between steps. This module is plain application state and imports no
9
- * vgai API; its exports are the whole control surface.
9
+ * volter API; its exports are the whole control surface.
10
10
  *
11
11
  * `getBotStatus()` reads `{active, seat, goal, step, phase, progress,
12
12
  * waitingOn, note, seed, directive}`. `pauseBot()`, `resumeBot()`,
@@ -23,7 +23,7 @@
23
23
  * (`seatTester`) and gives it back (`releaseTester`); it never reasons about
24
24
  * the rule itself.
25
25
  *
26
- * No vgai import anywhere: the tester's hands are the project's own input
26
+ * No volter import anywhere: the tester's hands are the project's own input
27
27
  * store (`src/input.ts`), typed through `tester-run.ts`'s narrow
28
28
  * `TesterInputTarget`.
29
29
  */
@@ -87,7 +87,7 @@ project inherits may error, and these three THROW until they are rewritten
87
87
  answers this game's development questions. A raw event listing does not
88
88
  fulfill the contribution; never import live simulation state into Analytics.
89
89
 
90
- All three stubs emit `VGAI_STUB_UNIMPLEMENTED`. That warning keeps the live
90
+ All three stubs emit `VOLTER_STUB_UNIMPLEMENTED`. That warning keeps the live
91
91
  console red, and `npm run check-idioms` reports it as unfinished work. Remove
92
92
  the sentinel only by replacing the stub with the game's real surface (or by
93
93
  honestly deleting the optional Data surface), not by silencing the warning.
@@ -16,7 +16,7 @@ export const point = 'workspace.analytics';
16
16
  export const title = 'Analytics';
17
17
 
18
18
  const unfinished =
19
- 'VGAI_STUB_UNIMPLEMENTED: src/contributions/analytics.analytics.tsx — replace this stub with game-specific analysis of recorded Gameplay Sessions; playback is provided by the editor.';
19
+ 'VOLTER_STUB_UNIMPLEMENTED: src/contributions/analytics.analytics.tsx — replace this stub with game-specific analysis of recorded Gameplay Sessions; playback is provided by the editor.';
20
20
 
21
21
  // biome-ignore lint/suspicious/noConsole: unopened starter obligations remain visible in the editor console
22
22
  console.error(unfinished);
@@ -4,7 +4,7 @@
4
4
  * An OBLIGATION, not an implementation: the game's numbers and content
5
5
  * tables (`src/data/` — plain typed TS literals) must be viewable, with
6
6
  * their derived picture, by the humans collaborating on this game. How is
7
- * yours. REWRITE THIS FILE WHOLE; the error below holds `vgai console`
7
+ * yours. REWRITE THIS FILE WHOLE; the error below holds `volter-game-editor console`
8
8
  * red until you do.
9
9
  *
10
10
  * The method: render the data modules as tables (a plain `<table>` until a
@@ -25,7 +25,7 @@ export const title = 'Data';
25
25
 
26
26
  // Module-scope on purpose — the demand is visible from editor boot.
27
27
  const unfinished =
28
- "VGAI_STUB_UNIMPLEMENTED: src/contributions/data.document.tsx — render this game's data (src/data/) with its derived columns, or delete this file if the game truly has no content tables (its header says how).";
28
+ "VOLTER_STUB_UNIMPLEMENTED: src/contributions/data.document.tsx — render this game's data (src/data/) with its derived columns, or delete this file if the game truly has no content tables (its header says how).";
29
29
 
30
30
  // biome-ignore lint/suspicious/noConsole: unopened starter obligations remain visible in the editor console
31
31
  console.error(unfinished);
@@ -3,7 +3,7 @@
3
3
  * "Documents, not scenes"): every project module under the selection's
4
4
  * `include` globs that exports a React component is a `page` document —
5
5
  * what a website is made of, the way a game is made of scenes. Select it
6
- * in `vgai.adapter.ts`:
6
+ * in `volter.adapter.ts`:
7
7
  *
8
8
  * documents: { find: [{ finder: 'pagesFromUiModules', include: ['src/ui/**\/*page.tsx'] }] }
9
9
  *
@@ -7,7 +7,7 @@
7
7
  * difficult situations, and judge the mechanic under test. It says nothing
8
8
  * about HOW. REWRITE THIS FILE WHOLE in the game's own vocabulary: rename it,
9
9
  * split it into several faces, and structure it the way THIS game's studio
10
- * would. The error below holds `vgai console` red until you do; delete it
10
+ * would. The error below holds `volter-game-editor console` red until you do; delete it
11
11
  * with the stub.
12
12
  *
13
13
  * Make the controller's current owner and the tester's repertoire legible.
@@ -54,7 +54,7 @@ export function match(
54
54
  // Module-scope on purpose: fires the moment the editor loads this game's
55
55
  // contributions, so the demand is visible before anyone opens the panel.
56
56
  const unfinished =
57
- "VGAI_STUB_UNIMPLEMENTED: src/contributions/tester.inspector.tsx — imagine this game's tester helper surface and rewrite the file whole (its header says how).";
57
+ "VOLTER_STUB_UNIMPLEMENTED: src/contributions/tester.inspector.tsx — imagine this game's tester helper surface and rewrite the file whole (its header says how).";
58
58
 
59
59
  // biome-ignore lint/suspicious/noConsole: unopened starter obligations remain visible in the editor console
60
60
  console.error(unfinished);
@@ -9,7 +9,7 @@
9
9
  * `*.utility.tsx`, `*.document.tsx`), in the game's own vocabulary, added
10
10
  * when there is something to show. A contribution is ordinary React
11
11
  * reading the game's own exported modules through this hook; agents reach
12
- * the same modules through `vgai eval`'s
12
+ * the same modules through `volter-game-editor eval`'s
13
13
  * `game.run(async ({ modules }) => await modules('src/sim/host.ts'))` — `modules` is an
14
14
  * ASYNC RESOLVER taking a served path, never a table: the `await` is not
15
15
  * optional, and reading a member off the unawaited promise throws a message
@@ -3,7 +3,7 @@
3
3
  * held. Mechanics read it directly ({@link actionPressed}); the QA tester
4
4
  * actuates it ({@link setVirtualAction}); the session input door
5
5
  * reaches the SAME store by importing this running module through
6
- * `game.run(({ modules }) => ...)`. No vgai import anywhere — input is
6
+ * `game.run(({ modules }) => ...)`. No volter import anywhere — input is
7
7
  * application state, and the host merely gives the developer access to the
8
8
  * module instance the game already uses.
9
9
  *
@@ -33,7 +33,7 @@ function requireAction(action: string): GameAction {
33
33
  if (!isGameAction(action)) {
34
34
  throw new Error(
35
35
  `Unknown input action "${action}" — this game declares ${
36
- gameActions.length === 0 ? 'none yet (add yours in src/input.ts)' : gameActions.join(', ')
36
+ (gameActions as readonly string[]).length === 0 ? 'none yet (add yours in src/input.ts)' : gameActions.join(', ')
37
37
  }.`,
38
38
  );
39
39
  }
@@ -81,13 +81,13 @@ function cubeUvSamplingFunctions(): string {
81
81
  .replace(
82
82
  /\b(textureCubeUV|bilinearCubeUV)\(([^)]*)\)/g,
83
83
  (_match, name: string, args: string) =>
84
- `${name === 'textureCubeUV' ? 'vgaiTextureCubeUV' : 'vgaiBilinearCubeUV'}(${args.trim()}, ${args.includes('sampler2D') ? 'vec3 ' : ''}vgaiAtlasSize)`,
84
+ `${name === 'textureCubeUV' ? 'volterTextureCubeUV' : 'volterBilinearCubeUV'}(${args.trim()}, ${args.includes('sampler2D') ? 'vec3 ' : ''}volterAtlasSize)`,
85
85
  )
86
- .replace(/\b(getFace|getUV|roughnessToMip)\b/g, 'vgai$1')
87
- .replace(/\bcubeUV_(\w+)\b/g, 'vgaiCubeUV_$1')
88
- .replaceAll('CUBEUV_MAX_MIP', 'vgaiAtlasSize.z')
89
- .replaceAll('CUBEUV_TEXEL_WIDTH', 'vgaiAtlasSize.x')
90
- .replaceAll('CUBEUV_TEXEL_HEIGHT', 'vgaiAtlasSize.y');
86
+ .replace(/\b(getFace|getUV|roughnessToMip)\b/g, 'volter$1')
87
+ .replace(/\bcubeUV_(\w+)\b/g, 'volterCubeUV_$1')
88
+ .replaceAll('CUBEUV_MAX_MIP', 'volterAtlasSize.z')
89
+ .replaceAll('CUBEUV_TEXEL_WIDTH', 'volterAtlasSize.x')
90
+ .replaceAll('CUBEUV_TEXEL_HEIGHT', 'volterAtlasSize.y');
91
91
  }
92
92
 
93
93
  /**
@@ -104,21 +104,21 @@ function atlasSizeOf(texture: Texture | null): Vector3 {
104
104
 
105
105
  function probeWeight(index: number): string {
106
106
  return `
107
- vec3 lp = (vgaiProbeWorldToLocal[${index}] * vec4(${IBL_WORLD_POSITION}, 1.0)).xyz;
107
+ vec3 lp = (volterProbeWorldToLocal[${index}] * vec4(${IBL_WORLD_POSITION}, 1.0)).xyz;
108
108
  float weight = 0.0;
109
- if (vgaiProbeShape[${index}] < 0.5) {
110
- vec3 edge = vgaiProbeExtents[${index}] - abs(lp);
109
+ if (volterProbeShape[${index}] < 0.5) {
110
+ vec3 edge = volterProbeExtents[${index}] - abs(lp);
111
111
  if (all(greaterThanEqual(edge, vec3(0.0)))) {
112
112
  float nearest = min(edge.x, min(edge.y, edge.z));
113
- weight = vgaiProbeBlendDistance[${index}] > 0.0001
114
- ? clamp(nearest / vgaiProbeBlendDistance[${index}], 0.0, 1.0)
113
+ weight = volterProbeBlendDistance[${index}] > 0.0001
114
+ ? clamp(nearest / volterProbeBlendDistance[${index}], 0.0, 1.0)
115
115
  : 1.0;
116
116
  }
117
117
  } else {
118
- float edge = vgaiProbeRadius[${index}] - length(lp);
118
+ float edge = volterProbeRadius[${index}] - length(lp);
119
119
  if (edge >= 0.0) {
120
- weight = vgaiProbeBlendDistance[${index}] > 0.0001
121
- ? clamp(edge / vgaiProbeBlendDistance[${index}], 0.0, 1.0)
120
+ weight = volterProbeBlendDistance[${index}] > 0.0001
121
+ ? clamp(edge / volterProbeBlendDistance[${index}], 0.0, 1.0)
122
122
  : 1.0;
123
123
  }
124
124
  }`;
@@ -126,29 +126,29 @@ function probeWeight(index: number): string {
126
126
 
127
127
  function probeWeightBlock(index: number): string {
128
128
  return `
129
- if (vgaiProbeReady[${index}] > 0.5) {${probeWeight(index)}
130
- if (weight > 0.0) bestPriority = max(bestPriority, vgaiProbePriority[${index}]);
129
+ if (volterProbeReady[${index}] > 0.5) {${probeWeight(index)}
130
+ if (weight > 0.0) bestPriority = max(bestPriority, volterProbePriority[${index}]);
131
131
  }`;
132
132
  }
133
133
 
134
134
  function probeSampleBlock(index: number, roughness: string, direction: string): string {
135
135
  return `
136
- if (vgaiProbeReady[${index}] > 0.5 && abs(vgaiProbePriority[${index}] - bestPriority) < 0.001) {${probeWeight(index)}
136
+ if (volterProbeReady[${index}] > 0.5 && abs(volterProbePriority[${index}] - bestPriority) < 0.001) {${probeWeight(index)}
137
137
  if (weight > 0.0) {
138
- vec3 probeDirection = (vgaiProbeWorldToLocal[${index}] * vec4(${direction}, 0.0)).xyz;
139
- if (vgaiProbeParallax[${index}] > 0.5) {
140
- vec3 boxPos = lp - vgaiProbeParallaxOffset[${index}];
138
+ vec3 probeDirection = (volterProbeWorldToLocal[${index}] * vec4(${direction}, 0.0)).xyz;
139
+ if (volterProbeParallax[${index}] > 0.5) {
140
+ vec3 boxPos = lp - volterProbeParallaxOffset[${index}];
141
141
  vec3 safeDirection = sign(probeDirection) * max(abs(probeDirection), vec3(0.00001));
142
- vec3 rayMax = (vgaiProbeParallaxExtents[${index}] - boxPos) / safeDirection;
143
- vec3 rayMin = (-vgaiProbeParallaxExtents[${index}] - boxPos) / safeDirection;
142
+ vec3 rayMax = (volterProbeParallaxExtents[${index}] - boxPos) / safeDirection;
143
+ vec3 rayMin = (-volterProbeParallaxExtents[${index}] - boxPos) / safeDirection;
144
144
  vec3 rayDistance = mix(rayMin, rayMax, greaterThan(safeDirection, vec3(0.0)));
145
145
  float nearestFace = min(rayDistance.x, min(rayDistance.y, rayDistance.z));
146
146
  probeDirection = boxPos + safeDirection * nearestFace
147
- + vgaiProbeParallaxOffset[${index}] - vgaiProbeCaptureOffset[${index}];
147
+ + volterProbeParallaxOffset[${index}] - volterProbeCaptureOffset[${index}];
148
148
  }
149
- accumulated += vgaiTextureCubeUV(
150
- vgaiProbeMap${index}, probeDirection, ${roughness}, vgaiProbeAtlasSize[${index}]
151
- ).rgb * vgaiProbeIntensity[${index}] * weight;
149
+ accumulated += volterTextureCubeUV(
150
+ volterProbeMap${index}, probeDirection, ${roughness}, volterProbeAtlasSize[${index}]
151
+ ).rgb * volterProbeIntensity[${index}] * weight;
152
152
  totalWeight += weight;
153
153
  }
154
154
  }`;
@@ -157,7 +157,7 @@ function probeSampleBlock(index: number, roughness: string, direction: string):
157
157
  function volumeReflectionShader(probeCount: number): string {
158
158
  const samplers = Array.from(
159
159
  { length: probeCount },
160
- (_, index) => `uniform sampler2D vgaiProbeMap${index};`,
160
+ (_, index) => `uniform sampler2D volterProbeMap${index};`,
161
161
  ).join('\n');
162
162
  const weights = Array.from({ length: probeCount }, (_, index) => probeWeightBlock(index)).join(
163
163
  '\n',
@@ -171,25 +171,25 @@ function volumeReflectionShader(probeCount: number): string {
171
171
  return `${baseIblFunctions()}
172
172
  ${cubeUvSamplingFunctions()}
173
173
  #ifdef USE_ENVMAP
174
- uniform float vgaiProbeReady[${probeCount}];
175
- uniform mat4 vgaiProbeWorldToLocal[${probeCount}];
176
- uniform vec3 vgaiProbeExtents[${probeCount}];
177
- uniform vec3 vgaiProbeParallaxExtents[${probeCount}];
178
- uniform vec3 vgaiProbeParallaxOffset[${probeCount}];
179
- uniform vec3 vgaiProbeCaptureOffset[${probeCount}];
180
- uniform vec3 vgaiProbeAtlasSize[${probeCount}];
181
- uniform float vgaiProbeShape[${probeCount}];
182
- uniform float vgaiProbeRadius[${probeCount}];
183
- uniform float vgaiProbeBlendDistance[${probeCount}];
184
- uniform float vgaiProbePriority[${probeCount}];
185
- uniform float vgaiProbeIntensity[${probeCount}];
186
- uniform float vgaiProbeParallax[${probeCount}];
187
- uniform float vgaiBaseEnvironment;
174
+ uniform float volterProbeReady[${probeCount}];
175
+ uniform mat4 volterProbeWorldToLocal[${probeCount}];
176
+ uniform vec3 volterProbeExtents[${probeCount}];
177
+ uniform vec3 volterProbeParallaxExtents[${probeCount}];
178
+ uniform vec3 volterProbeParallaxOffset[${probeCount}];
179
+ uniform vec3 volterProbeCaptureOffset[${probeCount}];
180
+ uniform vec3 volterProbeAtlasSize[${probeCount}];
181
+ uniform float volterProbeShape[${probeCount}];
182
+ uniform float volterProbeRadius[${probeCount}];
183
+ uniform float volterProbeBlendDistance[${probeCount}];
184
+ uniform float volterProbePriority[${probeCount}];
185
+ uniform float volterProbeIntensity[${probeCount}];
186
+ uniform float volterProbeParallax[${probeCount}];
187
+ uniform float volterBaseEnvironment;
188
188
  ${samplers}
189
189
 
190
190
  vec3 getIBLIrradiance(const in vec3 normal) {
191
191
  #ifdef ENVMAP_TYPE_CUBE_UV
192
- vec3 baseIrradiance = getBaseIBLIrradiance(normal) * vgaiBaseEnvironment;
192
+ vec3 baseIrradiance = getBaseIBLIrradiance(normal) * volterBaseEnvironment;
193
193
  vec3 worldNormal = inverseTransformDirection(normal, viewMatrix);
194
194
  float bestPriority = -1000000.0;
195
195
  ${weights}
@@ -206,7 +206,7 @@ ${irradiance}
206
206
 
207
207
  vec3 getIBLRadiance(const in vec3 viewDir, const in vec3 normal, const in float roughness) {
208
208
  #ifdef ENVMAP_TYPE_CUBE_UV
209
- vec3 baseRadiance = getBaseIBLRadiance(viewDir, normal, roughness) * vgaiBaseEnvironment;
209
+ vec3 baseRadiance = getBaseIBLRadiance(viewDir, normal, roughness) * volterBaseEnvironment;
210
210
  vec3 reflected = reflect(-viewDir, normal);
211
211
  reflected = normalize(mix(reflected, normal, roughness * roughness));
212
212
  vec3 worldReflect = inverseTransformDirection(reflected, viewMatrix);
@@ -236,60 +236,60 @@ function writeProbeUniforms(
236
236
  shader.uniforms[name] = { value };
237
237
  };
238
238
  values(
239
- 'vgaiProbeReady',
239
+ 'volterProbeReady',
240
240
  probes.map((probe) => Number(probe.ready && !capturing)),
241
241
  );
242
242
  values(
243
- 'vgaiProbeWorldToLocal',
243
+ 'volterProbeWorldToLocal',
244
244
  probes.map((probe) => probe.worldToLocal),
245
245
  );
246
246
  values(
247
- 'vgaiProbeExtents',
247
+ 'volterProbeExtents',
248
248
  probes.map((probe) => probe.extents),
249
249
  );
250
250
  values(
251
- 'vgaiProbeParallaxExtents',
251
+ 'volterProbeParallaxExtents',
252
252
  probes.map((probe) => probe.parallaxExtents),
253
253
  );
254
254
  values(
255
- 'vgaiProbeParallaxOffset',
255
+ 'volterProbeParallaxOffset',
256
256
  probes.map((probe) => probe.parallaxOffset),
257
257
  );
258
258
  values(
259
- 'vgaiProbeCaptureOffset',
259
+ 'volterProbeCaptureOffset',
260
260
  probes.map((probe) => probe.captureOffset),
261
261
  );
262
262
  values(
263
- 'vgaiProbeAtlasSize',
263
+ 'volterProbeAtlasSize',
264
264
  probes.map((probe) => atlasSizeOf(probe.texture)),
265
265
  );
266
266
  values(
267
- 'vgaiProbeShape',
267
+ 'volterProbeShape',
268
268
  probes.map((probe) => Number(probe.mark.config.shape === 'sphere')),
269
269
  );
270
270
  values(
271
- 'vgaiProbeRadius',
271
+ 'volterProbeRadius',
272
272
  probes.map((probe) => Math.max(0.01, probe.mark.config.radius)),
273
273
  );
274
274
  values(
275
- 'vgaiProbeBlendDistance',
275
+ 'volterProbeBlendDistance',
276
276
  probes.map((probe) => Math.max(0, probe.mark.config.blendDistance)),
277
277
  );
278
278
  values(
279
- 'vgaiProbePriority',
279
+ 'volterProbePriority',
280
280
  probes.map((probe) => probe.mark.config.priority),
281
281
  );
282
282
  values(
283
- 'vgaiProbeIntensity',
283
+ 'volterProbeIntensity',
284
284
  probes.map((probe) => Math.max(0, probe.mark.config.intensity)),
285
285
  );
286
286
  values(
287
- 'vgaiProbeParallax',
287
+ 'volterProbeParallax',
288
288
  probes.map((probe) => Number(probe.mark.config.parallaxProjection)),
289
289
  );
290
- values('vgaiBaseEnvironment', baseEnvironment ? 1 : 0);
290
+ values('volterBaseEnvironment', baseEnvironment ? 1 : 0);
291
291
  probes.forEach((probe, index) => {
292
- values(`vgaiProbeMap${index}`, probe.texture);
292
+ values(`volterProbeMap${index}`, probe.texture);
293
293
  });
294
294
  }
295
295
 
@@ -377,7 +377,7 @@ function ownVolumeReflectionMaterial<T extends MeshStandardMaterial>(
377
377
  installedCount = count;
378
378
  override = overrideMaterialIbl(material, {
379
379
  fragment: () => volumeReflectionShader(count),
380
- cacheKey: () => `vgai-volume-reflections:${count}`,
380
+ cacheKey: () => `volter-volume-reflections:${count}`,
381
381
  onCompile: (shader) =>
382
382
  writeProbeUniforms(shader, eligible, hasBaseEnvironment(), isCapturing),
383
383
  });
@@ -64,7 +64,7 @@ export function Frozen({ name = 'Frozen', children, ...props }: FrozenProps) {
64
64
  const batch = freezeSubtree(root, name);
65
65
  // Degrade LOUDLY — a wrapper that silently declined most of its subtree
66
66
  // looks identical to one that worked. Under the dev gate, though: this is
67
- // an authoring signal (`vgai status` reports console warnings, which is
67
+ // an authoring signal (`volter-game-editor status` reports console warnings, which is
68
68
  // where the building agent already looks), and a player's console is not
69
69
  // where it belongs.
70
70
  if (import.meta.env.DEV) {
@@ -82,7 +82,7 @@ export interface FrozenMutationWatch {
82
82
  }
83
83
 
84
84
  function warnOnConsole(message: string): void {
85
- // biome-ignore lint/suspicious/noConsole: console is this tripwire's vgai-status channel.
85
+ // biome-ignore lint/suspicious/noConsole: console is this tripwire's volter-status channel.
86
86
  console.warn(message);
87
87
  }
88
88
 
@@ -1,13 +1,15 @@
1
1
  /**
2
2
  * Standalone entry point: this game's own boot, in its own libraries.
3
3
  *
4
- * Every root `vgai.project.json` declares gets one layer in `#game-canvas`,
4
+ * Every root `volter.project.json` declares gets one layer in `#game-canvas`,
5
5
  * stacked by `zOrder`. A `three` root's entry default-exports a React Three
6
6
  * Fiber component and renders inside `<Canvas>`; a `dom` root's entry
7
7
  * default-exports a React component and renders with react-dom, in a layer
8
8
  * that lets pointer events fall through to the world except where its own
9
- * elements claim them (`pointer-events: auto`). The editor mounts the same
10
- * entries itself; nothing here runs inside it.
9
+ * elements claim them (`pointer-events: auto`): a game's UI is that `dom` root.
10
+ * A `canvas` root (2D game rendering) mounts through `src/canvas-mount.ts`, which
11
+ * only a project with a canvas root carries, so a game without one imports no Pixi.
12
+ * The editor mounts the same entries itself; nothing here runs inside it.
11
13
  *
12
14
  * `manifestEntryModules` is generated from the manifest's `entry` paths
13
15
  * (`manifest-entry-modules-plugin.ts`), so the manifest stays the one list of
@@ -17,8 +19,8 @@
17
19
  import { Canvas } from '@react-three/fiber';
18
20
  import { type ComponentType, createElement } from 'react';
19
21
  import { createRoot } from 'react-dom/client';
20
- import { manifestEntryModules } from 'virtual:vgai-manifest-entries';
21
- import manifest from '../vgai.project.json';
22
+ import { manifestEntryModules, mountCanvasRoot } from 'virtual:volter-manifest-entries';
23
+ import manifest from '../volter.project.json';
22
24
 
23
25
  interface DeclaredRoot {
24
26
  readonly id: string;
@@ -43,17 +45,67 @@ const container = document.getElementById('game-canvas') as HTMLElement;
43
45
  const roots = [...(manifest.roots as readonly DeclaredRoot[])].sort(
44
46
  (a, b) => (a.zOrder ?? 0) - (b.zOrder ?? 0),
45
47
  );
48
+ // The bottom world (the lowest `three` or `canvas` root) takes pointer input and clears opaque;
49
+ // a world stacked above it lets input fall through and clears transparent, as the editor stacks them.
50
+ const bottomWorld = roots.find((root) => root.adapter === 'three' || root.adapter === 'canvas');
51
+
52
+ // A `canvas` world above the bottom one claims the points where Pixi finds an interactive object (a
53
+ // sprite the player taps), as the editor's input router does: the press goes to that world alone, and every
54
+ // other point falls through to the world beneath. Topmost first.
55
+ const claims: { readonly zOrder: number; readonly canvas: HTMLCanvasElement; readonly hit: (x: number, y: number) => boolean }[] = [];
56
+ const forwarded = new WeakSet<Event>();
57
+ for (const type of ['pointerdown', 'pointerup', 'pointermove', 'click', 'wheel'] as const) {
58
+ container.addEventListener(
59
+ type,
60
+ (event) => {
61
+ if (forwarded.has(event) || claims.length === 0) return;
62
+ const box = container.getBoundingClientRect();
63
+ const { clientX, clientY } = event as MouseEvent;
64
+ const claim = claims.find((entry) => entry.hit(clientX - box.left, clientY - box.top));
65
+ if (!claim) return;
66
+ event.stopPropagation();
67
+ // A copy that bubbles: Pixi hears pointermove on the document and pointerup on the window.
68
+ const copy = new (event.constructor as typeof PointerEvent)(event.type, event as PointerEventInit);
69
+ forwarded.add(copy);
70
+ claim.canvas.dispatchEvent(copy);
71
+ },
72
+ true,
73
+ );
74
+ }
46
75
  for (const root of roots) {
47
76
  const layer = document.createElement('div');
48
77
  layer.style.cssText = 'position:absolute;inset:0;width:100%;height:100%';
49
78
  layer.style.zIndex = String(root.zOrder ?? 0);
79
+ if (root.adapter !== 'dom' && root !== bottomWorld) layer.style.pointerEvents = 'none';
50
80
  container.appendChild(layer);
51
81
  const Entry = entryComponent(root);
52
82
  if (root.adapter === 'three') {
53
- createRoot(layer).render(createElement(Canvas, null, createElement(Entry)));
83
+ // R3F's wrapper sets its own `pointer-events: auto`, so a world above the bottom one says `none`
84
+ // itself; `alpha` clears the bottom world opaque, as the editor's renderer does.
85
+ const bottom = root === bottomWorld;
86
+ createRoot(layer).render(
87
+ createElement(
88
+ Canvas,
89
+ { gl: { alpha: !bottom }, style: bottom ? undefined : { pointerEvents: 'none' } },
90
+ createElement(Entry),
91
+ ),
92
+ );
54
93
  } else if (root.adapter === 'dom') {
55
94
  layer.style.pointerEvents = 'none';
56
95
  createRoot(layer).render(createElement(Entry));
96
+ } else if (root.adapter === 'canvas') {
97
+ if (!mountCanvasRoot) {
98
+ throw new Error(`main.ts: root "${root.id}" is a canvas root, and this project carries no src/canvas-mount.ts.`);
99
+ }
100
+ if (root === bottomWorld) mountCanvasRoot(layer, Entry, { bottom: true, onHitTest: () => {} });
101
+ else
102
+ mountCanvasRoot(layer, Entry, {
103
+ bottom: false,
104
+ onHitTest: (canvas, hit) => {
105
+ claims.push({ zOrder: root.zOrder ?? 0, canvas, hit });
106
+ claims.sort((a, b) => b.zOrder - a.zOrder);
107
+ },
108
+ });
57
109
  } else {
58
110
  throw new Error(
59
111
  `main.ts: root "${root.id}" declares adapter ${JSON.stringify(root.adapter)}, which this boot does not mount.`,
@@ -1,3 +1,14 @@
1
- declare module 'virtual:vgai-manifest-entries' {
1
+ declare module 'virtual:volter-manifest-entries' {
2
2
  export const manifestEntryModules: Readonly<Record<string, unknown>>;
3
+ /** `src/canvas-mount.ts`'s mount when the manifest declares a `canvas` root, else `undefined`. */
4
+ export const mountCanvasRoot:
5
+ | ((
6
+ layer: HTMLElement,
7
+ Entry: import('react').ComponentType,
8
+ options: {
9
+ readonly bottom: boolean;
10
+ readonly onHitTest: (canvas: HTMLCanvasElement, hit: (x: number, y: number) => boolean) => void;
11
+ },
12
+ ) => void)
13
+ | undefined;
3
14
  }
@@ -19,5 +19,5 @@ export default meta;
19
19
  type Story = StoryObj<typeof meta>;
20
20
 
21
21
  export const Default: Story = {
22
- parameters: { vgai: { default: true } },
22
+ parameters: { volter: { default: true } },
23
23
  };
@@ -74,7 +74,7 @@ function World() {
74
74
  <GameKeyboard />
75
75
  {/* The resident QA tester's hands on the frame — everything else about
76
76
  the playtesting loop (the seat, the repertoire, pause/handoff) is
77
- plain application code in src/bot/, reached from `vgai eval` via
77
+ plain application code in src/bot/, reached from `volter-game-editor eval` via
78
78
  `game.run(({ modules }) => …)` like every other module. */}
79
79
  <QaTester />
80
80
  <Scene name="Main Scene" />