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,45 @@
1
+ # Blender 源场景 → Stage → 引擎
2
+
3
+ ## 从图片开始
4
+
5
+ 先读取图片,明确主体、比例、材质、主光和参考机位。单张图片未展示的背面与遮挡区域按合理假设建模,并在交付时说明。优先通过当前可用的 Blender MCP 完成建模;本插件提供导出和验收流程,不捆绑外部 Blender MCP 安装或图像转三维模型服务。没有 Blender MCP 时,若有本机 Blender,可用 Python 建模;只在缺失路径或不可执行时报告具体阻塞。
6
+
7
+ 先搭建空间和相机,输出低成本参考供迭代,再细化模型、材质和灯光。保存 `.blend` 后进行以下导出。源场景采用米制、unit scale=1,保留场景原点;导出器完成 Blender Z-up 到 glTF Y-up 的转换。不要再旋转整个世界。支持 Cycles/Eevee、透视相机;相机非单位缩放与 lens shift 会报错,需先处理。外链库及未能打包的序列/缓存应在 Blender 本地化后再导出。
8
+
9
+ ## 统一导出入口
10
+
11
+ ```json
12
+ {
13
+ "workspace_dir": "<当前工作区绝对路径>",
14
+ "asset_id": "courtyard",
15
+ "source_blend_path": "<已保存的场景.blend绝对路径>",
16
+ "camera_names": ["Reference", "MaterialDetail"],
17
+ "quality": "preview",
18
+ "width": 960,
19
+ "bake_materials": true,
20
+ "texture_size": 1024,
21
+ "godot_project_dir": "<已有Godot工程绝对路径>"
22
+ }
23
+ ```
24
+
25
+ 以上参数传给 `evomeme_scene_export_blender`。相机名与 Godot 工程路径可省略;没有相机时自动建立参考机位,并补全 overview。最多 6 个指定透视相机。width 为 320–1920;texture_size 为 256/512/1024/2048。未指定目标工程时 Godot 默认 Compatibility,可用 godot_renderer 指定 mobile/forward_plus/gl_compatibility;预览和同步工程必须一致。
26
+
27
+ 导出器在隔离 Blender 进程中读取已保存源文件,禁用自动脚本执行,保存自包含源快照,生成 GLB、各机位 Blender 原生参考图、源特征清单及两个目标 profile。原文件不改动;活动 Blender 中未保存的更改不会进入导出。失败不会替换当前包。更新同一场景用 replace_existing:true;旧包保留在返回的 backup_dir,新版本重新确认。
28
+
29
+ preview 使用快速采样;final 保留源场景采样设置。自由视角原生预览仍为快速模式并关闭景深,不能用它证明最终离线渲染完全一致。
30
+
31
+ ## 烘焙与源契约
32
+
33
+ bake_materials:true 为可选项,只处理直接连接 Principled BSDF 的受支持程序表面;按对象生成基础色、粗糙度、金属度、切线法线贴图,必要时建立 UV。源 `.blend` 保留原节点;导出模型使用烘焙版本。复杂闭包、混合 shader、体积和间接光不会被此通道烘焙自动转换。保留报告中的跳过原因,不能把部分对象烘焙说成整份材质完成。
34
+
35
+ `scene.contract.json.source_features` 使用 evomeme.source_scene_features.v1,记录节点 ID、对象/材质关联、程序节点、未转换节点、已烘焙通道/对象、体积、世界环境、源渲染设置。ID 优先复用 evomeme_node_id;未设置时由资产和对象名派生,需要跨重命名稳定 ID 时应在源场景设置该属性。
36
+
37
+ 标准 PBR 与灯光事实共用一份源契约。`runtime/three.profile.json` 和 `runtime/godot.profile.json` 保存引擎覆盖;重新导出保留匹配 schema 的既有覆盖,未覆盖灯光从新源事实派生。修改 profile 后更新 contract.files 中的字节数与 SHA-256。
38
+
39
+ 烘焙材质为每个对象建立独立运行时材质;其精确名称记录在 source_features.materials[].runtime_materials。设置引擎材质覆盖时使用该 material_name。未烘焙版本使用 GLB 内的实际材质名。
40
+
41
+ ## 查看与交付
42
+
43
+ 调用 `evomeme_stage_open` 选择 three_js/godot。展板逐项显示已映射、已烘焙、采用近似、尚未实现、待核对,提供相关机位和“记录修复要求”。修复要求会写入反馈记录,需要代理读取并继续修改;按钮不会自行完成修复。
44
+
45
+ 用户查看并确认目标引擎当前版本后,再调用相应 sync。Three.js 游戏使用生成的 loadReviewedScene 和 runtime.render,与 Stage 共用显示实现;Godot 使用 load_scene 与同一原生显示适配器。完成导入后在实际工程复验。确认记录中的 visual_equivalence=not_evaluated 表示没有计算跨渲染器逐像素等价,不抹去已经记录的近似或缺失项。
@@ -0,0 +1,26 @@
1
+ # Canonical package
2
+
3
+ ## Required layout
4
+
5
+ ```text
6
+ assets/canonical/<asset_id>/
7
+ model.glb
8
+ asset.json
9
+ preview/
10
+ ```
11
+
12
+ `asset_id` is normalized and stable. `model_file` remains package-relative. Do not reference files outside the package.
13
+
14
+ An optional `scene.contract.json` may define camera, world-coordinate and display-profile supplements. Its file manifest uses relative paths, byte sizes and SHA-256 hashes. Export/sync verifies the whole manifest and rejects traversal, missing files, stale hashes and coordinate conflicts.
15
+
16
+ For a complete Blender source scene, `evomeme_scene_export_blender` creates this contract, `source/scene.blend`, per-camera references and both engine profiles automatically. See [Blender scene pipeline](blender-scene-pipeline.md). `source_features` makes unsupported/approximate effects visible in Stage; a loaded GLB alone does not demonstrate material or lighting equivalence.
17
+
18
+ ## World-coordinate scenes
19
+
20
+ For a complete meter-scale map already exported as Y-up, use `up_axis=+y`, `forward_axis=-z`, `pivot=origin`, `scale_hint_metres=null` and zero offsets unless evidence says otherwise. Do not center a whole world or normalize it by height.
21
+
22
+ ## Replacement and history
23
+
24
+ `replace_existing=true` may reuse the asset ID and descriptive metadata, but new model bytes create a new source revision. Previous recipes and evidence become stale. Keep repair reports/backups inside the package repair area; never treat a backup as the active `model.glb`.
25
+
26
+ The bounded alignment history explains creation, migration, acceptance and invalidation. It is an audit aid, not a substitute for current revision checks.
@@ -0,0 +1,14 @@
1
+ # Engine capabilities
2
+
3
+ | Component | Owns | Must not own |
4
+ |---|---|---|
5
+ | Stage | Three.js live preview, native Godot/Blender preview, bounds/TRS, explicit user confirmation before import | substituting Three.js frames for Godot, agent acceptance on behalf of the user |
6
+ | Blender | topology, normals, origin baking, mesh cleanup, GLB re-export | final engine readiness, hidden per-engine orientation |
7
+ | Godot 4 | GLB import, one runtime wrapper, gameplay integration, target render/physics QA | guessing authored axes, accumulating compensation transforms |
8
+ | Three.js game | one runtime wrapper, web presentation and gameplay QA | a second canonical schema or per-entity hard rotations |
9
+
10
+ Tripo and other generators are sources, not alignment authorities. Preserve their task/model/version metadata in provenance, but compute readiness from the emitted file and current user intent.
11
+
12
+ Use GLB as the canonical mesh payload. Blender source files may be retained as provenance or repair artifacts, but engines consume the package, not an arbitrary `.blend` working file.
13
+
14
+ Unity and Unreal are intentionally outside this plugin plan. Do not add placeholder adapters that appear supported but bypass validation.
@@ -0,0 +1,32 @@
1
+ # Stage 展板确认与引擎导入
2
+
3
+ Blender 建模或修改后,必须打开 Stage 展板查看当前版本,由用户点击“确认当前版本,允许导入”,之后才能进行下一步导入。仅启动展板、格式检查通过、保存技术对齐状态或 ready=true 均不能放行。
4
+
5
+ ## 顺序
6
+
7
+ 1. 完整 Blender 场景使用 evomeme_scene_export_blender 生成 canonical 包、源快照、契约与原生参考图;已有 GLB 可单独入库。
8
+ 2. evomeme_asset_review 检查模型格式与文件摘要。
9
+ 3. evomeme_stage_open({workspace_dir, asset_id, target}) 打开单场景视窗。target 为 three_js 或 godot。
10
+ 4. 以同机位、同画幅对比 Blender 与目标引擎原生渲染,检查空间、结构、材质和灯光。Godot 使用临时原生预览工程,不提前写最终游戏工程。
11
+ 查看“效果转换与待核对项”的映射、烘焙、近似和缺失状态,可跳转相关机位或记录修复要求。状态来自源特征与适配器能力,不是图像相似度评分。
12
+ 5. 用户在页面确认。工具和代理不得代替用户点击,也不得直接构造确认文件。
13
+ 6. 调用相应 sync 工具。Three.js 确认不能替代 Godot 确认;导出同样需要当前 Stage 确认。
14
+
15
+ 需要修改时回 Blender 或更新引擎 profile,然后重新载入、查看和确认。页面保留单场景范围,不加入资产列表、部件编辑或玩法。
16
+
17
+ ## 环境
18
+
19
+ Blender 通过 EVOMEME_BLENDER / BLENDER_PATH 配置;Godot 通过 EVOMEME_GODOT / GODOT_PATH 或 PATH 上的 godot 配置。原生预览等待时不把旧图冒充当前视角,失败时不能确认当前画面。
20
+
21
+ ## 记录与失效
22
+
23
+ .review/stage-view.json 记录实际展板机位、目标引擎和版本。Godot 查看还绑定原生渲染回执及 profile key。
24
+ .review/confirmation.json 记录用户确认、当前资源/显示实现摘要、完整 TRS、机位、截图摘要和技术报告。
25
+
26
+ 模型、asset.json、场景契约、纹理、Godot profile、材质/灯光配置或显示模块变化会让确认过期。export/sync 在写目标前检查当前确认及对齐配方;设置 verified_by 或直接改 ready 不能绕过。
27
+
28
+ ## 交接与范围
29
+
30
+ 浏览器 handoff 只复现已确认的 Three.js 画面;Godot 用 sync_to_godot 输出原生加载器和显示适配器,不把 Three.js 交接图当作 Godot 验收。
31
+
32
+ Godot 基础流程保留 GLB PBR,重建灯光、环境、曝光与相机,支持材料参数校准。面光使用明确标注的近似;Three.js 专用烘焙着色器/LUT 不会在 Godot 自动执行。用户确认资产显示后,游戏集成与玩法仍需目标引擎复验。
@@ -0,0 +1,30 @@
1
+ # Repair policy
2
+
3
+ Choose the shallowest layer that fixes the actual defect while preserving one canonical result.
4
+
5
+ ## Metadata repair
6
+
7
+ Use the Stage or `evomeme_asset_package_set_orientation` when geometry is sound but authored axes, pivot intent, scale target, semantic label, sockets, or review evidence are wrong. Save a complete wrapper TRS. Do not bake a rotation into gameplay code.
8
+
9
+ ## Wrapper repair
10
+
11
+ Use the canonical recipe for non-destructive translation, quaternion rotation and scale. The wrapper must be applied exactly once. It is appropriate for grounding, recentering, authored-forward conversion and size normalization.
12
+
13
+ If `pivot=origin` and `scale_hint_metres=null`, a deterministic identity translation/unit scale recipe is possible. Bounds-dependent pivots or height normalization require a measured recipe from the board or another adapter.
14
+
15
+ ## Blender geometry repair
16
+
17
+ Use `evomeme_asset_repair_blender` for broken origins that must be baked, detached/duplicate parts, bad normals, unusable topology, destructive transform cleanup, or export defects. It backs up the prior model and writes into the same canonical package.
18
+
19
+ Any Blender result changes the source revision and invalidates all prior review states. Reopen the Stage and accept a new recipe before export or sync.
20
+
21
+ ## Never repair here
22
+
23
+ - player/controller yaw offsets;
24
+ - AnimationTree or animation-track compensations;
25
+ - per-scene scale overrides;
26
+ - a second Godot/Three wrapper;
27
+ - a material tweak claimed as canonical without updating review evidence.
28
+
29
+ These hide drift and cannot be maintained when the asset is regenerated.
30
+
@@ -0,0 +1,39 @@
1
+ # MCP tool contract
2
+
3
+ ## Create and inspect
4
+
5
+ - `evomeme_scene_export_blender`: saved Blender scene → source snapshot, GLB, cameras/reference PNGs, source-feature contract, Three.js/Godot profiles and derived diagnostics. Read [blender-scene-pipeline.md](blender-scene-pipeline.md) for parameters, baking and replacement behavior. This source export precedes Stage; it is distinct from confirmed package export to an engine.
6
+ - `evomeme_asset_package_create`: copy GLB/GLTF into a canonical package. New packages are normally `needs_review`.
7
+ - `evomeme_asset_package_list`: inspect `alignment_status` and `alignment_ready` before choosing work.
8
+ - `evomeme_asset_package_get`: read full paths, flat compatibility fields and the v2 alignment record.
9
+ - `evomeme_stage_open`: preferred path for bounds-dependent alignment and user visual acceptance.
10
+ - Blender modeling/changes MUST stop at Stage before engine import. Open with `target=three_js` or `target=godot`; the user must view and click the current-version confirmation. An agent must not click on the user's behalf or fabricate a record.
11
+
12
+ ## Accept alignment
13
+
14
+ `evomeme_asset_package_set_orientation` writes technical alignment only. It cannot replace Stage user confirmation or unlock import. It accepts flat intent fields plus optional:
15
+
16
+ ```json
17
+ {
18
+ "alignment_recipe": {
19
+ "translation_metres": [0, 0, 0],
20
+ "rotation_quaternion_xyzw": [0, 0, 0, 1],
21
+ "scale_xyz": [1, 1, 1],
22
+ "algorithm_version": "adapter-name.v1"
23
+ },
24
+ "alignment_conditions": {
25
+ "spatial": { "status": "aligned", "evidence": "front/side board review" }
26
+ }
27
+ }
28
+ ```
29
+
30
+ For a bounds-dependent pivot or scale, omitting `alignment_recipe` leaves the package non-ready. Use the board instead of inventing translation/scale values.
31
+
32
+ ## Repair and delivery
33
+
34
+ - `evomeme_asset_repair_blender`: changes the source and invalidates alignment.
35
+ - `evomeme_asset_package_export`: validates source bytes, readiness and current Stage user confirmation.
36
+ - `evomeme_asset_sync_to_three`: exports to `public/assets/canonical/<id>/` and generates `src/evomeme-stage/<id>/canonical_loader.js`; use loadReviewedScene with Three.js 0.170.0 and runtime.render to retain the reviewed appearance pipeline.
37
+ - `evomeme_asset_sync_to_godot`: requires `project.godot` and current native Godot Stage confirmation; exports to `assets/canonical/<id>/`, generating the guarded model loader and shared material/light/environment/camera adapter. Use `load_scene` for a scene and `load_package` for props.
38
+
39
+ On a gate error, do not retry with edited JSON. Read the reported pending/stale conditions, repair or review the package, then sync again.
@@ -0,0 +1,26 @@
1
+ # Visual review
2
+
3
+ ## Review sequence
4
+
5
+ 1. Load the exact current `model.glb`; confirm the displayed source revision.
6
+ 2. Compare against the user request or versioned reference, not memory.
7
+ 3. Inspect front/back/side/top and a gameplay camera view.
8
+ 4. Check spatial, structural, semantic and render conditions separately.
9
+ 5. Save the measured wrapper TRS and concise evidence.
10
+ 6. Verify again in the target engine after sync.
11
+
12
+ ## Practical checks
13
+
14
+ - Spatial: feet/wheels/base touch the expected plane; forward direction is unambiguous; height and world scale are plausible; maps retain their intended origin.
15
+ - Structural: named parts exist, transforms are not unexpectedly nested, skeleton and sockets remain attached, animations do not jump on frame zero.
16
+ - Semantic: silhouette, part count, handedness, openings, controls, weapon muzzle, seats, doors and other requested affordances are correct.
17
+ - Render: normals face outward, textures resolve, alpha/culling are correct, material response is credible and no parts disappear under the target camera/light setup.
18
+
19
+ ## Evidence quality
20
+
21
+ Prefer a user-approved board view or target-engine screenshot. Agent visual review is acceptable when the comparison and limitations are recorded. Heuristics alone do not close structural, semantic or render review.
22
+
23
+ Three.js Stage is a neutral inspection surface, not proof of Godot render parity. Blender Cycles, Three.js and Godot use different shading pipelines. Describe approximations explicitly; do not promise pixel identity unless a target-engine capture was compared.
24
+
25
+ For `scene.contract.json`, keep reference camera, aspect ratio, near/far and framing fixed during comparison. Do not let auto-frame controls overwrite a contract camera.
26
+
@@ -45,7 +45,7 @@ description: 指导 Agent 正确使用 MCP 提供的各类游戏素材生成与
45
45
  | `image_type` | 否 | `asset`、`background`、`parallax background`、`tileset` | 图片类型,默认 `background`。`asset`、`parallax background`、`tileset` 会自动抠图。 |
46
46
  | `size` | 否 | `2048x2048`、`1728x2304`、`2304x1728`、`2560x1440`、`1440x2560`、`1664x2496`、`2496x1664`、`3024x1296` | 输出尺寸,默认 `2048x2048`。 |
47
47
  | `reference_image_url` | 否 | `string` | 参考图片的可访问 URL。 |
48
- | `image_model` | 否 | `asset-lite`、`asset-pro` | 生图模型,默认 `asset-lite`。 |
48
+ | `image_model` | 否 | `asset-lite`、`asset-pro`、`asset-max` | 生图模型,默认 `asset-lite`。 |
49
49
  | `workspace_dir` | 否 | `string` | Agent 当前工作区根目录的绝对路径。为满足素材准则,调用时必须显式传入。 |
50
50
 
51
51
  ### 出参
@@ -0,0 +1,127 @@
1
+ # BGM CDN And URL Catalog
2
+
3
+ This file is the authoritative source for hosted background-music routing. Read `../SKILL.md` first, then use this reference to compose final HTTPS URLs for tracks stored under the BGM bucket path.
4
+
5
+ ## CDN Roots
6
+
7
+ Primary public CDN root:
8
+
9
+ ```text
10
+ https://vibe-writing-dev-public.tos-cn-beijing.volces.com/
11
+ ```
12
+
13
+ Secondary root that may be used only when the user explicitly provides a full URL or confirms that a track lives there:
14
+
15
+ ```text
16
+ https://ppy-test.tos-cn-beijing.volces.com/
17
+ ```
18
+
19
+ ## Required Prefix
20
+
21
+ All hosted background music objects live under:
22
+
23
+ ```text
24
+ bgm/
25
+ ```
26
+
27
+ ## Final URL Shape
28
+
29
+ ```text
30
+ {CDN root}bgm/{encoded filename}
31
+ ```
32
+
33
+ - Keep the CDN root exactly as listed.
34
+ - Keep the `bgm/` prefix exactly as listed.
35
+ - The filename segment includes the extension such as `.mp3` or `.m4a`.
36
+ - Encode the filename segment with UTF-8 percent-encoding when it contains non-ASCII or reserved characters.
37
+
38
+ ## Encoding Rule
39
+
40
+ - Use the full stored filename, including extension, as the source string for `encodeURIComponent`.
41
+ - Encode only the filename segment, not the entire URL.
42
+ - Keep spaces encoded as `%20`.
43
+ - Common examples:
44
+ - `–` -> `%E2%80%93`
45
+ - `(` -> `%EF%BC%88`
46
+ - `)` -> `%EF%BC%89`
47
+
48
+ ## Track Catalog
49
+
50
+ Final URL = `https://vibe-writing-dev-public.tos-cn-beijing.volces.com/bgm/` + filename fragment below unless the user explicitly confirms the secondary CDN root.
51
+
52
+ | Object key | Filename fragment |
53
+ | --- | --- |
54
+ | `2048.mp3` | `2048.mp3` |
55
+ | `Arrows – Puzzle Escape(箭头逃脱).mp3` | `Arrows%20%E2%80%93%20Puzzle%20Escape%EF%BC%88%E7%AE%AD%E5%A4%B4%E9%80%83%E8%84%B1%EF%BC%89.mp3` |
56
+ | `Ballz 打砖块.mp3` | `Ballz%20%E6%89%93%E7%A0%96%E5%9D%97.mp3` |
57
+ | `Block Blast! 方块消除1.mp3` | `Block%20Blast%21%20%E6%96%B9%E5%9D%97%E6%B6%88%E9%99%A41.mp3` |
58
+ | `Block Blast! 方块消除2.mp3` | `Block%20Blast%21%20%E6%96%B9%E5%9D%97%E6%B6%88%E9%99%A42.mp3` |
59
+ | `DOODLE JUMP2.mp3` | `DOODLE%20JUMP2.mp3` |
60
+ | `Doodle Jump.mp3` | `Doodle%20Jump.mp3` |
61
+ | `Flappy Bird1.mp3` | `Flappy%20Bird1.mp3` |
62
+ | `Flappy Bird2.mp3` | `Flappy%20Bird2.mp3` |
63
+ | `Vita Mahjong 麻将配对1.mp3` | `Vita%20Mahjong%20%E9%BA%BB%E5%B0%86%E9%85%8D%E5%AF%B91.mp3` |
64
+ | `Vita Mahjong 麻将配对2.mp3` | `Vita%20Mahjong%20%E9%BA%BB%E5%B0%86%E9%85%8D%E5%AF%B92.mp3` |
65
+ | `_疯狂的鸽子1.mp3` | `_%E7%96%AF%E7%8B%82%E7%9A%84%E9%B8%BD%E5%AD%901.mp3` |
66
+ | `_疯狂的鸽子2.mp3` | `_%E7%96%AF%E7%8B%82%E7%9A%84%E9%B8%BD%E5%AD%902.mp3` |
67
+ | `三消 _ 二合1.mp3` | `%E4%B8%89%E6%B6%88%20_%20%E4%BA%8C%E5%90%881.mp3` |
68
+ | `三消 _ 二合2.mp3` | `%E4%B8%89%E6%B6%88%20_%20%E4%BA%8C%E5%90%882.mp3` |
69
+ | `人格测试.mp3` | `%E4%BA%BA%E6%A0%BC%E6%B5%8B%E8%AF%95.mp3` |
70
+ | `休闲小镇.mp3` | `%E4%BC%91%E9%97%B2%E5%B0%8F%E9%95%87.mp3` |
71
+ | `休闲轻快.mp3` | `%E4%BC%91%E9%97%B2%E8%BD%BB%E5%BF%AB.mp3` |
72
+ | `休闲拼图1.mp3` | `%E4%BC%91%E9%97%B2%E6%8B%BC%E5%9B%BE1.mp3` |
73
+ | `休闲拼图2.mp3` | `%E4%BC%91%E9%97%B2%E6%8B%BC%E5%9B%BE2.mp3` |
74
+ | `冰壶游戏.mp3` | `%E5%86%B0%E5%A3%B6%E6%B8%B8%E6%88%8F.mp3` |
75
+ | `割绳子(Cut the Rope)1.mp3` | `%E5%89%B2%E7%BB%B3%E5%AD%90%EF%BC%88Cut%20the%20Rope%EF%BC%891.mp3` |
76
+ | `割绳子(Cut the Rope)2.mp3` | `%E5%89%B2%E7%BB%B3%E5%AD%90%EF%BC%88Cut%20the%20Rope%EF%BC%892.mp3` |
77
+ | `割草游戏1.mp3` | `%E5%89%B2%E8%8D%89%E6%B8%B8%E6%88%8F1.mp3` |
78
+ | `割草游戏2.mp3` | `%E5%89%B2%E8%8D%89%E6%B8%B8%E6%88%8F2.mp3` |
79
+ | `割草游戏3.mp3` | `%E5%89%B2%E8%8D%89%E6%B8%B8%E6%88%8F3.mp3` |
80
+ | `华容道 _ 拼图1.mp3` | `%E5%8D%8E%E5%AE%B9%E9%81%93%20_%20%E6%8B%BC%E5%9B%BE1.mp3` |
81
+ | `华容道 _ 拼图_2.mp3` | `%E5%8D%8E%E5%AE%B9%E9%81%93%20_%20%E6%8B%BC%E5%9B%BE_2.mp3` |
82
+ | `发泄暴打.mp3` | `%E5%8F%91%E6%B3%84%E6%9A%B4%E6%89%93.mp3` |
83
+ | `叠房子.mp3` | `%E5%8F%A0%E6%88%BF%E5%AD%90.mp3` |
84
+ | `吃分避障.mp3` | `%E5%90%83%E5%88%86%E9%81%BF%E9%9A%9C.mp3` |
85
+ | `合成大西瓜1.mp3` | `%E5%90%88%E6%88%90%E5%A4%A7%E8%A5%BF%E7%93%9C1.mp3` |
86
+ | `合成大西瓜2.mp3` | `%E5%90%88%E6%88%90%E5%A4%A7%E8%A5%BF%E7%93%9C2.mp3` |
87
+ | `哈吉米南北绿豆.mp3` | `%E5%93%88%E5%9F%BA%E7%B1%B3%E5%8D%97%E5%8C%97%E7%BB%BF%E8%B1%86.mp3` |
88
+ | `场景模拟对话1.mp3` | `%E5%9C%BA%E6%99%AF%E6%A8%A1%E6%8B%9F%E5%AF%B9%E8%AF%9D1.mp3` |
89
+ | `场景模拟对话2.mp3` | `%E5%9C%BA%E6%99%AF%E6%A8%A1%E6%8B%9F%E5%AF%B9%E8%AF%9D2.mp3` |
90
+ | `塔防.mp3` | `%E5%A1%94%E9%98%B2.mp3` |
91
+ | `对抗类.mp3` | `%E5%AF%B9%E6%8A%97%E7%B1%BB.mp3` |
92
+ | `奇幻冒险.m4a` | `%E5%A5%87%E5%B9%BB%E5%86%92%E9%99%A9.m4a` |
93
+ | `愤怒的小鸟.mp3` | `%E6%84%A4%E6%80%92%E7%9A%84%E5%B0%8F%E9%B8%9F.mp3` |
94
+ | `战斗.mp3` | `%E6%88%98%E6%96%97.mp3` |
95
+ | `打地鼠.mp3` | `%E6%89%93%E5%9C%B0%E9%BC%A0.mp3` |
96
+ | `搞笑.mp3` | `%E6%90%9E%E7%AC%91.mp3` |
97
+ | `拧螺丝1.mp3` | `%E6%8B%A7%E8%9E%BA%E4%B8%9D1.mp3` |
98
+ | `拧螺丝2.mp3` | `%E6%8B%A7%E8%9E%BA%E4%B8%9D2.mp3` |
99
+ | `数值生存.mp3` | `%E6%95%B0%E5%80%BC%E7%94%9F%E5%AD%98.mp3` |
100
+ | `数字门跑酷1.mp3` | `%E6%95%B0%E5%AD%97%E9%97%A8%E8%B7%91%E9%85%B71.mp3` |
101
+ | `数字门跑酷2.mp3` | `%E6%95%B0%E5%AD%97%E9%97%A8%E8%B7%91%E9%85%B72.mp3` |
102
+ | `是男人就下 100 层.mp3` | `%E6%98%AF%E7%94%B7%E4%BA%BA%E5%B0%B1%E4%B8%8B%20100%20%E5%B1%82.mp3` |
103
+ | `是男人就下100层2.mp3` | `%E6%98%AF%E7%94%B7%E4%BA%BA%E5%B0%B1%E4%B8%8B100%E5%B1%822.mp3` |
104
+ | `校准类.mp3` | `%E6%A0%A1%E5%87%86%E7%B1%BB.mp3` |
105
+ | `横板过关.mp3` | `%E6%A8%AA%E6%9D%BF%E8%BF%87%E5%85%B3.mp3` |
106
+ | `沙盒模拟类1.mp3` | `%E6%B2%99%E7%9B%92%E6%A8%A1%E6%8B%9F%E7%B1%BB1.mp3` |
107
+ | `沙盒模拟类2.mp3` | `%E6%B2%99%E7%9B%92%E6%A8%A1%E6%8B%9F%E7%B1%BB2.mp3` |
108
+ | `沙盒模拟类3.mp3` | `%E6%B2%99%E7%9B%92%E6%A8%A1%E6%8B%9F%E7%B1%BB3.mp3` |
109
+ | `祖玛1.mp3` | `%E7%A5%96%E7%8E%9B1.mp3` |
110
+ | `祖玛2.mp3` | `%E7%A5%96%E7%8E%9B2.mp3` |
111
+ | `经营养成.mp3` | `%E7%BB%8F%E8%90%A5%E5%85%BB%E6%88%90.mp3` |
112
+ | `经营养成2.mp3` | `%E7%BB%8F%E8%90%A5%E5%85%BB%E6%88%902.mp3` |
113
+ | `背包堆叠(Stack_Backpack).mp3` | `%E8%83%8C%E5%8C%85%E5%A0%86%E5%8F%A0%EF%BC%88Stack_Backpack%EF%BC%89.mp3` |
114
+ | `节奏类(音游点击).mp3` | `%E8%8A%82%E5%A5%8F%E7%B1%BB%EF%BC%88%E9%9F%B3%E6%B8%B8%E7%82%B9%E5%87%BB%EF%BC%89.mp3` |
115
+ | `解绳游戏(Tangled Rope)1.mp3` | `%E8%A7%A3%E7%BB%B3%E6%B8%B8%E6%88%8F%EF%BC%88Tangled%20Rope%EF%BC%891.mp3` |
116
+ | `解绳游戏(Tangled Rope)2.mp3` | `%E8%A7%A3%E7%BB%B3%E6%B8%B8%E6%88%8F%EF%BC%88Tangled%20Rope%EF%BC%892.mp3` |
117
+ | `贪吃蛇.mp3` | `%E8%B4%AA%E5%90%83%E8%9B%87.mp3` |
118
+ | `贪吃蛇2.mp3` | `%E8%B4%AA%E5%90%83%E8%9B%872.mp3` |
119
+ | `跑酷避障.mp3` | `%E8%B7%91%E9%85%B7%E9%81%BF%E9%9A%9C.mp3` |
120
+ | `跳一跳.mp3` | `%E8%B7%B3%E4%B8%80%E8%B7%B3.mp3` |
121
+ | `跳一跳2.mp3` | `%E8%B7%B3%E4%B8%80%E8%B7%B32.mp3` |
122
+ | `连击挑战1.mp3` | `%E8%BF%9E%E5%87%BB%E6%8C%91%E6%88%981.mp3` |
123
+ | `连击挑战2.mp3` | `%E8%BF%9E%E5%87%BB%E6%8C%91%E6%88%982.mp3` |
124
+ | `鉴别伪人.mp3` | `%E9%89%B4%E5%88%AB%E4%BC%AA%E4%BA%BA.mp3` |
125
+ | `雷霆战机.mp3` | `%E9%9B%B7%E9%9C%86%E6%88%98%E6%9C%BA.mp3` |
126
+ | `鬼抓人.mp3` | `%E9%AC%BC%E6%8A%93%E4%BA%BA.mp3` |
127
+ | `黑洞(Tiles In Hole_ Black Hole).mp3` | `%E9%BB%91%E6%B4%9E%EF%BC%88Tiles%20In%20Hole_%20Black%20Hole%EF%BC%89.mp3` |
@@ -0,0 +1,77 @@
1
+ # SFX CDN And URL Catalog
2
+
3
+ This file is the authoritative source for hosted sound-effect routing. Read `../SKILL.md` first, then use this reference to compose final HTTPS URLs for short feedback audio stored under the SFX bucket path.
4
+
5
+ This catalog is for audio feedback only. Do not use it for canvas particles, trails, sparks, or other visual VFX implementations.
6
+
7
+ ## CDN Root
8
+
9
+ Public CDN root:
10
+
11
+ ```text
12
+ https://ppy-test.tos-cn-beijing.volces.com/
13
+ ```
14
+
15
+ ## Required Prefix
16
+
17
+ All hosted gameplay and UI sound effects live under:
18
+
19
+ ```text
20
+ sfx/
21
+ ```
22
+
23
+ ## Final URL Shape
24
+
25
+ ```text
26
+ {CDN root}sfx/{encoded filename}
27
+ ```
28
+
29
+ - Keep the CDN root exactly as listed.
30
+ - Keep the `sfx/` prefix exactly as listed.
31
+ - The filename segment includes the extension such as `.mp3`, `.m4a`, `.ogg`, or `.mp4`.
32
+ - Encode the filename segment with UTF-8 percent-encoding when required.
33
+
34
+ ## Encoding Rule
35
+
36
+ - Use the full stored filename, including extension, as the source string for `encodeURIComponent`.
37
+ - Encode only the filename segment, not the full URL.
38
+ - Keep spaces encoded as `%20`.
39
+
40
+ ## Sound Catalog
41
+
42
+ Final URL = `https://ppy-test.tos-cn-beijing.volces.com/sfx/` + filename fragment below.
43
+
44
+ | Object key | Filename fragment |
45
+ | --- | --- |
46
+ | `RUA.mp3` | `RUA.mp3` |
47
+ | `人物冲刺.mp3` | `%E4%BA%BA%E7%89%A9%E5%86%B2%E5%88%BA.mp3` |
48
+ | `人物叫声.mp3` | `%E4%BA%BA%E7%89%A9%E5%8F%AB%E5%A3%B0.mp3` |
49
+ | `人物碰撞.m4a` | `%E4%BA%BA%E7%89%A9%E7%A2%B0%E6%92%9E.m4a` |
50
+ | `人物脚步声.mp3` | `%E4%BA%BA%E7%89%A9%E8%84%9A%E6%AD%A5%E5%A3%B0.mp3` |
51
+ | `僵尸叫声.ogg` | `%E5%83%B5%E5%B0%B8%E5%8F%AB%E5%A3%B0.ogg` |
52
+ | `僵尸死亡.mp3` | `%E5%83%B5%E5%B0%B8%E6%AD%BB%E4%BA%A1.mp3` |
53
+ | `动物脚步声.mp3` | `%E5%8A%A8%E7%89%A9%E8%84%9A%E6%AD%A5%E5%A3%B0.mp3` |
54
+ | `吃金币.mp3` | `%E5%90%83%E9%87%91%E5%B8%81.mp3` |
55
+ | `呼噜.mp3` | `%E5%91%BC%E5%99%9C.mp3` |
56
+ | `壮汉死亡倒地.mp3` | `%E5%A3%AE%E6%B1%89%E6%AD%BB%E4%BA%A1%E5%80%92%E5%9C%B0.mp3` |
57
+ | `失误.mp3` | `%E5%A4%B1%E8%AF%AF.mp3` |
58
+ | `射击-轻.mp3` | `%E5%B0%84%E5%87%BB-%E8%BD%BB.mp3` |
59
+ | `射击-重.mp3` | `%E5%B0%84%E5%87%BB-%E9%87%8D.mp3` |
60
+ | `成功.mp3` | `%E6%88%90%E5%8A%9F.mp3` |
61
+ | `我想上班.mp3` | `%E6%88%91%E6%83%B3%E4%B8%8A%E7%8F%AD.mp3` |
62
+ | `拖拽.mp3` | `%E6%8B%96%E6%8B%BD.mp3` |
63
+ | `拾取.mp3` | `%E6%8B%BE%E5%8F%96.mp3` |
64
+ | `放置.mp3` | `%E6%94%BE%E7%BD%AE.mp3` |
65
+ | `旋转.mp4` | `%E6%97%8B%E8%BD%AC.mp4` |
66
+ | `汽车行驶.mp3` | `%E6%B1%BD%E8%BD%A6%E8%A1%8C%E9%A9%B6.mp3` |
67
+ | `游戏失败.mp3` | `%E6%B8%B8%E6%88%8F%E5%A4%B1%E8%B4%A5.mp3` |
68
+ | `点击.mp3` | `%E7%82%B9%E5%87%BB.mp3` |
69
+ | `爆炸.mp3` | `%E7%88%86%E7%82%B8.mp3` |
70
+ | `爽.mp3` | `%E7%88%BD.mp3` |
71
+ | `猫叫.mp3` | `%E7%8C%AB%E5%8F%AB.mp3` |
72
+ | `碰撞.mp3` | `%E7%A2%B0%E6%92%9E.mp3` |
73
+ | `苏卡不列.mp3` | `%E8%8B%8F%E5%8D%A1%E4%B8%8D%E5%88%97.mp3` |
74
+ | `苏卡不列那惠.mp3` | `%E8%8B%8F%E5%8D%A1%E4%B8%8D%E5%88%97%E9%82%A3%E6%83%A0.mp3` |
75
+ | `谢谢啊.mp3` | `%E8%B0%A2%E8%B0%A2%E5%95%8A.mp3` |
76
+ | `雪地上的脚步声.mp3` | `%E9%9B%AA%E5%9C%B0%E4%B8%8A%E7%9A%84%E8%84%9A%E6%AD%A5%E5%A3%B0.mp3` |
77
+ | `飞行.mp3` | `%E9%A3%9E%E8%A1%8C.mp3` |
@@ -0,0 +1,12 @@
1
+ # Playtest QA Checklist
2
+
3
+ - Start from a clean load.
4
+ - Play through the main loop for at least 2 minutes.
5
+ - Verify controls, camera, objective feedback, failure/retry, and progression.
6
+ - Try rapid input changes and edge movement against arena boundaries.
7
+ - Trigger collisions from multiple angles.
8
+ - Pause, restart, resize, and refocus the tab if supported.
9
+ - Check audio unlock and volume behavior after the first gesture.
10
+ - Watch for unreadable moments, camera occlusion, jitter, and missed feedback.
11
+ - Capture screenshots for desktop and mobile.
12
+ - Record bugs as reproduction steps with expected and actual behavior.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: game-ui
3
- description: 为游戏设计克制、清晰且具有类型感的 HUD、菜单、弹窗、触控区域、安全区和 UI 动效,并直接调用当前环境中的生图工具交付不同界面的 UI 概念图及其设计理念。当游戏需要确定或调整 UI 风格、信息层级、界面布局、交互反馈、移动端适配,或需要为开始、游玩、暂停、设置、胜负、结算和选择等状态生成 UI 概念图时使用。
3
+ description: 为游戏设计克制、清晰且具有类型感的 HUD、菜单、弹窗、触控区域、安全区和 UI 动效,并直接调用当前环境中的生图工具交付不同界面的 UI 概念图及其设计理念。当游戏需要确定或调整 UI 风格、信息层级、界面布局、交互反馈、移动端适配,或需要为开始、游玩、暂停、设置、胜负、结算和选择等状态生成 UI 概念图时使用。面向 evomeme平台的游戏必须同时阅读并遵守 evomeme-ui。
4
4
  ---
5
5
 
6
6
  # 游戏 UI 设计
@@ -9,6 +9,12 @@ description: 为游戏设计克制、清晰且具有类型感的 HUD、菜单、
9
9
 
10
10
  根据游戏玩法、美术方向和目标设备完成 UI 设计,并为不同界面生成能够表现最终游戏效果的概念图。概念图应同时体现信息层级、操作意图、画面构图和统一的视觉语言。
11
11
 
12
+ ## evomeme平台前置要求
13
+
14
+ 如果开发的游戏要在 evomeme平台运行、上线或发布,必须在 UI 设计、概念图生成或自适应实现前阅读并遵守 [`evomeme-ui`](../evomeme-ui/SKILL.md)。以宿主已经分配的 WebView 容器为画幅,不按手机整屏或固定比例设计,不再次扣除 App 栏位及手机安全区。
15
+
16
+ evomeme游戏的尺寸来源、安全区处理与适配验收以 `evomeme-ui` 为准。本技能及通用检查表中的移动端安全区建议不得导致重复扣减;其他平台继续按其实际宿主约束设计。
17
+
12
18
  ## 核心设计宗旨
13
19
 
14
20
  1. **少即是多**:让每个 UI 元素服务于玩家当前的判断、操作或反馈理解。
@@ -26,6 +32,7 @@ description: 为游戏设计克制、清晰且具有类型感的 HUD、菜单、
26
32
 
27
33
  - 核心玩法与玩家在每个状态下需要作出的决定;
28
34
  - 目标设备、横竖屏、画面比例和安全区;
35
+ - 是否在 evomeme平台运行或发布;若是,必须先完成上方 `evomeme-ui` 前置阅读,并使用其中的游戏容器测试尺寸;
29
36
  - 键盘、鼠标、触控或原生输入方式;
30
37
  - 游戏美术风格、题材、气氛和已有视觉资产;
31
38
  - 需要设计的游戏状态及每个状态的主要行动。
@@ -162,6 +169,7 @@ description: 为游戏设计克制、清晰且具有类型感的 HUD、菜单、
162
169
 
163
170
  ## Reference Routing
164
171
 
172
+ - 为 evomeme平台游戏设计或适配 UI 时,必须先读取并遵守 [`evomeme-ui`](../evomeme-ui/SKILL.md)。
165
173
  - 设计 HUD、菜单、覆盖层、触控控件和响应式布局时,读取 [`references/ui-patterns.md`](references/ui-patterns.md)。
166
174
  - 检查整体游戏感与界面质量时,读取 [`references/checklists/game-ui-quality.md`](references/checklists/game-ui-quality.md)。
167
175
  - 检查 HUD 信息层级和动态可读性时,读取 [`references/checklists/hud-readability.md`](references/checklists/hud-readability.md)。
@@ -0,0 +1,14 @@
1
+ # Game UI Quality Checklist
2
+
3
+ - The first screen is the playable game or a deliberate modal state, not a landing page.
4
+ - HUD hierarchy matches gameplay priority: survival/status, objective, feedback, secondary flavor.
5
+ - UI visual language matches the game's genre, world materials, color, and motion.
6
+ - Menus include expected states: pause, resume, restart, settings, win/lose when relevant.
7
+ - Buttons and controls have stable dimensions plus hover, pressed, focus, and disabled states.
8
+ - Icons are used for compact tool/actions when recognizable; ambiguous icons have labels or tooltips.
9
+ - UI does not use nested cards, marketing-page layout, or generic dashboard styling.
10
+ - UI does not block player, threats, goals, interactables, or near-future path unless intentionally modal.
11
+ - Dynamic values such as score, time, health, combo, and ammo do not shift layout.
12
+ - Reduced-motion and flash risk is considered for intense UI animation or damage feedback.
13
+ - UI state is driven by the game state model and does not duplicate simulation rules.
14
+ - Desktop and mobile screenshots show coherent composition and no clipped or overlapping controls.
@@ -0,0 +1,12 @@
1
+ # HUD Readability Checklist
2
+
3
+ - Player health/status is readable during normal movement and high-action moments.
4
+ - Objective/progress information is visible without competing with threats or pickups.
5
+ - Text contrast remains legible over bright, dark, and moving scene backgrounds.
6
+ - Critical status changes have at least two feedback channels when useful: shape, color, motion, sound, or text.
7
+ - Meters, timers, and counters have fixed-width or stable containers.
8
+ - HUD placement avoids the player focal area and likely spawn/threat lanes.
9
+ - HUD scale is appropriate for desktop, laptop, and mobile viewports.
10
+ - Touch controls and HUD elements do not overlap each other.
11
+ - UI transitions do not delay input response or hide the next player decision.
12
+ - Screenshot review confirms HUD readability before and after interaction.
@@ -0,0 +1,12 @@
1
+ # Mobile Input Checklist
2
+
3
+ - Include `<meta name="viewport" content="width=device-width, initial-scale=1.0">`.
4
+ - Set canvas and touch overlays to `touch-action: none` only where needed.
5
+ - Use Pointer Events when possible.
6
+ - Keep controls reachable with thumbs and away from safe-area edges.
7
+ - Avoid tiny text or buttons below practical touch size.
8
+ - Verify portrait and landscape if both are supported.
9
+ - Check high-DPR canvas scaling and cap DPR if performance suffers.
10
+ - Prevent page scroll/zoom gestures from stealing gameplay input.
11
+ - Test virtual joystick/button release paths when the pointer leaves the control.
12
+ - Verify with Playwright mobile emulation and real hardware when available.
@@ -0,0 +1,12 @@
1
+ # Responsive UI Fit Checklist
2
+
3
+ - Desktop, laptop, narrow, and mobile viewports have been checked.
4
+ - Safe-area padding is applied for mobile edges and notches when controls sit near edges.
5
+ - No text clips, overflows, overlaps, or becomes unreadably small.
6
+ - Long labels wrap or compress intentionally without breaking button height.
7
+ - Controls keep stable hit targets and do not shift during score/time/state changes.
8
+ - Layout uses grid/flex/container-aware constraints instead of viewport-only guesses where practical.
9
+ - Menu content remains reachable without hidden offscreen controls.
10
+ - Touch controls are large enough, separated enough, and do not trigger page scroll.
11
+ - Canvas resizing does not desynchronize HUD placement from gameplay framing.
12
+ - Screenshots or Playwright artifacts prove fit at the tested sizes.