evomeme 0.1.9 → 0.1.10

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 (405) hide show
  1. package/dist/canvas-public/app.js +509 -5999
  2. package/dist/canvas-public/assets/presets/catalog.json +47 -0
  3. package/dist/canvas-public/assets/presets/tiles/A_01_CaoDi.png +0 -0
  4. package/dist/canvas-public/assets/presets/tiles/A_02_ShaMo.png +0 -0
  5. package/dist/canvas-public/assets/presets/tiles/A_03_TianKong.png +0 -0
  6. package/dist/canvas-public/assets/presets/tiles/A_04_ShuiBo.png +0 -0
  7. package/dist/canvas-public/assets/presets/tiles/A_05_HaiMian.png +0 -0
  8. package/dist/canvas-public/assets/presets/tiles/A_06_MuDiBan.png +0 -0
  9. package/dist/canvas-public/assets/presets/tiles/A_07_ShiZhuan.png +0 -0
  10. package/dist/canvas-public/assets/presets/tiles/A_08_AnRongYan.png +0 -0
  11. package/dist/canvas-public/assets/presets/tiles/A_09_QingTaiShi.png +0 -0
  12. package/dist/canvas-public/assets/presets/tiles/A_10_ShenHai.png +0 -0
  13. package/dist/canvas-public/assets/presets/tiles/A_11_HuiYanShi.png +0 -0
  14. package/dist/canvas-public/assets/presets/tiles/A_12_HongTu.png +0 -0
  15. package/dist/canvas-public/assets/presets/tiles/A_13_GengDi.png +0 -0
  16. package/dist/canvas-public/assets/presets/tiles/A_14_HuoShanYan.png +0 -0
  17. package/dist/canvas-public/assets/presets/tiles/A_15_NiTu.png +0 -0
  18. package/dist/canvas-public/assets/presets/tiles/A_16_HuangSha.png +0 -0
  19. package/dist/canvas-public/assets/presets/tiles/A_17_CongLin.png +0 -0
  20. package/dist/canvas-public/assets/presets/tiles/A_18_ZiYanShi.png +0 -0
  21. package/dist/canvas-public/assets/presets/tiles/A_19_MoGuTu.png +0 -0
  22. package/dist/canvas-public/assets/presets/tiles/A_20_HuaDian.png +0 -0
  23. package/dist/canvas-public/assets/presets/tiles/A_21_HaiLang.png +0 -0
  24. package/dist/canvas-public/assets/presets/tiles/A_22_GanTu.png +0 -0
  25. package/dist/canvas-public/assets/presets/tiles/A_23_QingTaiShiBan.png +0 -0
  26. package/dist/canvas-public/assets/presets/tiles/A_24_XingKong.png +0 -0
  27. package/dist/canvas-public/assets/presets/tiles/A_25_MoFaFuWen.png +0 -0
  28. package/dist/canvas-public/assets/presets/tiles/A_26_ShiTuYeDi.png +0 -0
  29. package/dist/canvas-public/assets/presets/tiles/A_27_LanZhuan.png +0 -0
  30. package/dist/canvas-public/assets/presets/tiles/A_28_HongZhuan.png +0 -0
  31. package/dist/canvas-public/assets/presets/tiles/A_29_YueQiu.png +0 -0
  32. package/dist/canvas-public/assets/presets/tiles/A_30_JinShuGe.png +0 -0
  33. package/dist/canvas-public/assets/presets/tiles/A_31_JinShuJingGai.png +0 -0
  34. package/dist/canvas-public/assets/presets/tiles/A_32_ShuZiChuang.png +0 -0
  35. package/dist/canvas-public/canvas/actions.js +143 -0
  36. package/dist/canvas-public/canvas/camera.js +28 -0
  37. package/dist/canvas-public/canvas/chrome.js +13 -0
  38. package/dist/canvas-public/canvas/data.js +123 -0
  39. package/dist/canvas-public/canvas/dependencies.js +19 -0
  40. package/dist/canvas-public/canvas/interactions.js +544 -0
  41. package/dist/canvas-public/canvas/panel-resize.js +5 -0
  42. package/dist/canvas-public/canvas/renderer.js +297 -0
  43. package/dist/canvas-public/canvas/selection.js +62 -0
  44. package/dist/canvas-public/canvas/serialization.js +118 -0
  45. package/dist/canvas-public/canvas/sync.js +202 -0
  46. package/dist/canvas-public/core/api.js +27 -0
  47. package/dist/canvas-public/core/feature-registry.js +29 -0
  48. package/dist/canvas-public/core/feature-state.js +228 -0
  49. package/dist/canvas-public/core/layout.js +133 -0
  50. package/dist/canvas-public/core/operations.js +38 -0
  51. package/dist/canvas-public/core/project.js +203 -0
  52. package/dist/canvas-public/core/state.js +27 -0
  53. package/dist/canvas-public/dialogs/context-menu.js +118 -0
  54. package/dist/canvas-public/elements/base.js +100 -0
  55. package/dist/canvas-public/elements/connections.js +105 -0
  56. package/dist/canvas-public/elements/drag.js +53 -0
  57. package/dist/canvas-public/elements/image.js +259 -0
  58. package/dist/canvas-public/elements/loading-recovery.js +5 -0
  59. package/dist/canvas-public/elements/loading.js +21 -0
  60. package/dist/canvas-public/elements/map.js +64 -0
  61. package/dist/canvas-public/elements/registry.js +58 -0
  62. package/dist/canvas-public/elements/replacement.js +78 -0
  63. package/dist/canvas-public/elements/resize.js +210 -0
  64. package/dist/canvas-public/elements/task-pipeline.js +234 -0
  65. package/dist/canvas-public/elements/types.js +21 -0
  66. package/dist/canvas-public/elements/ui.js +14 -0
  67. package/dist/canvas-public/elements/video.js +64 -0
  68. package/dist/canvas-public/features/assets/local-assets.js +72 -0
  69. package/dist/canvas-public/features/assets/official-assets.js +538 -0
  70. package/dist/canvas-public/features/editing/canvas-size.js +532 -0
  71. package/dist/canvas-public/features/editing/color-key.js +469 -0
  72. package/dist/canvas-public/features/editing/cutout.js +20 -0
  73. package/dist/canvas-public/features/editing/interactive-image-editing.js +981 -0
  74. package/dist/canvas-public/features/editing/layer-decomposition.js +44 -0
  75. package/dist/canvas-public/features/editing/manual-split.js +114 -0
  76. package/dist/canvas-public/features/editing/perfect-pixel.js +336 -0
  77. package/dist/canvas-public/features/editing/scroll-preview.js +129 -0
  78. package/dist/canvas-public/features/editing/scroll-seam-elimination.js +71 -0
  79. package/dist/canvas-public/features/editing/seam-elimination.js +46 -0
  80. package/dist/canvas-public/features/editing/smart-split.js +48 -0
  81. package/dist/canvas-public/features/editing/source-preview.js +43 -0
  82. package/dist/canvas-public/features/editing/video-cycle.js +49 -0
  83. package/dist/canvas-public/features/editing/video-frames.js +35 -0
  84. package/dist/canvas-public/features/frame-editor/frame-editing.js +755 -0
  85. package/dist/canvas-public/features/frame-editor/frame-model.js +63 -0
  86. package/dist/canvas-public/features/frame-editor/playback.js +83 -0
  87. package/dist/canvas-public/features/frame-editor/preview.js +149 -0
  88. package/dist/canvas-public/features/generation/animation.js +272 -0
  89. package/dist/canvas-public/features/generation/asset-batch.js +102 -0
  90. package/dist/canvas-public/features/generation/direction.js +163 -0
  91. package/dist/canvas-public/features/generation/fields.js +73 -0
  92. package/dist/canvas-public/features/generation/game-ui.js +64 -0
  93. package/dist/canvas-public/features/generation/image.js +83 -0
  94. package/dist/canvas-public/features/generation/scroll-image.js +157 -0
  95. package/dist/canvas-public/features/generation/seamless-tile.js +52 -0
  96. package/dist/canvas-public/features/generation/tile-transition-atlas.js +79 -0
  97. package/dist/canvas-public/features/generation/video.js +105 -0
  98. package/dist/canvas-public/features/map/creation.js +73 -0
  99. package/dist/canvas-public/features/map/tile-map-editor.js +2518 -0
  100. package/dist/canvas-public/features/registry.js +59 -0
  101. package/dist/canvas-public/index.html +84 -259
  102. package/dist/canvas-public/inspector/controls.js +49 -0
  103. package/dist/canvas-public/inspector/frame-preview.js +11 -0
  104. package/dist/canvas-public/inspector/inspector.js +190 -0
  105. package/dist/canvas-public/inspector/media-inspector.js +517 -0
  106. package/dist/canvas-public/inspector/media-preview.js +56 -0
  107. package/dist/canvas-public/inspector/number-stepper.js +96 -0
  108. package/dist/canvas-public/inspector/resize.js +88 -0
  109. package/dist/canvas-public/inspector/scroll-preview.js +11 -0
  110. package/dist/canvas-public/inspector/ui-inspector.js +14 -0
  111. package/dist/canvas-public/language/en-US.js +1059 -0
  112. package/dist/canvas-public/language/index.js +79 -0
  113. package/dist/canvas-public/language/zh-CN.js +1059 -0
  114. package/dist/canvas-public/map/export.js +9 -0
  115. package/dist/canvas-public/map/inspector.js +8 -0
  116. package/dist/canvas-public/map/model.js +409 -0
  117. package/dist/canvas-public/map/tile-map-editor.js +2 -0
  118. package/dist/canvas-public/media/metadata.js +183 -0
  119. package/dist/canvas-public/media/support.js +183 -0
  120. package/dist/canvas-public/styles/base.css +49 -0
  121. package/dist/canvas-public/styles/canvas.css +127 -0
  122. package/dist/canvas-public/styles/controls.css +203 -0
  123. package/dist/canvas-public/styles/dialogs.css +521 -0
  124. package/dist/canvas-public/styles/feature-form.css +409 -0
  125. package/dist/canvas-public/styles/inspector.css +441 -0
  126. package/dist/canvas-public/styles/layout.css +344 -0
  127. package/dist/canvas-public/styles/map.css +11 -0
  128. package/dist/canvas-public/styles/nodes.css +636 -0
  129. package/dist/canvas-public/styles.css +9 -2247
  130. package/dist/canvas-public/ui/controls.js +222 -0
  131. package/dist/canvas-public/ui/elements.js +9 -0
  132. package/dist/canvas-public/ui/feature-controller.js +296 -0
  133. package/dist/canvas-public/ui/feature-form.js +401 -0
  134. package/dist/canvas-public/ui/settings.js +83 -0
  135. package/dist/canvas-public/ui/toolbar.js +55 -0
  136. package/dist/canvas-public/vendor/pixi-tilemap.js +126 -0
  137. package/dist/canvas-public/vendor/pixi.min.js +2340 -0
  138. package/dist/canvas-public/workers/color-key-worker.js +289 -0
  139. package/dist/canvas-public/workers/perfect-pixel-worker.js +510 -0
  140. package/dist/index.js +42236 -13382
  141. package/dist/skills/en-US/evomeme-canvas/SKILL.md +52 -0
  142. package/dist/skills/en-US/evomeme-canvas/agents/openai.yaml +7 -0
  143. package/dist/skills/en-US/evomeme-cloud-fs/SKILL.md +176 -0
  144. package/dist/skills/en-US/evomeme-cloud-fs/agents/openai.yaml +7 -0
  145. package/dist/skills/en-US/evomeme-cover/SKILL.md +132 -0
  146. package/dist/skills/en-US/evomeme-cover/agents/openai.yaml +7 -0
  147. package/dist/skills/en-US/evomeme-game-maker/SKILL.md +288 -0
  148. package/dist/skills/en-US/evomeme-game-maker/agents/openai.yaml +4 -0
  149. package/dist/skills/en-US/evomeme-login/SKILL.md +92 -0
  150. package/dist/skills/en-US/evomeme-login/agents/openai.yaml +7 -0
  151. package/dist/skills/en-US/evomeme-native-bridge-sdk/SKILL.md +286 -0
  152. package/dist/skills/en-US/evomeme-native-bridge-sdk/agents/openai.yaml +8 -0
  153. package/dist/skills/en-US/evomeme-tos-upload/SKILL.md +47 -0
  154. package/dist/skills/en-US/evomeme-tos-upload/agents/openai.yaml +5 -0
  155. package/dist/skills/en-US/evomeme-ui/SKILL.md +123 -0
  156. package/dist/skills/en-US/evomeme-ui/agents/openai.yaml +4 -0
  157. package/dist/skills/en-US/evomeme-ui/references/host-layout.md +69 -0
  158. package/dist/skills/en-US/game-art/SKILL.md +121 -0
  159. package/dist/skills/en-US/game-art/agents/openai.yaml +8 -0
  160. package/dist/skills/en-US/game-asset-align/SKILL.md +45 -0
  161. package/dist/skills/en-US/game-asset-align/agents/openai.yaml +8 -0
  162. package/dist/skills/en-US/game-asset-align/references/alignment-contract.md +61 -0
  163. package/dist/skills/en-US/game-asset-align/references/blender-scene-pipeline.md +45 -0
  164. package/dist/skills/en-US/game-asset-align/references/canonical-package.md +26 -0
  165. package/dist/skills/en-US/game-asset-align/references/engine-capabilities.md +14 -0
  166. package/dist/skills/en-US/game-asset-align/references/lightweight-review.md +32 -0
  167. package/dist/skills/en-US/game-asset-align/references/repair-policy.md +30 -0
  168. package/dist/skills/en-US/game-asset-align/references/tool-contract.md +39 -0
  169. package/dist/skills/en-US/game-asset-align/references/visual-review.md +26 -0
  170. package/dist/skills/en-US/game-asset-image-generator/SKILL.md +104 -0
  171. package/dist/skills/en-US/game-asset-image-generator/agents/openai.yaml +7 -0
  172. package/dist/skills/en-US/game-asset-image-generator/references/background.md +32 -0
  173. package/dist/skills/en-US/game-asset-image-generator/references/static-game-assets.md +38 -0
  174. package/dist/skills/en-US/game-audio/SKILL.md +82 -0
  175. package/dist/skills/en-US/game-audio/agents/openai.yaml +4 -0
  176. package/dist/skills/en-US/game-demo/SKILL.md +103 -0
  177. package/dist/skills/en-US/game-demo/agents/openai.yaml +7 -0
  178. package/dist/skills/en-US/game-maker/SKILL.md +111 -0
  179. package/dist/skills/en-US/game-maker/agents/openai.yaml +4 -0
  180. package/dist/skills/en-US/game-test/SKILL.md +58 -0
  181. package/dist/skills/en-US/game-test/agents/openai.yaml +7 -0
  182. package/dist/skills/en-US/game-ui/SKILL.md +177 -0
  183. package/dist/skills/en-US/game-ui/agents/openai.yaml +4 -0
  184. package/dist/skills/en-US/godot-3d-game/SKILL.md +39 -0
  185. package/dist/skills/en-US/godot-3d-game/agents/openai.yaml +8 -0
  186. package/dist/skills/en-US/godot-3d-game/references/alignment-gates.md +26 -0
  187. package/dist/skills/en-US/godot-3d-game/references/appearance-alignment.md +52 -0
  188. package/dist/skills/en-US/godot-3d-game/references/build-and-qa.md +22 -0
  189. package/dist/skills/en-US/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  190. package/dist/skills/en-US/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  191. package/dist/skills/en-US/godot-3d-game/references/physics-colliders.md +13 -0
  192. package/dist/skills/en-US/godot-3d-game/references/project-structure.md +22 -0
  193. package/dist/skills/en-US/godot-3d-game/references/skeleton-animation.md +16 -0
  194. package/dist/skills/en-US/phaser-2d-game/SKILL.md +127 -0
  195. package/dist/skills/en-US/phaser-2d-game/agents/openai.yaml +8 -0
  196. package/dist/skills/en-US/phaser-2d-game/references/engine-performance.md +64 -0
  197. package/dist/skills/en-US/phaser-2d-game/references/engine-physics.md +139 -0
  198. package/dist/skills/en-US/phaser-2d-game/references/engine-runtime.md +129 -0
  199. package/dist/skills/en-US/phaser-2d-game/references/engine-spritesheets.md +99 -0
  200. package/dist/skills/en-US/phaser-2d-game/references/engine-tilemaps.md +80 -0
  201. package/dist/skills/en-US/phaser-2d-game/references/file-structure.md +94 -0
  202. package/dist/skills/en-US/phaser-2d-graphics-builder/SKILL.md +68 -0
  203. package/dist/skills/en-US/phaser-2d-graphics-builder/agents/openai.yaml +7 -0
  204. package/dist/skills/en-US/threejs-3d-game/SKILL.md +117 -0
  205. package/dist/skills/en-US/threejs-3d-game/agents/openai.yaml +7 -0
  206. package/dist/skills/en-US/threejs-3d-game/references/engine-asset-pipeline.md +153 -0
  207. package/dist/skills/en-US/threejs-3d-game/references/engine-audio.md +70 -0
  208. package/dist/skills/en-US/threejs-3d-game/references/engine-input-camera.md +84 -0
  209. package/dist/skills/en-US/threejs-3d-game/references/engine-performance.md +96 -0
  210. package/dist/skills/en-US/threejs-3d-game/references/engine-physics.md +142 -0
  211. package/dist/skills/en-US/threejs-3d-game/references/engine-runtime.md +199 -0
  212. package/dist/skills/en-US/threejs-3d-game/references/file-structure.md +353 -0
  213. package/dist/skills/en-US/threejs-aaa-graphics-builder/SKILL.md +62 -0
  214. package/dist/skills/en-US/threejs-aaa-graphics-builder/agents/openai.yaml +7 -0
  215. package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/SKILL.md +4 -4
  216. package/{skills → dist/skills/zh-CN}/evomeme-cover/SKILL.md +1 -1
  217. package/{skills → dist/skills/zh-CN}/evomeme-game-maker/SKILL.md +91 -88
  218. package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/SKILL.md +6 -5
  219. package/dist/skills/zh-CN/evomeme-ui/SKILL.md +123 -0
  220. package/dist/skills/zh-CN/evomeme-ui/agents/openai.yaml +4 -0
  221. package/dist/skills/zh-CN/evomeme-ui/references/host-layout.md +69 -0
  222. package/dist/skills/zh-CN/game-asset-align/SKILL.md +45 -0
  223. package/dist/skills/zh-CN/game-asset-align/agents/openai.yaml +8 -0
  224. package/dist/skills/zh-CN/game-asset-align/references/alignment-contract.md +61 -0
  225. package/dist/skills/zh-CN/game-asset-align/references/blender-scene-pipeline.md +45 -0
  226. package/dist/skills/zh-CN/game-asset-align/references/canonical-package.md +26 -0
  227. package/dist/skills/zh-CN/game-asset-align/references/engine-capabilities.md +14 -0
  228. package/dist/skills/zh-CN/game-asset-align/references/lightweight-review.md +32 -0
  229. package/dist/skills/zh-CN/game-asset-align/references/repair-policy.md +30 -0
  230. package/dist/skills/zh-CN/game-asset-align/references/tool-contract.md +39 -0
  231. package/dist/skills/zh-CN/game-asset-align/references/visual-review.md +26 -0
  232. package/{skills → dist/skills/zh-CN}/game-asset-image-generator/SKILL.md +1 -1
  233. package/dist/skills/zh-CN/game-audio/references/bgm-cdn.md +127 -0
  234. package/dist/skills/zh-CN/game-audio/references/sfx-cdn.md +77 -0
  235. package/dist/skills/zh-CN/game-test/references/checklists/playtest-qa.md +12 -0
  236. package/{skills → dist/skills/zh-CN}/game-ui/SKILL.md +9 -1
  237. package/dist/skills/zh-CN/game-ui/references/checklists/game-ui-quality.md +14 -0
  238. package/dist/skills/zh-CN/game-ui/references/checklists/hud-readability.md +12 -0
  239. package/dist/skills/zh-CN/game-ui/references/checklists/mobile-input.md +12 -0
  240. package/dist/skills/zh-CN/game-ui/references/checklists/responsive-ui-fit.md +12 -0
  241. package/dist/skills/zh-CN/game-ui/references/ui-patterns.md +140 -0
  242. package/dist/skills/zh-CN/game-ui/references/ui-prompt-templates.md +63 -0
  243. package/dist/skills/zh-CN/godot-3d-game/SKILL.md +39 -0
  244. package/dist/skills/zh-CN/godot-3d-game/agents/openai.yaml +8 -0
  245. package/dist/skills/zh-CN/godot-3d-game/references/alignment-gates.md +26 -0
  246. package/dist/skills/zh-CN/godot-3d-game/references/appearance-alignment.md +52 -0
  247. package/dist/skills/zh-CN/godot-3d-game/references/build-and-qa.md +22 -0
  248. package/dist/skills/zh-CN/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  249. package/dist/skills/zh-CN/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  250. package/dist/skills/zh-CN/godot-3d-game/references/physics-colliders.md +13 -0
  251. package/dist/skills/zh-CN/godot-3d-game/references/project-structure.md +22 -0
  252. package/dist/skills/zh-CN/godot-3d-game/references/skeleton-animation.md +16 -0
  253. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  254. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  255. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  256. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/compose-quality.md +10 -0
  257. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +9 -0
  258. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +15 -0
  259. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +10 -0
  260. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +9 -0
  261. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +9 -0
  262. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/compose-recipes.md +71 -0
  263. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +33 -0
  264. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/implementation-blueprint.md +82 -0
  265. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/sprite-recipes.md +90 -0
  266. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/technical-art.md +67 -0
  267. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/vfx-recipes.md +67 -0
  268. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/visual-scorecard.md +129 -0
  269. package/{skills → dist/skills/zh-CN}/threejs-3d-game/SKILL.md +6 -2
  270. package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-asset-pipeline.md +52 -15
  271. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  272. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  273. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  274. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +23 -0
  275. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +19 -0
  276. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +14 -0
  277. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +14 -0
  278. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +15 -0
  279. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +17 -0
  280. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +236 -0
  281. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/implementation-blueprint.md +161 -0
  282. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/model-recipes.md +146 -0
  283. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/render-recipes.md +90 -0
  284. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/shader-cookbook.md +292 -0
  285. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/technical-art.md +167 -0
  286. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/visual-scorecard.md +147 -0
  287. package/dist/stage-blender/bake_materials.py +102 -0
  288. package/dist/stage-blender/export_scene.py +275 -0
  289. package/dist/stage-blender/preview_camera.py +90 -0
  290. package/dist/stage-blender/repair_mesh.py +112 -0
  291. package/dist/stage-public/app.js +759 -0
  292. package/dist/stage-public/baked/bakePilot.js +44 -0
  293. package/dist/stage-public/baked/bakedScene.js +129 -0
  294. package/dist/stage-public/baked/sceneAppearance.js +225 -0
  295. package/dist/stage-public/baked/sceneCamera.js +45 -0
  296. package/dist/stage-public/comparison-contract.js +28 -0
  297. package/dist/stage-public/delivery.html +4 -0
  298. package/dist/stage-public/delivery.js +17 -0
  299. package/dist/stage-public/godot/appearance.gd +170 -0
  300. package/dist/stage-public/godot/preview.gd +79 -0
  301. package/dist/stage-public/index.html +141 -0
  302. package/dist/stage-public/review-app.js +289 -0
  303. package/dist/stage-public/review-runtime.js +63 -0
  304. package/dist/stage-public/review.css +24 -0
  305. package/dist/stage-public/review.html +47 -0
  306. package/dist/stage-public/scene-runtime.js +212 -0
  307. package/dist/stage-public/sceneContractRuntime.js +235 -0
  308. package/dist/stage-public/styles.css +328 -0
  309. package/dist/stage-public/three-appearance.js +104 -0
  310. package/dist/stage-public/vendor/three170/LICENSE +21 -0
  311. package/dist/stage-public/vendor/three170/build/three.module.js +54571 -0
  312. package/dist/stage-public/vendor/three170/examples/jsm/controls/OrbitControls.js +1523 -0
  313. package/dist/stage-public/vendor/three170/examples/jsm/environments/RoomEnvironment.js +144 -0
  314. package/dist/stage-public/vendor/three170/examples/jsm/libs/fflate.module.js +2672 -0
  315. package/dist/stage-public/vendor/three170/examples/jsm/loaders/EXRLoader.js +2563 -0
  316. package/dist/stage-public/vendor/three170/examples/jsm/loaders/GLTFLoader.js +4727 -0
  317. package/dist/stage-public/vendor/three170/examples/jsm/utils/BufferGeometryUtils.js +1373 -0
  318. package/dist/tile-transition-mask.svg +40 -0
  319. package/package.json +21 -7
  320. package/dist/canvas-public/cycle-detect.js +0 -166
  321. package/dist/canvas-public/smart-split.js +0 -185
  322. /package/{skills → dist/skills/en-US}/game-audio/references/bgm-cdn.md +0 -0
  323. /package/{skills → dist/skills/en-US}/game-audio/references/sfx-cdn.md +0 -0
  324. /package/{skills → dist/skills/en-US}/game-test/references/checklists/playtest-qa.md +0 -0
  325. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/game-ui-quality.md +0 -0
  326. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/hud-readability.md +0 -0
  327. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/mobile-input.md +0 -0
  328. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/responsive-ui-fit.md +0 -0
  329. /package/{skills → dist/skills/en-US}/game-ui/references/ui-patterns.md +0 -0
  330. /package/{skills → dist/skills/en-US}/game-ui/references/ui-prompt-templates.md +0 -0
  331. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  332. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  333. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  334. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/compose-quality.md +0 -0
  335. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  336. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +0 -0
  337. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +0 -0
  338. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  339. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +0 -0
  340. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/compose-recipes.md +0 -0
  341. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +0 -0
  342. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/implementation-blueprint.md +0 -0
  343. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/sprite-recipes.md +0 -0
  344. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/technical-art.md +0 -0
  345. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/vfx-recipes.md +0 -0
  346. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/visual-scorecard.md +0 -0
  347. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  348. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  349. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  350. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +0 -0
  351. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +0 -0
  352. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +0 -0
  353. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  354. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +0 -0
  355. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  356. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +0 -0
  357. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/implementation-blueprint.md +0 -0
  358. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/model-recipes.md +0 -0
  359. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/render-recipes.md +0 -0
  360. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/shader-cookbook.md +0 -0
  361. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/technical-art.md +0 -0
  362. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/visual-scorecard.md +0 -0
  363. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/SKILL.md +0 -0
  364. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/agents/openai.yaml +0 -0
  365. /package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/agents/openai.yaml +0 -0
  366. /package/{skills → dist/skills/zh-CN}/evomeme-cover/agents/openai.yaml +0 -0
  367. /package/{skills → dist/skills/zh-CN}/evomeme-game-maker/agents/openai.yaml +0 -0
  368. /package/{skills → dist/skills/zh-CN}/evomeme-login/SKILL.md +0 -0
  369. /package/{skills → dist/skills/zh-CN}/evomeme-login/agents/openai.yaml +0 -0
  370. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/SKILL.md +0 -0
  371. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/agents/openai.yaml +0 -0
  372. /package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/agents/openai.yaml +0 -0
  373. /package/{skills → dist/skills/zh-CN}/game-art/SKILL.md +0 -0
  374. /package/{skills → dist/skills/zh-CN}/game-art/agents/openai.yaml +0 -0
  375. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/agents/openai.yaml +0 -0
  376. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/background.md +0 -0
  377. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/static-game-assets.md +0 -0
  378. /package/{skills → dist/skills/zh-CN}/game-audio/SKILL.md +0 -0
  379. /package/{skills → dist/skills/zh-CN}/game-audio/agents/openai.yaml +0 -0
  380. /package/{skills → dist/skills/zh-CN}/game-demo/SKILL.md +0 -0
  381. /package/{skills → dist/skills/zh-CN}/game-demo/agents/openai.yaml +0 -0
  382. /package/{skills → dist/skills/zh-CN}/game-maker/SKILL.md +0 -0
  383. /package/{skills → dist/skills/zh-CN}/game-maker/agents/openai.yaml +0 -0
  384. /package/{skills → dist/skills/zh-CN}/game-test/SKILL.md +0 -0
  385. /package/{skills → dist/skills/zh-CN}/game-test/agents/openai.yaml +0 -0
  386. /package/{skills → dist/skills/zh-CN}/game-ui/agents/openai.yaml +0 -0
  387. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/SKILL.md +0 -0
  388. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/agents/openai.yaml +0 -0
  389. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-performance.md +0 -0
  390. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-physics.md +0 -0
  391. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-runtime.md +0 -0
  392. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-spritesheets.md +0 -0
  393. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-tilemaps.md +0 -0
  394. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/file-structure.md +0 -0
  395. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/SKILL.md +0 -0
  396. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/agents/openai.yaml +0 -0
  397. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/agents/openai.yaml +0 -0
  398. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-audio.md +0 -0
  399. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-input-camera.md +0 -0
  400. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-performance.md +0 -0
  401. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-physics.md +0 -0
  402. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-runtime.md +0 -0
  403. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/file-structure.md +0 -0
  404. /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/SKILL.md +0 -0
  405. /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/agents/openai.yaml +0 -0
@@ -0,0 +1,199 @@
1
+ # Engine Runtime (R3F / Three.js)
2
+
3
+ This file defines R3F / Three.js **engine-layer** conventions (see `file-structure.md`). It does not include design, levels, or game-feel juice recipes.
4
+
5
+ Load this file when writing/modifying runtime, Canvas/gl defaults, loops, lifecycle, blank-screen/double-loop issues, dispose, diagnostic hooks, or R3F loading boundaries.
6
+
7
+ ## Directory and Ownership Mapping
8
+
9
+ | Responsibility | Location in This Project |
10
+ | --- | --- |
11
+ | DOM startup, CSS | `main.tsx` / `App.tsx` / `index.css` |
12
+ | Renderer, Canvas, pixel ratio | `ui/components/GameCanvas.tsx` (R3F `<Canvas>`) |
13
+ | Frame-loop orchestration | `useFrame` in `GameCanvas` (do not start another `requestAnimationFrame`) |
14
+ | Input collection -> semantic actions | `game/input` |
15
+ | Rules / state / fixed-step physics | `game/simulation` (no Three / React) |
16
+ | Camera, world meshes, mixer | `game/three/*` (no React) + `useFrame` sync |
17
+ | UI bridge | `game/bridge` + `src/ui` |
18
+ | Asset keys / loading | `game/assets` + `game/three` loading helpers |
19
+ | Diagnostics / test hooks | Installed when `GameCanvas` mounts, cleaned up on unmount |
20
+
21
+ ## Canvas / Renderer Defaults
22
+
23
+ **MUST NOT** create another `new THREE.WebGLRenderer` outside `GameCanvas`. The only WebGL entry point is R3F `<Canvas>`.
24
+
25
+ Recommended defaults (can be tuned per project, but must be set explicitly; do not rely on implicit defaults):
26
+
27
+ ```tsx
28
+ import { Canvas } from '@react-three/fiber';
29
+ import * as THREE from 'three';
30
+
31
+ <Canvas
32
+ shadows
33
+ dpr={[1, 2]} // Pixel ratio cap 2
34
+ gl={{
35
+ antialias: true,
36
+ alpha: false,
37
+ powerPreference: 'high-performance',
38
+ outputColorSpace: THREE.SRGBColorSpace,
39
+ toneMapping: THREE.ACESFilmicToneMapping,
40
+ toneMappingExposure: 1.05,
41
+ }}
42
+ camera={{ fov: 50, near: 0.1, far: 500, position: [0, 5, 10] }}
43
+ >
44
+ {/* World + useFrame orchestration */}
45
+ </Canvas>
46
+ ```
47
+
48
+ Rules:
49
+
50
+ - Leave resize / aspect to R3F; do not use CSS `transform: scale` to pretend the canvas was resized.
51
+ - Shadows: `shadows` + light `castShadow`; mobile may turn off or reduce cascades (see `engine-performance.md`).
52
+ - Color space and tone mapping must be consistent with imported PBR; if too dark/bright, check here and ambient light first, then change assets.
53
+ - Deeper lighting/postprocessing recipes belong to `threejs-aaa-graphics-builder`; this file only sets startup defaults.
54
+
55
+ ## Frame Update Order
56
+
57
+ Keep an explicit order every frame (under R3F, orchestrated by `useFrame`; rendering is left to R3F):
58
+
59
+ ```text
60
+ input intents
61
+ -> fixed physics (if any, accumulator)
62
+ -> gameplay / simulation systems
63
+ -> animation / mixer / VFX sockets
64
+ -> camera
65
+ -> UI bridge (emit facts / write store)
66
+ -> (R3F automatically renders; unless offscreen, do not manually call renderer.render)
67
+ ```
68
+
69
+ Rules:
70
+
71
+ - `useFrame` only orchestrates; it does not write core win/loss/combat rules.
72
+ - A second active `requestAnimationFrame` game loop MUST NOT compete with R3F rendering.
73
+ - Use frame intervals in seconds; clamp sleep/stutter (common scaffold upper bound around `0.05`-`0.1` seconds).
74
+
75
+ ```ts
76
+ // Inside useFrame: delta is already seconds; clamp is still recommended
77
+ const dt = Math.min(state.clock.getDelta(), 0.05);
78
+ ```
79
+
80
+ ### `useFrame` Priority (Recommended)
81
+
82
+ R3F: in `useFrame(fn, priority)`, **higher priority runs earlier**; default is `0`; **negative numbers run after the default render**.
83
+
84
+ | priority | Content |
85
+ | --- | --- |
86
+ | `> 0` (such as `1`) | Input sampling -> fixed-step physics -> simulation |
87
+ | `0` (default) | `Object3D` sync, mixer, VFX socket, camera follow |
88
+ | `< 0` | Diagnostic sampling only / hooks that need to read finished frame results (optional) |
89
+
90
+ Do not register multiple competing `useFrame` writers for the same responsibility. Fixed-step physics details are in `engine-physics.md`.
91
+
92
+ ## R3F Policy
93
+
94
+ ### Loading Boundaries
95
+
96
+ - **Formal game assets** (GLB/texture keys, failure placeholders, manifest): place in `game/assets` + `game/three` loading helpers; triggered once by `GameCanvas` / world root.
97
+ - `useLoader` / `<Suspense>`: only for explicit mount-boundary prototypes or local helpers; **do not** have every entity component separately `useLoader` the same URL without a unified cache/dispose strategy.
98
+ - Business code does not hardcode glTF URLs; it goes through manifest / `config.json`.
99
+
100
+ ### `@react-three/drei` Allowlist
101
+
102
+ | Usable (Carefully) | Prohibited as Formal Solution |
103
+ | --- | --- |
104
+ | Development-oriented Helpers, lightweight environment/HDR helpers (toggleable) | Piling formal HUD / menus / settings into `<Html>` |
105
+ | Explicitly needed `OrbitControls` (edit/inspect mode; gameplay mode must be toggleable) | Using drei controls to bypass `game/input` semantic actions |
106
+ | | Replacing `src/ui` with in-Canvas DOM |
107
+
108
+ Formal HUD, virtual joystick, settings panels -> React DOM (`src/ui`).
109
+
110
+ ### Other
111
+
112
+ - `game/three/*` **MUST NOT** `import` React / R3F hooks.
113
+ - StrictMode double-mount: subscriptions and WebGL resource creation MUST be idempotent and cleanable.
114
+
115
+ ## First Runnable Slice (Engine Minimum)
116
+
117
+ Have these engine-side pieces first, then discuss content density:
118
+
119
+ 1. Canvas + scene root + resize / camera aspect (including the gl/dpr defaults above)
120
+ 2. Single update path (`useFrame`)
121
+ 3. Input -> semantic action -> one simulation step
122
+ 4. `Object3D` sync for at least one movable entity
123
+ 5. Minimal collision or trigger detection (custom or physics)
124
+ 6. Resource and listener cleanup on failure/restart
125
+ 7. Diagnostic hooks (see below)
126
+
127
+ Reject: view-only without control; leftover entities/listeners/physics bodies after restart; competing multiple loops.
128
+
129
+ ## Lifecycle and dispose
130
+
131
+ StrictMode will double-mount; unmount must be repeatable and idempotent.
132
+
133
+ MUST clean up:
134
+
135
+ - Geometry, materials, textures (including maps attached to materials)
136
+ - `AnimationMixer` and clip actions
137
+ - Physics world / body / collider
138
+ - `gameBus` subscriptions, DOM / window listeners
139
+ - Diagnostics and test hooks (`window.__THREE_GAME_*`)
140
+ - In-game audio loops / short SFX (see `engine-audio.md`)
141
+
142
+ ```ts
143
+ import * as THREE from 'three';
144
+
145
+ export function disposeObject3D(root: THREE.Object3D): void {
146
+ root.traverse((object) => {
147
+ const mesh = object as THREE.Mesh;
148
+ if (mesh.geometry) mesh.geometry.dispose();
149
+ const materials = Array.isArray(mesh.material)
150
+ ? mesh.material
151
+ : mesh.material
152
+ ? [mesh.material]
153
+ : [];
154
+ for (const material of materials) {
155
+ for (const value of Object.values(material as unknown as Record<string, unknown>)) {
156
+ if (value && typeof value === 'object' && (value as { isTexture?: boolean }).isTexture) {
157
+ (value as THREE.Texture).dispose();
158
+ }
159
+ }
160
+ material.dispose();
161
+ }
162
+ });
163
+ }
164
+ ```
165
+
166
+ ## Diagnostic Hooks
167
+
168
+ Install when `GameCanvas` mounts and clean up on unmount (types written in `vite-env.d.ts`):
169
+
170
+ - `window.__THREE_GAME_DIAGNOSTICS__`: renderer info, simulation snapshot, input state, entity count, physics body/collider counts (if any), DPR/shadow summary
171
+ - `window.__THREE_GAME_TEST_HOOKS__`: `seed` / `setState` / `setPausedForScreenshot` / `setReducedMotion` / `hideDebugUi`
172
+
173
+ Put deterministic random in `simulation` or `lib/random`; bare `Math.random` is prohibited in business paths.
174
+
175
+ ## Engine Failure Triage (Runtime)
176
+
177
+ | Symptom | Check First |
178
+ | --- | --- |
179
+ | Blank screen / empty canvas | Canvas DOM and CSS dimensions; WebGL context; whether there is only one loop; camera near/far/orientation; whether the scene has visible objects and lights; whether overlay covers Canvas; whether resize updates aspect; whether color space/exposure "hides" objects |
180
+ | Enters but cannot move | Whether input produces intent; whether simulation steps; whether `Object3D` syncs from simulation; whether code is in the wrong layer |
181
+ | Slower over time / leak | dispose; whether geometry/material/audio sources are created every frame; whether bus subscriptions stack -> `engine-performance.md` |
182
+ | Restart anomalies | Whether entities, timers, mixers, physics bodies, listeners, and audio are cleaned up on restart paths |
183
+ | Low-frame jitter | delta clamp; whether physics incorrectly uses variable timestep; whether DPR is too high |
184
+ | No sound | Whether AudioContext was not unlocked -> `engine-audio.md` |
185
+
186
+ More detailed asset/audio/performance acceptance checklists are in `../game-test`; this file only retains engine ownership decisions.
187
+
188
+ ## Engine Anti-Patterns
189
+
190
+ - Writing rules source of truth in `useFrame` or HUD
191
+ - A second rAF loop + double rendering with R3F; or an extra `new WebGLRenderer`
192
+ - `game/three` imports React
193
+ - Using `<Html>` as a replacement for formal DOM HUD
194
+ - Entity components each use `useLoader` without unified dispose
195
+ - Visual mesh as collider
196
+ - Syncing physics -> visual transforms in multiple places
197
+ - Restart without dispose / listener removal
198
+ - Hardcoded tunable parameters instead of `public/config.json`
199
+ - Business code hardcodes glTF/texture URLs (should go through manifest / config)
@@ -0,0 +1,353 @@
1
+ # 3D Game File Structure Specification
2
+
3
+ This document defines the standard file structure for browser 3D games. The project is a Vite + React + React Three Fiber application: the 3D view is managed by R3F / Three.js, and the DOM UI is managed by React. **This is the only normative source for all 3D code structure and config files in this plugin**. `game-director`, `game-designer`, `game-art`, `threejs-aaa-graphics-builder`, and `game-test` MUST follow this file when a 3D project's config or directory structure is involved.
4
+
5
+ **Core principle:** React Three Fiber (`<Canvas>`) owns the 3D / WebGL world; React DOM (`src/ui`) owns all formal HUDs, menus, dialogs, settings, inventory, quests, and narrative panels. R3F `<Html>` MUST NOT replace the formal HUD. Cross-layer communication goes through the **event bus**, **input actions**, and explicit **simulation state**.
6
+
7
+ ## `/public/config.json` Rules
8
+
9
+ `/public/config.json` is the game's external runtime configuration file and is output unchanged as `/dist/config.json` after build.
10
+
11
+ ### Storage Rules
12
+
13
+ 1. All user-tunable colors, gameplay parameters, balance values, and asset URLs MUST be written into `/public/config.json`; hardcoding them in business code is prohibited.
14
+ 2. Game code MUST read config through `fetch("./config.json")` (relative path); using the absolute path `/config.json` is prohibited; directly `import config.json` from the `src` directory is prohibited.
15
+ 3. The same user-tunable value MUST NOT be repeatedly hardcoded in React, R3F, Three, or CSS.
16
+
17
+ ### Structure Requirement: Strictly Flat
18
+
19
+ config **MUST be a flat top-level object**. Each parameter is a direct top-level key. Grouping by `assets`, `images`, `gameplay`, `colors`, `params`, etc. is **prohibited**:
20
+
21
+ ```json
22
+ // Correct - flat
23
+ { "image_background": { ... }, "player_move_speed": { ... } }
24
+
25
+ // Wrong - nested groups are prohibited
26
+ { "assets": { "background": { ... } }, "gameplay": { "speed": { ... } } }
27
+ ```
28
+
29
+ Each key falls into one of two categories:
30
+
31
+ - **Visible parameters** (keys that do not start with `_`): exposed for user editing and MUST use the standard schema below.
32
+ - **Invisible parameters** (keys that start with `_`): internal fields (such as `_game_name`, `_config_version`); raw values are allowed and the schema is not used.
33
+
34
+ ### Visible Parameter Schema
35
+
36
+ ```json
37
+ "key_name": {
38
+ "value": <actual value>,
39
+ "type": "int" | "float" | "color" | "bool" | "string" | "audio" | "image" | "video",
40
+ "label": "<user-language label, <=10 chars>",
41
+ "min": <number>,
42
+ "max": <number>
43
+ }
44
+ ```
45
+
46
+ Rules:
47
+
48
+ - `type` can only be `int`, `float`, `color`, `bool`, `string`, `audio`, `image`, or `video`.
49
+ - `label` uses the user's language and is at most 10 characters long.
50
+ - `min`/`max` appear only for `int`/`float`, and both MUST be provided together.
51
+ - `type: "color"` uses a hexadecimal color string.
52
+ - `type: "image"` MUST additionally declare `"image_type": "Asset"` and `"size": "widthxheight"` (for example `"1440x2560"`) so display size can be judged when true image dimensions cannot be read.
53
+ - For `audio`/`image`/`video`, `value` MUST be a real accessible external `http(s)` URL; local relative paths are prohibited. Images/meshes are generated asynchronously upstream; a transient 404 URL does not mean the asset is invalid, and the asset MUST NOT be rewritten, replaced, or deleted for that reason.
54
+
55
+ ### Example
56
+
57
+ ```json
58
+ {
59
+ "_game_name": "Example 3D Game",
60
+ "_config_version": 1,
61
+ "player_move_speed": { "value": 4.5, "type": "float", "label": "Move Speed", "min": 1, "max": 12 },
62
+ "camera_follow_lag": { "value": 0.12, "type": "float", "label": "Cam Lag", "min": 0.01, "max": 0.5 },
63
+ "theme_background_color": { "value": "#0b1020", "type": "color", "label": "Bg Color" },
64
+ "enable_shake": { "value": true, "type": "bool", "label": "Shake" },
65
+ "start_button_text": { "value": "Start Game", "type": "string", "label": "Start Text" },
66
+ "bgm_main": { "value": "https://example.com/bgm.mp3", "type": "audio", "label": "BGM" },
67
+ "model_player": {
68
+ "value": "https://example.com/player.glb",
69
+ "type": "string",
70
+ "label": "Player"
71
+ }
72
+ }
73
+ ```
74
+
75
+ Code-side read pattern:
76
+
77
+ ```ts
78
+ await loadConfig()
79
+ const speed = getSetting<number>('player_move_speed', 4.5)
80
+ ```
81
+
82
+ ## `/user_upload` Directory Rules
83
+
84
+ `/user_upload` is a virtual directory for user-uploaded assets. Files under it are not real asset files; they only store asset links or metadata.
85
+
86
+ 1. When user-uploaded assets are needed, first read the corresponding file under `/user_upload` and extract the real URL.
87
+ 2. Do not treat `/user_upload/...` as a local asset path; final code MUST reference the extracted real URL.
88
+
89
+ ## Deployment and Path Rules
90
+
91
+ 1. The final deployment artifact is fixed as `/dist`, deployed as a static site, and runtime resources MUST be directly accessible by the browser.
92
+ 2. `/dist` MUST run independently of the source directory: all runtime code, resources, chunks, CSS, audio, images, models, and configuration may reference only files inside `/dist` or external `http(s)` links. Relative paths or build-artifact internal paths MUST be used, and runtime references pointing to the source directory are strictly prohibited.
93
+ 3. `vite.config.ts` MUST set `base: './'`, making build artifacts use relative paths (`./assets/...`) so they work when deployed under any subpath.
94
+ 4. All runtime string paths (`fetch`, `Audio`, dynamic `import`, CSS `url()`, `GLTFLoader`) MUST use `./` relative paths or external `http(s)` URLs. Absolute paths starting with `/` (site root paths) are prohibited.
95
+
96
+ ## Required Files at Project Root
97
+
98
+ - `/project.md`: the only source of game requirements (design document); all subsequent development is based on this file.
99
+ - `/public/config.json`: the runtime configuration and asset-binding contract.
100
+ - `/src`: Vite + React + R3F source code.
101
+ - `/dist`: build artifact and deliverable.
102
+
103
+ ## Tech Stack
104
+
105
+ | Tech | Role |
106
+ | --- | --- |
107
+ | Vite | Build and development server |
108
+ | React | App shell and DOM UI |
109
+ | React Three Fiber (R3F) | Mounts Three.js `Canvas`, lifecycle, and `useFrame` orchestration |
110
+ | Three.js | WebGL rendering, camera, lights, meshes, `AnimationMixer`, GLB, etc. |
111
+ | Tailwind CSS v4 | DOM UI styling |
112
+ | mitt | Event bus between React UI and game runtime |
113
+ | `public/config.json` | External runtime configuration |
114
+ | pnpm | Package manager (`pnpm install` / `pnpm build`) |
115
+
116
+ ## Required Top-Level Structure
117
+
118
+ ```text
119
+ .
120
+ +-- index.html
121
+ +-- package.json
122
+ +-- public/
123
+ | +-- config.json
124
+ | +-- assets/ # Optional static asset directory
125
+ +-- src/
126
+ +-- main.tsx
127
+ ```
128
+
129
+ Full recommended tree:
130
+
131
+ ```text
132
+ .
133
+ +-- index.html
134
+ +-- package.json
135
+ +-- pnpm-lock.yaml
136
+ +-- tsconfig.json
137
+ +-- vite.config.ts
138
+ +-- public/
139
+ | +-- config.json
140
+ | +-- assets/
141
+ +-- src/
142
+ +-- main.tsx
143
+ +-- App.tsx
144
+ +-- index.css
145
+ +-- config/
146
+ | +-- config.ts # fetch public/config.json -> loadConfig() / getSetting()
147
+ | +-- types.ts # Config types (optional)
148
+ +-- game/
149
+ | +-- bridge/
150
+ | | +-- gameBus.ts # mitt event bus
151
+ | | +-- gameCommands.ts
152
+ | | +-- gameEvents.ts
153
+ | +-- simulation/
154
+ | | +-- state.ts # Serializable, testable game state
155
+ | | +-- systems/ # Deterministic gameplay systems
156
+ | | +-- rules.ts # Rules with no Three / React dependencies
157
+ | +-- content/
158
+ | | +-- encounters/
159
+ | | +-- items/
160
+ | | +-- maps/
161
+ | +-- input/
162
+ | | +-- actions.ts
163
+ | | +-- bindings.ts
164
+ | | +-- inputState.ts
165
+ | +-- assets/
166
+ | | +-- manifest.ts # Stable asset keys, URLs, metadata
167
+ | +-- audio/
168
+ | | +-- audioManager.ts
169
+ | | +-- audioHooks.ts
170
+ | | +-- audioPrefs.ts
171
+ | +-- three/ # No React import; unit-testable Three modules
172
+ | +-- buildWorld.ts
173
+ | +-- orbitCameraRig.ts
174
+ | +-- character/
175
+ | +-- creatures/
176
+ +-- ui/
177
+ | +-- components/
178
+ | | +-- GameCanvas.tsx # R3F <Canvas>, useFrame, world mount
179
+ | +-- hud/
180
+ | +-- menus/
181
+ | +-- overlays/
182
+ | +-- store/
183
+ | +-- useGameUiStore.ts
184
+ +-- components/ # Shared DOM UI primitives (non-game business UI)
185
+ +-- lib/
186
+ +-- utils.ts
187
+ ```
188
+
189
+ ## File Responsibilities
190
+
191
+ | Path | Owner | Role |
192
+ | --- | --- | --- |
193
+ | `index.html` | tech | Shell page; mounts `#root` / `#app` and loads `/src/main.tsx`. |
194
+ | `package.json` | tech | Scripts and dependencies; MUST expose `build` (usually also `dev`). |
195
+ | `public/config.json` | product / ops | Runtime-tunable parameters and content pointers; prefer changing this over source. |
196
+ | `src/main.tsx` | tech | Startup: after `loadConfig()`, `createRoot(...).render(<App />)`. |
197
+
198
+ ## Deliverables
199
+
200
+ The game is not complete unless **both** exist:
201
+
202
+ | Artifact | When | Why |
203
+ | --- | --- | --- |
204
+ | `public/config.json` | Always in the source tree | Ops/runtime configuration source; copied into `dist/` by Vite build. |
205
+ | `dist/index.html` | After `pnpm build` | Deliverable static entry point. |
206
+
207
+ After a successful build, `dist/config.json` (`public/config.json` runtime copy) should also exist.
208
+
209
+ ## Package Management and Scripts
210
+
211
+ - Package manager: **pnpm** (default; do not use npm/yarn).
212
+ - Install: `pnpm install`
213
+ - Production build: `pnpm build`
214
+ - Local development: `pnpm dev`
215
+
216
+ Minimum script contract:
217
+
218
+ ```json
219
+ {
220
+ "scripts": {
221
+ "dev": "vite --host 127.0.0.1",
222
+ "build": "tsc && vite build",
223
+ "preview": "vite preview --host 127.0.0.1"
224
+ }
225
+ }
226
+ ```
227
+
228
+ Verification before a new project is ready:
229
+
230
+ 1. `public/config.json` exists.
231
+ 2. `pnpm install` succeeds.
232
+ 3. `pnpm build` succeeds and outputs **`dist/index.html`** (and `dist/config.json`).
233
+ 4. Entry chain is healthy: `index.html` -> `src/main.tsx` -> `loadConfig()` -> `<App />` (`GameCanvas` + DOM HUD).
234
+
235
+ ## Startup Flow
236
+
237
+ ```text
238
+ main.tsx
239
+ -> loadConfig()
240
+ -> createRoot(...).render(<App />)
241
+ App.tsx
242
+ -> GameCanvas (R3F <Canvas>, World + useFrame)
243
+ -> Hud / MobileHud
244
+ -> PauseMenu, overlays (as needed)
245
+
246
+ GameCanvas.tsx
247
+ -> buildWorldInto / GLTFLoader (via game/three)
248
+ -> useFrame: simulation step + scene sync + camera
249
+ ```
250
+
251
+ `GameCanvas.tsx` is the **WebGL <-> React DOM boundary**. DOM UI is overlaid above Canvas (composed in `App`). On unmount, dispose Three resources and bus subscriptions.
252
+
253
+ ## Layering Rules
254
+
255
+ ### R3F / 3D Runtime (`src/ui/components/GameCanvas.tsx` + `src/game/three/`)
256
+
257
+ **`GameCanvas.tsx` (mount boundary) is responsible for:**
258
+
259
+ - Creating the R3F `<Canvas>` (shadows, `gl`, `dpr`, and other defaults are in `engine-runtime.md`)
260
+ - `useFrame` orchestration: read input/simulation -> update `Object3D` or state -> `mixer.update` -> camera (rendering is left to R3F; unless offscreen, do not manually call `renderer.render`)
261
+ - Assembling the scene root: `buildWorldInto(group)`, asynchronous GLB loading
262
+ - Disposing geometry, materials, `AnimationMixer`, and bus subscriptions on StrictMode remount / unmount
263
+
264
+ **`game/three/*` (pure Three modules) is responsible for:**
265
+
266
+ - Scene construction, math, and loading helpers with no React imports
267
+ - Not secretly changing DOM outside React refs
268
+
269
+ Emit gameplay facts with `gameBus.emit()`; accept UI commands (pause, reset, use item, etc.) through `gameBus` / command types.
270
+
271
+ **Prohibited:**
272
+
273
+ - `import` React components or hooks inside `game/three`
274
+ - Piling formal HUD/menus into R3F `<Html>`
275
+ - Scattering touch joystick / gesture mapping in `useFrame` or random components (centralize in `game/input` or UI -> unified actions)
276
+
277
+ ### React DOM UI (`src/ui` + `src/components`)
278
+
279
+ **Responsible for:** HUD, bars, buttons, main/pause/settings menus, inventory, quests, dialogs, results, toast; emits `command:*` through `gameBus`; reads runtime state through `useGameUiStore()` (or equivalent).
280
+
281
+ **Prohibited:** directly taking `Mesh` / `Object3D` inside HUD and changing `position` every frame; writing core rules in UI components; putting per-game business UI into `src/components`; duplicating joystick bindings across multiple components without going through `game/input`.
282
+
283
+ ### Simulation (`src/game/simulation`)
284
+
285
+ Responsible for player/enemy state, inventory, quests, combat values, pure rules, and serializable saves. Must have no Three.js / R3F / React dependencies.
286
+
287
+ ### Content (`src/game/content`)
288
+
289
+ Responsible for levels, maps, encounters, waves, items, rewards, and other static design data. React components and the `Object3D` lifecycle are prohibited from coupling to it.
290
+
291
+ ### Input (`src/game/input`)
292
+
293
+ Responsible for unified actions, keyboard/mouse/virtual joystick/touch bindings, and the semantic input surface shared by UI and `GameCanvas`. Undocumented scattered hardcoded bindings are prohibited; directly rewriting persistent simulation root state is prohibited.
294
+
295
+ ### Assets (`src/game/assets`)
296
+
297
+ Responsible for stable keys, URLs, types, and metadata for glTF / textures / audio / VFX. Hardcoding `"/foo/bar.glb"` throughout gameplay, UI, and scene modules is prohibited.
298
+
299
+ ### Audio (`src/game/audio`)
300
+
301
+ Responsible for reading BGM/SFX paths and toggles from config, Web Audio / HTMLAudio playback and dispose, listening to `gameBus` to map gameplay facts to sound, and applying `command:audio-prefs` emitted by HUD. Playing in-game SFX with `new Audio()` inside HUD is prohibited; creating new audio sources or footstep loops every frame in `useFrame` is prohibited; in-game BGM MUST NOT remain after exit/results/failure/restart. Unlock, event hooks, and cleanup details are in `engine-audio.md`.
302
+
303
+ ## Event Bridge Rules
304
+
305
+ Files: `src/game/bridge/gameBus.ts`, `gameEvents.ts`, `gameCommands.ts`.
306
+
307
+ Naming:
308
+
309
+ - `command:*` - React -> game runtime
310
+ - `game:*` - global session / world events
311
+ - `player:*` - player state
312
+ - `enemy:*` - enemy state
313
+ - `ui:*` - UI-facing events
314
+ - `game:feedback` / `player:movement` - in-game feedback cues (SFX + VFX); payload is plain data
315
+
316
+ When adding events, update the `gameCommands.ts` / `gameEvents.ts` types in the same change.
317
+
318
+ ## Diagnostics and Test Hooks
319
+
320
+ Install when `GameCanvas` mounts and clean up on unmount; type declarations go in `src/vite-env.d.ts`.
321
+
322
+ - `window.__THREE_GAME_DIAGNOSTICS__`: renderer info, simulation snapshot, input state, entity count, etc. (for canvas inspector / AAA scorecard).
323
+ - `window.__THREE_GAME_TEST_HOOKS__`: `seed` / `setState` / `setPausedForScreenshot` / `setReducedMotion` / `hideDebugUi` (for visual regression and bot playtest).
324
+
325
+ Put deterministic random in `src/lib/random.ts` or `src/game/simulation/random.ts`; business paths are prohibited from using `Math.random`.
326
+
327
+ ## Hard Methodology
328
+
329
+ - **Keep layering:** `game/three` MUST NOT import React; DOM UI MUST NOT directly drive `Object3D`. Prefer `gameBus` or a single input/simulation facade.
330
+ - **Simulation first:** rules are in `game/simulation`, not in `useFrame` or `Hud.tsx`.
331
+ - **Centralized input:** physical -> semantic mapping is in `game/input`.
332
+ - **Content is data:** levels/maps/items are in `game/content`.
333
+ - **Asset directory:** glTF / textures / audio go through `manifest.ts` or config keys.
334
+ - **Centralized in-game audio:** only `game/audio`; preferences go through the bus.
335
+ - **Centralized config:** tunable parameters are in `public/config.json`.
336
+ - **UI placement:** business DOM UI is in `src/ui`; shared primitives are in `src/components`; formal HUD is never an R3F child node.
337
+ - **Verification:** run `pnpm build` after meaningful changes.
338
+
339
+ ## Anti-Patterns
340
+
341
+ - Building full menus / inventory / settings inside `useFrame`
342
+ - Grabbing scene-internal refs from arbitrary React components and changing mesh everywhere
343
+ - Putting combat rules into `Hud.tsx`
344
+ - Using `Mesh.userData` as a persistent database for UI/saves
345
+ - Input and state drifting from multiple sources
346
+ - Copying the same touch action mapping across multiple files
347
+ - Hardcoding the same glTF/texture URL string in multiple places
348
+ - Using `src/main.ts` instead of `src/main.tsx` while following this specification
349
+ - Replacing this layout with CRA, Next.js, or npm-only scaffolding (unless the user asks)
350
+
351
+ ## Output Expectations
352
+
353
+ When adding features, state the owning layer (R3F/Three orchestration / React UI / Simulation / Content / Input / Assets / Audio) and why. Route cross-layer behavior through `gameBus` (or the agreed single facade), and update event types. Confirm with `pnpm build`.
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: threejs-aaa-graphics-builder
3
+ description: Upgrade Three.js scenes with high-quality art direction, materials, lighting, shaders, VFX, asset acquisition, and render budgets. Use when 3D browser games need measurable visual quality improvement beyond prototype graphics.
4
+ ---
5
+
6
+ # Three.js AAA Graphics Builder
7
+
8
+ ## Purpose
9
+
10
+ Own the production graphics pass. Convert basic screenshots into authored, high-density, performance-aware visual experiences.
11
+
12
+
13
+ ## Use When
14
+
15
+ Screenshots still look basic, models look primitive, worlds are sparse, UI/world art feels generic, or the user asks for premium, AAA, high-fidelity, showcase, or less-basic graphics.
16
+
17
+ ## Required References
18
+
19
+ These references are required phase-entry gates, not optional reading:
20
+
21
+ - Load `../game-art/references/scene-profiles.md` and select a `scene_profile_id` before world kit, lighting polish, or any claim that World/environment is authored. Read only the **World + 3D · Lighting + Entities + Reject** sections for that profile; this skill executes the production pass against it.
22
+ - Load `references/visual-scorecard.md` before scoring, judging completion, or making any premium/AAA/showcase claim.
23
+ - Load `references/implementation-blueprint.md` before changing graphics architecture, materials, VFX, rendering, diagnostics, or broad visual systems.
24
+ - Load `references/model-recipes.md` before building or upgrading hero/player, obstacle, enemy, pickup, world-kit, material, or prop models.
25
+ - Load `references/render-recipes.md` before changing lighting, tone mapping, shadows, fog, post-processing, materials, or render composition.
26
+ - Load `references/technical-art.md` before premium/AAA/showcase graphics work, shaders/material systems, VFX systems, generated/imported asset cleanup, LOD/instancing work, or visual changes that could affect browser performance.
27
+ - Load `references/shader-cookbook.md` before writing any custom shader, `onBeforeCompile` injection, material recipe, sky, or post-processing chain; use its proven values and GLSL patterns instead of improvising.
28
+ - Load `references/checklists/aaa-game-quality-gate.md` and `references/checklists/aaa-visual-scorecard.md` before declaring a game premium, AAA, showcase, complete, release-ready, or less basic.
29
+ - Load the relevant checklist before focused work: `references/checklists/procedural-model-quality.md`, `references/checklists/material-lighting-quality.md`, `references/checklists/performance-safe-visual-detail.md`, or `references/checklists/technical-art-quality.md`.
30
+ - Load `references/graphics-prompt-templates.md` only when the user asks for reusable prompts, a graphics-pass prompt, or a task template.
31
+
32
+ For broad "still looks basic", premium, AAA, high-fidelity, showcase, or less-basic graphics work, load the scene-profiles paradigm (3D Lighting rail) plus all five core references (`visual-scorecard`, `implementation-blueprint`, `model-recipes`, `render-recipes`, `technical-art`) as the first action in the phase. Track them in a reference ledger with yes/no, path, and failure reason. Do not mark the graphics phase complete while any required reference is skipped.
33
+
34
+ External asset sourcing gate:
35
+
36
+ - For premium/AAA/showcase/high-fidelity/less-basic graphics with a hero/player, character, creature, boss, vehicle, ship, building, weapon, signature prop, complex pickup, or hero environment piece, prefer authored procedural factories from `references/model-recipes.md` before settling for placeholders. Remote mesh generation is offline in the current release.
37
+ - For concept needs, texture/material references, decals, logos, faction marks, icons, GUI art, skies, backgrounds, or title/menu art: prefer procedural/CSS/canvas UI art; use user-supplied local images via `evomeme_upload_game_asset`.
38
+ - Create an asset sourcing ledger for each high-value surface: procedural / hybrid / user-provided, plus outputs or skip reason.
39
+ - `not-needed` is valid only after the relevant path was considered and the ledger explains why external assets would not improve a non-hero support surface, or why an attempted MCP/CDN call shows a real blocker.
40
+ - For premium hero surfaces, procedural-only is allowed; document that constraint and still meet silhouette/material/lighting quality via procedural authorship or user-provided GLB/FBX.
41
+
42
+ ## Workflow
43
+
44
+ 1. Capture or inspect active desktop/mobile screenshots.
45
+ 2. Confirm or select a `scene_profile_id` from `../game-art/references/scene-profiles.md` (World / 3D · Lighting / Entities). If missing, write it before upgrading surfaces.
46
+ 3. Score visuals across art direction, hero/player, obstacles, rewards, world, materials, render, VFX, UI, and performance evidence.
47
+ 4. Add missing graphics architecture: material library, procedural textures/decals, model factories, world prop kit, technical-art budget, VFX system, render pipeline, diagnostics.
48
+ 5. Fill the external asset sourcing ledger per surface: procedural Three.js factory, user-provided model/2D reference, or a hybrid.
49
+ 6. Upgrade every weak visible surface, not only one hero object. World layers must match the chosen scene-profiles paradigm (Play / Near / Mid / Far / Motion).
50
+ 7. Add lighting/render/material polish after authored forms exist, following the paradigm's Lighting stack intent and `references/render-recipes.md`.
51
+ 8. Add event-driven VFX tied to gameplay state.
52
+ 9. Re-score screenshots against the calibration anchors, citing the inspector's measured metrics. Continue until every premium category is at least 2/3 or report exact blockers.
53
+ 10. Run the fresh-eyes review per `references/visual-scorecard.md` before finalizing premium/AAA/showcase claims.
54
+ 11. Verify renderer diagnostics against the render budget table, technical-art budget, desktop/mobile screenshots, console/page errors, canvas pixels, imported asset budgets, and playability.
55
+
56
+ ## Core Rule
57
+
58
+ Do not make primitives look AAA by adding glow. First build authored forms, then materials, then lighting, then effects.
59
+
60
+ ## Final Response
61
+
62
+ Report the reference ledger, external asset sourcing ledger, technical art brief, score before/after, production surfaces upgraded, files changed, screenshots/artifacts, renderer diagnostics, imported asset diagnostics when relevant, VFX readability and render-budget tradeoffs, and remaining blockers. For premium/AAA/showcase claims, include the filled visual scorecard exactly as defined in `references/visual-scorecard.md`, including average and automatic failures remaining.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Three.js AAA Graphics Builder"
3
+ short_description: "Comprehensively improve a 3D game's models, materials, lighting, effects, and rendering quality"
4
+ default_prompt: "Please use $threejs-aaa-graphics-builder to improve this 3D game's overall visual quality, and refine its models, materials, lighting, effects, and performance presentation."
5
+
6
+ policy:
7
+ allow_implicit_invocation: false
@@ -21,7 +21,7 @@ description: 讲解 evomeme工作区 init、.evomemeignore,以及源码提交
21
21
  - 把包内 skill 复制到工作区 **`.codex/skills/`**
22
22
  - 确认本机登录态(供后续 MCP 使用)
23
23
 
24
- npm 包名为 **`evomeme`**(可执行入口 `evomeme`)。
24
+ npm 包名为 **`evomeme`**(可执行入口 `evomeme`)。
25
25
 
26
26
  ### 用法
27
27
 
@@ -85,13 +85,13 @@ npx -y evomeme@latest install --ide codex
85
85
  | 工具名 | 功能 |
86
86
  | --- | --- |
87
87
  | `evomeme_submit_game_code` | **游戏发布**(非纯源码上传):按 `.evomemeignore` 收集并全量覆盖云端作品,**必须包含可运行的 `dist/`**;不可撤销。 |
88
- | `evomeme_upload_game_asset` | 将受支持的本地图片、音频或视频交给服务端上传 TOS;内容审核通过后才返回公开 `asset_url`。其他类型禁止上传。 |
88
+ | `evomeme_upload_game_asset` | 将受支持的本地图片、音频、视频或常见 3D 模型(GLB/GLTF/FBX/OBJ/STL)交给服务端上传 TOS;内容审核通过后才返回公开 `asset_url`。其他类型禁止上传。 |
89
89
 
90
90
  ### `evomeme_submit_game_code`
91
91
 
92
92
  把当前工作区里按 `.evomemeignore` 收集到的 **utf-8 文本源码**,全量同步到云端作品。
93
93
 
94
- **硬性约束:任何二进制文件都不得通过本工具上传**(含图片、模型、音视频、字体、压缩包等)。源码提交只收集文本;受支持的图片、音频和视频只能经 `evomeme_upload_game_asset` 上 TOS,模型、字体、压缩包和其他类型不支持上传。提交前还必须通过下文的发布产物门禁;发现任一二进制或绝对本地依赖时,禁止调用本工具。
94
+ **硬性约束:任何二进制文件都不得通过本工具上传**(含图片、模型、音视频、字体、压缩包等)。源码提交只收集文本;受支持的图片、音频、视频和常见 3D 模型(GLB/GLTF/FBX/OBJ/STL)只能经 `evomeme_upload_game_asset` 上 TOS,字体、压缩包和其他未列出类型不支持上传。提交前还必须通过下文的发布产物门禁;发现任一二进制或绝对本地依赖时,禁止调用本工具。
95
95
 
96
96
  可选参数:
97
97
 
@@ -164,7 +164,7 @@ npx -y evomeme@latest install --ide codex
164
164
 
165
165
  ### `evomeme_upload_game_asset`
166
166
 
167
- 将受支持的本地图片、音频或视频交给服务端上传 TOS,内容安全审核通过后才返回公开 `asset_url`;其他类型禁止上传。提交源码前处理媒体资源时优先用本工具;说明见 `../evomeme-tos-upload/SKILL.md`。
167
+ 将受支持的本地图片、音频、视频或常见 3D 模型(GLB/GLTF/FBX/OBJ/STL)交给服务端上传 TOS,内容安全审核通过后才返回公开 `asset_url`;其他类型禁止上传。提交源码前处理媒体 / 模型资源时优先用本工具;说明见 `../evomeme-tos-upload/SKILL.md`。
168
168
 
169
169
  ---
170
170