evomeme 0.1.9 → 0.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/dist/canvas-public/app.js +509 -5999
  2. package/dist/canvas-public/assets/presets/catalog.json +47 -0
  3. package/dist/canvas-public/assets/presets/tiles/A_01_CaoDi.png +0 -0
  4. package/dist/canvas-public/assets/presets/tiles/A_02_ShaMo.png +0 -0
  5. package/dist/canvas-public/assets/presets/tiles/A_03_TianKong.png +0 -0
  6. package/dist/canvas-public/assets/presets/tiles/A_04_ShuiBo.png +0 -0
  7. package/dist/canvas-public/assets/presets/tiles/A_05_HaiMian.png +0 -0
  8. package/dist/canvas-public/assets/presets/tiles/A_06_MuDiBan.png +0 -0
  9. package/dist/canvas-public/assets/presets/tiles/A_07_ShiZhuan.png +0 -0
  10. package/dist/canvas-public/assets/presets/tiles/A_08_AnRongYan.png +0 -0
  11. package/dist/canvas-public/assets/presets/tiles/A_09_QingTaiShi.png +0 -0
  12. package/dist/canvas-public/assets/presets/tiles/A_10_ShenHai.png +0 -0
  13. package/dist/canvas-public/assets/presets/tiles/A_11_HuiYanShi.png +0 -0
  14. package/dist/canvas-public/assets/presets/tiles/A_12_HongTu.png +0 -0
  15. package/dist/canvas-public/assets/presets/tiles/A_13_GengDi.png +0 -0
  16. package/dist/canvas-public/assets/presets/tiles/A_14_HuoShanYan.png +0 -0
  17. package/dist/canvas-public/assets/presets/tiles/A_15_NiTu.png +0 -0
  18. package/dist/canvas-public/assets/presets/tiles/A_16_HuangSha.png +0 -0
  19. package/dist/canvas-public/assets/presets/tiles/A_17_CongLin.png +0 -0
  20. package/dist/canvas-public/assets/presets/tiles/A_18_ZiYanShi.png +0 -0
  21. package/dist/canvas-public/assets/presets/tiles/A_19_MoGuTu.png +0 -0
  22. package/dist/canvas-public/assets/presets/tiles/A_20_HuaDian.png +0 -0
  23. package/dist/canvas-public/assets/presets/tiles/A_21_HaiLang.png +0 -0
  24. package/dist/canvas-public/assets/presets/tiles/A_22_GanTu.png +0 -0
  25. package/dist/canvas-public/assets/presets/tiles/A_23_QingTaiShiBan.png +0 -0
  26. package/dist/canvas-public/assets/presets/tiles/A_24_XingKong.png +0 -0
  27. package/dist/canvas-public/assets/presets/tiles/A_25_MoFaFuWen.png +0 -0
  28. package/dist/canvas-public/assets/presets/tiles/A_26_ShiTuYeDi.png +0 -0
  29. package/dist/canvas-public/assets/presets/tiles/A_27_LanZhuan.png +0 -0
  30. package/dist/canvas-public/assets/presets/tiles/A_28_HongZhuan.png +0 -0
  31. package/dist/canvas-public/assets/presets/tiles/A_29_YueQiu.png +0 -0
  32. package/dist/canvas-public/assets/presets/tiles/A_30_JinShuGe.png +0 -0
  33. package/dist/canvas-public/assets/presets/tiles/A_31_JinShuJingGai.png +0 -0
  34. package/dist/canvas-public/assets/presets/tiles/A_32_ShuZiChuang.png +0 -0
  35. package/dist/canvas-public/canvas/actions.js +143 -0
  36. package/dist/canvas-public/canvas/camera.js +28 -0
  37. package/dist/canvas-public/canvas/chrome.js +13 -0
  38. package/dist/canvas-public/canvas/data.js +123 -0
  39. package/dist/canvas-public/canvas/dependencies.js +19 -0
  40. package/dist/canvas-public/canvas/interactions.js +544 -0
  41. package/dist/canvas-public/canvas/panel-resize.js +5 -0
  42. package/dist/canvas-public/canvas/renderer.js +297 -0
  43. package/dist/canvas-public/canvas/selection.js +62 -0
  44. package/dist/canvas-public/canvas/serialization.js +118 -0
  45. package/dist/canvas-public/canvas/sync.js +202 -0
  46. package/dist/canvas-public/core/api.js +27 -0
  47. package/dist/canvas-public/core/feature-registry.js +29 -0
  48. package/dist/canvas-public/core/feature-state.js +228 -0
  49. package/dist/canvas-public/core/layout.js +133 -0
  50. package/dist/canvas-public/core/operations.js +38 -0
  51. package/dist/canvas-public/core/project.js +203 -0
  52. package/dist/canvas-public/core/state.js +27 -0
  53. package/dist/canvas-public/dialogs/context-menu.js +118 -0
  54. package/dist/canvas-public/elements/base.js +100 -0
  55. package/dist/canvas-public/elements/connections.js +105 -0
  56. package/dist/canvas-public/elements/drag.js +53 -0
  57. package/dist/canvas-public/elements/image.js +259 -0
  58. package/dist/canvas-public/elements/loading-recovery.js +5 -0
  59. package/dist/canvas-public/elements/loading.js +21 -0
  60. package/dist/canvas-public/elements/map.js +64 -0
  61. package/dist/canvas-public/elements/registry.js +58 -0
  62. package/dist/canvas-public/elements/replacement.js +78 -0
  63. package/dist/canvas-public/elements/resize.js +210 -0
  64. package/dist/canvas-public/elements/task-pipeline.js +234 -0
  65. package/dist/canvas-public/elements/types.js +21 -0
  66. package/dist/canvas-public/elements/ui.js +14 -0
  67. package/dist/canvas-public/elements/video.js +64 -0
  68. package/dist/canvas-public/features/assets/local-assets.js +72 -0
  69. package/dist/canvas-public/features/assets/official-assets.js +538 -0
  70. package/dist/canvas-public/features/editing/canvas-size.js +532 -0
  71. package/dist/canvas-public/features/editing/color-key.js +469 -0
  72. package/dist/canvas-public/features/editing/cutout.js +20 -0
  73. package/dist/canvas-public/features/editing/interactive-image-editing.js +981 -0
  74. package/dist/canvas-public/features/editing/layer-decomposition.js +44 -0
  75. package/dist/canvas-public/features/editing/manual-split.js +114 -0
  76. package/dist/canvas-public/features/editing/perfect-pixel.js +336 -0
  77. package/dist/canvas-public/features/editing/scroll-preview.js +129 -0
  78. package/dist/canvas-public/features/editing/scroll-seam-elimination.js +71 -0
  79. package/dist/canvas-public/features/editing/seam-elimination.js +46 -0
  80. package/dist/canvas-public/features/editing/smart-split.js +48 -0
  81. package/dist/canvas-public/features/editing/source-preview.js +43 -0
  82. package/dist/canvas-public/features/editing/video-cycle.js +49 -0
  83. package/dist/canvas-public/features/editing/video-frames.js +35 -0
  84. package/dist/canvas-public/features/frame-editor/frame-editing.js +755 -0
  85. package/dist/canvas-public/features/frame-editor/frame-model.js +63 -0
  86. package/dist/canvas-public/features/frame-editor/playback.js +83 -0
  87. package/dist/canvas-public/features/frame-editor/preview.js +149 -0
  88. package/dist/canvas-public/features/generation/animation.js +272 -0
  89. package/dist/canvas-public/features/generation/asset-batch.js +102 -0
  90. package/dist/canvas-public/features/generation/direction.js +163 -0
  91. package/dist/canvas-public/features/generation/fields.js +73 -0
  92. package/dist/canvas-public/features/generation/game-ui.js +64 -0
  93. package/dist/canvas-public/features/generation/image.js +83 -0
  94. package/dist/canvas-public/features/generation/scroll-image.js +157 -0
  95. package/dist/canvas-public/features/generation/seamless-tile.js +52 -0
  96. package/dist/canvas-public/features/generation/tile-transition-atlas.js +79 -0
  97. package/dist/canvas-public/features/generation/video.js +105 -0
  98. package/dist/canvas-public/features/map/creation.js +73 -0
  99. package/dist/canvas-public/features/map/tile-map-editor.js +2518 -0
  100. package/dist/canvas-public/features/registry.js +59 -0
  101. package/dist/canvas-public/index.html +84 -259
  102. package/dist/canvas-public/inspector/controls.js +49 -0
  103. package/dist/canvas-public/inspector/frame-preview.js +11 -0
  104. package/dist/canvas-public/inspector/inspector.js +190 -0
  105. package/dist/canvas-public/inspector/media-inspector.js +517 -0
  106. package/dist/canvas-public/inspector/media-preview.js +56 -0
  107. package/dist/canvas-public/inspector/number-stepper.js +96 -0
  108. package/dist/canvas-public/inspector/resize.js +88 -0
  109. package/dist/canvas-public/inspector/scroll-preview.js +11 -0
  110. package/dist/canvas-public/inspector/ui-inspector.js +14 -0
  111. package/dist/canvas-public/language/en-US.js +1059 -0
  112. package/dist/canvas-public/language/index.js +79 -0
  113. package/dist/canvas-public/language/zh-CN.js +1059 -0
  114. package/dist/canvas-public/map/export.js +9 -0
  115. package/dist/canvas-public/map/inspector.js +8 -0
  116. package/dist/canvas-public/map/model.js +409 -0
  117. package/dist/canvas-public/map/tile-map-editor.js +2 -0
  118. package/dist/canvas-public/media/metadata.js +183 -0
  119. package/dist/canvas-public/media/support.js +183 -0
  120. package/dist/canvas-public/styles/base.css +49 -0
  121. package/dist/canvas-public/styles/canvas.css +127 -0
  122. package/dist/canvas-public/styles/controls.css +203 -0
  123. package/dist/canvas-public/styles/dialogs.css +521 -0
  124. package/dist/canvas-public/styles/feature-form.css +409 -0
  125. package/dist/canvas-public/styles/inspector.css +441 -0
  126. package/dist/canvas-public/styles/layout.css +344 -0
  127. package/dist/canvas-public/styles/map.css +11 -0
  128. package/dist/canvas-public/styles/nodes.css +636 -0
  129. package/dist/canvas-public/styles.css +9 -2247
  130. package/dist/canvas-public/ui/controls.js +222 -0
  131. package/dist/canvas-public/ui/elements.js +9 -0
  132. package/dist/canvas-public/ui/feature-controller.js +296 -0
  133. package/dist/canvas-public/ui/feature-form.js +401 -0
  134. package/dist/canvas-public/ui/settings.js +83 -0
  135. package/dist/canvas-public/ui/toolbar.js +55 -0
  136. package/dist/canvas-public/vendor/pixi-tilemap.js +126 -0
  137. package/dist/canvas-public/vendor/pixi.min.js +2340 -0
  138. package/dist/canvas-public/workers/color-key-worker.js +289 -0
  139. package/dist/canvas-public/workers/perfect-pixel-worker.js +510 -0
  140. package/dist/index.js +42236 -13382
  141. package/dist/skills/en-US/evomeme-canvas/SKILL.md +52 -0
  142. package/dist/skills/en-US/evomeme-canvas/agents/openai.yaml +7 -0
  143. package/dist/skills/en-US/evomeme-cloud-fs/SKILL.md +176 -0
  144. package/dist/skills/en-US/evomeme-cloud-fs/agents/openai.yaml +7 -0
  145. package/dist/skills/en-US/evomeme-cover/SKILL.md +132 -0
  146. package/dist/skills/en-US/evomeme-cover/agents/openai.yaml +7 -0
  147. package/dist/skills/en-US/evomeme-game-maker/SKILL.md +288 -0
  148. package/dist/skills/en-US/evomeme-game-maker/agents/openai.yaml +4 -0
  149. package/dist/skills/en-US/evomeme-login/SKILL.md +92 -0
  150. package/dist/skills/en-US/evomeme-login/agents/openai.yaml +7 -0
  151. package/dist/skills/en-US/evomeme-native-bridge-sdk/SKILL.md +286 -0
  152. package/dist/skills/en-US/evomeme-native-bridge-sdk/agents/openai.yaml +8 -0
  153. package/dist/skills/en-US/evomeme-tos-upload/SKILL.md +47 -0
  154. package/dist/skills/en-US/evomeme-tos-upload/agents/openai.yaml +5 -0
  155. package/dist/skills/en-US/evomeme-ui/SKILL.md +123 -0
  156. package/dist/skills/en-US/evomeme-ui/agents/openai.yaml +4 -0
  157. package/dist/skills/en-US/evomeme-ui/references/host-layout.md +69 -0
  158. package/dist/skills/en-US/game-art/SKILL.md +121 -0
  159. package/dist/skills/en-US/game-art/agents/openai.yaml +8 -0
  160. package/dist/skills/en-US/game-asset-align/SKILL.md +45 -0
  161. package/dist/skills/en-US/game-asset-align/agents/openai.yaml +8 -0
  162. package/dist/skills/en-US/game-asset-align/references/alignment-contract.md +61 -0
  163. package/dist/skills/en-US/game-asset-align/references/blender-scene-pipeline.md +45 -0
  164. package/dist/skills/en-US/game-asset-align/references/canonical-package.md +26 -0
  165. package/dist/skills/en-US/game-asset-align/references/engine-capabilities.md +14 -0
  166. package/dist/skills/en-US/game-asset-align/references/lightweight-review.md +32 -0
  167. package/dist/skills/en-US/game-asset-align/references/repair-policy.md +30 -0
  168. package/dist/skills/en-US/game-asset-align/references/tool-contract.md +39 -0
  169. package/dist/skills/en-US/game-asset-align/references/visual-review.md +26 -0
  170. package/dist/skills/en-US/game-asset-image-generator/SKILL.md +104 -0
  171. package/dist/skills/en-US/game-asset-image-generator/agents/openai.yaml +7 -0
  172. package/dist/skills/en-US/game-asset-image-generator/references/background.md +32 -0
  173. package/dist/skills/en-US/game-asset-image-generator/references/static-game-assets.md +38 -0
  174. package/dist/skills/en-US/game-audio/SKILL.md +82 -0
  175. package/dist/skills/en-US/game-audio/agents/openai.yaml +4 -0
  176. package/dist/skills/en-US/game-demo/SKILL.md +103 -0
  177. package/dist/skills/en-US/game-demo/agents/openai.yaml +7 -0
  178. package/dist/skills/en-US/game-maker/SKILL.md +111 -0
  179. package/dist/skills/en-US/game-maker/agents/openai.yaml +4 -0
  180. package/dist/skills/en-US/game-test/SKILL.md +58 -0
  181. package/dist/skills/en-US/game-test/agents/openai.yaml +7 -0
  182. package/dist/skills/en-US/game-ui/SKILL.md +177 -0
  183. package/dist/skills/en-US/game-ui/agents/openai.yaml +4 -0
  184. package/dist/skills/en-US/godot-3d-game/SKILL.md +39 -0
  185. package/dist/skills/en-US/godot-3d-game/agents/openai.yaml +8 -0
  186. package/dist/skills/en-US/godot-3d-game/references/alignment-gates.md +26 -0
  187. package/dist/skills/en-US/godot-3d-game/references/appearance-alignment.md +52 -0
  188. package/dist/skills/en-US/godot-3d-game/references/build-and-qa.md +22 -0
  189. package/dist/skills/en-US/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  190. package/dist/skills/en-US/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  191. package/dist/skills/en-US/godot-3d-game/references/physics-colliders.md +13 -0
  192. package/dist/skills/en-US/godot-3d-game/references/project-structure.md +22 -0
  193. package/dist/skills/en-US/godot-3d-game/references/skeleton-animation.md +16 -0
  194. package/dist/skills/en-US/phaser-2d-game/SKILL.md +127 -0
  195. package/dist/skills/en-US/phaser-2d-game/agents/openai.yaml +8 -0
  196. package/dist/skills/en-US/phaser-2d-game/references/engine-performance.md +64 -0
  197. package/dist/skills/en-US/phaser-2d-game/references/engine-physics.md +139 -0
  198. package/dist/skills/en-US/phaser-2d-game/references/engine-runtime.md +129 -0
  199. package/dist/skills/en-US/phaser-2d-game/references/engine-spritesheets.md +99 -0
  200. package/dist/skills/en-US/phaser-2d-game/references/engine-tilemaps.md +80 -0
  201. package/dist/skills/en-US/phaser-2d-game/references/file-structure.md +94 -0
  202. package/dist/skills/en-US/phaser-2d-graphics-builder/SKILL.md +68 -0
  203. package/dist/skills/en-US/phaser-2d-graphics-builder/agents/openai.yaml +7 -0
  204. package/dist/skills/en-US/threejs-3d-game/SKILL.md +117 -0
  205. package/dist/skills/en-US/threejs-3d-game/agents/openai.yaml +7 -0
  206. package/dist/skills/en-US/threejs-3d-game/references/engine-asset-pipeline.md +153 -0
  207. package/dist/skills/en-US/threejs-3d-game/references/engine-audio.md +70 -0
  208. package/dist/skills/en-US/threejs-3d-game/references/engine-input-camera.md +84 -0
  209. package/dist/skills/en-US/threejs-3d-game/references/engine-performance.md +96 -0
  210. package/dist/skills/en-US/threejs-3d-game/references/engine-physics.md +142 -0
  211. package/dist/skills/en-US/threejs-3d-game/references/engine-runtime.md +199 -0
  212. package/dist/skills/en-US/threejs-3d-game/references/file-structure.md +353 -0
  213. package/dist/skills/en-US/threejs-aaa-graphics-builder/SKILL.md +62 -0
  214. package/dist/skills/en-US/threejs-aaa-graphics-builder/agents/openai.yaml +7 -0
  215. package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/SKILL.md +4 -4
  216. package/{skills → dist/skills/zh-CN}/evomeme-cover/SKILL.md +1 -1
  217. package/{skills → dist/skills/zh-CN}/evomeme-game-maker/SKILL.md +91 -88
  218. package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/SKILL.md +6 -5
  219. package/dist/skills/zh-CN/evomeme-ui/SKILL.md +123 -0
  220. package/dist/skills/zh-CN/evomeme-ui/agents/openai.yaml +4 -0
  221. package/dist/skills/zh-CN/evomeme-ui/references/host-layout.md +69 -0
  222. package/dist/skills/zh-CN/game-asset-align/SKILL.md +45 -0
  223. package/dist/skills/zh-CN/game-asset-align/agents/openai.yaml +8 -0
  224. package/dist/skills/zh-CN/game-asset-align/references/alignment-contract.md +61 -0
  225. package/dist/skills/zh-CN/game-asset-align/references/blender-scene-pipeline.md +45 -0
  226. package/dist/skills/zh-CN/game-asset-align/references/canonical-package.md +26 -0
  227. package/dist/skills/zh-CN/game-asset-align/references/engine-capabilities.md +14 -0
  228. package/dist/skills/zh-CN/game-asset-align/references/lightweight-review.md +32 -0
  229. package/dist/skills/zh-CN/game-asset-align/references/repair-policy.md +30 -0
  230. package/dist/skills/zh-CN/game-asset-align/references/tool-contract.md +39 -0
  231. package/dist/skills/zh-CN/game-asset-align/references/visual-review.md +26 -0
  232. package/{skills → dist/skills/zh-CN}/game-asset-image-generator/SKILL.md +1 -1
  233. package/dist/skills/zh-CN/game-audio/references/bgm-cdn.md +127 -0
  234. package/dist/skills/zh-CN/game-audio/references/sfx-cdn.md +77 -0
  235. package/dist/skills/zh-CN/game-test/references/checklists/playtest-qa.md +12 -0
  236. package/{skills → dist/skills/zh-CN}/game-ui/SKILL.md +9 -1
  237. package/dist/skills/zh-CN/game-ui/references/checklists/game-ui-quality.md +14 -0
  238. package/dist/skills/zh-CN/game-ui/references/checklists/hud-readability.md +12 -0
  239. package/dist/skills/zh-CN/game-ui/references/checklists/mobile-input.md +12 -0
  240. package/dist/skills/zh-CN/game-ui/references/checklists/responsive-ui-fit.md +12 -0
  241. package/dist/skills/zh-CN/game-ui/references/ui-patterns.md +140 -0
  242. package/dist/skills/zh-CN/game-ui/references/ui-prompt-templates.md +63 -0
  243. package/dist/skills/zh-CN/godot-3d-game/SKILL.md +39 -0
  244. package/dist/skills/zh-CN/godot-3d-game/agents/openai.yaml +8 -0
  245. package/dist/skills/zh-CN/godot-3d-game/references/alignment-gates.md +26 -0
  246. package/dist/skills/zh-CN/godot-3d-game/references/appearance-alignment.md +52 -0
  247. package/dist/skills/zh-CN/godot-3d-game/references/build-and-qa.md +22 -0
  248. package/dist/skills/zh-CN/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  249. package/dist/skills/zh-CN/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  250. package/dist/skills/zh-CN/godot-3d-game/references/physics-colliders.md +13 -0
  251. package/dist/skills/zh-CN/godot-3d-game/references/project-structure.md +22 -0
  252. package/dist/skills/zh-CN/godot-3d-game/references/skeleton-animation.md +16 -0
  253. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  254. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  255. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  256. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/compose-quality.md +10 -0
  257. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +9 -0
  258. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +15 -0
  259. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +10 -0
  260. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +9 -0
  261. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +9 -0
  262. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/compose-recipes.md +71 -0
  263. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +33 -0
  264. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/implementation-blueprint.md +82 -0
  265. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/sprite-recipes.md +90 -0
  266. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/technical-art.md +67 -0
  267. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/vfx-recipes.md +67 -0
  268. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/visual-scorecard.md +129 -0
  269. package/{skills → dist/skills/zh-CN}/threejs-3d-game/SKILL.md +6 -2
  270. package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-asset-pipeline.md +52 -15
  271. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  272. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  273. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  274. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +23 -0
  275. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +19 -0
  276. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +14 -0
  277. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +14 -0
  278. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +15 -0
  279. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +17 -0
  280. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +236 -0
  281. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/implementation-blueprint.md +161 -0
  282. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/model-recipes.md +146 -0
  283. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/render-recipes.md +90 -0
  284. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/shader-cookbook.md +292 -0
  285. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/technical-art.md +167 -0
  286. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/visual-scorecard.md +147 -0
  287. package/dist/stage-blender/bake_materials.py +102 -0
  288. package/dist/stage-blender/export_scene.py +275 -0
  289. package/dist/stage-blender/preview_camera.py +90 -0
  290. package/dist/stage-blender/repair_mesh.py +112 -0
  291. package/dist/stage-public/app.js +759 -0
  292. package/dist/stage-public/baked/bakePilot.js +44 -0
  293. package/dist/stage-public/baked/bakedScene.js +129 -0
  294. package/dist/stage-public/baked/sceneAppearance.js +225 -0
  295. package/dist/stage-public/baked/sceneCamera.js +45 -0
  296. package/dist/stage-public/comparison-contract.js +28 -0
  297. package/dist/stage-public/delivery.html +4 -0
  298. package/dist/stage-public/delivery.js +17 -0
  299. package/dist/stage-public/godot/appearance.gd +170 -0
  300. package/dist/stage-public/godot/preview.gd +79 -0
  301. package/dist/stage-public/index.html +141 -0
  302. package/dist/stage-public/review-app.js +289 -0
  303. package/dist/stage-public/review-runtime.js +63 -0
  304. package/dist/stage-public/review.css +24 -0
  305. package/dist/stage-public/review.html +47 -0
  306. package/dist/stage-public/scene-runtime.js +212 -0
  307. package/dist/stage-public/sceneContractRuntime.js +235 -0
  308. package/dist/stage-public/styles.css +328 -0
  309. package/dist/stage-public/three-appearance.js +104 -0
  310. package/dist/stage-public/vendor/three170/LICENSE +21 -0
  311. package/dist/stage-public/vendor/three170/build/three.module.js +54571 -0
  312. package/dist/stage-public/vendor/three170/examples/jsm/controls/OrbitControls.js +1523 -0
  313. package/dist/stage-public/vendor/three170/examples/jsm/environments/RoomEnvironment.js +144 -0
  314. package/dist/stage-public/vendor/three170/examples/jsm/libs/fflate.module.js +2672 -0
  315. package/dist/stage-public/vendor/three170/examples/jsm/loaders/EXRLoader.js +2563 -0
  316. package/dist/stage-public/vendor/three170/examples/jsm/loaders/GLTFLoader.js +4727 -0
  317. package/dist/stage-public/vendor/three170/examples/jsm/utils/BufferGeometryUtils.js +1373 -0
  318. package/dist/tile-transition-mask.svg +40 -0
  319. package/package.json +21 -7
  320. package/dist/canvas-public/cycle-detect.js +0 -166
  321. package/dist/canvas-public/smart-split.js +0 -185
  322. /package/{skills → dist/skills/en-US}/game-audio/references/bgm-cdn.md +0 -0
  323. /package/{skills → dist/skills/en-US}/game-audio/references/sfx-cdn.md +0 -0
  324. /package/{skills → dist/skills/en-US}/game-test/references/checklists/playtest-qa.md +0 -0
  325. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/game-ui-quality.md +0 -0
  326. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/hud-readability.md +0 -0
  327. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/mobile-input.md +0 -0
  328. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/responsive-ui-fit.md +0 -0
  329. /package/{skills → dist/skills/en-US}/game-ui/references/ui-patterns.md +0 -0
  330. /package/{skills → dist/skills/en-US}/game-ui/references/ui-prompt-templates.md +0 -0
  331. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  332. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  333. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  334. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/compose-quality.md +0 -0
  335. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  336. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +0 -0
  337. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +0 -0
  338. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  339. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +0 -0
  340. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/compose-recipes.md +0 -0
  341. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +0 -0
  342. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/implementation-blueprint.md +0 -0
  343. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/sprite-recipes.md +0 -0
  344. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/technical-art.md +0 -0
  345. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/vfx-recipes.md +0 -0
  346. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/visual-scorecard.md +0 -0
  347. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  348. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  349. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  350. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +0 -0
  351. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +0 -0
  352. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +0 -0
  353. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  354. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +0 -0
  355. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  356. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +0 -0
  357. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/implementation-blueprint.md +0 -0
  358. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/model-recipes.md +0 -0
  359. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/render-recipes.md +0 -0
  360. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/shader-cookbook.md +0 -0
  361. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/technical-art.md +0 -0
  362. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/visual-scorecard.md +0 -0
  363. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/SKILL.md +0 -0
  364. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/agents/openai.yaml +0 -0
  365. /package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/agents/openai.yaml +0 -0
  366. /package/{skills → dist/skills/zh-CN}/evomeme-cover/agents/openai.yaml +0 -0
  367. /package/{skills → dist/skills/zh-CN}/evomeme-game-maker/agents/openai.yaml +0 -0
  368. /package/{skills → dist/skills/zh-CN}/evomeme-login/SKILL.md +0 -0
  369. /package/{skills → dist/skills/zh-CN}/evomeme-login/agents/openai.yaml +0 -0
  370. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/SKILL.md +0 -0
  371. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/agents/openai.yaml +0 -0
  372. /package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/agents/openai.yaml +0 -0
  373. /package/{skills → dist/skills/zh-CN}/game-art/SKILL.md +0 -0
  374. /package/{skills → dist/skills/zh-CN}/game-art/agents/openai.yaml +0 -0
  375. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/agents/openai.yaml +0 -0
  376. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/background.md +0 -0
  377. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/static-game-assets.md +0 -0
  378. /package/{skills → dist/skills/zh-CN}/game-audio/SKILL.md +0 -0
  379. /package/{skills → dist/skills/zh-CN}/game-audio/agents/openai.yaml +0 -0
  380. /package/{skills → dist/skills/zh-CN}/game-demo/SKILL.md +0 -0
  381. /package/{skills → dist/skills/zh-CN}/game-demo/agents/openai.yaml +0 -0
  382. /package/{skills → dist/skills/zh-CN}/game-maker/SKILL.md +0 -0
  383. /package/{skills → dist/skills/zh-CN}/game-maker/agents/openai.yaml +0 -0
  384. /package/{skills → dist/skills/zh-CN}/game-test/SKILL.md +0 -0
  385. /package/{skills → dist/skills/zh-CN}/game-test/agents/openai.yaml +0 -0
  386. /package/{skills → dist/skills/zh-CN}/game-ui/agents/openai.yaml +0 -0
  387. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/SKILL.md +0 -0
  388. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/agents/openai.yaml +0 -0
  389. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-performance.md +0 -0
  390. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-physics.md +0 -0
  391. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-runtime.md +0 -0
  392. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-spritesheets.md +0 -0
  393. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-tilemaps.md +0 -0
  394. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/file-structure.md +0 -0
  395. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/SKILL.md +0 -0
  396. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/agents/openai.yaml +0 -0
  397. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/agents/openai.yaml +0 -0
  398. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-audio.md +0 -0
  399. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-input-camera.md +0 -0
  400. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-performance.md +0 -0
  401. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-physics.md +0 -0
  402. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-runtime.md +0 -0
  403. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/file-structure.md +0 -0
  404. /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/SKILL.md +0 -0
  405. /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/agents/openai.yaml +0 -0
@@ -0,0 +1,129 @@
1
+ # Engine Runtime (Phaser 3)
2
+
3
+ **System holds rules truth, Scene only handles the view, and production HUD uses DOM**. Directories and config follow `file-structure.md`.
4
+
5
+ Load this file when writing/modifying scene lifecycle, scaling, frame loops, or scene switching.
6
+
7
+ ## Mapping to This Project's Layers
8
+
9
+ | Phaser Concept | Location in This Project |
10
+ | --- | --- |
11
+ | Boot / preload | Boot Scene: read `config.json`, preload according to manifest |
12
+ | Gameplay Scene | Read System state -> sprites/camera/effects; send input intents back to System |
13
+ | Production HUD / menu | React DOM overlay (not dense Canvas text UI) |
14
+ | Optional parallel Scene | Debug only / extremely lightweight in-world indicators; does not replace production HUD |
15
+ | Adjustable values | `public/config.json`; scattered magic numbers are forbidden |
16
+
17
+ ## Scene Structure (Recommended)
18
+
19
+ ```text
20
+ scenes/
21
+ ├── BootScene.ts # Config and asset preloading, progress
22
+ ├── MenuScene.ts # Shell layer (can be very thin; complex menus can still use DOM)
23
+ ├── GameScene.ts # Main-loop view
24
+ └── (optional)DebugScene # Parallel debugging; do not stuff production HUD into it
25
+ ```
26
+
27
+ Switching:
28
+
29
+ ```ts
30
+ this.scene.start('GameScene', { level: 1 }); // Stop current, start new
31
+ this.scene.launch('DebugScene'); // Parallel
32
+ this.scene.pause('GameScene');
33
+ this.scene.stop('DebugScene');
34
+ ```
35
+
36
+ Use **init data / registry / System facade** for state between scenes; it is forbidden to attach mutable globals to `window`.
37
+
38
+ ## Scene Lifecycle
39
+
40
+ ```ts
41
+ class GameScene extends Phaser.Scene {
42
+ init(data: unknown) {} // Receive data from the previous scene
43
+ preload() {} // Load only; production projects should prefer centralized Boot loading
44
+ create() {} // Objects, physics, input binding; connect to System
45
+ update(time: number, delta: number) {} // delta unit is ms
46
+ }
47
+ ```
48
+
49
+ Rules:
50
+
51
+ - Assets belong in `preload` / Boot; do not start `load` only in `create` and then immediately reference the asset.
52
+ - `update` **maps** System results and samples input; core rules belong in System, avoiding a "giant Scene god class."
53
+ - Animation/sprite state is derived from System; do not use random sprite flags as truth.
54
+
55
+ ## Frame-Rate-Independent Movement
56
+
57
+ Phaser `update` `delta` is **milliseconds**:
58
+
59
+ ```ts
60
+ // Correct
61
+ this.viewX += speedPxPerSec * (delta / 1000);
62
+
63
+ // Wrong: tied to frame rate
64
+ this.viewX += speedPxPerSec;
65
+ ```
66
+
67
+ Physics bodies should prefer Arcade `setVelocity` / acceleration; manual displacement must multiply by `delta/1000`.
68
+
69
+ ## Viewport Scaling (Scale Manager Is the Only Correct Path)
70
+
71
+ **You must use Phaser Scale Manager**; using CSS/`transform`/hand-written `resize` to scale the canvas is forbidden (it breaks coordinates, input, and physics).
72
+
73
+ ```ts
74
+ const config: Phaser.Types.Core.GameConfig = {
75
+ type: Phaser.AUTO,
76
+ width: 720,
77
+ height: 1280,
78
+ scale: {
79
+ mode: Phaser.Scale.FIT,
80
+ autoCenter: Phaser.Scale.CENTER_BOTH,
81
+ parent: 'game-container',
82
+ width: 720,
83
+ height: 1280,
84
+ },
85
+ // physics / scene ...
86
+ };
87
+ ```
88
+
89
+ | Mode | When to Use |
90
+ | --- | --- |
91
+ | `FIT` | Default: preserve aspect ratio; may have margins |
92
+ | `ENVELOP` | Fill and crop (cropped edges must be acceptable) |
93
+ | `RESIZE` | Layout changes with viewport (you must relayout world/UI yourself) |
94
+ | `NONE` | Fixed desktop size |
95
+
96
+ Response:
97
+
98
+ ```ts
99
+ this.scale.on('resize', (gameSize: Phaser.Structs.Size) => {
100
+ // Adjust camera / world bounds as needed; production HUD is responsive through DOM itself
101
+ });
102
+ ```
103
+
104
+ ### Anti-Pattern (Forbidden)
105
+
106
+ ```ts
107
+ // Forbidden
108
+ canvas.style.width = '75%';
109
+ canvas.style.transform = 'scale(0.75)';
110
+ window.addEventListener('resize', () => { /* Hand-edit container pixels to "simulate" scaling */ });
111
+ ```
112
+
113
+ ## Physics System Selection (Decide Early)
114
+
115
+ Default to **Arcade**; Matter is only for rigid-body/joint scenarios; menus/cards can avoid enabling physics. See `engine-physics.md` for selection, collisions, and object pools.
116
+
117
+ ## Engine Anti-Patterns
118
+
119
+ | Anti-Pattern | Problem | Practice |
120
+ | --- | --- | --- |
121
+ | Hand-written CSS scaling for Canvas | Input/physics mismatch | Scale Manager |
122
+ | All rules written in `update` | Hard to test, hard to reuse | System + Scene mapping |
123
+ | `window` global state | Breaks scene switching | registry / System |
124
+ | Load in `create` and use immediately | Asset not ready | Boot / preload |
125
+ | Count frames as time | Speed changes when frames drop | `delta/1000` |
126
+ | Matter for simple collisions | Too heavy | Arcade |
127
+ | Stuff production HUD into Scene dense text | Hard to adapt to portrait/safe areas | DOM overlay |
128
+ | Magic numbers | Hard to tune balance | `config.json` |
129
+ | Bullets/enemies constantly create/destroy | GC stutter | Object pools (see physics / performance) |
@@ -0,0 +1,99 @@
1
+ # Engine: Spritesheets and Atlases
2
+
3
+ **Read this file before loading any spritesheet.** Frame dimensions that are off by a few pixels will silently misalign, and everything after that breaks.
4
+
5
+ Production HUD defaults to DOM (`game-ui`); nine-slice Canvas panels are used only when truly needed for in-world / pixel-art panels.
6
+
7
+ ## Mandatory: Measure Before Writing the Loader
8
+
9
+ 1. Open the image and note the total width and height
10
+ 2. Count rows and columns clearly
11
+ 3. Measure the true width and height of one cell (pixel ruler)
12
+ 4. Check whether there is a gap between cells -> `spacing`
13
+ 5. Check whether there is padding around the outer edge of the whole image -> `margin`
14
+ 6. Verify divisibility with the formula
15
+
16
+ ```text
17
+ imageWidth = frameWidth × cols + spacing × (cols - 1) + margin × 2
18
+ imageHeight = frameHeight × rows + spacing × (rows - 1) + margin × 2
19
+ ```
20
+
21
+ ### Try Square Character Frames First
22
+
23
+ After calculating `frameWidth`, **try `frameHeight = frameWidth` first**, then check whether the height divides evenly. Do not blindly divide by "same row/column count" from the start.
24
+
25
+ ### Different Animations May Have Different Frame Sizes
26
+
27
+ A single character's idle / run / attack animations often each have **their own sheet and their own frame size** (running poses are wider, slashes are wider). **Measure each sheet independently**; copying idle fw/fh to attack is forbidden.
28
+
29
+ ## Loader Example
30
+
31
+ ```ts
32
+ this.load.spritesheet('player-idle', urlFromManifest, {
33
+ frameWidth: 64,
34
+ frameHeight: 64,
35
+ });
36
+
37
+ this.load.spritesheet('ui-wood', url, {
38
+ frameWidth: 144,
39
+ frameHeight: 144,
40
+ spacing: 8,
41
+ });
42
+
43
+ this.load.spritesheet('icons', url, {
44
+ frameWidth: 32,
45
+ frameHeight: 32,
46
+ margin: 4,
47
+ spacing: 2,
48
+ });
49
+ ```
50
+
51
+ Asset URLs go through the manifest / `config.json`; do not hardcode scattered paths in business code.
52
+
53
+ ## Red Flags
54
+
55
+ - Width or height cannot be divided evenly by the frame count / produces a fractional result
56
+ - A visible gap exists but `spacing` is not set (the first frame is correct, all later frames drift)
57
+ - Character animation forces non-square frames without verification
58
+ - Assumes row and column counts are the same
59
+
60
+ ## Debug: Lay Out Frames First
61
+
62
+ ```ts
63
+ for (let i = 0; i < frameCount; i++) {
64
+ const col = i % 3;
65
+ const row = Math.floor(i / 3);
66
+ this.add.image(100 + col * 120, 100 + row * 120, key, i);
67
+ this.add.text(100 + col * 120, 150 + row * 120, String(i)).setOrigin(0.5);
68
+ }
69
+ ```
70
+
71
+ If a single frame is already wrong -> fix the loader before entering gameplay. For multi-animation characters, use a temporary AnimTest Scene / `?debug=anims` and switch with left/right keys to verify.
72
+
73
+ ## Texture Atlas
74
+
75
+ Merge multiple sprites into an atlas to reduce draw calls and requests:
76
+
77
+ ```ts
78
+ this.load.atlas('sprites', atlasPngUrl, atlasJsonUrl);
79
+ this.add.sprite(x, y, 'sprites', 'player-idle-1');
80
+ this.anims.create({
81
+ key: 'walk',
82
+ frames: this.anims.generateFrameNames('sprites', {
83
+ prefix: 'player-walk-',
84
+ start: 1,
85
+ end: 8,
86
+ zeroPad: 2,
87
+ }),
88
+ frameRate: 10,
89
+ repeat: -1,
90
+ });
91
+ ```
92
+
93
+ ## Nine-Slice / Three-Segment Strips (Only When Canvas UI Needs Them)
94
+
95
+ - 3x3: corners do not stretch, edges stretch on one axis, center stretches on both axes; transparent edges need a base color and overlap to prevent seams.
96
+ - Ribbons/banners are often **left cap + middle segment + right cap**; do not stretch the whole image.
97
+ - Configure parameters per asset; do not hardcode one set.
98
+
99
+ In-world decoration may use this; **main menus/settings/complex HUDs still prefer DOM**.
@@ -0,0 +1,80 @@
1
+ # Engine: Tilemap (Tiled -> Phaser)
2
+
3
+ Load this when side-scrolling/top-down maps, collision layers, or object-layer enemy spawning are used.
4
+
5
+ ## Suggested Tiled Layers (Top to Bottom)
6
+
7
+ ```text
8
+ Foreground # Decoration that covers the player
9
+ Objects # Spawn points, enemies, pickups, triggers (Object Layer)
10
+ Ground # Main collision Tile Layer
11
+ Background # Non-collision decoration / parallax
12
+ ```
13
+
14
+ Export **JSON** (recommended). For Tilesets, pay attention to `margin` / `spacing`; extruded tilesets can prevent color bleeding.
15
+
16
+ ## Loading and Creation
17
+
18
+ ```ts
19
+ // preload / Boot
20
+ this.load.tilemapTiledJSON('level1', mapUrl);
21
+ this.load.image('tiles', tilesetUrl);
22
+
23
+ // create
24
+ const map = this.make.tilemap({ key: 'level1' });
25
+ const tileset = map.addTilesetImage('terrain', 'tiles'); // Name matches Tiled
26
+ const ground = map.createLayer('Ground', tileset, 0, 0);
27
+ const fg = map.createLayer('Foreground', tileset, 0, 0);
28
+
29
+ ground?.setCollisionByProperty({ collides: true });
30
+ // Or setCollisionByExclusion([-1]) / by index
31
+
32
+ this.physics.add.collider(player, ground!);
33
+ this.cameras.main.setBounds(0, 0, map.widthInPixels, map.heightInPixels);
34
+ this.physics.world.setBounds(0, 0, map.widthInPixels, map.heightInPixels);
35
+ ```
36
+
37
+ Multiple tilesets: call `addTilesetImage` for each one, and pass an array to `createLayer`.
38
+
39
+ ## GID Essentials
40
+
41
+ - `0` = empty
42
+ - Multiple tilesets rely on `firstgid`; local id = `gid - firstgid`
43
+ - Flips exist as high-bit flags; clear `0xF0000000` first when parsing manually
44
+
45
+ Generally prefer Phaser API and hand-parse GID less.
46
+
47
+ ## Spawning Entities from Object Layers
48
+
49
+ ```ts
50
+ const objs = map.getObjectLayer('Objects');
51
+ objs?.objects.forEach((obj) => {
52
+ if (obj.type === 'spawn' || obj.name === 'player') {
53
+ // Hand logical position to System; Scene only creates the view
54
+ }
55
+ if (obj.type === 'coin') {
56
+ // overlap group / pool
57
+ }
58
+ });
59
+ ```
60
+
61
+ Map Tiled custom properties to config / content data and avoid hardcoding level values in Scene.
62
+
63
+ ## Parallax
64
+
65
+ Set `parallaxx` / `parallaxy` on layers in Tiled, or use `setScrollFactor` on the Phaser side. Distant-view factor < 1.
66
+
67
+ ## Common Pitfalls
68
+
69
+ | Symptom | Handling |
70
+ | --- | --- |
71
+ | Seam color bleeding | tileset extrude; check spacing/margin |
72
+ | Collision mismatch | Confirm layer name, tileset name, and `setCollision*` after scaling |
73
+ | Object coordinates offset | Pay attention to Tiled origin and Phaser origin; tile object vs point |
74
+ | CSV map | Must declare tileWidth/Height in `make.tilemap`; prefer JSON |
75
+
76
+ ## With This Specification
77
+
78
+ - Map JSON / tile URLs go into manifest or config; do not hardcode paths in multiple places.
79
+ - Collision results -> System events; Scene does not hold level-progress truth.
80
+ - For large maps, ensure camera bounds and world bounds match.
@@ -0,0 +1,94 @@
1
+ # H5 Game File Structure Specification
2
+
3
+ This document defines the standard file structure for mobile H5 games. The project is a Vite + React + Phaser application: the game view is managed by Phaser, and DOM UI is managed by React. **This is the only normative source for all 2D code structure and configuration files in this plugin**; `game-director`, `game-designer`, `game-art`, and `game-asset-image-generator` must follow this file when dealing with config or directory structure for 2D projects. For 3D projects, see `../threejs-3d-game/references/file-structure.md`.
4
+
5
+ ## `/public/config.json` Rules
6
+
7
+ `/public/config.json` is an external configuration file for game runtime and is output unchanged as `/dist/config.json` after build.
8
+
9
+ ### Storage Rules
10
+
11
+ 1. All user-adjustable colors, gameplay parameters, balance values, and resource URLs must be written to `/public/config.json`; hardcoding them in business code is forbidden.
12
+ 2. Game code must read config through `fetch("./config.json")` (relative path); using the absolute path `/config.json` is forbidden; directly `import config.json` from the `src` directory is forbidden.
13
+ 3. The same user-adjustable value must not be hardcoded repeatedly in React, Phaser, or CSS.
14
+
15
+ ### Structure Requirement: Must Be Strictly Flat
16
+
17
+ config **must be a flat top-level object**, with every parameter as a direct top-level key; grouping by `assets`, `images`, `gameplay`, `colors`, `params`, and similar keys is **forbidden**:
18
+
19
+ ```json
20
+ // Correct -- flat
21
+ { "image_background": { ... }, "gravity_scale": { ... } }
22
+
23
+ // Wrong -- nested grouping is forbidden
24
+ { "assets": { "background": { ... } }, "gameplay": { "gravity": { ... } } }
25
+ ```
26
+
27
+ Each key is one of two types:
28
+
29
+ - **Visible parameter** (key does not start with `_`): exposed for user editing and must use the standard schema below.
30
+ - **Invisible parameter** (key starts with `_`): internal field (such as `_game_name`, `_config_version`), raw value is enough, and the schema is not used.
31
+
32
+ ### Visible Parameter Schema
33
+
34
+ ```json
35
+ "key_name": {
36
+ "value": <actual value>,
37
+ "type": "int" | "float" | "color" | "bool" | "string" | "audio" | "image" | "video",
38
+ "label": "<user-language label, <=10 characters>",
39
+ "min": <number>,
40
+ "max": <number>
41
+ }
42
+ ```
43
+
44
+ Rules:
45
+
46
+ - `type` can only be `int`, `float`, `color`, `bool`, `string`, `audio`, `image`, or `video`.
47
+ - `label` uses the user's language and must be no longer than 10 characters.
48
+ - `min`/`max` appear only for `int`/`float`, and both must be provided together.
49
+ - `type: "color"` uses a hexadecimal color string.
50
+ - `type: "image"` must additionally declare `"image_type": "Asset"` and `"size": "widthxheight"` (such as `"1440x2560"`), to judge display size when the true image dimensions cannot be read.
51
+ - The `value` of `audio`/`image`/`video` must be a real accessible external `http(s)` URL; local relative paths are forbidden. Images are generated asynchronously upstream; a brief 404 for the URL does not mean the asset is invalid, and the asset must not be rewritten, replaced, or deleted because of that.
52
+
53
+ ### Example
54
+
55
+ ```json
56
+ {
57
+ "_game_name": "Example Game",
58
+ "_config_version": 1,
59
+ "move_speed": { "value": 220, "type": "int", "label": "Move Speed", "min": 50, "max": 400 },
60
+ "gravity_scale": { "value": 1.2, "type": "float", "label": "Gravity", "min": 0.2, "max": 3 },
61
+ "theme_background_color": { "value": "#10131f", "type": "color", "label": "Bg Color" },
62
+ "enable_shake": { "value": true, "type": "bool", "label": "Shake" },
63
+ "start_button_text": { "value": "Start Game", "type": "string", "label": "Start Text" },
64
+ "bgm_main": { "value": "https://example.com/bgm.mp3", "type": "audio", "label": "BGM" },
65
+ "image_background": {
66
+ "value": "https://example.com/background.png",
67
+ "type": "image",
68
+ "image_type": "Asset",
69
+ "size": "1440x2560",
70
+ "label": "Bg Image"
71
+ }
72
+ }
73
+ ```
74
+
75
+ ## `/user_upload` Directory Rules
76
+
77
+ `/user_upload` is a virtual directory for user-uploaded assets; files under it are not real asset files and only store asset links or metadata.
78
+
79
+ 1. When user-uploaded assets need to be used, first read the corresponding file under `/user_upload` and extract the real URL.
80
+ 2. Do not treat `/user_upload/...` as a local asset path; the final code must reference the extracted real URL.
81
+
82
+ ## Deployment and Path Rules
83
+
84
+ 1. The final deployment artifact is fixed as `/dist`, deployed as a static site, and runtime resources must be directly accessible through the browser.
85
+ 2. `/dist` must be able to run independently from the source directory: all runtime code, resources, chunks, CSS, audio, images, and config can only reference files inside `/dist` or external `http(s)` links, must use relative paths or build-output internal paths, and runtime references pointing to the source directory are strictly forbidden.
86
+ 3. `vite.config.js` must set `base: './'`, making build output use relative paths (`./assets/...`) and ensuring it can run when deployed under any subpath.
87
+ 4. All runtime string paths (`fetch`, `Audio`, dynamic `import`, CSS `url()`) must use `./` relative paths; absolute paths beginning with `/` are forbidden.
88
+
89
+ ## Required Files at the Project Root
90
+
91
+ - `/project.md`: the only source of game requirements (design document); all subsequent development is based on this file.
92
+ - `/public/config.json`: runtime configuration and asset binding contract.
93
+ - `/src`: Vite + React + Phaser source code.
94
+ - `/dist`: build output, deliverable.
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: phaser-2d-graphics-builder
3
+ description: Upgrade Phaser 2D games from basic/prototype visuals to high-quality graphics. Covers art direction review, 2D scene paradigms, sprite/world kits, MCP image generation, camera/parallax/composition polish, event effects, performance budgets, and visual-score gating. Use when portrait or browser Phaser games need measurable visual quality improvement beyond placeholder color blocks.
4
+ ---
5
+
6
+ # Phaser 2D Graphics Builder
7
+
8
+ ## Purpose
9
+
10
+ Own the production graphics pass for Phaser games. Convert basic screenshots into authored, layered, performance-aware visual experiences—without treating particles and glow as a substitute for real art.
11
+
12
+ ## Use When
13
+
14
+ Screenshots still look basic, heroes/enemies are SVG placeholders or flat shapes, worlds are sparse or single flat backgrounds, UI/world art feels generic, or the user asks for premium, high-fidelity, showcase, exquisite/high-end visuals, or less-basic 2D graphics.
15
+
16
+ ## Required References
17
+
18
+ These references are required phase-entry gates, not optional reading:
19
+
20
+ - Load `../game-art/references/scene-profiles.md` and select a `scene_profile_id` before world kit, compose polish, or any claim that World/environment is authored. Read only the **World + 2D · Compose + Entities + Reject** sections for that profile; this skill executes the production pass against it.
21
+ - Load `../game-art/references/advanced-art-styles.md` when the user asked for exquisite/high-end/premium visuals and a premium style has not yet been locked; otherwise keep the existing `art-styles.md` choice.
22
+ - Load `references/visual-scorecard.md` before scoring, judging completion, or making any premium/showcase claim. **View** `assets/scorecard-anchors/scene-1.jpeg`, `scene-2.jpeg`, and `scene-3.jpg` when scoring World, Hero, Sprite fidelity, Compose, or VFX—or before any premium/showcase claim.
23
+ - Load `references/implementation-blueprint.md` before changing graphics architecture, sprite factories, VFX, compose systems, diagnostics, or broad visual systems.
24
+ - Load `references/sprite-recipes.md` before building or upgrading hero/player, obstacle, enemy, pickup, world-kit, or prop sprites.
25
+ - Load `references/compose-recipes.md` before changing camera, parallax, tint/overlay, depth sorting, vignette, or screen-space compose.
26
+ - Load `references/technical-art.md` before premium/showcase graphics work, atlas/texture strategy, particle/VFX systems, or visual changes that could affect mobile performance.
27
+ - Load `references/vfx-recipes.md` before adding particles, trails, flashes, hitstop-linked FX, or event-driven juice.
28
+ - Load `references/checklists/premium-game-quality-gate.md` and `references/checklists/visual-scorecard.md` before declaring a game premium, showcase, complete, release-ready, or less basic.
29
+ - Load the relevant checklist before focused work: `references/checklists/sprite-quality.md`, `references/checklists/compose-quality.md`, `references/checklists/performance-safe-visual-detail.md`, or `references/checklists/technical-art-quality.md`.
30
+ - Load `references/graphics-prompt-templates.md` only when the user asks for reusable prompts, a graphics-pass prompt, or a task template.
31
+
32
+ For broad "still looks basic", premium, showcase, high-fidelity, or less-basic graphics work, load the scene-profiles paradigm (2D Compose rail) plus all five core references (`visual-scorecard`, `implementation-blueprint`, `sprite-recipes`, `compose-recipes`, `technical-art`) as the first action in the phase. Track them in a reference ledger with yes/no, path, and failure reason. Do not mark the graphics phase complete while any required reference is skipped.
33
+
34
+ External asset sourcing gate:
35
+
36
+ - For premium/showcase/high-fidelity/less-basic graphics with a hero/player, character, creature, boss, vehicle, weapon, signature prop, complex pickup, background, or parallax layer, load `../game-asset-image-generator/SKILL.md` before deciding SVG/CSS placeholders or procedural shapes are enough.
37
+ - Prefer MCP `evomeme_generate_game_image` (and `evomeme_cutout_game_image` when needed) via `game-asset-image-generator`; bind URLs in `public/config.json` per `../phaser-2d-game/references/file-structure.md`.
38
+ - Create an asset sourcing ledger for each high-value surface: mcp-image / hybrid / user-provided / procedural, plus outputs or skip reason.
39
+ - `not-needed` is valid only after the relevant path was considered and the ledger explains why generation would not improve a non-hero support surface, or why an attempted MCP call shows a real blocker.
40
+ - For premium hero surfaces and main backgrounds, procedural/SVG-only is not an allowed final answer unless there is real blocker evidence. At least one high-value surface must show an MCP `asset_url` (or user-provided path) written into `public/config.json`.
41
+
42
+ ## Workflow
43
+
44
+ 1. Capture or inspect active mobile (and desktop if in scope) screenshots of gameplay—not only the title screen.
45
+ 2. Confirm or select a `scene_profile_id` from `../game-art/references/scene-profiles.md` (World / 2D · Compose / Entities). If missing, write it before upgrading surfaces.
46
+ 3. Score visuals across art direction, hero/player, obstacles, rewards, world, sprite fidelity, compose, VFX, UI, and performance evidence—**after** comparing the active-play screenshot to `assets/scorecard-anchors/` (`scene-1` / `scene-2` / `scene-3`).
47
+ 4. Add missing graphics architecture: sprite factories / world prop kit, depth/layer contract, tint/compose helpers, VFX system, technical-art budget, diagnostics.
48
+ 5. Fill the external asset sourcing ledger per surface; generate/bind missing hero, hazard, reward, background, and parallax assets through `game-asset-image-generator`.
49
+ 6. Upgrade every weak visible surface, not only one hero sprite. World layers must match the chosen scene-profiles paradigm (Play / Near / Mid / Far / Motion).
50
+ 7. Add camera/parallax/tint/compose polish after authored sprites and backgrounds exist, following `references/compose-recipes.md`.
51
+ 8. Add event-driven VFX tied to gameplay state per `references/vfx-recipes.md`—after forms and compose are readable. Management/sim genres may use status bubbles, progress rings, and day-night cues as primary readability FX when particle bursts would hurt clarity.
52
+ 9. Re-score screenshots against the same anchors. Continue until every premium category is at least 2/3 or report exact blockers.
53
+ 10. Run the fresh-eyes review per `references/visual-scorecard.md` before finalizing premium/showcase claims.
54
+ 11. Verify Phaser/display budgets against `references/technical-art.md`, mobile screenshots, console/page errors, and playability. Engine constraints: `../phaser-2d-game/references/engine-performance.md` and `../phaser-2d-game/references/engine-spritesheets.md`.
55
+
56
+ ## Core Rule
57
+
58
+ Do not make placeholders look premium by adding glow, bloom-like overlays, or ambient particles. First author silhouettes and layered world art, then compose (depth/parallax/tint), then event-driven effects.
59
+
60
+ ## Boundaries
61
+
62
+ - Domains owned here: world/sprite visual production pass, compose, in-world VFX readability, graphics budgets, scorecard.
63
+ - Not owned here: core gameplay rules (`game-designer`), DOM HUD/menu design (`game-ui`), audio binding (`game-audio`), Phaser architecture basics (`phaser-2d-game`), art-direction selection alone (`game-art`—this skill consumes its outputs and runs the upgrade pass).
64
+ - Formal HUD remains DOM overlay; do not move dense UI into Canvas to “look fancy”.
65
+
66
+ ## Final Response
67
+
68
+ Report the reference ledger, external asset sourcing ledger, technical art brief, score before/after (cite which anchor each weak/strong category resembled), production surfaces upgraded, files changed, screenshots/artifacts, display/texture budget notes, VFX readability tradeoffs, and remaining blockers. For premium/showcase claims, include the filled visual scorecard exactly as defined in `references/visual-scorecard.md`, including average and automatic failures remaining.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Phaser 2D Graphics Builder"
3
+ short_description: "Comprehensively improve a 2D game's characters, scenes, composition, effects, and overall visual quality"
4
+ default_prompt: "Please use $phaser-2d-graphics-builder to improve this 2D game's overall visual quality, and refine its characters, scene layering, composition, and effects presentation."
5
+
6
+ policy:
7
+ allow_implicit_invocation: false
@@ -0,0 +1,117 @@
1
+ ---
2
+ name: threejs-3d-game
3
+ description: Implement 3D browser games with Three.js, React Three Fiber, TypeScript, and Vite. Use when R3F Canvas, simulation systems, DOM HUD overlays, event-bus bridging, or 3D project file structure is needed.
4
+ ---
5
+
6
+ # Three.js 3D Game Implementation
7
+
8
+ ## Overview
9
+
10
+ This skill is for the concrete implementation phase of 3D browser games.
11
+
12
+ Tech stack: **Three.js + React + R3F + TypeScript + Vite + pnpm**. R3F `<Canvas>` owns the 3D / WebGL world; React DOM (`src/ui`) owns the HUD, menus, and narrative panels. Cross-layer communication goes through the event bus, unified input actions, and serializable simulation state.
13
+
14
+ ## Architecture Principles
15
+
16
+ 1. **Separate R3F and DOM**
17
+ - `<Canvas>` / `game/three` owns scenes, meshes, lights, `AnimationMixer`, and camera orchestration.
18
+ - `src/ui` owns the formal HUD, menus, settings, inventory, quests, and narrative panels.
19
+ - MUST NOT use R3F `<Html>` as a replacement for the formal HUD.
20
+
21
+ 2. **Simulation Before Rendering**
22
+ - Rules, values, win/loss, and saves belong in `game/simulation`, with no Three / React dependencies. (Aligned with the System layer in the 2D skill: the rules source-of-truth layer.)
23
+ - `useFrame` only orchestrates: read input/simulation -> sync `Object3D` -> mixer/camera; it does not write core rules.
24
+
25
+ 3. **Pure Three Modules Must Be Unit-Testable**
26
+ - `game/three/*` MUST NOT import React; scene construction and math helpers can be verified independently.
27
+
28
+ 4. **Stable Asset Keys + Canonical Semantics**
29
+ - All game code references assets through `manifest` / `public/config.json` / canonical packages, and does not hardcode glTF / texture paths in business code.
30
+ - **3D meshes MUST come from** `assets/canonical/<id>/` (or from `evomeme_asset_sync_to_three` syncing to `public/assets/canonical/<id>/`).
31
+ - After loading, orientation/scale **MUST** be applied according to `asset.json` (see `references/engine-asset-pipeline.md`); hardcoding `rotation.y += Math.PI` inside entities is prohibited.
32
+ - Alignment and preview default to skill `game-asset-align` + MCP `evomeme_stage_open`.
33
+ - **After Blender modeling or modification, Stage MUST be opened first, and the asset may only be imported after the user views and confirms the current Three.js version.** `alignment.ready=true` or set_orientation does not replace user confirmation; do not manually copy or click on behalf of the user to bypass the gate.
34
+
35
+ ## Implementation Guidance
36
+
37
+ - Use `gameBus` (mitt) so React UI emits `command:*`, and the game runtime emits factual events such as `game:*` / `player:*`.
38
+ - Centralize physical input mapping in `game/input`; UI and Canvas only consume unified semantic actions.
39
+ - Put content data (levels, encounters, items) in `game/content`, decoupled from the rendering lifecycle.
40
+ - Centralize audio in `game/audio`, driven by bus events; MUST NOT play in-game SFX with `new Audio()` inside the HUD (see `references/engine-audio.md` for details).
41
+ - Canvas / gl / DPR defaults and R3F loading boundaries are covered in `references/engine-runtime.md`.
42
+
43
+ ## Covered 3D Game Types
44
+
45
+ - Third-person / top-down exploration and lightweight action
46
+ - Endless runners and obstacle dodging
47
+ - Vehicles, pinball, and rigid-body sketches
48
+ - Lightweight shooting or encounter battles
49
+ - Casual gameplay that needs spatial 3D presentation
50
+
51
+ ## Camera and Presentation
52
+
53
+ - Decide the camera model early: follow, orbit, lock-on, over-the-shoulder.
54
+ - Separate camera logic from game rules; shake / FOV changes serve readability.
55
+ - Resources MUST be disposed on StrictMode remount / unmount (geometry, materials, mixer, bus subscriptions).
56
+ - See `references/engine-input-camera.md` for details.
57
+
58
+ ## Engine References (Load As Needed)
59
+
60
+ When writing/modifying 3D runtime code, load references by task in addition to `file-structure.md`; do not pre-read everything at once:
61
+
62
+ | Task | Load |
63
+ | --- | --- |
64
+ | Frame loop, Canvas/gl defaults, dispose, blank screen/double loop, R3F policy, diagnostic hooks | `references/engine-runtime.md` |
65
+ | Input intent, touch stickiness, camera follow / FOV | `references/engine-input-camera.md` |
66
+ | Physics selection, Rapier/fixed step, collision proxies | `references/engine-physics.md` |
67
+ | GLB/FBX import, AnimationMixer, root motion, import performance | `references/engine-asset-pipeline.md` |
68
+ | Stutter, pooling, InstancedMesh, DPR, LOD, hot-path allocation | `references/engine-performance.md` |
69
+ | AudioContext unlock, bus-driven audio playback, mute, restart cleanup | `references/engine-audio.md` |
70
+
71
+ Directory structure and layering are governed by this skill's `file-structure.md`; **do not** create separate directories based on the unrelated `core/entities/systems` scaffold.
72
+
73
+ ## UI Integration
74
+
75
+ - HUDs, command menus, settings, and narrative interfaces use React DOM, overlaid above Canvas (`App` composition).
76
+ - `GameCanvas.tsx` is the WebGL <-> React DOM boundary.
77
+ - Business UI goes in `src/ui`; shared non-business primitives go in `src/components`.
78
+
79
+ ## Scaffolding and Configuration
80
+
81
+ New project entry points: `index.html`, `src/main.tsx`, `public/config.json`. The package manager is **pnpm**. Build artifacts go to `dist/`, which must include `dist/index.html` and `dist/config.json`.
82
+
83
+ Directory layout, layering responsibilities, config schema, and deployment paths use `references/file-structure.md` as the only normative source.
84
+
85
+ ## Common Anti-Patterns
86
+
87
+ - Writing combat/win-loss rules in `useFrame` or `Hud.tsx`
88
+ - Piling formal menus and settings into R3F `<Html>`
89
+ - Importing React hooks / components inside `game/three`
90
+ - HUD directly holding an `Object3D` reference and changing `position` every frame
91
+ - Hardcoding the same glTF / texture path in multiple places
92
+ - Adding an extra `new WebGLRenderer` or a second rAF that competes with R3F's loop
93
+ - Not capping DPR; aggressively creating meshes/audio sources on hot paths
94
+ - Playing in-game SFX with `new Audio()` inside the HUD
95
+ - Replacing this specification with a CRA / Next.js / npm-only scaffold (unless the user explicitly requests it)
96
+
97
+ ## References
98
+
99
+ **Engine (This Skill)**
100
+ - File structure and layering: `references/file-structure.md`
101
+ - Runtime / Canvas / R3F policy: `references/engine-runtime.md`
102
+ - Input and camera: `references/engine-input-camera.md`
103
+ - Physics and collision: `references/engine-physics.md`
104
+ - Asset loading and animation: `references/engine-asset-pipeline.md`
105
+ - Performance: `references/engine-performance.md`
106
+ - Audio runtime: `references/engine-audio.md`
107
+
108
+ **Cross-Skill (Gameplay / Acceptance, Not Engine Implementation Details)**
109
+ - Gameplay workflow: `../game-designer/references/gameplay-workflows.md`
110
+ - Game-feel tuning: `../game-designer/references/game-feel.md`
111
+ - Level design: `../game-designer/references/game-design-level-design.md`
112
+ - Physics selection (design-side comparison): `../game-designer/references/physics-engine-selection.md`
113
+ - Definition of done for new games: `../game-designer/references/checklists/new-game-definition-of-done.md`
114
+ - Art style guide: `../game-art/references/art-styles.md`
115
+ - UI style specification: `../game-ui/references/ui-styles.md`
116
+ - Audio asset generation: `../game-audio/SKILL.md`
117
+ - QA / performance profiling: `../game-test/SKILL.md`
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Three.js 3D Game"
3
+ short_description: "Build clearly structured 3D browser games, separating gameplay simulation, scene rendering, and interface"
4
+ default_prompt: "Please use $threejs-3d-game to implement this 3D browser game according to my requirements, while keeping the boundaries between gameplay simulation, 3D scene, and interface clear."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true