evomeme 0.1.9 → 0.1.10-beta.13

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 (477) hide show
  1. package/README.md +2 -0
  2. package/dist/canvas-public/app.js +509 -5999
  3. package/dist/canvas-public/assets/presets/catalog.json +47 -0
  4. package/dist/canvas-public/assets/presets/tiles/A_01_CaoDi.png +0 -0
  5. package/dist/canvas-public/assets/presets/tiles/A_02_ShaMo.png +0 -0
  6. package/dist/canvas-public/assets/presets/tiles/A_03_TianKong.png +0 -0
  7. package/dist/canvas-public/assets/presets/tiles/A_04_ShuiBo.png +0 -0
  8. package/dist/canvas-public/assets/presets/tiles/A_05_HaiMian.png +0 -0
  9. package/dist/canvas-public/assets/presets/tiles/A_06_MuDiBan.png +0 -0
  10. package/dist/canvas-public/assets/presets/tiles/A_07_ShiZhuan.png +0 -0
  11. package/dist/canvas-public/assets/presets/tiles/A_08_AnRongYan.png +0 -0
  12. package/dist/canvas-public/assets/presets/tiles/A_09_QingTaiShi.png +0 -0
  13. package/dist/canvas-public/assets/presets/tiles/A_10_ShenHai.png +0 -0
  14. package/dist/canvas-public/assets/presets/tiles/A_11_HuiYanShi.png +0 -0
  15. package/dist/canvas-public/assets/presets/tiles/A_12_HongTu.png +0 -0
  16. package/dist/canvas-public/assets/presets/tiles/A_13_GengDi.png +0 -0
  17. package/dist/canvas-public/assets/presets/tiles/A_14_HuoShanYan.png +0 -0
  18. package/dist/canvas-public/assets/presets/tiles/A_15_NiTu.png +0 -0
  19. package/dist/canvas-public/assets/presets/tiles/A_16_HuangSha.png +0 -0
  20. package/dist/canvas-public/assets/presets/tiles/A_17_CongLin.png +0 -0
  21. package/dist/canvas-public/assets/presets/tiles/A_18_ZiYanShi.png +0 -0
  22. package/dist/canvas-public/assets/presets/tiles/A_19_MoGuTu.png +0 -0
  23. package/dist/canvas-public/assets/presets/tiles/A_20_HuaDian.png +0 -0
  24. package/dist/canvas-public/assets/presets/tiles/A_21_HaiLang.png +0 -0
  25. package/dist/canvas-public/assets/presets/tiles/A_22_GanTu.png +0 -0
  26. package/dist/canvas-public/assets/presets/tiles/A_23_QingTaiShiBan.png +0 -0
  27. package/dist/canvas-public/assets/presets/tiles/A_24_XingKong.png +0 -0
  28. package/dist/canvas-public/assets/presets/tiles/A_25_MoFaFuWen.png +0 -0
  29. package/dist/canvas-public/assets/presets/tiles/A_26_ShiTuYeDi.png +0 -0
  30. package/dist/canvas-public/assets/presets/tiles/A_27_LanZhuan.png +0 -0
  31. package/dist/canvas-public/assets/presets/tiles/A_28_HongZhuan.png +0 -0
  32. package/dist/canvas-public/assets/presets/tiles/A_29_YueQiu.png +0 -0
  33. package/dist/canvas-public/assets/presets/tiles/A_30_JinShuGe.png +0 -0
  34. package/dist/canvas-public/assets/presets/tiles/A_31_JinShuJingGai.png +0 -0
  35. package/dist/canvas-public/assets/presets/tiles/A_32_ShuZiChuang.png +0 -0
  36. package/dist/canvas-public/canvas/actions.js +144 -0
  37. package/dist/canvas-public/canvas/camera.js +28 -0
  38. package/dist/canvas-public/canvas/chrome.js +14 -0
  39. package/dist/canvas-public/canvas/data.js +123 -0
  40. package/dist/canvas-public/canvas/dependencies.js +19 -0
  41. package/dist/canvas-public/canvas/interactions.js +544 -0
  42. package/dist/canvas-public/canvas/panel-resize.js +5 -0
  43. package/dist/canvas-public/canvas/renderer.js +297 -0
  44. package/dist/canvas-public/canvas/selection.js +62 -0
  45. package/dist/canvas-public/canvas/serialization.js +118 -0
  46. package/dist/canvas-public/canvas/sync.js +202 -0
  47. package/dist/canvas-public/core/api.js +32 -0
  48. package/dist/canvas-public/core/feature-registry.js +29 -0
  49. package/dist/canvas-public/core/feature-state.js +228 -0
  50. package/dist/canvas-public/core/layout.js +133 -0
  51. package/dist/canvas-public/core/operations.js +38 -0
  52. package/dist/canvas-public/core/project.js +203 -0
  53. package/dist/canvas-public/core/state.js +27 -0
  54. package/dist/canvas-public/dialogs/context-menu.js +118 -0
  55. package/dist/canvas-public/elements/base.js +100 -0
  56. package/dist/canvas-public/elements/connections.js +105 -0
  57. package/dist/canvas-public/elements/drag.js +53 -0
  58. package/dist/canvas-public/elements/image.js +259 -0
  59. package/dist/canvas-public/elements/loading-recovery.js +5 -0
  60. package/dist/canvas-public/elements/loading.js +21 -0
  61. package/dist/canvas-public/elements/map.js +64 -0
  62. package/dist/canvas-public/elements/registry.js +58 -0
  63. package/dist/canvas-public/elements/replacement.js +78 -0
  64. package/dist/canvas-public/elements/resize.js +210 -0
  65. package/dist/canvas-public/elements/task-pipeline.js +235 -0
  66. package/dist/canvas-public/elements/types.js +21 -0
  67. package/dist/canvas-public/elements/ui.js +14 -0
  68. package/dist/canvas-public/elements/video.js +64 -0
  69. package/dist/canvas-public/features/assets/local-assets.js +72 -0
  70. package/dist/canvas-public/features/assets/official-assets.js +539 -0
  71. package/dist/canvas-public/features/editing/canvas-size.js +532 -0
  72. package/dist/canvas-public/features/editing/color-key.js +471 -0
  73. package/dist/canvas-public/features/editing/cutout.js +20 -0
  74. package/dist/canvas-public/features/editing/interactive-image-editing.js +982 -0
  75. package/dist/canvas-public/features/editing/layer-decomposition.js +45 -0
  76. package/dist/canvas-public/features/editing/manual-split.js +115 -0
  77. package/dist/canvas-public/features/editing/perfect-pixel.js +299 -0
  78. package/dist/canvas-public/features/editing/scroll-preview.js +130 -0
  79. package/dist/canvas-public/features/editing/scroll-seam-elimination.js +71 -0
  80. package/dist/canvas-public/features/editing/seam-elimination.js +46 -0
  81. package/dist/canvas-public/features/editing/smart-split.js +49 -0
  82. package/dist/canvas-public/features/editing/source-preview.js +43 -0
  83. package/dist/canvas-public/features/editing/video-cycle.js +49 -0
  84. package/dist/canvas-public/features/editing/video-frames.js +35 -0
  85. package/dist/canvas-public/features/frame-editor/frame-editing.js +755 -0
  86. package/dist/canvas-public/features/frame-editor/frame-model.js +63 -0
  87. package/dist/canvas-public/features/frame-editor/playback.js +83 -0
  88. package/dist/canvas-public/features/frame-editor/preview.js +151 -0
  89. package/dist/canvas-public/features/generation/animation.js +272 -0
  90. package/dist/canvas-public/features/generation/asset-batch.js +102 -0
  91. package/dist/canvas-public/features/generation/direction.js +163 -0
  92. package/dist/canvas-public/features/generation/fields.js +73 -0
  93. package/dist/canvas-public/features/generation/game-ui.js +64 -0
  94. package/dist/canvas-public/features/generation/image.js +96 -0
  95. package/dist/canvas-public/features/generation/scroll-image.js +157 -0
  96. package/dist/canvas-public/features/generation/seamless-tile.js +52 -0
  97. package/dist/canvas-public/features/generation/tile-transition-atlas.js +79 -0
  98. package/dist/canvas-public/features/generation/video.js +105 -0
  99. package/dist/canvas-public/features/map/creation.js +73 -0
  100. package/dist/canvas-public/features/map/tile-map-editor.js +2520 -0
  101. package/dist/canvas-public/features/registry.js +59 -0
  102. package/dist/canvas-public/index.html +84 -259
  103. package/dist/canvas-public/inspector/controls.js +49 -0
  104. package/dist/canvas-public/inspector/frame-preview.js +11 -0
  105. package/dist/canvas-public/inspector/inspector.js +190 -0
  106. package/dist/canvas-public/inspector/media-inspector.js +517 -0
  107. package/dist/canvas-public/inspector/media-preview.js +56 -0
  108. package/dist/canvas-public/inspector/number-stepper.js +96 -0
  109. package/dist/canvas-public/inspector/resize.js +88 -0
  110. package/dist/canvas-public/inspector/scroll-preview.js +11 -0
  111. package/dist/canvas-public/inspector/ui-inspector.js +14 -0
  112. package/dist/canvas-public/language/en-US.js +1059 -0
  113. package/dist/canvas-public/language/index.js +91 -0
  114. package/dist/canvas-public/language/zh-CN.js +1059 -0
  115. package/dist/canvas-public/map/export.js +10 -0
  116. package/dist/canvas-public/map/inspector.js +8 -0
  117. package/dist/canvas-public/map/model.js +409 -0
  118. package/dist/canvas-public/map/tile-map-editor.js +2 -0
  119. package/dist/canvas-public/media/metadata.js +183 -0
  120. package/dist/canvas-public/media/support.js +183 -0
  121. package/dist/canvas-public/styles/base.css +49 -0
  122. package/dist/canvas-public/styles/canvas.css +127 -0
  123. package/dist/canvas-public/styles/controls.css +203 -0
  124. package/dist/canvas-public/styles/dialogs.css +521 -0
  125. package/dist/canvas-public/styles/feature-form.css +409 -0
  126. package/dist/canvas-public/styles/inspector.css +441 -0
  127. package/dist/canvas-public/styles/layout.css +344 -0
  128. package/dist/canvas-public/styles/map.css +11 -0
  129. package/dist/canvas-public/styles/nodes.css +636 -0
  130. package/dist/canvas-public/styles.css +9 -2247
  131. package/dist/canvas-public/ui/controls.js +222 -0
  132. package/dist/canvas-public/ui/elements.js +9 -0
  133. package/dist/canvas-public/ui/feature-controller.js +296 -0
  134. package/dist/canvas-public/ui/feature-form.js +402 -0
  135. package/dist/canvas-public/ui/settings.js +84 -0
  136. package/dist/canvas-public/ui/toolbar.js +55 -0
  137. package/dist/canvas-public/vendor/pixi-tilemap.js +126 -0
  138. package/dist/canvas-public/vendor/pixi.min.js +2340 -0
  139. package/dist/canvas-public/workers/color-key-worker.js +289 -0
  140. package/dist/image-workers/perfect-pixel/perfect-pixel-core.js +441 -0
  141. package/dist/image-workers/perfect-pixel/perfect-pixel-worker.cjs +10 -0
  142. package/dist/index.js +46710 -12400
  143. package/dist/skills/en-US/evomeme-canvas/SKILL.md +52 -0
  144. package/dist/skills/en-US/evomeme-canvas/agents/openai.yaml +7 -0
  145. package/dist/skills/en-US/evomeme-cloud-fs/SKILL.md +203 -0
  146. package/dist/skills/en-US/evomeme-cloud-fs/agents/openai.yaml +7 -0
  147. package/dist/skills/en-US/evomeme-cover/SKILL.md +131 -0
  148. package/dist/skills/en-US/evomeme-cover/agents/openai.yaml +7 -0
  149. package/dist/skills/en-US/evomeme-game-maker/SKILL.md +288 -0
  150. package/dist/skills/en-US/evomeme-game-maker/agents/openai.yaml +4 -0
  151. package/dist/skills/en-US/evomeme-login/SKILL.md +97 -0
  152. package/dist/skills/en-US/evomeme-login/agents/openai.yaml +7 -0
  153. package/dist/skills/en-US/evomeme-mcp/SKILL.md +71 -0
  154. package/dist/skills/en-US/evomeme-mcp/agents/openai.yaml +7 -0
  155. package/dist/skills/en-US/evomeme-mcp/references/troubleshooting.md +55 -0
  156. package/dist/skills/en-US/evomeme-native-bridge-sdk/SKILL.md +286 -0
  157. package/dist/skills/en-US/evomeme-native-bridge-sdk/agents/openai.yaml +8 -0
  158. package/dist/skills/en-US/evomeme-tos-upload/SKILL.md +47 -0
  159. package/dist/skills/en-US/evomeme-tos-upload/agents/openai.yaml +5 -0
  160. package/dist/skills/en-US/evomeme-ui/SKILL.md +123 -0
  161. package/dist/skills/en-US/evomeme-ui/agents/openai.yaml +4 -0
  162. package/dist/skills/en-US/evomeme-ui/references/host-layout.md +69 -0
  163. package/dist/skills/en-US/game-art/SKILL.md +121 -0
  164. package/dist/skills/en-US/game-art/agents/openai.yaml +8 -0
  165. package/dist/skills/en-US/game-asset-align/SKILL.md +47 -0
  166. package/dist/skills/en-US/game-asset-align/agents/openai.yaml +8 -0
  167. package/dist/skills/en-US/game-asset-align/references/alignment-contract.md +61 -0
  168. package/dist/skills/en-US/game-asset-align/references/blender-scene-pipeline.md +35 -0
  169. package/dist/skills/en-US/game-asset-align/references/canonical-package.md +26 -0
  170. package/dist/skills/en-US/game-asset-align/references/engine-capabilities.md +14 -0
  171. package/dist/skills/en-US/game-asset-align/references/lightweight-review.md +34 -0
  172. package/dist/skills/en-US/game-asset-align/references/repair-policy.md +30 -0
  173. package/dist/skills/en-US/game-asset-align/references/tool-contract.md +69 -0
  174. package/dist/skills/en-US/game-asset-align/references/visual-review.md +26 -0
  175. package/dist/skills/en-US/game-asset-batch-generator/SKILL.md +117 -0
  176. package/dist/skills/en-US/game-asset-batch-generator/agents/openai.yaml +7 -0
  177. package/dist/skills/en-US/game-asset-image-generator/SKILL.md +86 -0
  178. package/dist/skills/en-US/game-asset-image-generator/agents/openai.yaml +7 -0
  179. package/dist/skills/en-US/game-asset-image-generator/references/background.md +34 -0
  180. package/dist/skills/en-US/game-asset-image-generator/references/static-game-assets.md +38 -0
  181. package/dist/skills/en-US/game-asset-mesh-generator/SKILL.md +35 -0
  182. package/dist/skills/en-US/game-asset-mesh-generator/agents/openai.yaml +7 -0
  183. package/dist/skills/en-US/game-asset-mesh-generator/references/animation-presets.md +313 -0
  184. package/dist/skills/en-US/game-asset-mesh-generator/references/generation-contracts.md +131 -0
  185. package/dist/skills/en-US/game-asset-mesh-generator/references/image-generator-workflows.md +65 -0
  186. package/dist/skills/en-US/game-asset-mesh-generator/references/postprocess-contracts.md +187 -0
  187. package/dist/skills/en-US/game-asset-mesh-generator/references/threejs-integration.md +113 -0
  188. package/dist/skills/en-US/game-asset-mesh-generator/references/tool-reference.md +67 -0
  189. package/dist/skills/en-US/game-audio/SKILL.md +121 -0
  190. package/dist/skills/en-US/game-audio/agents/openai.yaml +4 -0
  191. package/{skills → dist/skills/en-US}/game-audio/references/bgm-cdn.md +7 -11
  192. package/{skills → dist/skills/en-US}/game-audio/references/sfx-cdn.md +6 -4
  193. package/dist/skills/en-US/game-character-view-generator/SKILL.md +110 -0
  194. package/dist/skills/en-US/game-character-view-generator/agents/openai.yaml +7 -0
  195. package/dist/skills/en-US/game-demo/SKILL.md +103 -0
  196. package/dist/skills/en-US/game-demo/agents/openai.yaml +7 -0
  197. package/dist/skills/en-US/game-image-layer-decomposer/SKILL.md +99 -0
  198. package/dist/skills/en-US/game-image-layer-decomposer/agents/openai.yaml +7 -0
  199. package/dist/skills/en-US/game-image-splitter/SKILL.md +114 -0
  200. package/dist/skills/en-US/game-image-splitter/agents/openai.yaml +7 -0
  201. package/dist/skills/en-US/game-maker/SKILL.md +111 -0
  202. package/dist/skills/en-US/game-maker/agents/openai.yaml +4 -0
  203. package/dist/skills/en-US/game-perfect-pixel/SKILL.md +123 -0
  204. package/dist/skills/en-US/game-perfect-pixel/agents/openai.yaml +7 -0
  205. package/dist/skills/en-US/game-scroll-generator/SKILL.md +110 -0
  206. package/dist/skills/en-US/game-scroll-generator/agents/openai.yaml +7 -0
  207. package/dist/skills/en-US/game-test/SKILL.md +58 -0
  208. package/dist/skills/en-US/game-test/agents/openai.yaml +7 -0
  209. package/dist/skills/en-US/game-tile-generator/SKILL.md +152 -0
  210. package/dist/skills/en-US/game-tile-generator/agents/openai.yaml +7 -0
  211. package/dist/skills/en-US/game-ui/SKILL.md +177 -0
  212. package/dist/skills/en-US/game-ui/agents/openai.yaml +4 -0
  213. package/dist/skills/en-US/game-ui-generator/SKILL.md +82 -0
  214. package/dist/skills/en-US/game-ui-generator/agents/openai.yaml +7 -0
  215. package/dist/skills/en-US/game-ui-generator/references/component-patterns.md +65 -0
  216. package/dist/skills/en-US/game-ui-generator/references/runtime-integration.md +45 -0
  217. package/dist/skills/en-US/game-video-cycle/SKILL.md +98 -0
  218. package/dist/skills/en-US/game-video-cycle/agents/openai.yaml +7 -0
  219. package/dist/skills/en-US/game-video-generator/SKILL.md +78 -0
  220. package/dist/skills/en-US/game-video-generator/agents/openai.yaml +7 -0
  221. package/dist/skills/en-US/godot-3d-game/SKILL.md +41 -0
  222. package/dist/skills/en-US/godot-3d-game/agents/openai.yaml +8 -0
  223. package/dist/skills/en-US/godot-3d-game/references/alignment-gates.md +26 -0
  224. package/dist/skills/en-US/godot-3d-game/references/appearance-alignment.md +54 -0
  225. package/dist/skills/en-US/godot-3d-game/references/build-and-qa.md +22 -0
  226. package/dist/skills/en-US/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  227. package/dist/skills/en-US/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  228. package/dist/skills/en-US/godot-3d-game/references/physics-colliders.md +13 -0
  229. package/dist/skills/en-US/godot-3d-game/references/project-structure.md +22 -0
  230. package/dist/skills/en-US/godot-3d-game/references/skeleton-animation.md +16 -0
  231. package/dist/skills/en-US/phaser-2d-game/SKILL.md +127 -0
  232. package/dist/skills/en-US/phaser-2d-game/agents/openai.yaml +8 -0
  233. package/dist/skills/en-US/phaser-2d-game/references/engine-performance.md +64 -0
  234. package/dist/skills/en-US/phaser-2d-game/references/engine-physics.md +139 -0
  235. package/dist/skills/en-US/phaser-2d-game/references/engine-runtime.md +129 -0
  236. package/dist/skills/en-US/phaser-2d-game/references/engine-spritesheets.md +99 -0
  237. package/dist/skills/en-US/phaser-2d-game/references/engine-tilemaps.md +80 -0
  238. package/dist/skills/en-US/phaser-2d-game/references/file-structure.md +94 -0
  239. package/dist/skills/en-US/phaser-2d-graphics-builder/SKILL.md +68 -0
  240. package/dist/skills/en-US/phaser-2d-graphics-builder/agents/openai.yaml +7 -0
  241. package/dist/skills/en-US/threejs-3d-game/SKILL.md +117 -0
  242. package/dist/skills/en-US/threejs-3d-game/agents/openai.yaml +7 -0
  243. package/dist/skills/en-US/threejs-3d-game/references/engine-asset-pipeline.md +155 -0
  244. package/dist/skills/en-US/threejs-3d-game/references/engine-audio.md +70 -0
  245. package/dist/skills/en-US/threejs-3d-game/references/engine-input-camera.md +84 -0
  246. package/dist/skills/en-US/threejs-3d-game/references/engine-performance.md +96 -0
  247. package/dist/skills/en-US/threejs-3d-game/references/engine-physics.md +142 -0
  248. package/dist/skills/en-US/threejs-3d-game/references/engine-runtime.md +199 -0
  249. package/dist/skills/en-US/threejs-3d-game/references/file-structure.md +353 -0
  250. package/dist/skills/en-US/threejs-aaa-graphics-builder/SKILL.md +62 -0
  251. package/dist/skills/en-US/threejs-aaa-graphics-builder/agents/openai.yaml +7 -0
  252. package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/SKILL.md +33 -6
  253. package/{skills → dist/skills/zh-CN}/evomeme-cover/SKILL.md +7 -8
  254. package/{skills → dist/skills/zh-CN}/evomeme-game-maker/SKILL.md +91 -88
  255. package/{skills → dist/skills/zh-CN}/evomeme-login/SKILL.md +5 -0
  256. package/dist/skills/zh-CN/evomeme-mcp/SKILL.md +71 -0
  257. package/dist/skills/zh-CN/evomeme-mcp/agents/openai.yaml +7 -0
  258. package/dist/skills/zh-CN/evomeme-mcp/references/troubleshooting.md +55 -0
  259. package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/SKILL.md +6 -5
  260. package/dist/skills/zh-CN/evomeme-ui/SKILL.md +123 -0
  261. package/dist/skills/zh-CN/evomeme-ui/agents/openai.yaml +4 -0
  262. package/dist/skills/zh-CN/evomeme-ui/references/host-layout.md +69 -0
  263. package/dist/skills/zh-CN/game-asset-align/SKILL.md +47 -0
  264. package/dist/skills/zh-CN/game-asset-align/agents/openai.yaml +8 -0
  265. package/dist/skills/zh-CN/game-asset-align/references/alignment-contract.md +61 -0
  266. package/dist/skills/zh-CN/game-asset-align/references/blender-scene-pipeline.md +35 -0
  267. package/dist/skills/zh-CN/game-asset-align/references/canonical-package.md +26 -0
  268. package/dist/skills/zh-CN/game-asset-align/references/engine-capabilities.md +14 -0
  269. package/dist/skills/zh-CN/game-asset-align/references/lightweight-review.md +34 -0
  270. package/dist/skills/zh-CN/game-asset-align/references/repair-policy.md +30 -0
  271. package/dist/skills/zh-CN/game-asset-align/references/tool-contract.md +69 -0
  272. package/dist/skills/zh-CN/game-asset-align/references/visual-review.md +26 -0
  273. package/dist/skills/zh-CN/game-asset-batch-generator/SKILL.md +117 -0
  274. package/dist/skills/zh-CN/game-asset-batch-generator/agents/openai.yaml +7 -0
  275. package/dist/skills/zh-CN/game-asset-image-generator/SKILL.md +86 -0
  276. package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/background.md +3 -1
  277. package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/static-game-assets.md +2 -2
  278. package/dist/skills/zh-CN/game-asset-mesh-generator/SKILL.md +35 -0
  279. package/dist/skills/zh-CN/game-asset-mesh-generator/agents/openai.yaml +7 -0
  280. package/dist/skills/zh-CN/game-asset-mesh-generator/references/animation-presets.md +313 -0
  281. package/dist/skills/zh-CN/game-asset-mesh-generator/references/generation-contracts.md +131 -0
  282. package/dist/skills/zh-CN/game-asset-mesh-generator/references/image-generator-workflows.md +65 -0
  283. package/dist/skills/zh-CN/game-asset-mesh-generator/references/postprocess-contracts.md +187 -0
  284. package/dist/skills/zh-CN/game-asset-mesh-generator/references/threejs-integration.md +113 -0
  285. package/dist/skills/zh-CN/game-asset-mesh-generator/references/tool-reference.md +67 -0
  286. package/dist/skills/zh-CN/game-audio/SKILL.md +121 -0
  287. package/dist/skills/zh-CN/game-audio/agents/openai.yaml +4 -0
  288. package/dist/skills/zh-CN/game-audio/references/bgm-cdn.md +123 -0
  289. package/dist/skills/zh-CN/game-audio/references/sfx-cdn.md +79 -0
  290. package/dist/skills/zh-CN/game-character-view-generator/SKILL.md +110 -0
  291. package/dist/skills/zh-CN/game-character-view-generator/agents/openai.yaml +7 -0
  292. package/dist/skills/zh-CN/game-image-layer-decomposer/SKILL.md +99 -0
  293. package/dist/skills/zh-CN/game-image-layer-decomposer/agents/openai.yaml +7 -0
  294. package/dist/skills/zh-CN/game-image-splitter/SKILL.md +114 -0
  295. package/dist/skills/zh-CN/game-image-splitter/agents/openai.yaml +7 -0
  296. package/dist/skills/zh-CN/game-perfect-pixel/SKILL.md +123 -0
  297. package/dist/skills/zh-CN/game-perfect-pixel/agents/openai.yaml +7 -0
  298. package/dist/skills/zh-CN/game-scroll-generator/SKILL.md +110 -0
  299. package/dist/skills/zh-CN/game-scroll-generator/agents/openai.yaml +7 -0
  300. package/dist/skills/zh-CN/game-test/references/checklists/playtest-qa.md +12 -0
  301. package/dist/skills/zh-CN/game-tile-generator/SKILL.md +151 -0
  302. package/dist/skills/zh-CN/game-tile-generator/agents/openai.yaml +7 -0
  303. package/{skills → dist/skills/zh-CN}/game-ui/SKILL.md +9 -1
  304. package/dist/skills/zh-CN/game-ui/references/checklists/game-ui-quality.md +14 -0
  305. package/dist/skills/zh-CN/game-ui/references/checklists/hud-readability.md +12 -0
  306. package/dist/skills/zh-CN/game-ui/references/checklists/mobile-input.md +12 -0
  307. package/dist/skills/zh-CN/game-ui/references/checklists/responsive-ui-fit.md +12 -0
  308. package/dist/skills/zh-CN/game-ui/references/ui-patterns.md +140 -0
  309. package/dist/skills/zh-CN/game-ui/references/ui-prompt-templates.md +63 -0
  310. package/dist/skills/zh-CN/game-ui-generator/SKILL.md +82 -0
  311. package/dist/skills/zh-CN/game-ui-generator/agents/openai.yaml +7 -0
  312. package/dist/skills/zh-CN/game-ui-generator/references/component-patterns.md +65 -0
  313. package/dist/skills/zh-CN/game-ui-generator/references/runtime-integration.md +45 -0
  314. package/dist/skills/zh-CN/game-video-cycle/SKILL.md +98 -0
  315. package/dist/skills/zh-CN/game-video-cycle/agents/openai.yaml +7 -0
  316. package/dist/skills/zh-CN/game-video-generator/SKILL.md +78 -0
  317. package/dist/skills/zh-CN/game-video-generator/agents/openai.yaml +7 -0
  318. package/dist/skills/zh-CN/godot-3d-game/SKILL.md +41 -0
  319. package/dist/skills/zh-CN/godot-3d-game/agents/openai.yaml +8 -0
  320. package/dist/skills/zh-CN/godot-3d-game/references/alignment-gates.md +26 -0
  321. package/dist/skills/zh-CN/godot-3d-game/references/appearance-alignment.md +54 -0
  322. package/dist/skills/zh-CN/godot-3d-game/references/build-and-qa.md +22 -0
  323. package/dist/skills/zh-CN/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  324. package/dist/skills/zh-CN/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  325. package/dist/skills/zh-CN/godot-3d-game/references/physics-colliders.md +13 -0
  326. package/dist/skills/zh-CN/godot-3d-game/references/project-structure.md +22 -0
  327. package/dist/skills/zh-CN/godot-3d-game/references/skeleton-animation.md +16 -0
  328. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  329. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  330. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  331. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/compose-quality.md +10 -0
  332. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +9 -0
  333. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +15 -0
  334. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +10 -0
  335. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +9 -0
  336. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +9 -0
  337. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/compose-recipes.md +71 -0
  338. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +33 -0
  339. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/implementation-blueprint.md +82 -0
  340. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/sprite-recipes.md +90 -0
  341. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/technical-art.md +67 -0
  342. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/vfx-recipes.md +67 -0
  343. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/visual-scorecard.md +129 -0
  344. package/{skills → dist/skills/zh-CN}/threejs-3d-game/SKILL.md +6 -2
  345. package/dist/skills/zh-CN/threejs-3d-game/references/engine-asset-pipeline.md +155 -0
  346. package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/SKILL.md +6 -6
  347. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  348. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  349. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  350. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +23 -0
  351. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +19 -0
  352. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +14 -0
  353. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +14 -0
  354. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +15 -0
  355. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +17 -0
  356. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +236 -0
  357. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/implementation-blueprint.md +161 -0
  358. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/model-recipes.md +146 -0
  359. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/render-recipes.md +90 -0
  360. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/shader-cookbook.md +292 -0
  361. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/technical-art.md +167 -0
  362. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/visual-scorecard.md +147 -0
  363. package/dist/stage-blender/bake_materials.py +102 -0
  364. package/dist/stage-blender/export_scene.py +275 -0
  365. package/dist/stage-blender/preview_camera.py +90 -0
  366. package/dist/stage-blender/repair_mesh.py +112 -0
  367. package/dist/stage-public/app.js +759 -0
  368. package/dist/stage-public/baked/bakePilot.js +44 -0
  369. package/dist/stage-public/baked/bakedScene.js +129 -0
  370. package/dist/stage-public/baked/sceneAppearance.js +225 -0
  371. package/dist/stage-public/baked/sceneCamera.js +45 -0
  372. package/dist/stage-public/comparison-contract.js +28 -0
  373. package/dist/stage-public/delivery.html +4 -0
  374. package/dist/stage-public/delivery.js +17 -0
  375. package/dist/stage-public/godot/appearance.gd +170 -0
  376. package/dist/stage-public/godot/preview.gd +79 -0
  377. package/dist/stage-public/index.html +141 -0
  378. package/dist/stage-public/review-app.js +289 -0
  379. package/dist/stage-public/review-runtime.js +63 -0
  380. package/dist/stage-public/review.css +24 -0
  381. package/dist/stage-public/review.html +47 -0
  382. package/dist/stage-public/scene-runtime.js +212 -0
  383. package/dist/stage-public/sceneContractRuntime.js +235 -0
  384. package/dist/stage-public/styles.css +328 -0
  385. package/dist/stage-public/three-appearance.js +104 -0
  386. package/dist/stage-public/vendor/three170/LICENSE +21 -0
  387. package/dist/stage-public/vendor/three170/build/three.module.js +54571 -0
  388. package/dist/stage-public/vendor/three170/examples/jsm/controls/OrbitControls.js +1523 -0
  389. package/dist/stage-public/vendor/three170/examples/jsm/environments/RoomEnvironment.js +144 -0
  390. package/dist/stage-public/vendor/three170/examples/jsm/libs/fflate.module.js +2672 -0
  391. package/dist/stage-public/vendor/three170/examples/jsm/loaders/EXRLoader.js +2563 -0
  392. package/dist/stage-public/vendor/three170/examples/jsm/loaders/GLTFLoader.js +4727 -0
  393. package/dist/stage-public/vendor/three170/examples/jsm/utils/BufferGeometryUtils.js +1373 -0
  394. package/dist/tile-transition-mask.svg +40 -0
  395. package/package.json +24 -8
  396. package/dist/canvas-public/cycle-detect.js +0 -166
  397. package/dist/canvas-public/smart-split.js +0 -185
  398. package/skills/game-asset-image-generator/SKILL.md +0 -104
  399. package/skills/game-audio/SKILL.md +0 -82
  400. package/skills/game-audio/agents/openai.yaml +0 -4
  401. package/skills/threejs-3d-game/references/engine-asset-pipeline.md +0 -116
  402. /package/{skills → dist/skills/en-US}/game-test/references/checklists/playtest-qa.md +0 -0
  403. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/game-ui-quality.md +0 -0
  404. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/hud-readability.md +0 -0
  405. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/mobile-input.md +0 -0
  406. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/responsive-ui-fit.md +0 -0
  407. /package/{skills → dist/skills/en-US}/game-ui/references/ui-patterns.md +0 -0
  408. /package/{skills → dist/skills/en-US}/game-ui/references/ui-prompt-templates.md +0 -0
  409. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  410. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  411. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  412. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/compose-quality.md +0 -0
  413. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  414. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +0 -0
  415. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +0 -0
  416. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  417. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +0 -0
  418. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/compose-recipes.md +0 -0
  419. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +0 -0
  420. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/implementation-blueprint.md +0 -0
  421. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/sprite-recipes.md +0 -0
  422. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/technical-art.md +0 -0
  423. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/vfx-recipes.md +0 -0
  424. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/visual-scorecard.md +0 -0
  425. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  426. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  427. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  428. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +0 -0
  429. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +0 -0
  430. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +0 -0
  431. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  432. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +0 -0
  433. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  434. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +0 -0
  435. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/implementation-blueprint.md +0 -0
  436. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/model-recipes.md +0 -0
  437. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/render-recipes.md +0 -0
  438. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/shader-cookbook.md +0 -0
  439. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/technical-art.md +0 -0
  440. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/visual-scorecard.md +0 -0
  441. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/SKILL.md +0 -0
  442. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/agents/openai.yaml +0 -0
  443. /package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/agents/openai.yaml +0 -0
  444. /package/{skills → dist/skills/zh-CN}/evomeme-cover/agents/openai.yaml +0 -0
  445. /package/{skills → dist/skills/zh-CN}/evomeme-game-maker/agents/openai.yaml +0 -0
  446. /package/{skills → dist/skills/zh-CN}/evomeme-login/agents/openai.yaml +0 -0
  447. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/SKILL.md +0 -0
  448. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/agents/openai.yaml +0 -0
  449. /package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/agents/openai.yaml +0 -0
  450. /package/{skills → dist/skills/zh-CN}/game-art/SKILL.md +0 -0
  451. /package/{skills → dist/skills/zh-CN}/game-art/agents/openai.yaml +0 -0
  452. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/agents/openai.yaml +0 -0
  453. /package/{skills → dist/skills/zh-CN}/game-demo/SKILL.md +0 -0
  454. /package/{skills → dist/skills/zh-CN}/game-demo/agents/openai.yaml +0 -0
  455. /package/{skills → dist/skills/zh-CN}/game-maker/SKILL.md +0 -0
  456. /package/{skills → dist/skills/zh-CN}/game-maker/agents/openai.yaml +0 -0
  457. /package/{skills → dist/skills/zh-CN}/game-test/SKILL.md +0 -0
  458. /package/{skills → dist/skills/zh-CN}/game-test/agents/openai.yaml +0 -0
  459. /package/{skills → dist/skills/zh-CN}/game-ui/agents/openai.yaml +0 -0
  460. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/SKILL.md +0 -0
  461. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/agents/openai.yaml +0 -0
  462. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-performance.md +0 -0
  463. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-physics.md +0 -0
  464. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-runtime.md +0 -0
  465. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-spritesheets.md +0 -0
  466. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-tilemaps.md +0 -0
  467. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/file-structure.md +0 -0
  468. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/SKILL.md +0 -0
  469. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/agents/openai.yaml +0 -0
  470. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/agents/openai.yaml +0 -0
  471. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-audio.md +0 -0
  472. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-input-camera.md +0 -0
  473. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-performance.md +0 -0
  474. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-physics.md +0 -0
  475. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-runtime.md +0 -0
  476. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/file-structure.md +0 -0
  477. /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/agents/openai.yaml +0 -0
@@ -0,0 +1,129 @@
1
+ # Visual Scorecard (Phaser 2D)
2
+
3
+ Score active-play screenshots, not idle title screens or isolated asset sheets. Prefer **mobile portrait** screenshots; add desktop when the project targets it.
4
+
5
+ Scores are self-assessed against the anchors below, so they drift optimistic. For premium/showcase claims: cite Measured Evidence where possible, run the Fresh-Eyes Review, and compare against packaged anchors before finalizing.
6
+
7
+ ## Calibration Anchors
8
+
9
+ Reference screenshots for score calibration are packaged in `phaser-2d-graphics-builder/assets/scorecard-anchors/`:
10
+
11
+ - `scene-1.jpeg` — score ~1: geometric/simple hero and props on a flat sparse stage, utility HUD.
12
+ - `scene-2.jpeg` — score ~2: authored sprites and scene art, readable state HUD, intentional composition; still short of dense active-play showcase.
13
+ - `scene-3.jpg` — score ~2.5–3: dense layered authored world in active play, varied character family, readable state feedback, cohesive HUD.
14
+
15
+ Before scoring World/environment, Hero/player, Sprite fidelity, Compose, or VFX, **view the anchors** and compare: if your screenshot reads closer to `scene-1.jpeg` than `scene-3.jpg` for that surface, the category is at most a 1–2 regardless of how much code was written.
16
+
17
+ Do not score against title screens, collages, or marketing montages.
18
+
19
+ ## Scoring Scale
20
+
21
+ - 0: Placeholder. Flat colors, missing art, unreadable state, debug UI, or no evidence.
22
+ - 1: Basic styled. Playable and themed, but obvious prototype assets, flat composition, or generic UI.
23
+ - 2: Premium stylized. Authored silhouettes, layered world, readable state, cohesive UI/world, measured performance.
24
+ - 3: Showcase. Strong art direction, memorable hero and world, dense authored detail, excellent readability, polished VFX, diagnostics.
25
+
26
+ ## Categories
27
+
28
+ 1. Art direction.
29
+ - 0: No clear theme.
30
+ - 1: Theme is mostly a palette swap.
31
+ - 2: Theme affects sprites, world layers, UI, and feedback.
32
+ - 3: Distinct identity on every production surface.
33
+ 2. Hero/player.
34
+ - 0: Colored rectangle / emoji / default shape.
35
+ - 1: Basic sprite with glow or simple tint.
36
+ - 2: Authored silhouette, clear facing, state cues (hurt/boost).
37
+ - 3: Memorable sprite language with expressive feedback.
38
+ 3. Obstacles/enemies.
39
+ - 0: Same box as everything else.
40
+ - 1: Recolored repeated silhouette.
41
+ - 2: At least three readable variants with telegraphs.
42
+ - 3: Varied family with anticipation and gameplay clarity.
43
+ 4. Rewards/interactables.
44
+ - 0: Plain circle/token.
45
+ - 1: Repeated icon with simple pulse.
46
+ - 2: Two authored forms with idle/collect states.
47
+ - 3: Desirable, animated, clearly valued in motion.
48
+ 5. World/environment.
49
+ - 0: Flat fill or empty stage.
50
+ - 1: Single background image, sparse props.
51
+ - 2: Layered Play/Near/Mid/Far matching `scene-profiles` profile.
52
+ - 3: Dense authored world that still preserves play readability.
53
+ 6. Sprite fidelity / atlas.
54
+ - 0: Procedural shapes only.
55
+ - 1: Mixed placeholder + one real image.
56
+ - 2: Key surfaces from MCP/user art; consistent PPI and facing; sheets measured before load.
57
+ - 3: Cohesive atlas/mip strategy, clean cutouts, no stretched mush.
58
+ 7. Compose (camera / parallax / tint).
59
+ - 0: No depth; camera fights the player.
60
+ - 1: Parallax or tint used as the whole style.
61
+ - 2: Intentional camera, parallax ratios, depth sort, readable overlays.
62
+ - 3: Cinematic but disciplined compose; never hides the next decision.
63
+ 8. VFX/motion.
64
+ - 0: None or random ambient particles.
65
+ - 1: Generic particles/trails.
66
+ - 2: Event-driven FX for hit, pickup, fail, combo, spawn, dash.
67
+ - 3: High-impact FX that clarify state and stay within budget.
68
+ 9. UI/HUD.
69
+ - 0: Debug text or missing UI.
70
+ - 1: Generic stat cards over the canvas.
71
+ - 2: Genre HUD via DOM overlay; colors echo world signals.
72
+ - 3: Cohesive hierarchy and polished transitions without covering Play.
73
+ 10. Performance evidence.
74
+ - 0: No notes after visual changes.
75
+ - 1: Informal "seems fine".
76
+ - 2: Texture/display/particle budget notes + mobile screenshot.
77
+ - 3: Before/after or budget-aware notes, pooling, atlas strategy.
78
+
79
+ ## Thresholds
80
+
81
+ Premium:
82
+
83
+ - Every category at least 2.
84
+ - Average at least 2.3.
85
+ - Mobile active-play screenshot when portrait mobile is in scope.
86
+ - Technical-art / budget notes after graphics changes.
87
+
88
+ Showcase:
89
+
90
+ - At least six categories score 3.
91
+ - No category below 2.
92
+ - Average at least 2.7.
93
+ - Performance evidence includes before/after or budget-aware notes.
94
+
95
+ ## Automatic Failures
96
+
97
+ Any of these prevents a premium/showcase claim:
98
+
99
+ - Active screenshot is placeholder-dominant (SVG/rect/emoji as hero or main threats).
100
+ - Main world is a flat fill with no authored Far/Mid layers when the profile requires them.
101
+ - Hero is mostly a shape plus glow/particles.
102
+ - Obstacles or rewards are one repeated silhouette recolored.
103
+ - Ambient particles or full-screen flash are the primary “art”.
104
+ - Compose (shake/vignette/parallax) hides the next gameplay decision.
105
+ - Dense formal HUD drawn in Canvas instead of DOM without an explicit project requirement.
106
+ - No asset sourcing ledger for premium hero/background surfaces.
107
+ - Claimed premium while required references were skipped.
108
+
109
+ ## Fresh-Eyes Review
110
+
111
+ Before finalizing premium/showcase:
112
+
113
+ 1. Look only at the latest active-play screenshot for 10 seconds.
114
+ 2. Name the weakest two categories without reading the scorecard you just filled.
115
+ 3. If either is below 2, lower scores and keep working—or report blockers.
116
+ 4. Confirm Automatic Failures are absent.
117
+
118
+ ## Measured Evidence
119
+
120
+ Prefer citing:
121
+
122
+ - `public/config.json` keys bound for hero/bg/parallax.
123
+ - Screenshot paths (mobile/desktop).
124
+ - Texture sizes / atlas notes / particle max counts from the technical art brief.
125
+ - Phaser Scale mode confirmation (no CSS canvas scale).
126
+
127
+ ## Output
128
+
129
+ When claiming premium/showcase, paste a filled table: category, score 0–3, one-line evidence, measured evidence if any. Include average and list Automatic Failures remaining (or “none”).
@@ -25,8 +25,12 @@ description: 用 Three.js、React Three Fiber、TypeScript 与 Vite 实现 3D
25
25
  3. **纯 Three 模块可单测**
26
26
  - `game/three/*` 禁止 import React;场景构建与数学助手可独立验证。
27
27
 
28
- 4. **资产键稳定**
29
- - 全部游戏代码通过 `manifest` / `public/config.json` 引用资产,不在业务代码中硬编码 glTF / 贴图路径。
28
+ 4. **资产键稳定 + Canonical 语义**
29
+ - 全部游戏代码通过 `manifest` / `public/config.json` / canonical 包引用资产,不在业务代码中硬编码 glTF / 贴图路径。
30
+ - **3D 网格必须来自** `assets/canonical/<id>/`(或 `evomeme asset sync <id> --target three_js --project "<project>" --workspace "<workspace>" --json` 同步到 `public/assets/canonical/<id>/`)。
31
+ - 加载后**必须**按 `asset.json` 应用朝向/尺度(见 `references/engine-asset-pipeline.md`);禁止在实体里硬编码 `rotation.y += Math.PI`。
32
+ - 对齐与预览默认走 `game-asset-align` + CLI `evomeme stage --asset <id> --target three_js`。先读 [CLI 契约](../game-asset-align/references/tool-contract.md):`evomeme` 为 `npx -y evomeme@latest` 或同版本本地构建的简写;指定 `--workspace`,自动化加 `--json`。Stage 保持前台会话运行,拿到 URL 即交给用户,后续命令在另一终端执行。
33
+ - **Blender 建模或修改后必须先打开 Stage,由用户查看并确认当前 Three.js 版本后才能导入。** `alignment.ready=true` 或 `asset align` 不代替用户确认;不得手工复制或替用户点击绕过门禁。
30
34
 
31
35
  ## 实现指导
32
36
 
@@ -0,0 +1,155 @@
1
+ # 引擎:资产加载与动画管线
2
+
3
+ 关注 **运行时如何安全接入 GLB**,以及如何消费 **canonical 资产包**(`model.glb` + `asset.json`)。
4
+
5
+ 加载/绑定网格、AnimationMixer、根运动、碰撞代理、导入后性能时加载本文件。路径与 config 契约仍以 `file-structure.md` 为准。对齐流程见技能 `game-asset-align`。
6
+
7
+ 命令中的 `evomeme` 按 [CLI 契约](../../game-asset-align/references/tool-contract.md) 选择启动方式;显式指定工作区。Stage 必须保持前台会话运行,后续 sync 在另一终端执行。
8
+
9
+ ## Canonical 包(强制)
10
+
11
+ **Blender 建模/修改后必须先打开 Stage 展板。用户查看并点击“确认当前版本,允许导入”后,才可进行下一步导入。** `evomeme stage --asset <id> --workspace "<workspace>" --target three_js --json`;格式检查和 `alignment.ready` 只表示技术状态,不能跳过确认。修改模型、纹理、灯光或显示配置后旧确认失效,必须重新查看确认。
12
+
13
+ Tripo / 代码建模 / Blender / 上传的模型,进游戏前必须是:
14
+
15
+ ```text
16
+ assets/canonical/<asset_id>/model.glb
17
+ assets/canonical/<asset_id>/asset.json
18
+ ```
19
+
20
+ 同步进 Vite 工程:
21
+
22
+ ```text
23
+ evomeme asset sync <id> --target three_js --project "<project>" --workspace "<workspace>" --json
24
+ → public/assets/canonical/<asset_id>/
25
+ ```
26
+
27
+ `asset.json` 关键字段:`forward_axis`、`scale_hint_metres`、`yaw/pitch/roll_offset_degrees`、`verified_by`。
28
+ directional 资产(角色/枪械/载具)`verified_by` 不得为 `unverified`。
29
+
30
+ 运行时约定:**-Z forward,+Y up**(与 Godot 相同)。完整场景使用同步生成的 `src/evomeme-stage/<id>/canonical_loader.js`,调用 `loadReviewedScene`。它与 Stage 共用 scene-runtime.js 和 three-appearance.js,复现已确认的 PBR、灯光、环境、相机以及已有烘焙显示路径。项目须使用 Three.js **0.170.0**;版本不一致会报错,需统一依赖后重新查看。
31
+
32
+ 包内包含 three.appearance.json(已确认 profile、诊断与文件指纹)、THREE_IMPORT.md、锁定运行时和可独立查看的 three-preview.html。旧 applyCanonicalOrientation.ts 仅供旧模型代码兼容;它不负责完整场景显示。
33
+
34
+ ## 输出与加载偏好
35
+
36
+ | 用途 | 格式 |
37
+ | --- | --- |
38
+ | Three 运行时 | 优先 GLB(PBR)+ 同目录 `asset.json` |
39
+ | 动画交换 | FBX 按需,再谨慎导入或离线转 GLB |
40
+ | 打印 / AR | STL/3MF、USDZ —— 非本游戏运行时默认 |
41
+
42
+ - 用 `GLTFLoader`(`three/addons/loaders/GLTFLoader.js`)。
43
+ - 运行时 URL:`./` 相对路径、`/assets/canonical/<id>/model.glb` 或外部 `http(s)`;禁止站点根随意绝对路径(见部署规则)。
44
+ - 加载放在资产层 / `game/three` 助手,**不要**在实体每帧 update 里 `load`。
45
+ - 业务代码通过 `manifest` / `config` / canonical `asset_id` 引用,不硬编码裸 URL。
46
+
47
+ ```ts
48
+ import * as THREE from 'three';
49
+ import { loadReviewedScene } from '../../evomeme-stage/courtyard/canonical_loader.js';
50
+
51
+ // assetBase 来自部署资源配置,指向本场景目录并以 / 结尾。
52
+ const runtime = await loadReviewedScene({
53
+ renderer, world: scene, camera, assetBase: config.assets.courtyard,
54
+ });
55
+ // 游戏主循环;由游戏负责更新相机画幅与 renderer 尺寸。
56
+ runtime.render(camera, deltaSeconds);
57
+ // 离场时
58
+ runtime.dispose();
59
+ ```
60
+
61
+ 完整环境在一个 Scene 内只加载一次。道具使用 appearanceEnabled:false 接入已有环境,返回根节点已应用 canonical TRS,不得再套补偿旋转或缩放。返回值还有 animations 和 stats;玩法、物理、动画播放由游戏资产层接管。R3F 或自定义后处理需接管渲染循环并调用 runtime.render;仅让框架调用 renderer.render 会跳过完整场景烘焙/后处理路径。
62
+
63
+ ## 包装实体
64
+
65
+ 导入场景包进游戏实体时显式处理:
66
+
67
+ - **必须**用 `asset.json` 统一 scale、pivot、朝向(外层 `Group`)
68
+ - 包围盒 / 逻辑 bounds
69
+ - **与视觉分离的 collision proxy**
70
+ - 加载失败占位或错误态
71
+ - 记录:文件大小、三角面、材质数、贴图尺寸、clip 名、`verified_by`
72
+
73
+ ## AnimationMixer
74
+
75
+ ```ts
76
+ const mixer = new THREE.AnimationMixer(gltf.scene);
77
+ const action = mixer.clipAction(gltf.animations[0]);
78
+ action.play();
79
+
80
+ // useFrame / 模拟后:秒
81
+ mixer.update(deltaSeconds);
82
+ ```
83
+
84
+ - 玩法状态映射到 clip:idle / walk-run / jump / attack / hurt / fall / turn 等。
85
+ - 街机默认:**原地动画 + 代码位移**;若保留根运动,必须有意为之。
86
+ - 重启时 stop actions、dispose mixer,避免叠播。
87
+
88
+ ## 根运动与导入动画注意(引擎侧)
89
+
90
+ 上游绑定/重定向的坑若存在,在引擎侧固定修法:
91
+
92
+ 1. 需要原地动画时优先在**导入后**处理,不要依赖不可控的上游 `animate_in_place` 行为。
93
+ 2. 原地化时只改顶层根骨位置轨(常见名 `Root.position`),且只钉死水平 XZ,**保留 Y**(跳跃起伏)。
94
+ 3. 不要广谱删 Hip/Pelvis 或 twist 轨:部分绑定把肢体蒙在 twist 上,删轨会塌肢体。
95
+
96
+ ```ts
97
+ for (const clip of clips) {
98
+ for (const tr of clip.tracks) {
99
+ if (tr.name !== 'Root.position') continue;
100
+ const v = tr.values;
101
+ const x0 = v[0];
102
+ const z0 = v[2];
103
+ for (let i = 0; i < v.length; i += 3) {
104
+ v[i] = x0;
105
+ v[i + 2] = z0;
106
+ }
107
+ }
108
+ }
109
+ ```
110
+
111
+ 批处理重定向若得到 `NlaTrack` / `NlaTrack.001`:按**请求顺序**用下标映射到预设名,加载后 `clip.name = 'walk'` 再按名选取。
112
+
113
+ 加载后打日志:`gltf.animations.map(c => \`${c.name} ${c.tracks.length} tracks\`)`。人型健康 clip 应驱动大量骨骼;只有极少 track 通常是上游绑定坏了,先修绑定。
114
+
115
+ ### FBX 摄入(人型重定向常见)
116
+
117
+ - `FBXLoader` 依赖 `fflate`;bundler 一般自动带上。
118
+ - 同一 take 可能出现两条不同 `|` 深度路径的 clip:**保留更浅**的那条。
119
+ - 用关键词选 clip(walk / idle / attack),不要盲目 `animations[0]` 除非管线保证单 take。
120
+ - FBX 常是 Phong,比 GLB PBR 暗;最终美术对齐可离线转 GLB。
121
+ - 除「单根骨水平钉死」外,避免再在 loader 侧「修正」动画(易越修越坏)。
122
+
123
+ ## 性能纪律
124
+
125
+ - 浏览器/移动:控面数、贴图尺寸;英雄件高质量 + 实例化/程序化配角。
126
+ - Clone 时尽量共享 geometry/material。
127
+ - 离场 / 换关 dispose 已加载资源。
128
+ - 导入前后记 renderer diagnostics:calls、triangles、geometries、textures、materials、文件体积。
129
+ - 运行时卡顿、池化、DPR、LOD 见 `engine-performance.md`。
130
+
131
+ ## 导入体检清单
132
+
133
+ - [ ] 文件大小与三角面可接受
134
+ - [ ] 网格 / 材质 / 贴图数量与尺寸
135
+ - [ ] 当前灯光下 PBR 观感
136
+ - [ ] 米制尺度与 pivot / bounds 来自 `asset.json`,非猜的
137
+ - [ ] `verified_by` 已记录(directional 资产非 unverified)
138
+ - [ ] 碰撞代理独立且调试可见
139
+ - [ ] clip 名、时长、根运动策略明确
140
+ - [ ] 失败有占位;成功路径进 manifest/config/canonical
141
+ - [ ] 卸载与重开无泄漏
142
+ - [ ] 未在玩法代码中硬编码补偿旋转
143
+
144
+ ## 常见修复
145
+
146
+ | 问题 | 处理 |
147
+ | --- | --- |
148
+ | 过大/过小 | 外层 Group 归一化 bounds |
149
+ | 朝向错 | **改 asset.json / 回展板**,不要在玩法 wrapper 里永久硬转 |
150
+ | 尺度错 | 写 `scale_hint_metres` 后重新加载 |
151
+ | 几何坏了 | Blender 修改并重新导出(原点/落地可用 `evomeme asset repair <id>`)→ Stage 重新确认 → sync |
152
+ | 动画滑步/飘走 | 保留导出根运动后按上式只钉 XZ |
153
+ | 太贵 | 降面、缩贴图、少唯一重模 |
154
+ | 材质过暗/过亮 | 色域、tone mapping、环境光、曝光 |
155
+ | 碰撞怪 | 视觉 mesh 不参与物理,另建 proxy |
@@ -33,11 +33,11 @@ For broad "still looks basic", premium, AAA, high-fidelity, showcase, or less-ba
33
33
 
34
34
  External asset sourcing gate:
35
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.
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, load `../game-asset-mesh-generator` before deciding procedural geometry is enough.
37
+ - For concept needs, texture/material references, decals, logos, faction marks, icons, GUI art, skies, backgrounds, title/menu art, or image-to-3D inputs: prefer procedural/CSS/canvas UI art; use user-supplied local images via `evomeme_upload_game_asset` + MCP `evomeme_image_to_mesh`, or remote MCP `evomeme_generate_game_image` when available.
38
+ - Create an asset sourcing ledger for each high-value surface: procedural / ../game-asset-mesh-generator / 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 generation 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 not an allowed final answer unless there is real blocker evidence. At least one high-value surface must show a 3D generator task ID, downloaded GLB/GLTF/FBX path, user-provided/remote 2D asset path, or documented hybrid chain.
41
41
 
42
42
  ## Workflow
43
43
 
@@ -45,7 +45,7 @@ External asset sourcing gate:
45
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
46
  3. Score visuals across art direction, hero/player, obstacles, rewards, world, materials, render, VFX, UI, and performance evidence.
47
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.
48
+ 5. Fill the external asset sourcing ledger per surface: procedural Three.js factory, user-provided/remote 2D reference, `../game-asset-mesh-generator` 3D generation, or a hybrid.
49
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
50
  7. Add lighting/render/material polish after authored forms exist, following the paradigm's Lighting stack intent and `references/render-recipes.md`.
51
51
  8. Add event-driven VFX tied to gameplay state.
@@ -0,0 +1,23 @@
1
+ # AAA Browser Game Quality Gate
2
+
3
+ - The game is immediately playable and not presented as a landing page.
4
+ - The core loop has objective, scoring/progress, fail/retry, pacing, and feedback.
5
+ - Screenshots do not read as a collection of default primitives, debug HUDs, or generic placeholder panels.
6
+ - Unadorned boxes, cones, spheres, flat planes, and stretched buildings are not the dominant art language unless explicitly intentional.
7
+ - UI is genre-specific, compact, readable during motion, responsive, and includes needed modal states.
8
+ - Player, threats, rewards, and objectives have distinct silhouettes and material/feedback language.
9
+ - Player/hero asset has primary silhouette, secondary structure, tertiary detail, material contrast, and state feedback.
10
+ - Obstacle/enemy set includes at least three authored variants with unique telegraphs.
11
+ - Reward/interactable set includes at least two authored variants with collection/interaction feedback.
12
+ - World kit includes reusable modules and does not rely on one repeated skyline/block/road primitive.
13
+ - The scene has foreground, midground, and background depth instead of one flat play lane.
14
+ - Lighting, shadows, fog, and post-processing clarify depth and mood without hiding gameplay.
15
+ - Procedural models use the authored factories, shared material kit, reusable prop kits, and collision proxies from `../implementation-blueprint.md` and `../technical-art.md`.
16
+ - Movement, camera, speed, impact, and restart loop feel tuned through play, not just configured.
17
+ - Audio/visual feedback exists for core actions and state transitions.
18
+ - Mobile viewport preserves framing, safe areas, touch targets, and text fit.
19
+ - Renderer diagnostics from `../technical-art.md` are reviewed when visual fidelity changes.
20
+ - Visual scorecard in `../visual-scorecard.md` passes: every category at least 2 and average at least 2.3.
21
+ - Build, browser run, console/page errors, screenshots, nonblank canvas, interaction, and responsive checks all pass.
22
+ - A screenshot critique identifies no unresolved high-impact placeholder-quality blockers.
23
+ - If any premium surface was intentionally deferred, the final report says which one and why.
@@ -0,0 +1,19 @@
1
+ # AAA Visual Scorecard Checklist
2
+
3
+ Use with `../visual-scorecard.md`.
4
+
5
+ - Current desktop and mobile active-play screenshots are available.
6
+ - Art direction category scored 0-3.
7
+ - Hero/player asset category scored 0-3.
8
+ - Obstacles/enemies category scored 0-3.
9
+ - Rewards/interactables category scored 0-3.
10
+ - World/environment category scored 0-3.
11
+ - Materials/textures category scored 0-3.
12
+ - Lighting/render category scored 0-3.
13
+ - VFX/motion category scored 0-3.
14
+ - UI/HUD category scored 0-3.
15
+ - Performance evidence category scored 0-3.
16
+ - No automatic failure is present: check every item in the canonical Automatic Failures list in `../visual-scorecard.md` (do not rely on a from-memory summary of it).
17
+ - Technical-art evidence includes material kit, VFX readability, instancing/LOD/culling decision, DPR/post/shadow tradeoffs, and imported asset diagnostics when generated/imported assets are used.
18
+ - Premium gate passes only when every category is at least 2 and average score is at least 2.3.
19
+ - Showcase gate passes only when at least six categories are 3, no category is below 2, and average score is at least 2.7.
@@ -0,0 +1,14 @@
1
+ # Material and Lighting Quality Checklist
2
+
3
+ Gate the lighting/material recipes in `../render-recipes.md` and the material kit in `../technical-art.md`.
4
+
5
+ - Renderer color space, tone mapping, exposure, and shadow settings are intentional.
6
+ - Key, fill, rim, ambient, and environment lighting follow the lighting stack in `../render-recipes.md` and clarify depth and gameplay roles.
7
+ - Materials avoid flat default looks through roughness/metalness/emissive/vertex-color variation.
8
+ - Important objects have readable silhouettes against background, fog, and effects.
9
+ - Shadows help ground assets without obscuring navigation or collision boundaries.
10
+ - Fog, bloom, particles, and post-processing support readability instead of hiding it.
11
+ - Procedural textures or decals are scaled, stable, and not visually noisy during movement.
12
+ - Materials reuse the shared kit in `../technical-art.md` where possible and are disposed when obsolete.
13
+ - Desktop and mobile screenshots are checked after lighting/material changes.
14
+ - Renderer info or frame-time evidence is gathered when render cost changes.
@@ -0,0 +1,14 @@
1
+ # Performance-Safe Visual Detail Checklist
2
+
3
+ Gate the render budget and instancing/LOD guidance in `../technical-art.md`.
4
+
5
+ - Baseline renderer info is captured when increasing fidelity.
6
+ - Draw calls, triangles, geometries, materials, textures, and frame time are reviewed against the render budget in `../technical-art.md` after changes.
7
+ - Repeated details use the instancing/LOD approach in `../technical-art.md`: instancing, shared resources, atlases, or generated texture reuse where practical.
8
+ - High segment counts are limited to silhouette-critical forms.
9
+ - Shadows are scoped by light count, shadow map size, casters/receivers, and camera distance.
10
+ - Post-processing is justified by gameplay readability or strong art direction.
11
+ - DPR caps or adaptive quality are considered for mobile.
12
+ - Generated resources have a disposal/reuse strategy.
13
+ - The worst-case gameplay scene, not only idle view, is inspected.
14
+ - Visual detail remains readable at mobile resolution without excessive GPU cost.
@@ -0,0 +1,15 @@
1
+ # Procedural Model Quality Checklist
2
+
3
+ Gate the procedural modeling guidance in `../model-recipes.md` and the material kit in `../technical-art.md`.
4
+
5
+ - The model has a recognizable silhouette from the gameplay camera.
6
+ - Primary forms read clearly before material or post-processing detail.
7
+ - Secondary detail supports the asset role: panels, trims, ridges, tubes, fins, sockets, decals, or emissive accents.
8
+ - Tertiary detail is visible at intended camera distance and does not create noise.
9
+ - Materials use the kit in `../technical-art.md` with purposeful contrast in roughness, metalness, color, emissive, or texture.
10
+ - Bevels, curves, and segment counts improve silhouette or highlight behavior.
11
+ - Repeated props use shared geometries/materials, instancing, or pools when practical.
12
+ - Visual mesh and gameplay collision/proxy are intentionally separated when needed.
13
+ - The factory returns named groups/meshes and keeps ownership/disposal clear.
14
+ - Renderer diagnostics from `../technical-art.md` are checked when triangles, materials, textures, or draw calls increase.
15
+ - Mobile screenshot still shows the asset as more than a primitive placeholder.
@@ -0,0 +1,17 @@
1
+ # Technical Art Quality Checklist
2
+
3
+ Use before claiming premium, AAA, showcase, high-fidelity, or less-basic visual quality after graphics changes. Each item gates the guidance in `../technical-art.md`.
4
+
5
+ - Technical art brief converts art direction into shapes, material roles, lighting, VFX, camera, UI/world motifs, and budgets.
6
+ - Hero surfaces and support surfaces are identified separately.
7
+ - Material kit uses the named shared roles from `../technical-art.md`, not scattered one-off colors/materials.
8
+ - Shader/post-processing choices have player-facing purpose and measured or bounded cost.
9
+ - VFX follow the event-driven language in `../technical-art.md`: readable, short-lived, and not hiding collision, threats, rewards, or UI.
10
+ - Instancing is used for large repeated same-geometry/same-material detail where appropriate.
11
+ - LOD, culling, or simplified far variants are planned for heavy background/imported assets.
12
+ - Imported/generated models have scale, pivot/orientation, bounds, file size, triangle/material/texture counts when available, and collision proxies checked.
13
+ - Decals/trim/detail systems reinforce function, route, faction, scale, or state.
14
+ - Threats, rewards, interactables, and player state are not communicated by color alone.
15
+ - DPR cap, shadow settings, post-processing passes, and mobile tradeoffs are reported.
16
+ - Renderer diagnostics match the render budget reporting in `../technical-art.md`: calls, triangles, geometries, textures, and material count when available.
17
+ - Final visual scorecard performance evidence category includes budget and technical-art evidence, not only screenshots.