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,20 @@
1
+ # Import and wrapper scenes
2
+
3
+ Godot imports GLB as a `PackedScene`. Keep that import generated and reproducible. Put scripts, collision, navigation, interaction markers and gameplay signals in a separate authored scene.
4
+
5
+ Recommended hierarchy:
6
+
7
+ ```text
8
+ EntityRoot (gameplay/world transform)
9
+ CollisionRoot
10
+ VisualParent
11
+ <asset_id>_A3AlignmentRoot (canonical recipe)
12
+ ImportedGLBRoot (unchanged)
13
+ ```
14
+
15
+ Do not edit the imported GLB child transform to fix orientation. Do not put the canonical recipe on `EntityRoot`, because its transform changes during gameplay. Do not wrap an inherited scene and then call the loader again inside it.
16
+
17
+ When the canonical asset changes, resync and let the alignment key replace the visual root. Preserve authored gameplay nodes outside that root.
18
+
19
+ For full scenes/maps with `pivot=origin`, instance under a world parent with identity transform. A level streaming offset is gameplay/world placement and belongs above the canonical root; it must not be written back as asset repair.
20
+
@@ -0,0 +1,13 @@
1
+ # Physics and colliders
2
+
3
+ Collision belongs to the gameplay scene, not inside the generated canonical package unless the source contract explicitly carries collider data.
4
+
5
+ - Use simple authored primitives for dynamic actors where possible.
6
+ - Use trimesh collision only for appropriate static environment geometry.
7
+ - Keep collision and visual roots as siblings under the entity so visual alignment does not silently scale physics twice.
8
+ - Validate collision layers, masks, ground clearance and center of mass after every source/recipe revision.
9
+
10
+ If the canonical wrapper scale is not `[1,1,1]`, size authored colliders against the accepted world dimensions. Do not copy the wrapper scale onto both the collision root and its shapes.
11
+
12
+ Physics mismatch can reveal a spatial or semantic defect. If the visual object cannot align with a reasonable collider without local hacks, mark the relevant canonical condition non-ready and repair the source or recipe.
13
+
@@ -0,0 +1,22 @@
1
+ # Godot project structure
2
+
3
+ Use a stable separation between imported assets, authored wrapper scenes and gameplay systems.
4
+
5
+ ```text
6
+ res://
7
+ assets/canonical/<asset_id>/
8
+ model.glb
9
+ asset.json
10
+ canonical_loader.gd
11
+ scenes/assets/
12
+ scenes/levels/
13
+ scripts/gameplay/
14
+ scripts/presentation/
15
+ ```
16
+
17
+ The synchronized package is generated input. Do not hand-edit it in the Godot project; update the workspace canonical package and sync again.
18
+
19
+ Keep gameplay state on a stable parent such as `CharacterBody3D` or an entity root. Add the canonical visual root as a child. This lets control, networking and save state remain stable when the visual package revision changes.
20
+
21
+ Use authored `.tscn` scenes for gameplay composition, signals and engine-specific components. Keep the imported GLB scene read-only or inherited. Never save canonical compensation transforms into multiple scene layers.
22
+
@@ -0,0 +1,16 @@
1
+ # Skeleton and animation
2
+
3
+ Keep the canonical wrapper above the imported skeleton. Never apply alignment rotation to individual bones or bake it into animation clips.
4
+
5
+ After sync, verify:
6
+
7
+ - Skeleton3D and skinned meshes share the expected imported hierarchy;
8
+ - animations bind to existing node/bone paths;
9
+ - root motion is handled by one gameplay policy, not both AnimationTree and entity movement;
10
+ - frame zero does not snap because an animation track overwrites the wrapper;
11
+ - sockets for weapons or effects attach to bones/markers below the imported root as intended.
12
+
13
+ Retargeting, missing bones, broken weights and unusable clip naming are structural problems. Mark structural review non-ready and return to the canonical/Blender repair flow. A Godot AnimationTree state machine is not a geometry repair mechanism.
14
+
15
+ When replacing a character source, repeat structural and semantic review even if the silhouette appears unchanged; bone names and clip bindings are part of the maintained state.
16
+
@@ -0,0 +1,10 @@
1
+ # Compose Quality Checklist
2
+
3
+ - [ ] Camera model matches `scene_profile_id`
4
+ - [ ] Depth layer table documented and applied
5
+ - [ ] Parallax ratios sensible; Far slower than Play
6
+ - [ ] Tint/vignette does not gray-out state colors
7
+ - [ ] Shake/punch does not hide next decision
8
+ - [ ] No CSS/transform scaling of the game canvas
9
+ - [ ] Near occluders do not block critical telegraphs
10
+ - [ ] Readability tests passed on mobile screenshot
@@ -0,0 +1,9 @@
1
+ # Performance-Safe Visual Detail Checklist
2
+
3
+ - [ ] Particle/emitter caps set and respected
4
+ - [ ] Bullets/FX/enemies pooled where spammy
5
+ - [ ] Large biome textures unload or reuse across scenes when possible
6
+ - [ ] Parallax layer count justified (≤ strong layers, not many weak)
7
+ - [ ] First-cut order documented (what drops on low FPS)
8
+ - [ ] No per-frame texture generation
9
+ - [ ] Lights Manager avoided unless budgeted
@@ -0,0 +1,15 @@
1
+ # Premium Game Quality Gate (2D)
2
+
3
+ Before claiming premium / showcase / release-ready visuals:
4
+
5
+ - [ ] `scene_profile_id` recorded from `scene-profiles.md`
6
+ - [ ] Active-play screenshot compared to `assets/scorecard-anchors/` before scoring
7
+ - [ ] Reference ledger complete (no skipped required refs without reason)
8
+ - [ ] Asset sourcing ledger complete for hero + main background (+ primary hazards)
9
+ - [ ] Visual scorecard filled; premium or showcase thresholds met
10
+ - [ ] Automatic Failures = none
11
+ - [ ] Fresh-eyes review done
12
+ - [ ] Mobile active-play screenshot captured
13
+ - [ ] Technical art brief + budgets noted
14
+ - [ ] Formal HUD still DOM (unless project explicitly requires Canvas HUD)
15
+ - [ ] Playability not regressed (controls, hitboxes fair)
@@ -0,0 +1,10 @@
1
+ # Sprite Quality Checklist
2
+
3
+ - [ ] Hero facing matches movement/art brief
4
+ - [ ] Hero readable at mobile play size without glow crutch
5
+ - [ ] Hazards: enough silhouette variants for the genre (or documented single-threat)
6
+ - [ ] Rewards distinct from hazards in shape and color
7
+ - [ ] Backgrounds free of characters/UI baked into plates
8
+ - [ ] Spritesheet frame sizes measured before loader config
9
+ - [ ] `config.json` keys bound for all premium surfaces claimed
10
+ - [ ] Collision proxies fair vs art overhang
@@ -0,0 +1,9 @@
1
+ # Technical Art Quality Checklist
2
+
3
+ - [ ] Technical art brief written before broad visual changes
4
+ - [ ] Hero vs support surfaces listed
5
+ - [ ] Texture/atlas plan noted
6
+ - [ ] VFX language + caps noted
7
+ - [ ] Asset strategy per high-value surface recorded
8
+ - [ ] Mobile constraints acknowledged
9
+ - [ ] Post-pass diagnostics reported (even if qualitative + caps)
@@ -0,0 +1,9 @@
1
+ # Visual Scorecard Checklist (2D)
2
+
3
+ - [ ] Compared active-play screenshot to `assets/scorecard-anchors/` (scene-1 / scene-2 / scene-3)
4
+ - [ ] Scored from active-play screenshot (not title-only)
5
+ - [ ] All 10 categories scored 0–3 with one-line evidence
6
+ - [ ] Average computed
7
+ - [ ] Automatic Failures checked explicitly
8
+ - [ ] Fresh-eyes weakest-two named
9
+ - [ ] Measured evidence cited for textures/config/screenshots where claiming ≥2 on fidelity/performance
@@ -0,0 +1,71 @@
1
+ # Compose Recipes (Phaser 2D)
2
+
3
+ Use before changing camera, parallax, global tint, vignette, depth sorting, or screen-space overlays. Compose supports readability; it is not a replacement for authored sprites.
4
+
5
+ ## Camera
6
+
7
+ | Model | When | Notes |
8
+ | --- | --- | --- |
9
+ | Lock | `portrait_stage`, `board_table`, `fixed_arena` | Punch zoom on big events only |
10
+ | Follow + deadzone | `side_scroll_lane`, `topdown_map`, `runner_lane` | Deadzone avoids jitter |
11
+ | Room snap | Metroidvania-like | Bounds = room; no lerp fight |
12
+
13
+ Rules:
14
+
15
+ - Camera logic stays out of gameplay Systems when possible.
16
+ - Shake intensity scales with event severity; never obscure the next hazard.
17
+ - Prefer Phaser camera effects over CSS transforms on the canvas.
18
+ - World bounds and physics bounds stay aligned (`phaser-2d-game`).
19
+
20
+ ## Parallax
21
+
22
+ 1. Place Far → Mid → Play → Near per `DepthLayers`.
23
+ 2. Set `scrollFactorX/Y` (or parent container motion) so Far moves slowest.
24
+ 3. Near may move slightly faster than Play for depth, but must not cover telegraphs.
25
+ 4. Disable strong parallax on `topdown_map` / `board_table` unless subtle.
26
+
27
+ Reject: background scrolling faster than player decision reading; mismatched tile seams while scrolling.
28
+
29
+ ## Tint / Overlay / Vignette
30
+
31
+ Use a single full-screen Image/Graphics or Camera fade for:
32
+
33
+ - Biome mood (cool night, warm dusk).
34
+ - Pressure (arena wave)—keep center Play clearer than edges.
35
+ - Damage flash (≤100–150ms).
36
+
37
+ Do **not**:
38
+
39
+ - Stack multiple multiply overlays until art is gray mush.
40
+ - Use permanent heavy vignette to hide empty Far layers.
41
+ - Recolor every sprite differently so the palette collapses.
42
+
43
+ Signal colors (hazard / reward / safe) stay consistent with HUD tokens.
44
+
45
+ ## Depth Sorting
46
+
47
+ - Static world: fixed depths from the layer table.
48
+ - Mobile actors: Y-sort within Play band, or explicit depth = `base + y`.
49
+ - VFX above the actor that owns them, below Near occluders unless the FX is screen-space.
50
+
51
+ ## Screen FX vs World FX
52
+
53
+ | Kind | Placement | Examples |
54
+ | --- | --- | --- |
55
+ | World FX | At entity position, Play/Motion depth | Impact burst, dash dust |
56
+ | Screen FX | Camera-fixed container | Hit flash, edge warning |
57
+
58
+ Prefer world FX for spatial clarity; screen FX for global state only.
59
+
60
+ ## Readability Tests
61
+
62
+ After compose changes, verify on mobile:
63
+
64
+ 1. Hero silhouette still finds the eye in <1s.
65
+ 2. Next hazard/reward in the decision window is unobscured.
66
+ 3. Parallax does not cause mis-taps on touch targets (DOM HUD separate).
67
+ 4. No CSS scaling of the game canvas.
68
+
69
+ ## Checklist Hook
70
+
71
+ Run `checklists/compose-quality.md` before scoring the Compose category.
@@ -0,0 +1,33 @@
1
+ # Graphics Pass Prompt Templates (Phaser 2D)
2
+
3
+ Use only when the user asks for reusable prompts or a templated graphics pass.
4
+
5
+ ## Full premium pass
6
+
7
+ ```text
8
+ Load phaser-2d-graphics-builder. Select or confirm scene_profile_id from game-art/references/scene-profiles.md (2D Compose rail only).
9
+ Fill reference ledger (visual-scorecard, implementation-blueprint, sprite-recipes, compose-recipes, technical-art).
10
+ Score current mobile active-play screenshot. Build asset sourcing ledger; generate missing hero/bg/parallax via game-asset-image-generator.
11
+ Upgrade all weak surfaces; then compose; then event VFX. Re-score to premium thresholds or list blockers.
12
+ ```
13
+
14
+ ## Hero + background only
15
+
16
+ ```text
17
+ Graphics pass scoped to hero silhouette and Far/Mid backgrounds for profile <id>.
18
+ MCP-generate and bind config keys; do not redesign HUD. Report scorecard categories 2, 5, 6 only plus blockers.
19
+ ```
20
+
21
+ ## Compose-only
22
+
23
+ ```text
24
+ Do not regenerate art. Fix camera/parallax/depth/tint per compose-recipes for profile <id>.
25
+ Verify readability tests; update technical-art notes if layer count changed.
26
+ ```
27
+
28
+ ## VFX-only
29
+
30
+ ```text
31
+ Sprites/world already premium. Add event-driven FX from vfx-recipes for: <events>.
32
+ Pool emitters; respect technical-art caps; no ambient filler.
33
+ ```
@@ -0,0 +1,82 @@
1
+ # Phaser 2D Graphics Implementation Blueprint
2
+
3
+ Use when a Phaser game reads as basic even after it is playable. Goal: a production graphics architecture that can be iterated, scored, and budgeted. For premium/showcase work, also load `technical-art.md`.
4
+
5
+ ## Recommended Ownership
6
+
7
+ Directory layout follows `../phaser-2d-game/references/file-structure.md`. Keep **rules in Systems**, **sprites/FX in Scene or view helpers**. Suggested modules (names can merge in small games; concepts must stay separate):
8
+
9
+ ```text
10
+ src/game/assets/manifest.ts # or public/config.json bindings
11
+ src/game/view/SpriteFactory.ts # hero / hazard / reward creators
12
+ src/game/view/WorldPropKit.ts # repeated props, tileside dressing
13
+ src/game/view/DepthLayers.ts # Play/Near/Mid/Far/Motion constants
14
+ src/game/view/ComposeRig.ts # camera helpers, parallax, vignette/tint
15
+ src/game/view/VfxSystem.ts # event-driven FX (pooled)
16
+ src/game/view/QualityDiagnostics.ts # optional counters / debug overlays
17
+ src/scenes/GameplayScene.ts # wires systems → view; no rule ownership
18
+ ```
19
+
20
+ Asset files live under `assets/` (`characters/`, `environment/`, `fx/`, …) with stable keys in `public/config.json`.
21
+
22
+ ## Hybrid Asset Pipeline
23
+
24
+ Choose the asset path per surface:
25
+
26
+ - **MCP image** (`game-asset-image-generator`): hero, enemies, signature props, backgrounds, parallax layers, tileset sheets when art quality matters.
27
+ - **User-provided**: local/remote URLs the user supplies; still bind via `config.json`.
28
+ - **Procedural / Phaser Graphics / shapes**: collision debug, temporary stubs, repeated micro-detail, telegraph shapes that must stay code-driven.
29
+ - **Hybrid**: MCP base sprite + code tint/flash/outline for states; or tileset + prop kit overlays.
30
+
31
+ For premium hero, main background, and primary hazard family: do not finish with procedural-only unless a real MCP/user blocker is recorded.
32
+
33
+ ## Production Surfaces
34
+
35
+ A premium pass must touch every weak visible surface:
36
+
37
+ - Hero/player: authored silhouette, facing aligned with art brief, hurt/invuln/boost cues.
38
+ - Hazards/enemies: ≥3 distinct silhouettes when the genre has multiple threat types; telegraphs readable.
39
+ - Rewards/interactables: ≥2 forms; idle + collect states.
40
+ - World kit: Play / Near / Mid / Far / Motion matching `scene-profiles` profile; parallax ratios documented.
41
+ - Sprite fidelity: consistent pixel density; spritesheets measured before `load.spritesheet` (`engine-spritesheets.md`).
42
+ - Compose: camera model, depth sort, tint/overlay discipline (`compose-recipes.md`).
43
+ - VFX: event-driven only (`vfx-recipes.md`); pooled.
44
+ - UI/world cohesion: DOM HUD colors echo hazard/reward/safe signals—do not redesign HUD here beyond color token alignment; full HUD work is `game-ui`.
45
+ - Diagnostics: budget notes, screenshots, scorecard.
46
+
47
+ ## Technical Art Contract
48
+
49
+ Before broad implementation, write the brief from `technical-art.md`: hero vs support surfaces, texture/display/particle budgets, atlas plan, VFX caps, mobile first cuts.
50
+
51
+ ## Depth Layer Contract
52
+
53
+ Map `scene-profiles` layers to Phaser depth (example—adjust per game, keep gaps):
54
+
55
+ | Layer | Role | Typical depth |
56
+ | --- | --- | --- |
57
+ | Far | Background / sky | 0–100 |
58
+ | Mid | Stage / buildings | 100–300 |
59
+ | Play | Actors, hazards, rewards | 500–800 |
60
+ | Near | Foreground occluders | 900–1000 |
61
+ | Motion / VFX | Muzzle, impact, dashes | 1100–1200 |
62
+ | Screen FX | Flash/vignette containers | 2000+ |
63
+
64
+ Document the chosen map in `DepthLayers.ts`. Actors that need Y-sort stay within Play band.
65
+
66
+ ## State Feedback Without Fake AAA
67
+
68
+ Prefer, in order:
69
+
70
+ 1. Swap frame / anim / attachment sprite.
71
+ 2. Controlled tint / flash (short).
72
+ 3. Scale squash-stretch tied to gameplay events.
73
+ 4. Camera punch / hitstop (from `game-feel`, scaled for readability).
74
+ 5. Particles/trails last.
75
+
76
+ Never use permanent bloom-like overlays to hide missing art.
77
+
78
+ ## Wiring Rules
79
+
80
+ - Scene reads System state and spawns/updates view objects; Systems do not import Phaser GameObjects if avoidable.
81
+ - All runtime image URLs come from `config.json` / manifest—no scattered hardcoded CDN strings in multiple files.
82
+ - Scale only via Phaser Scale Manager (`engine-runtime.md`).
@@ -0,0 +1,90 @@
1
+ # Sprite Recipes (Phaser 2D)
2
+
3
+ Use before upgrading hero, hazard, reward, or world prop visuals. Recipes describe **readable silhouettes and production intent**, not full illustration briefs. Generation details stay in `../game-asset-image-generator/`.
4
+
5
+ ## Shared Rules
6
+
7
+ - One subject per asset key; facing must match gameplay (right-facing runners stay right-facing in art).
8
+ - Keep a **collision proxy** simpler than the art (rectangle/circle); art can overhang slightly if the hitbox stays fair.
9
+ - Family variants share a motif (helmet shape, horn, stripe) so players learn the cast.
10
+ - Pixel density: characters readable at mobile play size; do not upscale tiny icons into heroes.
11
+ - Prefer transparent Assets for actors; opaque Background for Far plates; Parallax layers with alpha for Mid/Near dressing.
12
+
13
+ ## Hero / Player
14
+
15
+ **Must have**
16
+
17
+ - Clear silhouette at thumbnail size.
18
+ - Readable front/facing (or top-down orientation for `topdown_map` / `board_table`).
19
+ - At least one state cue path: idle vs hurt vs power (frame, overlay, or tint—documented).
20
+
21
+ **Avoid**
22
+
23
+ - Symmetric blobs with no facing.
24
+ - Oversized weapon that hides the body.
25
+ - Relying on outline glow as the only identity.
26
+
27
+ **Upgrade path**
28
+
29
+ 1. Lock style from `game-art` (+ advanced style if requested).
30
+ 2. MCP generate `asset_player` (and optional `asset_player_hurt` / atlas frames).
31
+ 3. Wire anim keys; verify facing vs movement code.
32
+ 4. Add attach points later (dust, muzzle) without reskinning the whole hero.
33
+
34
+ ## Hazards / Enemies
35
+
36
+ **Must have**
37
+
38
+ - ≥3 variants when the design has multiple threat roles (blocker / chaser / ranged)—or document why the genre is single-threat.
39
+ - Telegraph: wind-up pose, color flash, or warning glyph **before** damage frames.
40
+ - Shape language distinct from rewards.
41
+
42
+ **Avoid**
43
+
44
+ - One square, three hues.
45
+ - Camouflage against Mid/Far that makes hits feel unfair.
46
+
47
+ ## Rewards / Interactables
48
+
49
+ **Must have**
50
+
51
+ - High contrast vs Play floor.
52
+ - Idle motion subtle (bob/pulse ≤ subtle); collect burst is event FX.
53
+ - Two forms when economy has tiers (coin vs gem, weapon vs heal).
54
+
55
+ **Avoid**
56
+
57
+ - Same shape as hazards.
58
+ - Permanent screen-covering sparkle.
59
+
60
+ ## World Prop Kit
61
+
62
+ Build a small kit, not one-off decorations:
63
+
64
+ | Kit piece | Use |
65
+ | --- | --- |
66
+ | Edge marker | Lane/arena boundary readability |
67
+ | Mid module | Repeatable building/cliff/hedge segment |
68
+ | Far plate | Single strong skyline or stage back |
69
+ | Near fringe | Grass, railing, table lip—occludes lightly |
70
+ | Hazard stripe / safe glyph | Gameplay-readable floor language |
71
+
72
+ Repeat with tint variants; do not MCP-generate 50 unique bushes.
73
+
74
+ ## Tilesets
75
+
76
+ When using tilemaps (`engine-tilemaps.md`):
77
+
78
+ - One visual language per biome.
79
+ - Collision layer ≠ decorated layer.
80
+ - Autotile/seam care: avoid noisy tiles that hide pickups.
81
+
82
+ ## Backgrounds & Parallax
83
+
84
+ - Far: full-bleed Background, no characters/UI in the plate.
85
+ - Mid/Near parallax: fewer focal subjects; leave Play cone clean per `scene-profiles`.
86
+ - Scroll factors: Far `0.1–0.3`, Mid `0.4–0.7`, Near `1.0–1.15` (tune per game; document).
87
+
88
+ ## Checklist Hook
89
+
90
+ Before scoring Sprite fidelity / Hero / Obstacles / Rewards, run `checklists/sprite-quality.md`.
@@ -0,0 +1,67 @@
1
+ # Technical Art For Phaser 2D Games
2
+
3
+ Use before premium/showcase graphics work, atlas/texture strategy, particle/VFX systems, or any visual pass that could affect mobile performance.
4
+
5
+ Technical art bridges art direction and real-time constraints. Goal: readable authored detail that survives active play on mid-tier phones—not maximum particle counts.
6
+
7
+ ## Technical Art Brief
8
+
9
+ Before implementation, write:
10
+
11
+ - Art direction in renderable terms: silhouettes, layers, compose, VFX language, camera.
12
+ - Hero surfaces vs support surfaces.
13
+ - Texture/atlas plan: max page size, shared atlases vs discrete images.
14
+ - VFX caps: max concurrent emitters, particle lifespans, pool sizes.
15
+ - Display list budget target (rough): dynamic objects in Play band.
16
+ - Asset strategy per surface: mcp-image / user / procedural / hybrid.
17
+ - Mobile first cuts: what to disable first if frame time slips (screen FX → Near props → Mid parallax detail → particle rate).
18
+
19
+ ## Budget Starting Points
20
+
21
+ Starting contracts—not universal limits. Measure on device; document overruns.
22
+
23
+ | Metric (worst active-play) | Mobile portrait target | Notes |
24
+ | --- | --- | --- |
25
+ | Unique textures (approx.) | ≤ 40–60 | Prefer atlases; huge unique BGs count heavy |
26
+ | Max single texture edge | ≤ 2048 | Prefer 1024–2048 backgrounds; split if needed |
27
+ | Concurrent particle emitters | ≤ 8 | Pool; hard-cap on spam events |
28
+ | Particles alive (sum) | ≤ 300–500 | Lower on low-end; kill on scene sleep |
29
+ | Dynamic GameObjects (Play) | keep pooled | No per-frame `new` for bullets/FX |
30
+ | Camera shake stacking | 1 active profile | Don’t stack 3 shakes |
31
+ | DPR / resolution | Scale Manager FIT/SHOW_ALL | Never CSS-scale canvas |
32
+
33
+ Also follow `../phaser-2d-game/references/engine-performance.md` (pooling, culling, update budgets).
34
+
35
+ ## Texture And Atlas Discipline
36
+
37
+ - Measure spritesheet frame size before loader config (`engine-spritesheets.md`).
38
+ - Don’t pack unrelated PPI into one sheet if it forces wasteful padding—but do atlas frequent FX/UI icons when possible.
39
+ - Prefer WebP/PNG with real alpha; avoid huge uncompressed photo BGs when a painted 1080×1920 plate suffices.
40
+ - Destroy/unload textures on scene shutdown when switching biomes with large unique plates.
41
+
42
+ ## Particles And FX Cost
43
+
44
+ - Event-driven only; no permanent full-screen ambient snow unless genre-critical and budgeted.
45
+ - Pre-create emitters; `explode`/`quantity` bursts over long-running drip when possible.
46
+ - Additive blending sparingly on mobile.
47
+ - Tie FX lifetime to gameplay feedback windows (100–400ms for hits; longer only for celebrations).
48
+
49
+ ## Compose Cost
50
+
51
+ - Parallax layers are textures too—3 strong layers beat 8 weak ones.
52
+ - Full-screen overlay Images are cheap vs thousands of nodes; don’t simulate vignette with 200 sprites.
53
+ - Lights (Phaser Lights Manager) are optional and costly—default to tint/overlay recipes first.
54
+
55
+ ## Diagnostics To Report
56
+
57
+ After a graphics pass, report:
58
+
59
+ - Which surfaces used MCP vs procedural.
60
+ - Texture strategy (atlases / largest BG size).
61
+ - Particle/emitter caps chosen.
62
+ - Any deliberate budget overrun + why.
63
+ - Mobile screenshot path(s).
64
+
65
+ ## Checklist Hook
66
+
67
+ Run `checklists/technical-art-quality.md` and `checklists/performance-safe-visual-detail.md` before claiming Performance evidence ≥ 2.
@@ -0,0 +1,67 @@
1
+ # VFX Recipes (Phaser 2D)
2
+
3
+ Event-driven visual effects that clarify game state. Load only after sprites and compose are readable. Core rule still applies: FX never substitutes for authored art.
4
+
5
+ Cross-link: hand-feel timing principles in `../game-designer/references/game-feel.md`; UI motion in `../game-art/references/animation-specs.md`. This file is **in-world / camera FX** for Phaser.
6
+
7
+ ## Principles
8
+
9
+ 1. **One trigger → one readable beat.** Prefer a single strong burst over layered noise.
10
+ 2. **Severity scale.** Pickup < hit < kill < fail/clear. Strongest events must still leave the next decision visible.
11
+ 3. **Pool everything.** No allocating emitters per bullet in `update`.
12
+ 4. **Sync with audio when present.** Same frame as SFX when `game-audio` is wired.
13
+ 5. **No ambient filler** to hide empty Far layers.
14
+
15
+ ## Recipe Table
16
+
17
+ | Event | Primary FX | Duration | Notes |
18
+ | --- | --- | --- | --- |
19
+ | Light confirm (UI-adjacent in world) | Small scale pop + brief spark | 100–200ms | Keep off HUD DOM |
20
+ | Pickup / coin | Radial burst (8–16 particles) + optional arc to HUD anchor | 200–350ms | High contrast; don’t blanket Play |
21
+ | Hit (player) | White/red flash on sprite + tiny camera shake | 80–120ms | Invuln blink separate from flash |
22
+ | Hit (enemy) | Impact ring or directional sparks + hitstop 1–2 frames | 100–180ms | Direction from attack vector |
23
+ | Block / parry | Sharp spark + short freeze | 80–150ms | Distinct from hurt |
24
+ | Dash / boost | Motion streaks or afterimage (2–3 ghosts) | During dash | Cap ghosts; fade quick |
25
+ | Death / explode | Larger burst + brief screen flash ≤30% alpha | 300–500ms | Then remove clutter |
26
+ | Spawn | Poof / ring expand | 200–300ms | Telegraph if hostile |
27
+ | Charge telegraph | Pulse outline / growing warning glyph | Wind-up length | Must be readable before damage |
28
+ | Zone warning | Edge vignette or floor decal pulse | While zone active | Center Play stays clear |
29
+ | Combo / milestone | Short celebratory burst + optional zoom punch | 250–400ms | Don’t stack with death FX |
30
+ | Fail / soft lock | Gray flash or desat pulse | 200ms | Not seizure-level strobe |
31
+
32
+ ## Implementation Notes (Phaser)
33
+
34
+ - Prefer `this.add.particles` with preconfigured `ParticleEmitter` reused via pools, or a small `VfxSystem.burst(kind, x, y, dir?)` API.
35
+ - Sprite flash: tween `setTintFill` / short `setAlpha` blink; clear tint on complete.
36
+ - Afterimages: spawn faded copies at depth just below hero; auto-destroy.
37
+ - Screen flash: camera-fixed Rectangle or Image at Screen FX depth; fade out; ignore input blocking.
38
+ - Respect `technical-art.md` emitter and particle caps; on spam (machine-gun hits), coalesce to rate-limited bursts.
39
+
40
+ ## Anti-Patterns
41
+
42
+ - Permanent floating dust as “atmosphere” when Far art is missing.
43
+ - Full-screen rainbow particles on every tap.
44
+ - Shake so strong platforms/hazards can’t be aimed at.
45
+ - Additive glow soup that blows out silhouette edges.
46
+ - FX that spawn without a gameplay event (pure decoration loops).
47
+
48
+ ## Severity Ladder (default)
49
+
50
+ ```text
51
+ 0 none
52
+ 1 sprite-only (tint/scale)
53
+ 2 local particles
54
+ 3 local particles + camera punch
55
+ 4 screen flash + particles + punch
56
+ ```
57
+
58
+ Map events to ≤ one ladder step above the previous severity so players learn intensity.
59
+
60
+ ## Checklist
61
+
62
+ Before scoring VFX/motion ≥ 2:
63
+
64
+ - [ ] Every FX kind maps to a gameplay event
65
+ - [ ] Caps documented in technical art brief
66
+ - [ ] Mobile screenshot shows FX without hiding hazards
67
+ - [ ] No ambient-only particle layer required for “premium”