@volter/game-editor 0.5.65

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 (653) hide show
  1. package/BUNDLED_NOTICES +11228 -0
  2. package/LICENSE +686 -0
  3. package/LICENSE-BLENDER +1409 -0
  4. package/LICENSE-MCP +21 -0
  5. package/NOTICE +21 -0
  6. package/catalog/entries/audio.json +14 -0
  7. package/catalog/entries/bake.json +36 -0
  8. package/catalog/entries/blender.json +17 -0
  9. package/catalog/entries/react-root.json +24 -0
  10. package/catalog/entries/reflections.json +29 -0
  11. package/catalog/entries/static-batch.json +25 -0
  12. package/catalog/project-source/LICENSE +37 -0
  13. package/catalog/project-source/src/contributions/bake.kind.ts +40 -0
  14. package/catalog/project-source/src/contributions/builder-document.tsx +65 -0
  15. package/catalog/project-source/src/contributions/builder-state.ts +27 -0
  16. package/catalog/project-source/src/contributions/builder-ui.tsx +61 -0
  17. package/catalog/project-source/src/contributions/module-source.ts +502 -0
  18. package/catalog/project-source/src/contributions/pages.finder.ts +61 -0
  19. package/catalog/project-source/src/lib/audio/sfx.ts +255 -0
  20. package/catalog/project-source/src/lib/bake/asset-seed.ts +128 -0
  21. package/catalog/project-source/src/lib/bake/bake-schema.ts +65 -0
  22. package/catalog/project-source/src/lib/bake/clip-layering.ts +203 -0
  23. package/catalog/project-source/src/lib/bake/gltf-bake.ts +657 -0
  24. package/catalog/project-source/src/lib/bake/mesh-slice.ts +157 -0
  25. package/catalog/project-source/src/lib/bake/node-image.ts +463 -0
  26. package/catalog/project-source/src/lib/bake/object3d-bake.ts +121 -0
  27. package/catalog/project-source/src/lib/bake/object3d-lifecycle.ts +15 -0
  28. package/catalog/project-source/src/lib/bake/object3d-source.ts +8 -0
  29. package/catalog/project-source/src/lib/bake/params.ts +75 -0
  30. package/catalog/project-source/src/lib/bake/rest-relative-animation.ts +217 -0
  31. package/catalog/project-source/src/lib/bake/use-model.ts +95 -0
  32. package/catalog/project-source/src/lib/react-root/index.ts +20 -0
  33. package/catalog/project-source/src/lib/react-root/react-root-adapter.tsx +57 -0
  34. package/catalog/project-source/src/lib/reflections/ReflectionProbe.tsx +201 -0
  35. package/catalog/project-source/src/lib/reflections/index.ts +19 -0
  36. package/catalog/project-source/src/lib/reflections/probe-controller.ts +75 -0
  37. package/catalog/project-source/src/lib/reflections/reflection-probe-registry.ts +402 -0
  38. package/catalog/project-source/src/lib/reflections/volume-reflection-material.ts +416 -0
  39. package/catalog/project-source/src/lib/static-batch/Frozen.tsx +91 -0
  40. package/catalog/project-source/src/lib/static-batch/freeze.ts +579 -0
  41. package/catalog/project-source/src/lib/static-batch/index.ts +44 -0
  42. package/catalog/project-source/src/lib/static-batch/mutation-watch.ts +149 -0
  43. package/catalog/project-source/src/lib/static-batch/shadow-cache.ts +171 -0
  44. package/catalog/project-source/src/tools/bake-module.tool.ts +139 -0
  45. package/catalog/project-source/src/tools/bake-preview.tool.ts +475 -0
  46. package/dist/.vite/manifest.json +8304 -0
  47. package/dist/assets/AssetBudgetPanel-J9--TZPU.js +23 -0
  48. package/dist/assets/AudioViewer-CR7333fe.js +1 -0
  49. package/dist/assets/BVHLoader-6bQIXhMX.js +1 -0
  50. package/dist/assets/BufferGeometryUtils-Nz37EVXf.js +1 -0
  51. package/dist/assets/CCDIKSolver-CD7vLpsK.js +1 -0
  52. package/dist/assets/CSS3DRenderer-CL7ABLVK.js +1 -0
  53. package/dist/assets/CanvasSceneViewport-Bpi6gVTC.js +1 -0
  54. package/dist/assets/ColladaLoader-aVOPIsCh.js +3 -0
  55. package/dist/assets/ColorInput-DQBNrW-K.js +1 -0
  56. package/dist/assets/ConvexGeometry-CAzXlPVG.js +1 -0
  57. package/dist/assets/ConvexHull-BINCESFp.js +1 -0
  58. package/dist/assets/CopyShader-BzTUYzf6.js +24 -0
  59. package/dist/assets/DecalGeometry-160KRdfg.js +1 -0
  60. package/dist/assets/EXRLoader-Cdans_oJ.js +1 -0
  61. package/dist/assets/EffectComposer-DQxfsXBZ.js +1 -0
  62. package/dist/assets/EntityModelDocument-Ccvw66N9.js +1 -0
  63. package/dist/assets/EnvironmentAssetDocument-Dg-Qq6O6.js +1 -0
  64. package/dist/assets/FBXLoader-B4MoUtAn.js +1 -0
  65. package/dist/assets/Fbo-Dz-Soul3.js +1 -0
  66. package/dist/assets/FontLoader-CvGoVI5a.js +2 -0
  67. package/dist/assets/GLTFExporter-HgrCle4L.js +1 -0
  68. package/dist/assets/GameplaySessionTimeline-B52W3FVZ.js +1 -0
  69. package/dist/assets/Gltf-UHVWKz65.js +2 -0
  70. package/dist/assets/HDRLoader-THU88oVD.js +5 -0
  71. package/dist/assets/ImageViewer-Tn7s_MnW.js +1 -0
  72. package/dist/assets/InspectorCanvasPreview-CEr_Kxna.js +1 -0
  73. package/dist/assets/InspectorObjectPreview-CVejvLRg.js +1 -0
  74. package/dist/assets/JsonAssetDocument-C7VGcLhu.js +3 -0
  75. package/dist/assets/LineSegments2-CsOpKSiM.js +370 -0
  76. package/dist/assets/MTLLoader-_Xzd4_0p.js +2 -0
  77. package/dist/assets/MarchingCubes-Bsp4wrzd.js +1 -0
  78. package/dist/assets/MeshBVH-BiDHDcu-.js +1 -0
  79. package/dist/assets/ModelAssetDocument-F5GACirk.js +1 -0
  80. package/dist/assets/NonThreeAuthoringBootstrap-C3woOMxX.js +1 -0
  81. package/dist/assets/OBJLoader-BhIC6Hwo.js +5 -0
  82. package/dist/assets/Object3DDocumentViewport-DB7T0NTl.js +2 -0
  83. package/dist/assets/Object3DPreview-DL8oi7Xs.js +2 -0
  84. package/dist/assets/OnlineAssetDetail-C6z9RvYK.js +2 -0
  85. package/dist/assets/OrbitControls-CM3bPray.js +1 -0
  86. package/dist/assets/OrbitControls-DLpayAaK.js +1 -0
  87. package/dist/assets/OrthographicCamera-bQozawrh.js +1 -0
  88. package/dist/assets/PLYLoader-DYQqs5Ik.js +2 -0
  89. package/dist/assets/PerspectiveCamera-CQ2lh01o.js +1 -0
  90. package/dist/assets/PlayBar-BR-Vg3Jb.js +2 -0
  91. package/dist/assets/RGBELoader-BgBcQv8j.js +1 -0
  92. package/dist/assets/RectAreaLightUniformsLib-CMMoWfll.js +1 -0
  93. package/dist/assets/RenderPass-DPrn-Uky.js +1 -0
  94. package/dist/assets/ResolutionPicker-C67vs1F3.js +1 -0
  95. package/dist/assets/RootSelectionOverlay-BZPlxmXU.js +1 -0
  96. package/dist/assets/RoundedBox-BDGBg6QZ.js +1 -0
  97. package/dist/assets/RoundedBoxGeometry-CyUuYPfW.js +1 -0
  98. package/dist/assets/STLLoader-Dyv3lsxY.js +1 -0
  99. package/dist/assets/SelectionBox-D_75KrNW.js +1 -0
  100. package/dist/assets/ShaderPass-QYRpPuFJ.js +1 -0
  101. package/dist/assets/ShadowEditor-DkImwu1Y.js +1 -0
  102. package/dist/assets/SimplifyModifier-C8ayvRzd.js +1 -0
  103. package/dist/assets/SkeletonUtils-Cps8GOC6.js +1 -0
  104. package/dist/assets/Sky-CQKCgYDs.js +154 -0
  105. package/dist/assets/SourceAssetViewer-2SWQoUut.js +12 -0
  106. package/dist/assets/StageHost-BN-IoTef.js +2 -0
  107. package/dist/assets/StoryPreviewMount-DjyxRCXu.js +1 -0
  108. package/dist/assets/TDSLoader-D_T8XJ81.js +1 -0
  109. package/dist/assets/TextGeometry-DOWAEUV0.js +1 -0
  110. package/dist/assets/ThreeBoardDocument-CVncZyIq.js +2 -0
  111. package/dist/assets/ThreeIsolationSceneContent-C8C8whSF.js +1 -0
  112. package/dist/assets/ToolObject3DPreview-BRoDWe4Q.js +1 -0
  113. package/dist/assets/TrackballControls-DfznuQTh.js +1 -0
  114. package/dist/assets/TransientHint-BB1fwrvK.js +1 -0
  115. package/dist/assets/UnrealBloomPass-CR-cS_K5.js +83 -0
  116. package/dist/assets/VideoViewer-C6kocgIU.js +1 -0
  117. package/dist/assets/_commonjsHelpers-D6-XlEtG.js +1 -0
  118. package/dist/assets/active-ingest-CT6jSGhr.js +3 -0
  119. package/dist/assets/adapter-surface-Y37Nzcyw.js +1 -0
  120. package/dist/assets/after-paint-CB4bz1-e.js +1 -0
  121. package/dist/assets/agx-base-srgb-BjWZJgrZ.lut +0 -0
  122. package/dist/assets/agx-look-medium-high-contrast-D5F_ob1L.lut +0 -0
  123. package/dist/assets/agx-look-punchy-dxsnycNs.lut +0 -0
  124. package/dist/assets/animation-clock-CnjZqfJp.js +1 -0
  125. package/dist/assets/asset-budget-asset.menu-Di3KiQCd.js +1 -0
  126. package/dist/assets/asset-budget.action-DCzzcuTh.js +1 -0
  127. package/dist/assets/asset-budget.document-BWU8wnVW.js +1 -0
  128. package/dist/assets/asset-budget.menu-BGZpT_31.js +1 -0
  129. package/dist/assets/asset-editor-persistence-BBaONOJt.js +1 -0
  130. package/dist/assets/asset-loaders-BOy5Ss8k.js +2 -0
  131. package/dist/assets/asset-parse-error-BHMwBRU3.js +3 -0
  132. package/dist/assets/assets-BuSoGjBX.js +1 -0
  133. package/dist/assets/audio-meter-CyiToeUW.js +1 -0
  134. package/dist/assets/audio-unlock.service-CfUgUQVy.js +1 -0
  135. package/dist/assets/audio.utility-C6K6jem8.js +1 -0
  136. package/dist/assets/authoring-CgcOFhGS.js +1 -0
  137. package/dist/assets/autoplay.service-BZBGNSvt.js +1 -0
  138. package/dist/assets/axe-LkjAB6Lv.js +30 -0
  139. package/dist/assets/babylon-authoring-adapter-CL02gWDn.js +1 -0
  140. package/dist/assets/binding-Bmxqznjk.js +1 -0
  141. package/dist/assets/binding-identity-DcTpbvyg.js +1 -0
  142. package/dist/assets/binding-resolver-Dsh-6Vor.js +2 -0
  143. package/dist/assets/blender-emscripten-engine-9ZIRYNhe.js +2 -0
  144. package/dist/assets/blender-node-editor.document-iIDkB9sI.js +1 -0
  145. package/dist/assets/blender-properties-tab-C5CyPydi.js +3 -0
  146. package/dist/assets/blender-runtime-host-BpBwGv7r.js +4 -0
  147. package/dist/assets/blender-runtime-skin-DyQ9B6CR.js +7140 -0
  148. package/dist/assets/blender-runtime.document-lIYhhPtv.js +8 -0
  149. package/dist/assets/blender-timeline.document-77fx96N7.js +1 -0
  150. package/dist/assets/blender-uv-editor.document-fsT7B4gV.js +1 -0
  151. package/dist/assets/blender-version.status-o6dBm3n6.js +1 -0
  152. package/dist/assets/blender-wali-engine-wTOcrOMC.js +2 -0
  153. package/dist/assets/blender.command-BtJeWk-A.js +1 -0
  154. package/dist/assets/blender.keymap-GAQgeklK.js +1 -0
  155. package/dist/assets/blender.status-ujwGU6dU.js +1 -0
  156. package/dist/assets/blender.style-Dcem5f_T.js +1 -0
  157. package/dist/assets/board-guides-DziKSTss.js +1 -0
  158. package/dist/assets/body-marks-h_xDxiDE.js +1 -0
  159. package/dist/assets/bridge.command-o5gDNEwa.js +3 -0
  160. package/dist/assets/browserAll-DeWblVez.js +1 -0
  161. package/dist/assets/build-profiles.document-kW8iw8Xj.js +2 -0
  162. package/dist/assets/build-progress.status-BNRLytg2.js +1 -0
  163. package/dist/assets/build-session-C_sg3CEn.js +9 -0
  164. package/dist/assets/build.action-lYjTLb7K.js +1 -0
  165. package/dist/assets/build.command-DIGgUPU_.js +1 -0
  166. package/dist/assets/build.header-CKajx5U3.js +1 -0
  167. package/dist/assets/build.menu-BdU0QXny.js +1 -0
  168. package/dist/assets/build.service-CbBAyeu3.js +1 -0
  169. package/dist/assets/bus-mixer-CGfWDP3C.js +1 -0
  170. package/dist/assets/camera-KEsKvOL7.js +1 -0
  171. package/dist/assets/camera-runtime.inspector-B7unX4g1.js +1 -0
  172. package/dist/assets/canvas-entry-runtime-SfBxaR9M.js +2 -0
  173. package/dist/assets/capability-coverage-Czas4C18.js +7 -0
  174. package/dist/assets/chrome-trace-YZHMz60-.js +1 -0
  175. package/dist/assets/client-DNXj_opT.js +25 -0
  176. package/dist/assets/clip-planes-CnAI6DZn.js +1 -0
  177. package/dist/assets/collaboration-presence-DLoZ7EA3.js +1 -0
  178. package/dist/assets/collider-Bw0mXlsW.js +1 -0
  179. package/dist/assets/collider-dimensions-9xoFADXN.js +1 -0
  180. package/dist/assets/collision-system-DpNUJRJ3.js +1 -0
  181. package/dist/assets/command-results-CUQD49AB.js +1 -0
  182. package/dist/assets/component-board-registry-DrIa2csL.js +1 -0
  183. package/dist/assets/component-board.service-DCwcUssB.js +2 -0
  184. package/dist/assets/component-board.service-DidCyM4O.js +2 -0
  185. package/dist/assets/component-verbs.command-7xzfjGMZ.js +1 -0
  186. package/dist/assets/component-verbs.service-Bv9jId3q.js +1 -0
  187. package/dist/assets/config-CEZk921y.js +6 -0
  188. package/dist/assets/configurations-DTBMdaTL.js +1 -0
  189. package/dist/assets/connection.status-BifnQdOs.js +1 -0
  190. package/dist/assets/console-bridge-CHcb-xk5.js +1 -0
  191. package/dist/assets/constraint-De8f1Uiq.js +1 -0
  192. package/dist/assets/constraints.inspector-B9U9Yj-u.js +1 -0
  193. package/dist/assets/countdown-timer-CUm74dom.js +1 -0
  194. package/dist/assets/coverage.service-VTX5Mcsx.js +3 -0
  195. package/dist/assets/crash-null-boundary-v3a0uEgw.js +1 -0
  196. package/dist/assets/create-runtime-CVCc1BDx.js +1 -0
  197. package/dist/assets/curve-7Q79VgU4.js +1 -0
  198. package/dist/assets/data-asset-4hjS642k.js +5 -0
  199. package/dist/assets/data-check-core-CQEjuFyt.js +1 -0
  200. package/dist/assets/data-ref-CQI28C0D.js +1 -0
  201. package/dist/assets/debug-bridge-CCohG-d-.js +1 -0
  202. package/dist/assets/debug-registry-Dgvitx8M.js +1 -0
  203. package/dist/assets/defaults-DKiBJCPN.js +1 -0
  204. package/dist/assets/deferred-commands-CEMmvL47.js +1 -0
  205. package/dist/assets/deferred-ingest-play-DCJi_Pgu.js +2 -0
  206. package/dist/assets/design-time-layers-wYgOTgni.js +1 -0
  207. package/dist/assets/design-time-mount-registry-DUpXCg1U.js +1 -0
  208. package/dist/assets/design-time-mount.service-BzY21e1F.js +2 -0
  209. package/dist/assets/design-time-react-mount-DM9WLrF2.js +1 -0
  210. package/dist/assets/dev-build-gDYrq68M.js +1 -0
  211. package/dist/assets/directional-shadow-fit-BVkOKAv2.js +1 -0
  212. package/dist/assets/document-preview-three-Kbg2GCLm.js +1 -0
  213. package/dist/assets/dom-authoring-adapter-CY8C7f4T.js +1 -0
  214. package/dist/assets/draco3d-BBUTcNkz.js +1 -0
  215. package/dist/assets/draco_decoder-DsQ12WqX.wasm +0 -0
  216. package/dist/assets/draco_encoder-2Tcju8Ns.wasm +0 -0
  217. package/dist/assets/edit-mode-audio.service-Bzetwd5B.js +1 -0
  218. package/dist/assets/edit-mode-authoring-B47TfLqu.js +1 -0
  219. package/dist/assets/edit-mode-networking.service-YCX6RRb_.js +1 -0
  220. package/dist/assets/editor-api-BoJIcyZG.js +1 -0
  221. package/dist/assets/editor-port-C_FeBdeV.js +1 -0
  222. package/dist/assets/editor-presentation-activity-C7SNSmTd.js +1 -0
  223. package/dist/assets/entry-adjudication-Cq8Yeb74.js +1 -0
  224. package/dist/assets/environment-capture-7himRh2L.js +1 -0
  225. package/dist/assets/esbuild-BHljloGq.wasm +0 -0
  226. package/dist/assets/events-156d8d12.esm-ErOhDXXB.js +36 -0
  227. package/dist/assets/extend-B-eOccUm.js +36 -0
  228. package/dist/assets/extends-CF3RwP-h.js +1 -0
  229. package/dist/assets/eyedropper-session-bjPXnfeX.js +1 -0
  230. package/dist/assets/fflate.module-DPuTF8aG.js +6 -0
  231. package/dist/assets/filmic-srgb-Ct35FIH6.lut +0 -0
  232. package/dist/assets/first-party-audio-system-DxnGJOER.js +1 -0
  233. package/dist/assets/first-party-navigation-system-CL5Bquub.js +1 -0
  234. package/dist/assets/fork-menu-BoVyw2Wu.js +1 -0
  235. package/dist/assets/frame-debugger-store-D1Mf_5up.js +1 -0
  236. package/dist/assets/frame-delta-D2nsw_Ht.js +1 -0
  237. package/dist/assets/frame-pacing-D5acoOzO.js +1 -0
  238. package/dist/assets/frame-selector-cache-cCeUbcjG.js +1 -0
  239. package/dist/assets/game-DHOZVb-7.js +1 -0
  240. package/dist/assets/game-contract-seams-a5YXejOu.js +1 -0
  241. package/dist/assets/game-css-scope-transform-Eng4wS8E.js +33 -0
  242. package/dist/assets/game-document.service-DbRfx2V0.js +1 -0
  243. package/dist/assets/game-eval.command-D-7Dxbj_.js +2 -0
  244. package/dist/assets/game-input-seams-CIQdetRw.js +1 -0
  245. package/dist/assets/game-loop-CZvXlY00.js +1 -0
  246. package/dist/assets/game-module-access-B2mFxv-i.js +1 -0
  247. package/dist/assets/game.layout-CBASrvQu.js +1 -0
  248. package/dist/assets/gameplay-export-BoKXm51x.js +1 -0
  249. package/dist/assets/gameplay-replay-e5umMlXv.js +1 -0
  250. package/dist/assets/gameplay-rng-trap-CTNhm-UW.js +3 -0
  251. package/dist/assets/gameplay.command-DxcVYX6F.js +1 -0
  252. package/dist/assets/generation-DhwCUHPf.css +1 -0
  253. package/dist/assets/generation-jobs-BQrXbGp_.js +1 -0
  254. package/dist/assets/generation.service-CDIgObuw.js +1 -0
  255. package/dist/assets/generations-DzUogZsM.js +1 -0
  256. package/dist/assets/generations.status-CgOUBCum.js +1 -0
  257. package/dist/assets/hierarchy-marks-BLPfSIym.js +1 -0
  258. package/dist/assets/host-pointer-DbGSCjE9.js +1 -0
  259. package/dist/assets/hosted-asset-materialization-CiIvWkGU.js +2 -0
  260. package/dist/assets/ibl-override-material-BlmCxFKq.js +6 -0
  261. package/dist/assets/index-96FBF1Oj.js +1 -0
  262. package/dist/assets/index-BAWkB0dv.js +1 -0
  263. package/dist/assets/index-BDnS2b6S.js +1 -0
  264. package/dist/assets/index-BHp07vN0.js +2 -0
  265. package/dist/assets/index-BMxv2MNV.js +1 -0
  266. package/dist/assets/index-BP6wv2A0.js +5 -0
  267. package/dist/assets/index-BcCBqgM_.js +952 -0
  268. package/dist/assets/index-Bge9JUr6.js +1 -0
  269. package/dist/assets/index-BjTCPEQ7.js +134 -0
  270. package/dist/assets/index-BncK9THk.js +1 -0
  271. package/dist/assets/index-CJbYy-CF.js +3 -0
  272. package/dist/assets/index-CVCb_ImQ.js +1 -0
  273. package/dist/assets/index-CZd9o7Lu.js +1 -0
  274. package/dist/assets/index-CanA16PU.js +2 -0
  275. package/dist/assets/index-CinJrH5C.js +9 -0
  276. package/dist/assets/index-CtzuWnCS.js +1 -0
  277. package/dist/assets/index-D2fNXpHa.css +1 -0
  278. package/dist/assets/index-DUpHH6JR.js +3120 -0
  279. package/dist/assets/index-DUqP1RMl.js +1 -0
  280. package/dist/assets/index-D_NuPfjr.js +9 -0
  281. package/dist/assets/index-Da9JhEvW.js +25 -0
  282. package/dist/assets/index-DgapqSPi.js +7 -0
  283. package/dist/assets/index-FUuS4qwW.js +562 -0
  284. package/dist/assets/index-GIL7oGEO.js +4894 -0
  285. package/dist/assets/index-IEjydI9d.js +1 -0
  286. package/dist/assets/index-OrYXPk3Z.js +487 -0
  287. package/dist/assets/index-V1R-e5Bd.js +1 -0
  288. package/dist/assets/index-bQE2NA0D.js +1 -0
  289. package/dist/assets/index-gHZae-lw.js +13 -0
  290. package/dist/assets/index-mjWQmGhM.js +1 -0
  291. package/dist/assets/index-nmcBqr7Y.js +1 -0
  292. package/dist/assets/inference-diagnostics-Dhmtfbq_.js +1 -0
  293. package/dist/assets/ingest-BbYMC2vQ.js +1 -0
  294. package/dist/assets/ingest-boot-viewport-D5rI_Kk_.js +1 -0
  295. package/dist/assets/ingest-siblings-Bop2kqVl.js +1 -0
  296. package/dist/assets/ingest-source-persistence-C_6Hiyra.js +1 -0
  297. package/dist/assets/ingest.service-BTDnQfM1.js +1 -0
  298. package/dist/assets/input-manager-DH_hGW6d.js +1 -0
  299. package/dist/assets/input-router-BNQvtIqw.js +1 -0
  300. package/dist/assets/inspect-BZfi3mmo.js +1 -0
  301. package/dist/assets/inspection-CObLhnrs.js +1 -0
  302. package/dist/assets/instance-fork-actions-D3sRzS3K.js +1 -0
  303. package/dist/assets/instances.command-D6UkZNO8.js +1 -0
  304. package/dist/assets/instruments-CKR02Y8I.js +1 -0
  305. package/dist/assets/json-history-resource-BbxllWfV.js +1 -0
  306. package/dist/assets/jsx-runtime-DPjLkJKQ.js +9 -0
  307. package/dist/assets/light-D-_wsKTq.js +1 -0
  308. package/dist/assets/light-camera-factory-CWbbe9gI.js +1 -0
  309. package/dist/assets/lil-gui.module.min-BF55BEwA.js +10 -0
  310. package/dist/assets/live-behaviors-Bxq49Maz.js +1 -0
  311. package/dist/assets/live-gesture-lock-DJbrjOqf.js +1 -0
  312. package/dist/assets/loader-CaF_I7Yt.js +1 -0
  313. package/dist/assets/logger-Dqis-7W1.js +1 -0
  314. package/dist/assets/loop-gate-report-N52EWFGD.js +1 -0
  315. package/dist/assets/matcap-texture-CVfalpWT.js +1 -0
  316. package/dist/assets/material-CpAdjDxn.js +1 -0
  317. package/dist/assets/material-factory-Bz6h__6g.js +1 -0
  318. package/dist/assets/mesh-B3WPtNKO.js +1 -0
  319. package/dist/assets/mesh-shadow-CZnXrw_l.js +1 -0
  320. package/dist/assets/mikktspace.module-DO88SLib.js +1 -0
  321. package/dist/assets/model-asset-sections-CFvvihfx.css +1 -0
  322. package/dist/assets/model-asset-sections.service-CHhFS3ZX.js +1 -0
  323. package/dist/assets/model.layout-BJUEQYUI.js +1 -0
  324. package/dist/assets/models.finder-G2jQgIRu.js +1 -0
  325. package/dist/assets/module-mode-DVBLT9d-.js +2 -0
  326. package/dist/assets/mount-canvas-ingest-root-DDuAWf_C.js +2 -0
  327. package/dist/assets/mount-dom-ingest-root-D_EiBgpn.js +2 -0
  328. package/dist/assets/mount-game-6t9cKNo4.js +1 -0
  329. package/dist/assets/mount-ingest-root-glv2SSWf.js +2 -0
  330. package/dist/assets/mount-manifest-CGVxhmAw.js +1 -0
  331. package/dist/assets/mount-readiness-Ds0HvvLH.js +4 -0
  332. package/dist/assets/mount-three-ingest-root-hrUt9VVU.js +1 -0
  333. package/dist/assets/mounted-authoring-Dmg5xmhP.js +1 -0
  334. package/dist/assets/mounted-story-viewport-source-DjP6RA9U.js +1 -0
  335. package/dist/assets/native-debug-module-CWicoSGD.js +1 -0
  336. package/dist/assets/native-entry-surface-BE8LJNdu.js +1 -0
  337. package/dist/assets/navigation-CIiCx-SM.js +1 -0
  338. package/dist/assets/navmesh-workflow-store-Cmnm57TB.js +1 -0
  339. package/dist/assets/navmesh.menu-CAKiH8PW.js +1 -0
  340. package/dist/assets/navmesh.service-jgDWlgj1.js +1 -0
  341. package/dist/assets/network.utility-CEu5nHf7.js +1 -0
  342. package/dist/assets/object-marks-DwvIEBOK.js +1 -0
  343. package/dist/assets/object3d-authoring-subject-CH5sI2oP.js +1 -0
  344. package/dist/assets/output-DK8waum9.js +195 -0
  345. package/dist/assets/particles-Y626p22p.js +1 -0
  346. package/dist/assets/particles-factory-DnLOHXT8.js +1 -0
  347. package/dist/assets/pasteboard-materialize-BqSS4QzV.js +20 -0
  348. package/dist/assets/pasteboard.action-DU3UHtJG.js +2 -0
  349. package/dist/assets/performance-profiler-D_Jey87L.js +1 -0
  350. package/dist/assets/physics-registry-B2Jkp8e6.js +1 -0
  351. package/dist/assets/physics-registry-CUB9cT9p.js +1 -0
  352. package/dist/assets/pixi-authoring-adapter-CjibysC3.js +1 -0
  353. package/dist/assets/pixi-live-write-target-DuWydlWb.js +1 -0
  354. package/dist/assets/pixi-primitive-DlWbUPN9.js +1 -0
  355. package/dist/assets/pixi-react-root-factory-DYsznYRQ.js +1 -0
  356. package/dist/assets/pixi-story-model-DNkfnWUV.js +1 -0
  357. package/dist/assets/pixi-transform-channels-VjdohT11.js +1 -0
  358. package/dist/assets/play-mode-BFU2PCkG.js +22 -0
  359. package/dist/assets/play.command-BpqqLqkq.js +2 -0
  360. package/dist/assets/playtest-BXIL1JEF.js +1 -0
  361. package/dist/assets/pose-guard-6Osb2cFu.js +1 -0
  362. package/dist/assets/presentation-BPP5pXeQ.js +1 -0
  363. package/dist/assets/product-DFhyARJj.js +1 -0
  364. package/dist/assets/profiler.action-CaXJDp3t.js +1 -0
  365. package/dist/assets/profiler.menu-BIMF6Bi4.js +1 -0
  366. package/dist/assets/profiler.utility-BExw9wBO.js +1 -0
  367. package/dist/assets/project-authoring-session-Bnt6icLr.js +2 -0
  368. package/dist/assets/project-provenance-BoP3nrle.js +1 -0
  369. package/dist/assets/prompt-labels-DSMdM2_B.js +1 -0
  370. package/dist/assets/properties-bone-constraints.inspector-ByT6p7S-.js +1 -0
  371. package/dist/assets/properties-bone.inspector-z4qJwKO5.js +1 -0
  372. package/dist/assets/properties-collection.inspector-D0_3ijWU.js +1 -0
  373. package/dist/assets/properties-constraints.inspector-CESzjuls.js +1 -0
  374. package/dist/assets/properties-data.inspector-hG8Wgyzb.js +1 -0
  375. package/dist/assets/properties-material.inspector-CzY0JCQ6.js +1 -0
  376. package/dist/assets/properties-modifiers.inspector-3dDhwf7g.js +1 -0
  377. package/dist/assets/properties-object.inspector-CiarfxkT.js +1 -0
  378. package/dist/assets/properties-output.inspector-DKJxmKSD.js +1 -0
  379. package/dist/assets/properties-particles.inspector-CCEdYWGm.js +1 -0
  380. package/dist/assets/properties-physics.inspector-B2c0KUyA.js +1 -0
  381. package/dist/assets/properties-render.inspector-Bcm0HLRW.js +1 -0
  382. package/dist/assets/properties-scene.inspector-PIM_eTb_.js +1 -0
  383. package/dist/assets/properties-texture.inspector-CgFlnyr8.js +1 -0
  384. package/dist/assets/properties-view-layer.inspector-DGjF_Aqo.js +1 -0
  385. package/dist/assets/properties-world.inspector-CrMvaRvB.js +1 -0
  386. package/dist/assets/r3f-design-session-D-4yyDO9.js +2 -0
  387. package/dist/assets/r3f-physics-binding-BBo8oma9.js +1 -0
  388. package/dist/assets/r3f-root-factory-z9llD1OU.js +1 -0
  389. package/dist/assets/r3f-source-authoring-adapter-w6Bc60K-.js +13 -0
  390. package/dist/assets/rapier-physics-adapter-CaZqWLu0.js +1 -0
  391. package/dist/assets/rapier-physics-bridge-CMoeVo3Y.js +1 -0
  392. package/dist/assets/react-18-By2b4xR9.js +1 -0
  393. package/dist/assets/react-inspector.service-B_neRnSK.js +1 -0
  394. package/dist/assets/react-root-CEz5NTck.js +1 -0
  395. package/dist/assets/react-story-board-BDDwiE2H.js +1 -0
  396. package/dist/assets/react-three-fiber.esm-CycrbDlA.js +1 -0
  397. package/dist/assets/react-three-rapier.esm-CEfKpvxT.js +1 -0
  398. package/dist/assets/react-world-authoring-adapter-DmrwM3py.js +1 -0
  399. package/dist/assets/realm-services-CobQsq_X.js +1 -0
  400. package/dist/assets/rebind-controller-Dtq19Vb3.js +1 -0
  401. package/dist/assets/recast-navigation.wasm-compat-Dsoa_MD-.js +1 -0
  402. package/dist/assets/reflection-probe-Don-M3Fj.js +1 -0
  403. package/dist/assets/reflection-probe-capture.inspector-CmFUoJCx.js +1 -0
  404. package/dist/assets/register-render-vitals-BiZk29b2.js +1 -0
  405. package/dist/assets/registry-02YZjMNp.js +1 -0
  406. package/dist/assets/relative-path-guard-GiM7Lsz8.js +1 -0
  407. package/dist/assets/render-audio-control-vMRlePWb.js +1 -0
  408. package/dist/assets/render-batch-system-0vq7p0VC.js +1 -0
  409. package/dist/assets/render-census-BrQX_CXv.js +1 -0
  410. package/dist/assets/render-control-Df3yTiyr.js +1 -0
  411. package/dist/assets/render-env-D2IV2x5k.js +1 -0
  412. package/dist/assets/render-features-CPQ_e568.js +1 -0
  413. package/dist/assets/render-seed-DF4JHy7P.js +1 -0
  414. package/dist/assets/render-settings-Bw4W9SYF.js +1 -0
  415. package/dist/assets/render-vitals-BZ5HtvMi.js +1 -0
  416. package/dist/assets/renderer-config-BqG4O8i9.js +1 -0
  417. package/dist/assets/resolve-three-SZE_WWUM.js +702 -0
  418. package/dist/assets/root-seam-contract-Z0VWX3Bk.js +1 -0
  419. package/dist/assets/rrweb-Cd2ifIRP.js +142 -0
  420. package/dist/assets/run-ticks-settled-C4ksViyA.js +1 -0
  421. package/dist/assets/runtime-inspection-l2iFQSsg.js +1 -0
  422. package/dist/assets/scene-capture-BQKzU0NT.js +1 -0
  423. package/dist/assets/scene-capture-CGYF-Viw.js +1 -0
  424. package/dist/assets/scene-document.service-qkDjUrlP.js +2 -0
  425. package/dist/assets/scene-framing-Cat0GtyJ.js +1 -0
  426. package/dist/assets/scene-index-B6BZOHMk.js +1 -0
  427. package/dist/assets/scene-query-C7_N-TpI.js +1 -0
  428. package/dist/assets/schema-kl9-2B_J.js +1 -0
  429. package/dist/assets/sculpt.layout-zJF55yCR.js +1 -0
  430. package/dist/assets/seeded-random-i3mtgBKZ.js +1 -0
  431. package/dist/assets/session-CZ5JPg-z.js +4877 -0
  432. package/dist/assets/setup-audio-S8GQF91f.js +1 -0
  433. package/dist/assets/setup-particles-GCXlnkj_.js +1 -0
  434. package/dist/assets/setup-physics-BeZ7-LKD.js +1 -0
  435. package/dist/assets/setup-renderer-DVXaSGin.js +1587 -0
  436. package/dist/assets/shading.layout-DULYZV6M.js +1 -0
  437. package/dist/assets/sim-clock-CLflx7kg.js +1 -0
  438. package/dist/assets/sky-precompute-worker-ChN7J87v.js +1 -0
  439. package/dist/assets/soft-particle-depth-DGvfQDi1.js +1 -0
  440. package/dist/assets/source-object3d-authoring-adapter-B-L6Ha6f.js +1 -0
  441. package/dist/assets/source-persistence-backend-C-aR-B_Y.js +1 -0
  442. package/dist/assets/spark-renderer-lifecycle-ynWESJcv.js +1 -0
  443. package/dist/assets/spark.module-4pXQoz5d.js +12120 -0
  444. package/dist/assets/stage-invalidation-DBg3C3Ta.js +1 -0
  445. package/dist/assets/stage-keyboard-n-5kKH-m.js +1 -0
  446. package/dist/assets/stage-overlay-set-B9zp2sLB.js +1 -0
  447. package/dist/assets/stage-presence-markers-DiGI6A45.js +1 -0
  448. package/dist/assets/standard-viewport-dressing-CzjAe_0A.js +7 -0
  449. package/dist/assets/state-bridge-DLP1jLRW.js +1 -0
  450. package/dist/assets/state-watch.action-BOvQR2qt.js +1 -0
  451. package/dist/assets/state-watch.menu-CNLvDeeY.js +1 -0
  452. package/dist/assets/state-watch.utility-Bg1tTTQU.js +1 -0
  453. package/dist/assets/static-batch-advisor-B13QEH7d.js +1 -0
  454. package/dist/assets/stats.module-BL02l9NC.js +1 -0
  455. package/dist/assets/story-arg-descriptors-Ek86ExX7.js +1 -0
  456. package/dist/assets/story-capture-_gC8dXV-.js +1 -0
  457. package/dist/assets/story-documents--TDLaPeL.js +3 -0
  458. package/dist/assets/story-documents.service-BiS_YbNQ.js +1 -0
  459. package/dist/assets/story-documents.service-CxOPYJ2j.js +1 -0
  460. package/dist/assets/story-media-presence-BHzk2IV5.js +1 -0
  461. package/dist/assets/story-mount-turn-DFRTj5hi.js +1 -0
  462. package/dist/assets/story-pixi-preview-BUrOJZXS.js +1 -0
  463. package/dist/assets/story-presentation-j2AVN-mK.js +1 -0
  464. package/dist/assets/story-three-preview-BHEDZzcl.js +2 -0
  465. package/dist/assets/structural-ids-Dc-7rEwi.js +1 -0
  466. package/dist/assets/structural-signature-0w-i_ats.js +1 -0
  467. package/dist/assets/surface-content-Dg9Kkazf.js +1 -0
  468. package/dist/assets/surface-state-DaxyruCj.js +3 -0
  469. package/dist/assets/system-adapters-rIC8FSGP.js +1 -0
  470. package/dist/assets/system-runner-DkOjxEBt.js +1 -0
  471. package/dist/assets/system-slot-E2mEdiih.js +1 -0
  472. package/dist/assets/team-playtest.service-DqOinFVA.js +1 -0
  473. package/dist/assets/texture.layout-DASpHVht.js +1 -0
  474. package/dist/assets/three-CDSueJyJ.js +1 -0
  475. package/dist/assets/three-authoring-adapter-CmSQ3Vui.js +1 -0
  476. package/dist/assets/three-authoring.service-iuHLwtf1.js +2 -0
  477. package/dist/assets/three-ingest-runtime-QzDYk6tU.js +1 -0
  478. package/dist/assets/three-projection-core-BmKMZ-nf.js +1 -0
  479. package/dist/assets/three-viewport-presentation-QBQpSdMh.js +1 -0
  480. package/dist/assets/three.module-D396a9Mn.js +3840 -0
  481. package/dist/assets/three.quarks.esm-B1C61jGo.js +1039 -0
  482. package/dist/assets/tools-B_NJsk05.js +1 -0
  483. package/dist/assets/transform-writer-BhBBTx33.js +1 -0
  484. package/dist/assets/transport.header-B-6HQlU2.js +1 -0
  485. package/dist/assets/trigger-volume-BNK2XzPL.js +1 -0
  486. package/dist/assets/tuples-CIQ4Bn1U.js +1 -0
  487. package/dist/assets/tween.module-DciWpAG6.js +1 -0
  488. package/dist/assets/ui-board-document-Bwtt--xp.js +2 -0
  489. package/dist/assets/unexported-game-trap-Dm1JYKHy.js +2 -0
  490. package/dist/assets/unmanaged-root-detector-B8CpbkSN.js +2 -0
  491. package/dist/assets/upstream-pin-BdgRH6ID.js +1 -0
  492. package/dist/assets/use-data-Dzq-MytE.js +1 -0
  493. package/dist/assets/use-live-actor-state-DErbWQWF.js +1 -0
  494. package/dist/assets/use-selection-DbR73-xd.js +1 -0
  495. package/dist/assets/user-data-BB2Of6Ht.js +1 -0
  496. package/dist/assets/utility-view-state-BHypxA33.js +1 -0
  497. package/dist/assets/uv-editing.layout-BEKHxmHw.js +1 -0
  498. package/dist/assets/vgai-shared-fontawesome-CU65D4Ij.js +1 -0
  499. package/dist/assets/vgai-shared-jsx-dev-runtime-DFDKL7fx.js +1 -0
  500. package/dist/assets/vgai-shared-jsx-runtime-DIqBpTut.js +1 -0
  501. package/dist/assets/vgai-shared-react-BT7rMc2H.js +1 -0
  502. package/dist/assets/vgai-shared-react-dom-DFajMqMT.js +1 -0
  503. package/dist/assets/vgai-shared-react-dom-client-S0ozfl6_.js +1 -0
  504. package/dist/assets/vgai-shared-three-Bc5PvpLM.js +1 -0
  505. package/dist/assets/viewport-pick-context-DkawXbEi.js +1 -0
  506. package/dist/assets/viewport-root-presentation-CWsE56K6.js +1 -0
  507. package/dist/assets/viewport-shading-BuA88e_A.js +1 -0
  508. package/dist/assets/viewport-shading-boundary-B_-_gABg.js +82 -0
  509. package/dist/assets/viewport-surface-status-B3om4Kcf.js +1 -0
  510. package/dist/assets/vision_bundle-DX0dWqEa.js +15 -0
  511. package/dist/assets/voxel-surface-DtcsSWRL.js +1 -0
  512. package/dist/assets/wav-encode-D31zWF6O.js +1 -0
  513. package/dist/assets/webgl-frame-capture-FlF9zQmW.js +1 -0
  514. package/dist/assets/webgl-gpu-timer-D3YX7RaD.js +1 -0
  515. package/dist/assets/webworkerAll-CM2o_dnz.js +1 -0
  516. package/dist/assets/worker-UrMcrc5_.js +2 -0
  517. package/dist/assets/world-documents-147tiFZe.js +1 -0
  518. package/dist/assets/world-root-stage-binding-vwTrtBz6.js +1 -0
  519. package/dist/assets/world-state-BWG-IcOd.js +1 -0
  520. package/dist/assets/writer-B-KovzkA.js +5 -0
  521. package/dist/assets/xstate-animation-binding-Brd0NST6.js +1 -0
  522. package/dist/assets/xstate-animation-meta-Q3u9zh_m.js +1 -0
  523. package/dist/assets/xstate-behavior.action-B8UluFBK.js +1 -0
  524. package/dist/assets/xstate-behavior.document-CKAsE45I.js +1 -0
  525. package/dist/assets/xstate-behavior.inspector-vJJyuifc.js +1 -0
  526. package/dist/assets/xstate-behavior.menu-BXbPICIh.js +1 -0
  527. package/dist/assets/xstate-inspection-BsZv8LS9.js +1 -0
  528. package/dist/vgai-shared-react.json +10 -0
  529. package/dist/vgai-shared-three.json +3 -0
  530. package/dist-node/cli.js +9320 -0
  531. package/dist-node/create.js +3239 -0
  532. package/package.json +91 -0
  533. package/presets.mjs +2 -0
  534. package/src/contributions.d.ts +4 -0
  535. package/src/index.ts +38 -0
  536. package/starter/cube.blend +0 -0
  537. package/starter/cube.py +81 -0
  538. package/template/.agents/references/project-manual.md +341 -0
  539. package/template/.agents/skills/editor/SKILL.md +53 -0
  540. package/template/.agents/skills/editor/agents/openai.yaml +4 -0
  541. package/template/.agents/skills/editor/references/editor-control.md +363 -0
  542. package/template/.agents/skills/vgai-3d-models/SKILL.md +64 -0
  543. package/template/.agents/skills/vgai-ingest-existing-game/SKILL.md +112 -0
  544. package/template/.agents/skills/vgai-threejs-authoring/SKILL.md +347 -0
  545. package/template/.agents/skills/vgai-threejs-authoring/agents/openai.yaml +4 -0
  546. package/template/.agents/skills/vgai-threejs-authoring/references/helper-catalog.md +65 -0
  547. package/template/.claude/skills/editor/SKILL.md +53 -0
  548. package/template/.claude/skills/editor/agents/openai.yaml +4 -0
  549. package/template/.claude/skills/editor/references/editor-control.md +363 -0
  550. package/template/.claude/skills/vgai-3d-models/SKILL.md +64 -0
  551. package/template/.claude/skills/vgai-ingest-existing-game/SKILL.md +112 -0
  552. package/template/.claude/skills/vgai-threejs-authoring/SKILL.md +347 -0
  553. package/template/.claude/skills/vgai-threejs-authoring/agents/openai.yaml +4 -0
  554. package/template/.claude/skills/vgai-threejs-authoring/references/helper-catalog.md +65 -0
  555. package/template/.github/copilot-instructions.md +6 -0
  556. package/template/.github/skills/editor/SKILL.md +53 -0
  557. package/template/.github/skills/editor/agents/openai.yaml +4 -0
  558. package/template/.github/skills/editor/references/editor-control.md +363 -0
  559. package/template/.github/skills/vgai-3d-models/SKILL.md +64 -0
  560. package/template/.github/skills/vgai-ingest-existing-game/SKILL.md +112 -0
  561. package/template/.github/skills/vgai-threejs-authoring/SKILL.md +347 -0
  562. package/template/.github/skills/vgai-threejs-authoring/agents/openai.yaml +4 -0
  563. package/template/.github/skills/vgai-threejs-authoring/references/helper-catalog.md +65 -0
  564. package/template/.mcp.json +12 -0
  565. package/template/.vgai/assets.json +1 -0
  566. package/template/.vgai/provenance.json +4 -0
  567. package/template/.volter/tracker/validation/.preset.base.mts +178 -0
  568. package/template/.volter/tracker/validation/preset.mts +186 -0
  569. package/template/.volter/tracker/visualizer/.extension.base.tsx +14 -0
  570. package/template/.volter/tracker/visualizer/extension.tsx +14 -0
  571. package/template/.volter/tracker-config.json +17 -0
  572. package/template/AGENTS.md +176 -0
  573. package/template/CLAUDE.md +1 -0
  574. package/template/DEVLOG.md +20 -0
  575. package/template/IDIOMS.md +118 -0
  576. package/template/LICENSE +30 -0
  577. package/template/README.md +83 -0
  578. package/template/ROADMAP.md +20 -0
  579. package/template/asset-manifest.json +3 -0
  580. package/template/check-idioms.ts +1533 -0
  581. package/template/index.html +18 -0
  582. package/template/manifest-entry-modules-plugin.ts +53 -0
  583. package/template/package.json +62 -0
  584. package/template/public/jsm/libs/basis/basis_transcoder.js +19 -0
  585. package/template/public/jsm/libs/basis/basis_transcoder.wasm +0 -0
  586. package/template/public/jsm/libs/draco/gltf/draco_decoder.js +33 -0
  587. package/template/public/jsm/libs/draco/gltf/draco_decoder.wasm +0 -0
  588. package/template/public/jsm/libs/draco/gltf/draco_encoder.js +33 -0
  589. package/template/public/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -0
  590. package/template/public/shaders/daylight-sky.frag.glsl +15 -0
  591. package/template/public/shaders/daylight-sky.vert.glsl +7 -0
  592. package/template/scripts/patch-drei-stats-gl.mjs +35 -0
  593. package/template/server/colyseus-setup.ts +111 -0
  594. package/template/server/loopback.ts +76 -0
  595. package/template/server/main.ts +78 -0
  596. package/template/server/rooms/arena-room.ts +488 -0
  597. package/template/server/rooms/game-room.ts +274 -0
  598. package/template/server/rooms.ts +15 -0
  599. package/template/server/tsconfig.json +19 -0
  600. package/template/src/bot/QaTester.tsx +35 -0
  601. package/template/src/bot/behaviors.ts +203 -0
  602. package/template/src/bot/bot-station.ts +192 -0
  603. package/template/src/bot/tester-run.ts +238 -0
  604. package/template/src/bot/tester-station.ts +193 -0
  605. package/template/src/components/environment/DaylightSky.tsx +54 -0
  606. package/template/src/components/environment/Ground.tsx +129 -0
  607. package/template/src/components/environment/SceneAtmosphere.tsx +14 -0
  608. package/template/src/components/environment/SoftGroundShadow.tsx +62 -0
  609. package/template/src/components/environment/SunShadowFit.tsx +141 -0
  610. package/template/src/contributions/README.md +98 -0
  611. package/template/src/contributions/analytics.analytics.tsx +26 -0
  612. package/template/src/contributions/data.document.tsx +35 -0
  613. package/template/src/contributions/pages.finder.ts +61 -0
  614. package/template/src/contributions/tester.inspector.tsx +64 -0
  615. package/template/src/contributions/use-game-modules.ts +80 -0
  616. package/template/src/data/README.md +17 -0
  617. package/template/src/input.ts +97 -0
  618. package/template/src/lib/audio/capability.json +4 -0
  619. package/template/src/lib/audio/sfx.ts +255 -0
  620. package/template/src/lib/react-root/capability.json +4 -0
  621. package/template/src/lib/react-root/index.ts +20 -0
  622. package/template/src/lib/react-root/react-root-adapter.tsx +57 -0
  623. package/template/src/lib/reflections/ReflectionProbe.tsx +201 -0
  624. package/template/src/lib/reflections/capability.json +4 -0
  625. package/template/src/lib/reflections/index.ts +19 -0
  626. package/template/src/lib/reflections/probe-controller.ts +75 -0
  627. package/template/src/lib/reflections/reflection-probe-registry.ts +402 -0
  628. package/template/src/lib/reflections/volume-reflection-material.ts +416 -0
  629. package/template/src/lib/static-batch/Frozen.tsx +91 -0
  630. package/template/src/lib/static-batch/capability.json +4 -0
  631. package/template/src/lib/static-batch/freeze.ts +579 -0
  632. package/template/src/lib/static-batch/index.ts +44 -0
  633. package/template/src/lib/static-batch/mutation-watch.ts +149 -0
  634. package/template/src/lib/static-batch/shadow-cache.ts +171 -0
  635. package/template/src/main.ts +63 -0
  636. package/template/src/manifest-entry-modules.d.ts +3 -0
  637. package/template/src/prefabs/HeroBox.stories.tsx +23 -0
  638. package/template/src/prefabs/HeroBox.tsx +35 -0
  639. package/template/src/scenes/MainScene.tsx +77 -0
  640. package/template/src/world.tsx +87 -0
  641. package/template/tsconfig.json +35 -0
  642. package/template/tsconfig.node.json +32 -0
  643. package/template/tsconfig.tools.json +22 -0
  644. package/template/validate-asset-content.ts +27 -0
  645. package/template/validate-assets.ts +60 -0
  646. package/template/validate-manifest.ts +55 -0
  647. package/template/vgai.adapter.ts +76 -0
  648. package/template/vgai.project.json +24 -0
  649. package/template/vite.config.ts +247 -0
  650. package/template-dotfiles/gitignore +63 -0
  651. package/workbench/src/media/game-cover.css +83 -0
  652. package/workbench/src/product.contribution.ts +188 -0
  653. package/workbench/src/vgaiGameSkew.ts +276 -0
package/package.json ADDED
@@ -0,0 +1,91 @@
1
+ {
2
+ "name": "@volter/game-editor",
3
+ "author": "Volter AI, Inc.",
4
+ "version": "0.5.65",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "type": "module",
9
+ "engines": {
10
+ "node": ">=24"
11
+ },
12
+ "license": "AGPL-3.0-only AND GPL-3.0-or-later",
13
+ "description": "Volter Game Editor: the game packages and Blender stitched onto the editor kit.",
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/volter-ai/editor.git",
17
+ "directory": "packages/game-editor"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "src",
22
+ "LICENSE",
23
+ "LICENSE-BLENDER",
24
+ "NOTICE",
25
+ "LICENSE-MCP",
26
+ "dist-node",
27
+ "presets.mjs",
28
+ "workbench",
29
+ "template",
30
+ "template-dotfiles",
31
+ "catalog",
32
+ "starter",
33
+ "BUNDLED_NOTICES"
34
+ ],
35
+ "scripts": {
36
+ "build": "vite build --config vite.config.ts",
37
+ "build:node": "node scripts/build-node.mjs",
38
+ "typecheck": "tsc -p tsconfig.node.json"
39
+ },
40
+ "vgai": {
41
+ "product": {
42
+ "entry": "./src/index.ts",
43
+ "displayName": "Volter Game Editor",
44
+ "colorTheme": "dark",
45
+ "workbench": {
46
+ "release": "game-editor-f8664703ab59-595ba7af8402-darwin-arm64",
47
+ "tarballSha256": "fac04a80a9745b6af25c232308faab1691ef2ecc40883cc8c9b89b42f12f8ccd"
48
+ }
49
+ }
50
+ },
51
+ "dependencies": {
52
+ "@volter/editor-core": "0.5.65",
53
+ "@volter/editor-game": "0.5.65",
54
+ "@volter/editor-blender": "0.1.8",
55
+ "@volter/blender-engine": "0.1.7",
56
+ "@volter/editor-project": "0.5.65",
57
+ "@volter/editor-sdk": "0.5.65",
58
+ "@volter/editor-live": "0.5.65",
59
+ "@volter/game-live": "0.5.65",
60
+ "@modelcontextprotocol/sdk": "1.30.0",
61
+ "@volter/game-runtime": "0.5.65",
62
+ "@volter/threejs-runtime": "0.5.65",
63
+ "undici": "7.29.1",
64
+ "typescript": "5.9.3",
65
+ "@colyseus/schema": "^4.0.14",
66
+ "@colyseus/sdk": "^0.17.34",
67
+ "@react-three/drei": "^10.7.7",
68
+ "@react-three/fiber": "^9.6.1",
69
+ "react": "~19.2.4",
70
+ "react-dom": "~19.2.4",
71
+ "three": "^0.180.0",
72
+ "zod": "^4.3.6",
73
+ "@colyseus/ws-transport": "^0.17.9",
74
+ "@storybook/react": "10.6.0",
75
+ "@types/node": "^25.3.0",
76
+ "@types/react": "^19.2.14",
77
+ "@types/react-dom": "^19.2.3",
78
+ "@types/three": "^0.180.0",
79
+ "@vitejs/plugin-react": "^5.1.4",
80
+ "colyseus": "^0.17.8",
81
+ "storybook": "10.6.0",
82
+ "tsx": "^4.23.0",
83
+ "vite": "^6.4.3",
84
+ "ztrack": "^1.5.5",
85
+ "three-bvh-csg": "^0.0.18",
86
+ "three-mesh-bvh": "^0.9.12"
87
+ },
88
+ "bin": {
89
+ "volter-game-editor": "./dist-node/cli.js"
90
+ }
91
+ }
package/presets.mjs ADDED
@@ -0,0 +1,2 @@
1
+ // Node-executable product code, shared by the CLI and the New Project screen.
2
+ export { declaration as default } from './dist-node/create.js';
@@ -0,0 +1,4 @@
1
+ declare module 'vgai:contributions/*' {
2
+ const contributions: readonly { readonly entryPath: string; readonly load: () => Promise<unknown> }[];
3
+ export default contributions;
4
+ }
package/src/index.ts ADDED
@@ -0,0 +1,38 @@
1
+ /**
2
+ * THE GAME EDITOR, COMPOSED — this file is the whole product.
3
+ *
4
+ * Thin code that stitches packages onto the editor kit and holds only what
5
+ * building a game needs. Three decisions, each a product's to make and nobody
6
+ * else's:
7
+ *
8
+ * - WHICH PACKAGES, in mount order. `vgai:contributions/<package>` is that
9
+ * package's own `package.json#vgai.contributions`, read at build time
10
+ * (`@volter/editor-core/build/product-contributions`) — the product names
11
+ * the package, never its modules, so a package that grows a contribution
12
+ * grows this product with no edit here.
13
+ * - THE LOOK. `classic` — the editor's own Graphite, which is the reference
14
+ * frame every host-default shape was measured against. A DEFAULT:
15
+ * `~/.vgai/settings.json`, the project's own, and its adapter's declaration
16
+ * each outrank it.
17
+ * - THE WORKSPACE. `game` — `@volter/editor-game`'s own workspace
18
+ * contribution, which applies to a project with at least one root that
19
+ * plays.
20
+ *
21
+ * `mountVgai` is what the workbench contribution reads off this module once
22
+ * `/__editor/served-modules` hands it this file's URL.
23
+ */
24
+
25
+ import blender from 'vgai:contributions/@volter/editor-blender';
26
+ import game from 'vgai:contributions/@volter/editor-game';
27
+ import { product } from '@volter/editor-core/frame/product';
28
+
29
+ export const { mountVgai } = product({
30
+ id: 'game-editor',
31
+ packages: {
32
+ '@volter/editor-game': game,
33
+ '@volter/editor-blender': blender,
34
+ },
35
+ look: 'classic',
36
+ workspace: 'game',
37
+ nativeMenus: true,
38
+ });
Binary file
@@ -0,0 +1,81 @@
1
+ # SPDX-License-Identifier: GPL-3.0-or-later
2
+ #
3
+ # THIS FILE IS GPL, AND THE REST OF YOUR PROJECT IS NOT.
4
+ #
5
+ # It drives `bpy`, Blender's Python API. The Blender Foundation's stated
6
+ # position — their licence page, under "Add-ons (Python scripts)" — is that
7
+ # the API "is an integral part of the software" and that the GPL "therefore
8
+ # requires that such scripts (if published) are being shared under a GPL
9
+ # compliant license". So a bpy script is a derivative work of Blender, and
10
+ # this one is licensed GNU General Public License version 3 or later,
11
+ # exercising Blender's own "or later".
12
+ #
13
+ # WHAT THIS DOES NOT TOUCH. `cube.blend` beside this file is YOURS, and so is
14
+ # anything you export from it — glTF, GLB, renders. That is the Foundation's
15
+ # position too, on the same page under "Your Artwork": what you make with
16
+ # Blender is your sole property, "including the .blend files and other data
17
+ # files Blender can write". Every other file the template gave you is MIT.
18
+ # This licence reaches this script and nothing else.
19
+ #
20
+ # If you would rather not carry it: delete this file. The `.blend` is the
21
+ # document — this is only the recorded source of how it was made — and
22
+ # nothing in the project reads this script at runtime. If you write your own
23
+ # bpy scripts, the Foundation's position applies to them on the same terms;
24
+ # it is not a rule of ours and is not ours to waive, because the copyright in
25
+ # Blender is Blender's authors'.
26
+ #
27
+ # Copyright 2026 Volter AI, Inc.
28
+
29
+ """The starter model — the bpy that made `cube.blend`, and its SOURCE.
30
+
31
+ A model is Blender data: `cube.blend` beside this file is the document the
32
+ editor opens, and this is the script that authored it. Run it again and you
33
+ get the same file; edit it and re-run it, or open the `.blend` and model in
34
+ Blender's own Edit Mode — both are authoring, and the `.blend` is the truth
35
+ either way.
36
+
37
+ Run it through the session's Blender, from this project:
38
+
39
+ npm run --silent vgai -- blender-mcp # the transport an agent drives
40
+ # or, in a live editor session:
41
+ # editor.blender('blender-execute', { code: open('src/models/cube.py').read() })
42
+
43
+ The session saves the open document about a second after the last call, so a
44
+ script that models is a script that saves.
45
+
46
+ Coordinates are metres, Z is up (Blender's), and the exporter converts to the
47
+ game's Y-up on the way to glTF.
48
+ """
49
+
50
+ import bpy
51
+
52
+ # ONE DATABLOCK, AT THE ORIGIN. A model file holds the model, not a set: the
53
+ # factory startup's Light and Camera belong to a scene, and a model that
54
+ # carries them exports them too.
55
+ for obj in list(bpy.data.objects):
56
+ bpy.data.objects.remove(obj, do_unlink=True)
57
+ for mesh in list(bpy.data.meshes):
58
+ bpy.data.meshes.remove(mesh)
59
+ # Materials too, or a re-run appends `Material.001` beside the one it made
60
+ # last time and the Shader Editor shows whichever slot happens to be active.
61
+ for material in list(bpy.data.materials):
62
+ bpy.data.materials.remove(material)
63
+
64
+ # Blender opens on a cube; so does this. `size` is the full width, so 1.0 is
65
+ # a 1 m box — the starter's own scale, not the factory cube's 2 m.
66
+ bpy.ops.mesh.primitive_cube_add(size=1.0, location=(0.0, 0.0, 0.0))
67
+ cube = bpy.context.active_object
68
+ cube.name = "Cube"
69
+ cube.data.name = "Cube"
70
+
71
+ # AND BLENDER'S OWN DEFAULT MATERIAL, because Blender's own default cube has
72
+ # one. Without it the Shading workspace opens on `Shader Editor · No material`
73
+ # with nothing drawn and nothing a person can click to change that — its one
74
+ # control, Use Nodes, correctly refuses, because this view inspects a node
75
+ # tree and never writes one (walk 3, beat 4). `materials.new` leaves
76
+ # `use_nodes` FALSE, which is a material the header names and the canvas still
77
+ # cannot draw; setting it True is what builds the pair Blender builds —
78
+ # Principled BSDF into Material Output, 2 nodes and 37 sockets.
79
+ material = bpy.data.materials.new(name="Material")
80
+ material.use_nodes = True
81
+ cube.data.materials.append(material)
@@ -0,0 +1,341 @@
1
+ # Detailed VGAI game project reference
2
+
3
+ This is the procedural reference behind the compact project `AGENTS.md`
4
+ router. Load only the section the current decision needs. The source files
5
+ named here are the examples an agent should copy; no hidden generator or
6
+ registry supplies their semantics.
7
+
8
+ ## Contents
9
+
10
+ - [Starting a game](#starting-a-game)
11
+ - [Roadmap and journal](#roadmap-and-journal)
12
+ - [Source architecture](#source-architecture)
13
+ - [Playable slices](#playable-slices)
14
+ - [The resident QA tester](#the-resident-qa-tester)
15
+ - [Studio surfaces](#studio-surfaces)
16
+ - [Analytics and gameplay sessions](#analytics-and-gameplay-sessions)
17
+ - [Game data](#game-data)
18
+ - [UI roots](#ui-roots)
19
+ - [Capabilities and assets](#capabilities-and-assets)
20
+ - [Multiplayer](#multiplayer)
21
+ - [Live verification](#live-verification)
22
+
23
+ ## Starting a game
24
+
25
+ Read the brief, create the first `ROADMAP.md` arc, inspect
26
+ `vgai.project.json`, then start the editor immediately:
27
+
28
+ ```bash
29
+ npm run dev
30
+ ```
31
+
32
+ Tell the user the printed URL in the first visible message and keep that
33
+ session running. The editor is where the source is observed and verified;
34
+ source edits remain ordinary file edits. `npm run dev:standalone` serves only
35
+ an exported build and is not a development bypass.
36
+
37
+ ## Roadmap and journal
38
+
39
+ `ROADMAP.md` is the only game-level tracker. Its first entry is the complete
40
+ playable prototype from the brief, not one task per mechanic, UI, tool, or
41
+ test. Later entries are only major features of comparable scope. Each entry
42
+ has one `status:` and one `Summary:`; do not add acceptance criteria yet.
43
+ `ztrack check` verifies this shape.
44
+
45
+ `DEVLOG.md` is not another tracker. Add one entry when a coherent feature arc
46
+ finishes, covering what changed, why, important decisions, the live playtest
47
+ outcome, and what remains. Link only evidence you inspected. Copy selected
48
+ screenshots into `media/screenshots/` and selected short clips into
49
+ `media/clips/`; bounded `.vgai/` history is working material, not a permanent
50
+ journal attachment.
51
+
52
+ ## Source architecture
53
+
54
+ Read `vgai.project.json` and `src/main.ts` first. Every manifest root has one
55
+ adapter and lifecycle. Its entry is the source document: TSX for a Three or
56
+ Canvas root, JSX for a DOM root. Do not call `createRoot`, `hydrateRoot`, or
57
+ `ReactDOM.render` inside a root component; host mounting belongs to the
58
+ adapter boundary.
59
+
60
+ The neutral Three starter demonstrates the complete taxonomy:
61
+
62
+ ```text
63
+ src/world.tsx thin persistent root + scene swap slot
64
+ src/scenes/MainScene.tsx complete replaceable composition
65
+ src/prefabs/HeroBox.tsx independently placeable object
66
+ src/prefabs/HeroBox.stories.tsx Content registration/design state
67
+ src/components/environment/Ground.tsx non-placeable support assembly
68
+ ```
69
+
70
+ Preserve the meanings when replacing the starter content:
71
+
72
+ - A scene composes environment, prefabs, and cameras. It is not a Content
73
+ prefab and does not hide independent repeated entities inside scenery.
74
+ - A prefab is a thing a designer selects, places, duplicates, or reuses as one
75
+ piece. It accepts ordinary `ThreeElements[...]` props, forwards them to one
76
+ native outer root, has meaningful node names, and ships a colocated story
77
+ naming it as `meta.component`.
78
+ - Construction pieces that only make sense as part of a prefab stay inside
79
+ that owner. Do not create a prefab per primitive.
80
+ - Supporting components are non-placeable implementation: sky, atmosphere,
81
+ a one-per-scene floor assembly, a light rig. They belong under
82
+ `src/components/` and do not receive hollow stories.
83
+ - A character is the rigged humanoid-generator asset path, never a stack of
84
+ capsules and boxes.
85
+
86
+ `check-idioms` makes the objective edges loud: E10 for a prefab without its
87
+ story, E11 for scene-folder misclassification, E9 for R3F authoring warnings,
88
+ and W10 when a Three project has no registered prefab at all. W10 is a prompt,
89
+ not a claim that fully procedural games are impossible; record and suppress a
90
+ genuine exception with a reason.
91
+
92
+ The world node is the entity. Behavior on an R3F root is an ordinary React
93
+ component using `useFrame`; physics is ordinary `@react-three/rapier` JSX.
94
+ Use the ecosystem library directly. No mirror tree, gameplay registry, or
95
+ vgai phase vocabulary belongs in game code.
96
+
97
+ ## Playable slices
98
+
99
+ Ship one vertical slice at a time. A mechanic slice includes all of:
100
+
101
+ - the player-visible behavior;
102
+ - the rendering/HUD required to read it;
103
+ - an ordinary exported state readout beside the mechanic;
104
+ - an ordinary exported setup function when reaching a QA situation costs
105
+ roughly more than 30 seconds of honest play;
106
+ - a tester behavior that exercises the mechanic through normal input;
107
+ - any game-specific Tester/Data/Analytics presentation the slice earns;
108
+ - a live playtest, reviewed visual evidence, and a commit.
109
+
110
+ The exported function is the debug door. There is no command registry:
111
+
112
+ ```ts
113
+ // src/sim/cooling.ts
114
+ export function readCooling() {
115
+ return { temperature, capacity, throttled };
116
+ }
117
+
118
+ export function setupHeatSpike() {
119
+ // Arrange the expensive precondition only. Do not perform the behavior
120
+ // the tester is meant to exercise.
121
+ }
122
+ ```
123
+
124
+ The developer reaches that exact running module from the session:
125
+
126
+ ```js
127
+ game.run(async ({ modules }) => {
128
+ const cooling = await modules('src/sim/cooling.ts');
129
+ cooling.setupHeatSpike();
130
+ return cooling.readCooling();
131
+ })
132
+ ```
133
+
134
+ Do not press the player's controls from the developer REPL in a realtime game.
135
+ The developer arranges and observes; the resident tester holds the controller
136
+ at simulation speed. A genuinely turn-paced action is the narrow exception
137
+ where developer-paced input can still be honest.
138
+
139
+ ## The resident QA tester
140
+
141
+ The tester is ordinary game code under `src/bot/`, not an LLM service and not
142
+ gameplay automation that belongs to the shipped player's economy. It is the QA
143
+ person holding this game instance's controller.
144
+
145
+ The starter demonstrates the mechanics without standardizing the game's
146
+ vocabulary:
147
+
148
+ - `src/input.ts` is the game's own input store. Human key bindings and virtual
149
+ tester actuation merge into the same action reads.
150
+ - `src/bot/behaviors.ts` is the game-specific repertoire. Replace the starter
151
+ `sweep` with intent-level goals named for real outcomes and grow it with
152
+ every mechanic.
153
+ - `src/bot/tester-station.ts` exports `hireTester`, `describeTester`, and the
154
+ sim-tick stepper.
155
+ - `src/bot/bot-station.ts` exports status plus pause, resume, abort, and
156
+ handoff controls.
157
+ - `src/bot/QaTester.tsx` is the thin frame hook that steps the tester before
158
+ gameplay reads input.
159
+
160
+ A tester behavior actuates only `ctx.hands` and reads the game's own state. It
161
+ never teleports, buys resources directly, or calls setup functions. A setup
162
+ function may establish the hard-to-reach state before the goal begins; the
163
+ goal must still play the behavior under judgment normally.
164
+
165
+ Handoff releases virtual input and returns the controller to the human.
166
+ Pause, refusal, a goal that completes within one paint, blockers, and terminal
167
+ outcomes must all narrate themselves on the Tester surface and in the play
168
+ log.
169
+
170
+ ## Studio surfaces
171
+
172
+ `src/contributions/` contains this game's editor panels. Contributions are ordinary
173
+ TSX discovered by filename (`*.inspector.tsx`, `*.document.tsx`,
174
+ `*.utility.tsx`, `*.analytics.tsx`). They export a contribution `point`, a
175
+ `title`, and a default React component. There is no registry, declaration API,
176
+ generated form, command vocabulary, or required section layout.
177
+
178
+ Live contributions read the running mount through
179
+ `src/contributions/use-game-modules.ts`. Never directly import a live gameplay module
180
+ from a contribution; that would create a second module instance under the
181
+ editor importer. Hand-type the narrow slice the surface uses and call the
182
+ same exported functions the developer reaches through `game.run`.
183
+
184
+ The `studio` addition (`game-editor create <name> --with studio`, or `--template full`)
185
+ brings three unfinished surfaces. No other preset does, because nothing a
186
+ project inherits may error and these three throw until they are rewritten:
187
+
188
+ - Tester is the live QA cockpit: controller ownership, repertoire, current
189
+ goal mind and outcome, controls, setup cheats, and live judgment readings.
190
+ - Data edits the game's authored content and mechanic parameters.
191
+ - Analytics shows game-specific charts and metrics from the selected recorded
192
+ Gameplay Session, using the editor's existing playback controls.
193
+
194
+ All three stubs emit `VGAI_STUB_UNIMPLEMENTED`, which makes the live console and
195
+ `check-idioms` report remaining work. Rewrite the files whole in the game's
196
+ vocabulary.
197
+
198
+ ## Analytics and gameplay sessions
199
+
200
+ One Play interval is one durable Gameplay Session. The editor writes
201
+ `logs/play-*.jsonl`, including lifecycle rows and structured game events. A
202
+ WebM recording is also captured by CLI Play. The log itself is the session catalog, so
203
+ sessions survive Stop and editor reload without a second manifest.
204
+
205
+ `workspace.analytics` has a shared host shell: session selector, real-time
206
+ scrub rail, current elapsed time, and optional video hover preview. The game's
207
+ `analytics.analytics.tsx` is only the body. It receives a stable Gameplay
208
+ Session store and deliberately receives no live `play` handle, so charts
209
+ cannot accidentally depend on ephemeral simulation state.
210
+
211
+ In a React component, `useDebugEmit` from `@volter/game-runtime/react/world-state`
212
+ returns the event callback: `const emit = useDebugEmit()`. Call
213
+ `emit('gem-collected', { count })` in the mechanic's collection handler; the
214
+ editor stamps and records it. Build charts from the selected log at the shared cursor.
215
+
216
+ Record motion while Play runs:
217
+
218
+ ```bash
219
+ npm run --silent vgai -- eval 'return editor.recording.start({ fps: 30 })'
220
+ # direct tester goals and advance with game.waitSimTime(...)
221
+ npm run --silent vgai -- eval 'return editor.recording.stop()'
222
+ ```
223
+
224
+ Recordings are standard WebM files under `.vgai/recordings/`. Use ordinary
225
+ `ffprobe`/`ffmpeg` to inspect and trim them.
226
+
227
+ ## Game data
228
+
229
+ Game rules and content are plain typed TS literals under `src/data/`, named
230
+ for the mechanic or content they describe:
231
+
232
+ ```ts
233
+ // src/data/cooling.ts
234
+ export const cooling = {
235
+ baseCapacity: 120,
236
+ throttleAt: 86,
237
+ } as const;
238
+
239
+ export type Cooling = typeof cooling;
240
+ ```
241
+
242
+ Mechanics import the literal directly. TypeScript is the schema; Vite HMR is
243
+ the edit transport. There is no engine data format, handle, emitted schema, or
244
+ runtime parse layer. Put derived calculations beside the data as plain
245
+ functions, then render the useful derived columns/graphs in the Data
246
+ contribution. A table too large to balance by hand should be generated from a
247
+ small set of authored parameters; the generated table is build output.
248
+
249
+ ## UI roots
250
+
251
+ A player HUD is a `dom` root in `vgai.project.json`, default-exporting an
252
+ ordinary React component. It reads the project's own React context/store and
253
+ uses normal React subscriptions. Do not mount a second React root from project
254
+ code, and do not use Drei `Html` for a HUD—it is absent from clean composite
255
+ captures.
256
+
257
+ The host owns root mounting. `src/main.ts` registers the root adapters and the
258
+ manifest supplies root identity/entry. The source component itself stays free
259
+ of vgai runtime context.
260
+
261
+ ## Capabilities and assets
262
+
263
+ Capabilities are optional standard libraries copied into the project. Before
264
+ writing reusable plumbing, list what already exists:
265
+
266
+ ```bash
267
+ npm run --silent vgai -- add
268
+ npm run --silent vgai -- add <id>
269
+ ```
270
+
271
+ The copied source under `src/lib/` is project-owned and editable. Use its
272
+ native library API; do not wrap Three, Rapier, Pixi, React, Colyseus, or XState
273
+ behind another programming model.
274
+
275
+ For 3D, 2D, animation, humanoid, environment, or generated assets, load the
276
+ matching `.agents/skills/vgai-*` skill before acting. The 3D asset floor is a
277
+ named prefab component, a colocated story, named nodes, and inspected visual
278
+ evidence. Provider generation must go through the provider-native skill and
279
+ `ctx.projectOutputs.write(...)`; never spend funds by calling a provider ad
280
+ hoc.
281
+
282
+ Repeatable creative sequences are flat scripts under
283
+ `scripts/<task>/steps/`, with a README at each meaningful step and
284
+ intermediates under `.vgai/tmp/<task>/`. Helpers under `src/lib/<domain>/` are
285
+ only for reusable, purely mechanical operations—not workflow runners,
286
+ registries, or auto-judges.
287
+
288
+ ## Multiplayer
289
+
290
+ Call Colyseus directly with typed rooms and the callbacks API. Dynamically
291
+ import the client so single-player bundles remain clean. A multiplayer seat is
292
+ a person; in the editor it lives in one full game instance with its own
293
+ resident tester or a human handoff.
294
+
295
+ Use one editor, not extra browser tabs or synthetic clients:
296
+
297
+ ```js
298
+ await editor.instances(['host', 'guest'])
299
+ const host = game.instance('host')
300
+ const guest = game.instance('guest')
301
+ ```
302
+
303
+ Address each instance explicitly, load its running tester module, and direct
304
+ its tester toward the seat's goal. Keyboard focus, the Inspector's currently
305
+ viewed instance, and the instance addressed by code are separate; never assume
306
+ a human click retargeted the developer wire.
307
+
308
+ ## Live verification
309
+
310
+ After every slice:
311
+
312
+ ```bash
313
+ npm run check-idioms
314
+ npm run typecheck
315
+ npm run validate
316
+ npm run validate-manifest
317
+ npm run --silent vgai -- status
318
+ ```
319
+
320
+ Then verify through the live editor-owned session:
321
+
322
+ 1. Enter Play and wait for the full mount acknowledgement.
323
+ 2. Arrange one situation through exported setup functions.
324
+ 3. Direct the resident tester toward an intent-level goal.
325
+ 4. Advance with `game.waitSimTime({ simSeconds })`; never use wall-clock
326
+ sleeps, rAF loops, or synthetic keyboard events.
327
+ 5. Read module state and `logs/play-*.jsonl`, one observation at a time.
328
+ 6. Look at the visible result and capture a legible screenshot. Exercise the
329
+ face control itself when validating a visible button.
330
+ 7. Repeat for the few varied situations that could expose the slice.
331
+ 8. Inspect hierarchy and Content: prefabs appear as prefabs, repeated
332
+ primitives are collapsed under their owner, and independent entities are
333
+ not hidden in scenery.
334
+ 9. `npm run --silent vgai -- console` must be silent. Any unresolved warning/error is
335
+ remaining work or must be explicitly acknowledged with an honest reason.
336
+ 10. Commit the verified slice immediately. When the arc finishes, update
337
+ `DEVLOG.md` with the judged result and reviewed media.
338
+
339
+ Do not add automated tests, specs, or committed autoplay routes to a game
340
+ project. The live interactive playtest is the approved proof; its play log is
341
+ the receipt.
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: editor
3
+ description: Launch, control, inspect, and verify a VGAI 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
+ ---
5
+
6
+ # Control the VGAI editor
7
+
8
+ ## Open the observable session
9
+
10
+ 1. Run `npm run dev` from the game project. Let it auto-open unless the run is
11
+ genuinely unattended CI.
12
+ 2. Tell the user the printed editor URL and keep the process running.
13
+ 3. Run `npm run --silent vgai -- status`; require `connected: true` before treating the
14
+ response as live state. A running server without a browser tab only has a
15
+ cached snapshot.
16
+ 4. Use Play mode for user-visible game runs. The standalone page
17
+ (`npm run dev:standalone`) serves EXPORTED builds only — until the game is
18
+ exported it refuses to mount, so the editor is the one surface for a game
19
+ in development.
20
+
21
+ Always invoke the scaffold-pinned CLI as `npm run --silent vgai -- <verb>`. Never use
22
+ a bare global `vgai` command, which may come from a different checkout.
23
+
24
+ ## Verify the loop
25
+
26
+ - Use `play`, `stop`, `status`, and `screenshot` to observe work — selection,
27
+ focus, and panels go through the eval door (`npx volter-game-editor eval
28
+ 'editor.select("<id>")'` / `editor.focus()` / `editor.showPanel(...)`);
29
+ edit project source directly when that is the simplest authoring path.
30
+ - Use `restart` after init-time registrations, listeners, resources, or
31
+ ownership changes. Ordinary component HMR does not rerun `init()`. Its ack
32
+ IS the readiness guarantee (relay up, tab attached, play running); a
33
+ failure names the next step.
34
+ - Playtest LIVE from first playability: exported setup functions arrange the
35
+ situation, the resident tester is hired through its running module, and the
36
+ event log is read on an interval while the run is redirected until
37
+ satisfied. The play log is the receipt.
38
+ - Read persisted Play logs and visible pixels as well as state. Screenshots
39
+ must make the result being claimed legible.
40
+ - **Every `npx volter-game-editor play` records video automatically** — the ack prints the
41
+ recording path (`.vgai/recordings/play-latest.webm`, replaced by the next
42
+ play; `npx volter-game-editor play --record <name>` keeps a clip forever), play auto-stops
43
+ after 2 idle minutes, and stopping finalizes the WebM. A claim about
44
+ MOTION (an effect, an animation, a stutter, anything that lives between
45
+ frames) is judged from that clip: find the moment via the play log's
46
+ event timestamps against the recording's start time, then examine at
47
+ least 10 frames within a ≤5-second span around it. `npx volter-game-editor screenshot`
48
+ while play is running refuses and points at the clip; screenshots are for
49
+ static states.
50
+
51
+ Read [references/editor-control.md](references/editor-control.md) when exact
52
+ CLI verbs, connection behavior, E2E exit codes, SDK methods, or worked command
53
+ sequences are needed.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Control the VGAI Editor"
3
+ short_description: "Operate and inspect the live VGAI editor"
4
+ default_prompt: "Use $editor to open, control, inspect, and verify this game in the VGAI editor."