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,152 @@
1
+ ---
2
+ name: game-tile-generator
3
+ description: Generate, edit and optimize tilemap resources. Must use this skill when generating tilemaps or seamless tiles; also use it to create terrain textures, two-terrain transition tilesets or repair repeating seams on existing tiles. MCP tools produce square terrain tiles, 4x4 transition atlases or repaired PNGs; explains outputs, use cases, tiles, tiling, atlases and seam elimination.
4
+ ---
5
+
6
+ # Tilemap Resource Generation, Editing and Optimization
7
+
8
+ Always use this skill when generating tilemaps or seamless tiles. Determine whether the task needs a repeating texture, a two-terrain transition tileset, or seam repair on an existing tile. For tilemap creation, this skill covers terrain image generation and optimization; implement map placement, collision and autotile rules in the target engine after obtaining the assets.
9
+
10
+
11
+ Use [Scrolling Map Resource Generation and Editing](../game-scroll-generator/SKILL.md) for horizontal scrolling backgrounds, midground/foreground layers and left/right seam repair. Its `evomeme_eliminate_scroll_background_seam` is separate from square tile seam repair.
12
+
13
+ ## Choose the tool
14
+
15
+ | Tool | Operation and deliverables | When to use |
16
+ | --- | --- | --- |
17
+ | `evomeme_generate_seamless_tile` | Generate one square terrain texture from a prompt and optional references. Optionally run a second AI generation to repair seams, retaining both the base and repaired images. | Repeat one grass, stone, sand, wall or similar texture in both horizontal and vertical directions. |
18
+ | `evomeme_generate_tile_transition_atlas` | Use two different terrain images, four directional edge generations and one atlas boundary completion to compose one fixed 4x4 PNG containing 16 tiles. | Prepare straight boundaries and corners between two existing terrains, such as grass and dirt or sand and stone. |
19
+ | `evomeme_eliminate_tile_seams` | Cyclically offset an existing square tile, complete its seams with one AI generation, composite the repair and restore the offset. Preserve the source and save/upload one new PNG at the same resolution. | Improve visible horizontal or vertical joins on an existing terrain texture without generating another base tile. |
20
+
21
+ All three tools share the canvas task and image pipelines, wait for completion, save images under workspace `assets/`, and return text metadata. Use [Game Image Generation and Processing](../game-asset-image-generator/SKILL.md) for illustrations, characters, icons and complete scene backgrounds.
22
+
23
+ ## Terms and deliverable boundaries
24
+
25
+ - **Tile / terrain block**: one image unit in a map grid, not necessarily a building brick. Tiles here are square, for example 128x128 pixels. Display scaling can change their on-screen size; pixel resolution does not determine physical game units.
26
+ - **Seamless / tiling**: copied images should meet with continuous texture, color and shapes. A single repeating tile must join at both left/right and top/bottom edges. Transition tiles must be selected with compatible terrain patterns on their shared edges; arbitrary pairs are not interchangeable.
27
+ - **Seam elimination**: cyclically offset the base image by half its width and height, moving the original outer seams to the center. Mark a central cross for AI repair, copy only that region back, then reverse the offset. A cyclic offset wraps pixels across the opposite edge instead of discarding them. This is an extra generation, not background removal, edge blur or resizing.
28
+ - **Tileset / atlas**: a tileset is a reusable collection of tile images; an atlas packs those units into one large image. This tool packs 16 cells into one PNG. `tile_size=128` means each cell is 128x128 and the sheet is 512x512, not 16 separate files.
29
+ - **Terrain 0 / terrain 1**: `reference_ids[0]` and `reference_ids[1]`, respectively, such as grass and dirt. Swapping the order swaps terrain assignments in the fixed template. These numbers do not encode elevation, layer depth or priority.
30
+ - **Transition**: the boundary where the two terrains meet within a tile. Straight and rounded shapes come from the built-in template. The prompt guides material, color and style at those boundaries, not the number or arrangement of cells.
31
+ - **Edge protocol**: a shared strip of pixels specifying the terrain pattern along a tile edge. `00` and `11` contain one terrain; `01` and `10` contain both terrains in opposite orders. Four patterns in each of two orientations make eight protocols. Four mixed protocols use AI; four pure protocols come directly from the source textures. These are internal stitching data, not network protocols or eight additional deliverable images.
32
+ - **Mask / inpainting / boundary completion**: a mask identifies pixels allowed to change. Atlas references mark repair regions in opaque magenta `#FF00FF`; a separate local geometry mask controls which generated pixels are copied back. The fifth generation fills internal terrain boundaries while protecting the existing edge protocols. It does not remove every magenta pixel from the original textures. Single-tile seam elimination instead uses a transparent cross as its repair region.
33
+ - **Tilemap / autotile**: a tilemap records which tile occupies each grid position, reusing a small set of images to build a scene. Autotiling chooses tiles according to neighboring terrain. These three MCP tools produce images, not map JSON, collision data, navigation data or engine autotile rules.
34
+
35
+ ## Workspace and references
36
+
37
+ Pass an explicit absolute workspace root as `workspace_dir`, for example `D:/my-game`. Omitting it uses the MCP process working directory. References must be readable images inside that workspace's `assets/`; IDs are workspace-relative paths such as `assets/terrain/grass.png`, not absolute paths, URLs or Base64.
38
+
39
+ Locate actual attachment files or external local images before copying them into `assets/`, using a fresh name if needed to avoid overwriting existing assets. Download accessible image URLs first. If the actual file is unavailable, explain which reference is missing instead of inventing an ID. Reuse generated `asset_id` values directly. A tile without references can be generated immediately.
40
+
41
+ An atlas requires **exactly two different terrain images**. Prefer square, already repeatable textures with matching view, lighting, scale and style. Inputs are resized to squares, so non-square images can stretch. Character images, text and large scene subjects generally make poor terrain textures. Obtain the second terrain if only one is available; do not duplicate the same ID. When the user wants two terrains from scratch, generate each with the single-tile tool and pass the resulting IDs in the intended order.
42
+
43
+ ## Single-tile MCP
44
+
45
+ | Parameter | Required | Meaning |
46
+ | --- | --- | --- |
47
+ | `prompt` | Yes | Nonblank terrain material, palette, texture scale, top-down view and style. The shared pipeline adds tiling instructions. |
48
+ | `model` | No | Default `asset-pro`; also `asset-max` or `asset-lite`. |
49
+ | `size` | No | Requested size, only `1024x1024` or `2048x2048`; default 1024. Lite requires explicitly selecting `2048x2048`. |
50
+ | `reference_ids` | No | Default `[]`. Up to 10 references for Pro, or 14 for Max/Lite in this workflow. |
51
+ | `seam_elimination_enabled` | No | Default `false`. Adds one AI generation and the offset, repair and restoration steps described above. |
52
+ | `workspace_dir` | No | Absolute workspace root; specify it explicitly when calling. |
53
+
54
+ ```json
55
+ {
56
+ "prompt": "Top-down forest grass, fine dark green blades with scattered moss, soft even lighting, no large rocks or text, hand-painted game style",
57
+ "model": "asset-pro",
58
+ "size": "1024x1024",
59
+ "seam_elimination_enabled": true,
60
+ "workspace_dir": "D:/my-game"
61
+ }
62
+ ```
63
+
64
+ Without seam elimination: one AI generation and one saved base image. `base` and the final image refer to the same file. The base retains the provider's image format; use `mime_type` rather than assuming PNG.
65
+
66
+ With seam elimination: normally two AI generations and two saved images, the base and a repaired PNG. Temporary repair references are not deliverables. The final PNG is uploaded; top-level `asset_url` / `tos_url` identify the **composited image after restoring the offset**. `outputs` lists the base first and repaired image second; top-level `asset_id` / `local_path` identify the repaired image.
67
+
68
+ This tool does not accept `background` or `transparent_background`, or perform cutout. The default pipeline relies on the tiling prompt; seam elimination adds repair. Inspect the actual joins regardless: task success does not certify visual quality.
69
+
70
+ ## Tile texture seam elimination MCP
71
+
72
+ Use `evomeme_eliminate_tile_seams` when the user already has a tile and wants to repair its repeating seams. Do not regenerate a base through `evomeme_generate_seamless_tile` for this request. A newly generated tile can be passed directly using its returned `asset_id`.
73
+
74
+ | Parameter | Required | Meaning |
75
+ | --- | --- | --- |
76
+ | `id` | Yes | Workspace image ID of one existing square tile, e.g. `assets/terrain/grass.png`. Prepare files as described above. |
77
+ | `model` | No | Default `asset-pro`. Pro/Max support 1024x1024 and 2048x2048; Lite requires 2048x2048. |
78
+ | `prompt` | No | Texture continuity, material, color and style requirements. Shared prompts specify seam repair and locked regions. |
79
+ | `workspace_dir` | No | Absolute workspace root; specify it explicitly. |
80
+
81
+ ```json
82
+ {
83
+ "id": "assets/terrain/grass.png",
84
+ "model": "asset-pro",
85
+ "prompt": "Preserve the grass blade scale, dark green palette and hand-painted finish; make all repeating edges continuous",
86
+ "workspace_dir": "D:/my-game"
87
+ }
88
+ ```
89
+
90
+ The tool reads source dimensions and currently accepts only **1024x1024 or 2048x2048**. Do not pass `size`, `reference_ids`, `seam_elimination_enabled` or background options. Non-square images, other dimensions, and Lite with 1024x1024 are rejected. The tool does not stretch or enlarge the source to bypass these constraints.
91
+
92
+ Pipeline: cyclic half-image offset → prepare and upload a central transparent-cross reference → one AI completion → composite only the repair region → restore the offset → save and upload the new PNG. Keep the original source; deliver one repaired PNG at the same resolution. Temporary references and raw model completion images are not deliverables. `local_path` and `asset_url` / `tos_url` identify the final composited image after offset restoration.
93
+
94
+ Beyond common fields, results include `source_id` (the original tile ID), `model`, `size`, `width`, `height`, `job_id`, and `transform` with offsets, repair-strip width and `offset_restored=true`. `outputs` contains only the new PNG, not the source. Use the repaired `asset_id` for subsequent atlas generation.
95
+
96
+ This repairs the **outer repeating edges of one tile**, not every internal cell boundary of a 4x4 atlas or the horizontal loop of a scrolling background. Use transition-atlas generation for a full two-terrain tileset. Standalone repair shares the same pipeline as optional repair during tile generation; do not repeat it after an already repaired tile passes visual inspection.
97
+
98
+ ## Transition-atlas MCP
99
+
100
+ | Parameter | Required | Meaning |
101
+ | --- | --- | --- |
102
+ | `reference_ids` | Yes | Exactly two different workspace image IDs, in `[terrain0, terrain1]` order. |
103
+ | `tile_size` | No | Integer cell side from 8 to 2048 pixels, default 128. Atlas width and height are each four times this value. |
104
+ | `model` | No | Default `asset-pro`. Pro/Max support every tile size; Lite only supports 1025–2048 in the current pipeline. |
105
+ | `prompt` | No | Boundary material, blending and style. Missing or blank text uses the internal default meaning “tile 1 gradually changes into tile 2.” |
106
+ | `workspace_dir` | No | Absolute workspace root; specify it explicitly when calling. |
107
+
108
+ ```json
109
+ {
110
+ "reference_ids": ["assets/terrain/grass.png", "assets/terrain/dirt.png"],
111
+ "tile_size": 128,
112
+ "model": "asset-pro",
113
+ "prompt": "Grass becomes sparse along the dirt boundary; preserve the same top-down view, lighting and hand-painted style",
114
+ "workspace_dir": "D:/my-game"
115
+ }
116
+ ```
117
+
118
+ The normal pipeline uses five AI generations: generate four directional mixed protocols concurrently → extract and reuse eight edge protocols → compose the fixed template locally → complete internal boundaries in a fifth generation → composite and save the PNG. Five generations do not mean five deliverables. Protocol and completion images are temporary and cleaned up on success or failure. The only final deliverable is one `assets/tile-transition-atlas-…png`. It is not automatically split or uploaded; use `evomeme_upload_game_asset` if a final remote URL is needed. Internal reference images are uploaded during generation.
119
+
120
+ AI working resolutions differ from the output resolution. Protocol generation uses 1024x1024 when `tile_size ≤ 1024`, otherwise 2048x2048. Atlas completion uses 1024x1024 when the final atlas side is at most 1024, otherwise 2048x2048, then scales the generated pixels back to the target image. Lite cannot generate at 1024x1024, so this shared pipeline only permits Lite with `tile_size > 1024`, not the default 128. Normally retain default Pro; do not enlarge the user's requested tile size just to bypass a model constraint.
121
+
122
+ The atlas has four rows and four columns with zero margin and spacing. Row-major indices, reading left to right and top to bottom, are:
123
+
124
+ | | Column 1 | Column 2 | Column 3 | Column 4 |
125
+ | --- | --- | --- | --- | --- |
126
+ | Row 1 | 0 | 1 | 2 | 3 |
127
+ | Row 2 | 4 | 5 | 6 | 7 |
128
+ | Row 3 | 8 | 9 | 10 | 11 |
129
+ | Row 4 | 12 | 13 | 14 | 15 |
130
+
131
+ These are atlas indices, not engine autotile bitmask values. Read `tile_size × tile_size` regions and configure engine rules against their actual terrain edges. Do not assume the layout matches a particular engine's autotile convention.
132
+
133
+ ## Results, inspection and failures
134
+
135
+ Successful text metadata includes `status: SUCCEEDED`, `task_id`, `operation_id`, final `asset_id`, `local_path`, `mime_type`, and an `outputs` array serialized as JSON text. `task_id` identifies the entire workflow, `operation_id` the local final-image step, and `job_id`, when present, a remote AI request. `outputs` lists saved deliverables with their names, types and applicable dimensions and URLs. MCP does not embed image bytes or Base64.
136
+
137
+ Single-tile results also include `base` and `seam_elimination_enabled`. When enabled, `transform` contains `offset_x` / `offset_y` (cyclic offsets), `mask_width` (repair strip width), `feather` (blend feather width, currently 0), and `offset_restored` (whether the offset was reversed). Do not mistake `base` for the repaired final result.
138
+
139
+ Atlas results include `tile_size`, `width`, `height`, `columns=4`, `rows=4`, and:
140
+
141
+ | Field | Meaning |
142
+ | --- | --- |
143
+ | `working_tile_size` | AI working side for directional protocols, 1024 or 2048. |
144
+ | `atlas_generation_size` | AI working side for atlas boundary completion, 1024 or 2048. |
145
+ | `protocol_mask_width` | Total shared edge strip width at the target tile size, covering both sides of a seam. |
146
+ | `generated_protocol_count=4` / `protocol_count=8` | AI mixed-protocol count / total including pure-terrain protocols. |
147
+ | `ai_generation_count=5` | Normal generation stage count, not deliverable count or retry count. |
148
+ | `boundary_completion=true` | Internal boundary completion ran; not a visual approval flag. |
149
+
150
+ Inspect real files. Repeat a single tile at least 2x2 to check both axes and four-corner joins. Check an atlas's 4x4 layout, pixel dimensions, terrain order and joins between compatible edges. Atlas processing rejects transparent, partially transparent or pure magenta pixels left in repair regions, but cannot automatically identify every dark patch, texture mismatch or style issue.
151
+
152
+ On `isError: true`, read the specific error and retain the inputs. If tile generation's second stage fails, the completed base remains saved; locate it through task records or the canvas, confirm the original task state, and use its ID with standalone seam elimination. Check existing task status after an interrupted query before resubmitting; another atlas call may repeat all five generations. Inspect repaired tiles visually: task success does not certify seamless appearance.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Tilemap Resource Generation and Editing"
3
+ short_description: "Create and optimize tiles, transition atlases and seamless joins"
4
+ default_prompt: "Use $game-tile-generator to create, edit or optimize tilemap resources with seamless tiles, transition atlases or seam repair on existing tiles."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,177 @@
1
+ ---
2
+ name: game-ui
3
+ description: Design restrained, clear, and genre-aware HUDs, menus, dialogs, touch regions, safe areas, and UI motion for games, and directly call the image-generation tools in the current environment to deliver UI concept art for different interfaces and their design rationale. Use when a game needs to determine or adjust UI style, information hierarchy, interface layout, interaction feedback, mobile adaptation, or UI concept art for states such as start, gameplay, pause, settings, win/loss, results, and selection. For evomeme platform games, MUST also read and follow evomeme-ui.
4
+ ---
5
+
6
+ # Game UI Design
7
+
8
+ ## Goal
9
+
10
+ Complete UI design based on gameplay, art direction, and target devices, and generate concept art for different interfaces that can express the final game's effect. Concept art should simultaneously reflect information hierarchy, operational intent, screen composition, and a unified visual language.
11
+
12
+ ## evomeme Platform Prerequisite
13
+
14
+ If the game is intended to run, launch, or be published on evomeme, MUST read and follow [`evomeme-ui`](../evomeme-ui/SKILL.md) before UI design, concept-art generation, or responsive implementation. Use the WebView container already allocated by the host as the frame. Do not design around the phone's full screen or a fixed aspect ratio, and do not subtract App bars or phone safe areas again.
15
+
16
+ For evomeme games, `evomeme-ui` governs dimension sources, safe-area handling, and responsive acceptance checks. Mobile safe-area advice in this skill and its general checklists MUST NOT cause duplicate deductions. For other platforms, follow their actual host constraints.
17
+
18
+ ## Core Design Principles
19
+
20
+ 1. **Less is more**: Make every UI element serve the player's current judgment, action, or understanding of feedback.
21
+ 2. **Keep necessary information**: Prioritize survival state, current objective, progress, and immediate feedback before arranging secondary information.
22
+ 3. **Game screen first**: Preserve a clear playable area for the player, threats, objectives, pickups, and key performance moments.
23
+ 4. **Game interface, not generic panels**: Use meters, icons, reticles, resource slots, status bars, cooldown rings, and in-world markers to express game information.
24
+ 5. **Unified visual language**: Let typography, icons, shapes, materials, colors, and motion continue the game's subject matter and art style.
25
+ 6. **Full-viewport game stage**: Let the game stage itself adapt to the viewport according to the target aspect ratio; extra desktop space serves as passive background while keeping the game area complete.
26
+
27
+ ## UI Design Workflow
28
+
29
+ ### 1. Establish Design Context
30
+
31
+ Read the game design document, gameplay notes, existing interfaces, runtime screenshots, concept art, art settings, and references provided by the developer. Confirm:
32
+
33
+ - The core gameplay and the decisions the player needs to make in each state;
34
+ - Target devices, landscape/portrait orientation, aspect ratio, and safe areas;
35
+ - Whether the game will run or be published on evomeme; if so, MUST first complete the `evomeme-ui` prerequisite reading above and use its game container test sizes;
36
+ - Keyboard, mouse, touch, or native input methods;
37
+ - Game art style, subject matter, atmosphere, and existing visual assets;
38
+ - The game states that need design and the main action in each state.
39
+
40
+ ### 2. Determine UI Style
41
+
42
+ Determine the UI style based on game art, genre, core gameplay, and user requirements. Clarify the following visual language and hand it to the developer for confirmation:
43
+
44
+ - Primary colors, status colors, and neutral colors;
45
+ - Typography direction and information font-size hierarchy;
46
+ - Shapes of buttons, panels, status bars, and dialogs;
47
+ - Icon silhouettes, materials, strokes, shadows, and decoration density;
48
+ - Feedback methods for clicks, value changes, rewards, and danger states.
49
+
50
+ When the direction has not yet been determined, propose a small number of clearly different candidate styles and explain each style's relationship to the game subject matter and gameplay.
51
+
52
+ ### 3. Determine The Interfaces To Design
53
+
54
+ Identify the interfaces that need concept art according to the complete game flow, for example:
55
+
56
+ - Start and main menu;
57
+ - Core gameplay HUD;
58
+ - Pause, resume, and settings;
59
+ - Failure, retry, victory, and results;
60
+ - Character, level, equipment, or ability selection;
61
+ - Loading, asset error, and other necessary states;
62
+ - Mobile touch operation layer.
63
+
64
+ States with the same layout can share one design; states with obvious changes in layout, information hierarchy, or main action generate separate concept art.
65
+
66
+ ### 4. Design UI Layout
67
+
68
+ First list the UI elements in the interface, then organize them by HUD, menus and dialogs, and operation UI. Determine the position, size, hierarchy, and appearance state of each element according to the player's goal.
69
+
70
+ #### HUD
71
+
72
+ - Concentrate HUD at the top of the screen, the upper sides, or near relevant world objects;
73
+ - Keep persistent HUD height within 8% of screen height as much as possible;
74
+ - Persistent HUD prioritizes showing no more than 3 key values that affect the current decision;
75
+ - Use stable-width containers for dynamic values such as score, time, health, and ammo;
76
+ - Use status bars for continuous values that must be read quickly;
77
+ - Use fixed colors for danger, reward, shield, buff, objective, and disabled states;
78
+ - Place brief warnings, combo, and event feedback where players can notice them easily without blocking action.
79
+
80
+ #### Menus And Dialogs
81
+
82
+ - Make start, resume, retry, next level, or confirm the primary action of the current interface;
83
+ - Put settings, exit, restart, and level selection in a secondary hierarchy;
84
+ - Use centered panels, bottom drawers, or top notices to express different importance levels;
85
+ - Keep a clear front/back relationship between overlays and the game scene;
86
+ - Give dialogs a clear trigger source, contained content, and return path.
87
+
88
+ #### Operation UI
89
+
90
+ - Choose click, swipe, drag, joystick, or action buttons according to the core gameplay;
91
+ - Place movement controls in the lower-left thumb area and primary actions in the lower-right thumb area;
92
+ - Make primary touch regions usually at least 44 CSS px, and leave spacing between adjacent actions;
93
+ - Keep HUD, operation controls, safe areas, and the core gameplay path clearly separated;
94
+ - Use pressed states, direction feedback, and cooldown presentation to communicate whether an operation took effect.
95
+
96
+ ### 5. Simplify UI Elements
97
+
98
+ Confirm one by one the player need corresponding to each UI element. Put data that is meaningful only during results or reward stages into the corresponding interface; use icons, interaction affordances, and immediate feedback to express intuitive actions; keep teaching and explanation focused on what the player currently needs to understand.
99
+
100
+ When the game can complete the core experience through direct interaction inside the scene, the gameplay screen can use no persistent UI, with corresponding states designed for pause, results, and necessary feedback.
101
+
102
+ ### 6. Design UI Motion
103
+
104
+ Make motion respond to clear player actions or game state changes:
105
+
106
+ - Button click: scale to 90-95% and then spring back, about 160-220ms, using easing with rebound feel;
107
+ - HUD value changes: use number bounce, status-bar change, or color feedback of about 120-200ms;
108
+ - Results and rewards: give the final result or main action a one-time emphasis;
109
+ - Menus and dialogs: use brief fade-in, movement, or scaling to establish hierarchy;
110
+ - Danger and high-intensity feedback: combine shape, color, motion, sound, or text to communicate state.
111
+
112
+ In static concept art, express motion intent through initial position, movement direction, afterimages, lighting effects, or state contrast.
113
+
114
+ ### 7. Adapt For 2D And 3D Games
115
+
116
+ - For 2D games, make the UI and Canvas game screen form a clear hierarchy, and make pixel density, strokes, and icon style consistent with the scene;
117
+ - For 3D games, keep flat HUDs, menus, and overlays clear. When characters, vehicles, weapons, or trophies need to be shown, a 3D preview can be used as the interface focus;
118
+ - In-scene labels, objective markers, and interaction prompts coordinate with camera composition, depth of field, and world space.
119
+
120
+ ### 8. Text Interaction Technical Requirements
121
+
122
+ DOM text used for in-game display should not be selectable by the mouse cursor, and text selection or copy menus should not appear on mobile long-press. Implement this with `user-select: none`, `-webkit-user-select: none`, and `-webkit-touch-callout: none`; use `user-select: text` on inputs, textareas, and editable elements to preserve normal text selection capability.
123
+
124
+ ### 9. Generate UI Concept Art
125
+
126
+ Before generating UI concept art or any other image, first tell the user the images, quantity, and visual direction proposed for this round, and obtain the user's explicit consent before calling the image-generation tool. Reconfirm when the generation scope changes.
127
+
128
+ Directly call the image-generation tools available in the current environment to generate concept art for each selected interface and show it to the developer. When generating:
129
+
130
+ - Use the real aspect ratio and game perspective of the target device;
131
+ - Let the image directly present the combined effect of game scene and UI;
132
+ - Reuse existing screenshots, concept art, art settings, and confirmed interfaces as visual references;
133
+ - Show the relationships among HUD anchors, menu hierarchy, button positions, touch regions, and safe areas;
134
+ - Keep typography direction, icon language, component shape, and color roles unified across different interfaces;
135
+ - Use text and values close to actual content length to establish credible layout relationships.
136
+
137
+ Adjust concept art based on developer feedback, and use confirmed images as visual references for later interfaces.
138
+
139
+ After each round of UI concept art is generated and shown, the current flow must stop immediately and wait for user feedback. Later adjustments, the next round of images, or concept art for other interfaces all start only after receiving explicit feedback or confirmation from the user.
140
+
141
+ ### 10. Check Concept Art
142
+
143
+ Check each concept image for game feel, HUD readability, information hierarchy, screen occlusion, text fit, safe areas, and touch regions. Confirm that stable space remains after dynamic values change, and ensure the same visual rules run through all interfaces.
144
+
145
+ ## Common Quality Issues
146
+
147
+ - HUD presents as a generic dashboard or statistics cards;
148
+ - Too many panel layers, with decoration area exceeding effective information;
149
+ - UI blocks the player, threats, objectives, pickups, or next action;
150
+ - Dynamic values change width and push other elements;
151
+ - Text, icons, or touch regions are too small in the target aspect ratio;
152
+ - Different interfaces use conflicting colors, materials, and component shapes;
153
+ - A portrait game shrinks the actual game stage into a phone shell or picture-in-picture form.
154
+
155
+ ## Output
156
+
157
+ Directly deliver UI concept art for different interfaces. Label each image with the interface name, and explain that interface's design goal and design rationale.
158
+
159
+ ```markdown
160
+ # Game UI Concept Art
161
+
162
+ ## <Interface Name>
163
+
164
+ <Directly show the generated concept art>
165
+
166
+ - **Design Goal**: <what the player needs to understand or complete in this interface>
167
+ - **Design Rationale**: <information hierarchy, visual focus, composition, operation regions, and art expression method>
168
+ ```
169
+
170
+ ## Reference Routing
171
+
172
+ - When designing or adapting UI for evomeme platform games, MUST first read and follow [`evomeme-ui`](../evomeme-ui/SKILL.md).
173
+ - When designing HUDs, menus, overlays, touch controls, and responsive layouts, read [`references/ui-patterns.md`](references/ui-patterns.md).
174
+ - When checking overall game feel and interface quality, read [`references/checklists/game-ui-quality.md`](references/checklists/game-ui-quality.md).
175
+ - When checking HUD information hierarchy and dynamic readability, read [`references/checklists/hud-readability.md`](references/checklists/hud-readability.md).
176
+ - When checking target aspect ratio, text boundaries, and layout stability, read [`references/checklists/responsive-ui-fit.md`](references/checklists/responsive-ui-fit.md).
177
+ - When checking touch regions and safe areas, read [`references/checklists/mobile-input.md`](references/checklists/mobile-input.md).
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Game UI"
3
+ short_description: "Design the information hierarchy, layout, and interaction of each game interface, and generate concept art after confirmation"
4
+ default_prompt: "Please use $game-ui to design the main interfaces for my game, first confirm the design plan with me, and stop to wait for my feedback after each round of interface concept art generation."
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: game-ui-generator
3
+ description: Generate reusable game UI image kits with evomeme_generate_ui_components, optionally remove background color and separate component PNGs. Use for button, panel, progress-bar, slider and slot skins, or configuring three-slice, nine-slice, tiling, filling and state changes on generated assets. Explains runtime assembly and component-specific generation prompts. Use game-ui for overall interface layouts and concept art.
4
+ ---
5
+
6
+ # Game UI Asset Kit Generation and Use
7
+
8
+ Use this skill to generate reusable game UI images. Decide how each image changes width, height, fill and state before generating its artwork. Use [Game UI Design](../game-ui/SKILL.md) for layouts, hierarchy and concept art. This skill supplies component art; an interface screenshot is not an interactive component.
9
+
10
+ ## What the Tool Actually Does
11
+
12
+ `evomeme_generate_ui_components` calls the same existing `executeUiComponents` task function as the canvas and reuses existing image functions: one AI component-sheet generation → local color key unless native transparency was requested → optional separation of foreground subjects into PNGs. It retains the generated sheet, optional transparent sheet and separated images under workspace `assets/`. The MCP does not call other MCPs.
13
+
14
+ Maintain three-slice, nine-slice and part-separation recommendations only in this skill and put relevant guidance into the user `prompt`. Do not modify image functions or built-in prompts for these recommendations. The tool retains its fixed 22-category list and has no `components` parameter; the user prompt does not replace that list. For exactly one button or a focused batch, use `evomeme_generate_game_image` through the [general image skill](../game-asset-image-generator/SKILL.md), still following this skill’s construction guidance. That general tool does not automatically color-key or split images.
15
+
16
+ **Automatic object splitting is not three-slice or nine-slice configuration.** Object splitting separates buttons and frames from a sheet. Three/nine-slice configuration specifies resizable regions within one component image. The tool does not measure these margins or generate widget code, interaction logic, semantic filenames or engine themes.
17
+
18
+ ## Terms That Affect Asset Construction
19
+
20
+ - **Skin / asset sheet**: A skin is artwork such as a button background or border; a sheet contains several skins and has no interaction logic. One requested entry can include multiple states or parts, so entry count does not equal file count.
21
+ - **Three-slice**: Divide a horizontal asset into left cap, center and right cap. Preserve decorative ends and change only the center width, suitable for fixed-height buttons of varying length. Vertical controls can use top/center/bottom. Regions can be sampled from one image without saving three physical files.
22
+ - **Nine-slice / nine-patch**: Four margins define nine regions, not equal thirds. Preserve corners, extend horizontal edges along X and vertical edges along Y, and resize the center in both directions. Useful for panels and multiline fields. [Phaser documentation](https://docs.phaser.io/phaser/concepts/gameobjects/nine-slice)
23
+ - **Stretch / tile**: Stretch resizes a region and suits plain fills or smooth gradients. Tiling repeats a pattern while preserving its texture scale; repeat boundaries must join. Crop the final partial repeat or use the engine's whole-tile fitting mode. Preserve end-cap proportions. [Godot stretching modes](https://docs.godotengine.org/en/stable/classes/class_styleboxtexture.html)
24
+ - **Slice margins / content padding**: Slice margins protect source borders from deformation. Content padding positions text and icons inside them. They may differ and must be measured from the actual output; numbers requested in a prompt are not verified slice metadata.
25
+ - **Fill / mask**: Show only the portion of a fill texture corresponding to a value, such as 40% health. A mask restricts visibility. Do not compress the entire health-bar frame to represent a percentage. Render changing text, values, selection and cooldown effects separately.
26
+ - **State variants**: Normal, hover, pressed, focus and disabled appearances should retain dimensions and alignment. Swap images, tint or animate according to state. Touch has no persistent hover; keyboard/controller focus is distinct from pressing. [Unity transitions](https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/script-SelectableTransition.html)
27
+
28
+ ## Buttons: Fixed Ends, Adaptable Center
29
+
30
+ Generate an intact button background with no slice guides, not three scattered pieces. After inspection, place two vertical cuts beyond the rounded ends and ornaments: `left cap | center | right cap`. Overlay text and icons as independent UI elements so they do not stretch with the background.
31
+
32
+ For example, a measured 240×64 button needs 24-pixel caps on each side, leaving a 192-pixel source center. At 360×64, keep both caps 24 pixels wide and allocate 312 pixels to the center. Stretch into that region, or repeat the center or a verified smaller texture unit and clip the excess. Do not stretch the whole image or divide it into three equal widths.
33
+
34
+ Minimum width must accommodate caps, text and content padding, with positive center width. Use nine-slice when height changes or text wraps. Fine ornamentation may not repeat seamlessly; a tiling prompt alone does not verify continuity.
35
+
36
+ Read [Component Construction and Prompt Catalog](references/component-patterns.md) for each asset type. Read [Slicing and Engine Integration](references/runtime-integration.md) when implementing Phaser, Unity, Godot or DOM controls. These are common engine-supported techniques; choose according to shape and renderer.
37
+
38
+ ## MCP Parameters and Reference Preparation
39
+
40
+ | Parameter | Meaning |
41
+ | --- | --- |
42
+ | `prompt` | Optional global theme, style, materials, palette, lighting and structural constraints. |
43
+ | `model` | Default `asset-max`; also `asset-pro` or `asset-lite`. Native transparency in this workflow requires Max. |
44
+ | `size` | Whole-sheet preset, default `1664x2496`, not each button's dimensions. Must fit the model; Lite does not support `1024x1024`. |
45
+ | `reference_ids` | Workspace style-reference IDs, default `[]`; up to 10 for Pro, 14 for Max/Lite in this workflow. |
46
+ | `transparent_background` | Default `false`: generate solid background then automatically color-key. `true` requests Max native transparency and skips color key. |
47
+ | `background_color` | Default `#ff00ff`, accepts `#RGB` or `#RRGGBB`. Used for solid background/keying; avoid subject colors. Not used as the background with native transparency. |
48
+ | `auto_split` | Default `true`: separate detected objects without equal-size padding. False returns the entire sheet without changing the fixed generation list. |
49
+ | `workspace_dir` | Absolute workspace root; specify it explicitly. Omission uses the MCP working directory. |
50
+
51
+ Copy attachments or external local references under the selected workspace's `assets/` without overwriting assets. Download an accessible URL first when necessary. Verify files before passing relative IDs such as `assets/ui/style.png`. Do not pass original absolute paths, URLs or Base64; reuse returned `asset_id` values.
52
+
53
+ Color key uses fixed strength 80, Oklab perceptual color distance, whole-image processing and soft edges, with despill disabled. Despill reduces residual key-color tint at subject edges. Similar subject colors may be removed; consider Max native transparency for translucent glass, glows and shadows, and inspect actual alpha. This workflow has no independent color-key disable or strength parameter.
54
+
55
+ ```json
56
+ {
57
+ "workspace_dir": "D:/my-game",
58
+ "model": "asset-max",
59
+ "size": "1664x2496",
60
+ "transparent_background": true,
61
+ "auto_split": true,
62
+ "prompt": "Hand-painted fantasy wooden game UI, consistent warm brown wood and fine gold borders, front orthographic view, wide gaps, no text, numbers or slice guides. Intact button backgrounds with matching state silhouettes and end caps, extensible centers without unique motifs; panel corners remain decorated and centers blank; separate progress-bar tracks, full-length fills and frames."
63
+ }
64
+ ```
65
+
66
+ Automatic splitting requires at least two independent subjects. Holes, detached ornaments or touching assets can cause incorrect splits or merges; image numbering does not establish component identity. For a detailed small batch, use the general image tool with explicit parts and a shared style reference. Do not promise an exact subset through the fixed UI kit tool.
67
+
68
+ ## Results and Handoff
69
+
70
+ Success returns text metadata, not image bytes or Base64. `operation_id` identifies a step and the generation-stage `job_id` identifies the remote generation. The existing task service manages task records; do not promise a separate `task_id` result field.
71
+
72
+ - `images`: Final files to use. With splitting, independent PNGs; otherwise one processed sheet. Top-level `asset_id` / `local_path` refer to its first entry, not a composition of all components.
73
+ - `generated`: Original sheet; `color_key`: Sheet after keying when applicable. Use `color_key`, otherwise `generated`, for the sheet before splitting.
74
+ - File entries contain `id` / `asset_id`, `local_path`, `mime_type` and applicable step/remote job IDs. Keyed and split files are PNG. Locally processed files do not inherit source cloud URLs and are not automatically uploaded; upload their final `local_path` when needed.
75
+ - `auto_split`, `background_color`, `transparent_background` and `color_key_strength` describe configuration. One call performs one AI generation; local keying and cropping add no AI requests.
76
+ - Existing results have no `sheet`, `outputs`, `split`, `component_count` or `ai_generation_count` fields. Use `images.length` for file count, not semantic category count. Crop boxes are stored in step records and are not three/nine-slice margins.
77
+
78
+ Inspect and name each component, recording its image ID, purpose, state, source dimensions, slice margins, stretch/tile mode, content padding and alignment origin. Create engine configuration from those measured values when required; this tool does not produce it. Do not treat requested proportions or shadow boundaries as exact measured slice data.
79
+
80
+ Check short, medium and long widths; also different heights for nine-slice, 0%/intermediate/100% for bars, and stable alignment during state swaps. Correct different crops or canvas sizes before sharing slice settings. Use integer scaling and appropriate filtering for pixel art. Preserve state alignment and border space during atlas packing, and inspect texture bleed. See the integration reference for details.
81
+
82
+ Read specific errors on failure. A failed split retains completed generated/keyed sheets; locate them in task records or the canvas before continuing, instead of paying to regenerate existing art. Native transparency and resizable construction are generation constraints that still require visual inspection.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "Game UI Asset Kit Generation and Use"
3
+ short_description: "Generate UI skins with slicing and runtime assembly guidance"
4
+ default_prompt: "Use $game-ui-generator to generate game UI images and explain their slicing, stretching or tiling, state changes and runtime assembly."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,65 @@
1
+ # UI component construction and generation prompts
2
+
3
+ This catalog explains what to generate and how to use it. The first 22 categories match the fixed list; detailed constructions are recommendations, not guarantees of every part. Put construction and style requirements in the user `prompt`, not in image functions or built-in prompts. There is no `components` parameter and the fixed list cannot be replaced. Use `evomeme_generate_game_image` for exact parts or additional categories, with prompts guided by this skill and subsequent processing as needed.
4
+
5
+ Three-slice, nine-slice, fill and state transitions are engine capabilities. The component assemblies below are art and implementation recommendations based on those capabilities, not a mandatory industry specification. See [runtime integration](runtime-integration.md) for engine differences and official sources. These prompts are editable examples; inspect and measure the generated results.
6
+
7
+ ## Shared prompt template
8
+
9
+ Example `prompt`:
10
+
11
+ > Create reusable game UI skin assets in [art style], using [materials] and [primary and accent colors], with consistent lighting, outlines and corner radii, in a front orthographic view. Show every independent part completely, with wide gaps and no overlaps or connected parts. Keep button end-cap and panel-corner decorations intact; make middle sections and centers suitable for resizing. Specify the repetition direction for repeating textures. Keep state variants identical in outer silhouette, size, lighting and alignment. No text, numbers, watermarks, labels, cutting guides, explanatory arrows or interface screenshots; leave dynamic icons and values to runtime. Follow the requested background mode.
12
+
13
+ “Completely” means an intact button or panel that will be sliced by the engine, not nine loose pieces drawn by AI. For assembled controls such as progress bars and sliders, explicitly request separate parts. Do not depend on precise atlas coordinates: this tool crops detected subjects, and file numbers or positions do not establish semantic identity.
14
+
15
+ Do not request both a solid magenta and a transparent background in the same global prompt. Use `transparent_background` and `background_color` to choose the mode. If artwork resembles the key color, choose another background color or Max native transparency.
16
+
17
+ ## The default 22 component categories
18
+
19
+ Each description can be included in the user `prompt`. The kit tool still appends its fixed list; the general image tool suits exact small batches. Requested dimensions and proportions are targets, not exact output guarantees.
20
+
21
+ | Component | Independent parts and runtime use | Example generation description |
22
+ | --- | --- | --- |
23
+ | 1. Window panel | Nine-slice an intact background; preserve corners, extend edges along their axes, and place runtime content in the center. Overlay unique emblems separately. | One intact window panel background, compact corner decorations, consistent border thickness, a clean center suitable for resizing in both directions, no text or icons, no unique center motif or nine-slice guides. |
24
+ | 2. Title bar | Use three-slice at a fixed height and dynamic title text. Keep emblems and collapse/close controls separate. | An intact horizontal title bar and a separate decorative emblem; fixed ends, an extensible center, blank title area, and an emblem disconnected from the bar. |
25
+ | 3. Standard button | Three-slice for fixed height; nine-slice if height also changes. Swap normal/hover/pressed/disabled skins; keep text separate and the pressed silhouette stable. | Normal, hover, pressed and disabled states of the same intact horizontal button background; identical end-cap positions and silhouette, no unique middle decoration, a center suitable for horizontal stretching, state changes through brightness and inner shadows, no text. |
26
+ | 4. Tab | Separate three-slice or nine-slice tab skins from the content panel; swap the selected skin without stretching labels. | Unselected and selected backgrounds for the same tab shape, identical dimensions and corners; selection changes edge emphasis and color only, blank extensible center, no attached full page. |
27
+ | 5. Text input | Three-slice or nine-slice for a single line; nine-slice for multiple lines. Render caret, content, placeholder and selection highlight in code. | Normal, focused and disabled intact input backgrounds, consistent borders and inner shadows, blank resizable center, no text, caret or selection region. |
28
+ | 6. Dropdown | Separate the resizable field, arrow icon, nine-slice popup background and row states; code opens the list and lays out labels. | A dropdown field background, separate down arrow, popup menu background, and normal/selected row skins, spaced apart; horizontally extensible field, nine-slice-ready menu, no menu text. |
29
+ | 7. Radio button | Fixed-aspect outer ring and selection dot, or aligned full unselected/selected images. Enforce group exclusivity in code; do not stretch circles along one axis. | Unselected and selected circular radio controls with identical dimensions, ring shape and position; a clearly centered selection dot, separated assets, no labels. |
30
+ | 8. Toggle | Three-slice track and fixed-size knob; move the knob and change track color at runtime. Whole-image swapping also works but does not provide knob motion. | Off and on toggle tracks plus one separate circular knob; intact horizontally extensible tracks, no knob drawn on the tracks, consistent lighting across all parts. |
31
+ | 9. Horizontal slider | Separate track, optional full-length fill and knob. Three-slice the track, keep the knob fixed, and map values to usable travel so it stays within the ends. | A horizontal empty slider track, full-length fill strip and separate knob, three disconnected parts, intact track ends, uniform extensible middle, no numbers or labeled tick marks. |
32
+ | 10. Vertical scrollbar | Separate top/middle/bottom track and variable-length thumb; thumb length represents the visible fraction and its position represents scroll progress. | An intact vertical scroll track and a separate vertical thumb, each with complete top/bottom caps and a vertically extensible middle, no fixed emblems, arrows or text, suitable for varying both lengths. |
33
+ | 11. Health bar | Separate empty trough, full health fill and frame. Crop/mask only the fill; keep the frame stable. A second fill can show delayed damage. | A horizontal health bar's empty trough, complete full-health fill and frame with a transparent center, three independent parts; fill fits the trough, fixed frame-end decorations, no health numbers or partial depletion. |
34
+ | 12. General progress bar | Separate background, full fill and frame; use horizontal/vertical crop or fill properties. Repeat units for segmented bars instead of elongating individual cells. | An empty horizontal loading trough, full-length fill and separate border, no percentages or text, smooth continuous fill, intact trough ends and a horizontally extensible middle. |
35
+ | 13. Skill hotbar | Optional resizable background plus repeated individual slots, with count and layout controlled in code. Do not stretch a baked row of slots. | A horizontally extensible hotbar background and one separate empty skill-slot frame, fixed square slot proportions, no embedded slot grid, skill icons, shortcut keys or numbers on the background. |
36
+ | 14. Skill icon slot | Separate frame, icon, selection overlay and lock icon; use runtime masks and text for cooldown. Do not bake a current cooldown angle into each icon. | Matching empty normal and selected skill-slot frames, a separate lock icon and a complete cooldown overlay for runtime clipping; transparent slot centers, disconnected parts, no skill artwork, countdown or fixed missing sector. |
37
+ | 15. Item slot | Separate slot frame and item icon; display selection/lock overlays independently and render quantities as text. Preserve decorated square-frame proportions. | Normal and selected empty item-slot frames plus a separate locked overlay, identical dimensions and silhouettes, transparent centers, no items, quantities or rarity text. |
38
+ | 16. Portrait frame | Layer portrait, clipping mask and decorative frame. Clip the portrait to the interior and preserve the frame's aspect ratio. | One intact circular portrait frame with a transparent center, clear inner/outer contours and space around the outside; no character, text, portrait content or detached fragments. |
39
+ | 17. Currency/resource display | Three-slice or nine-slice background plus a fixed icon and dynamic number. Keep the icon out of the extensible middle. | One horizontally extensible resource-count background and one separate coin icon, blank middle, no numbers or text, icon and background placed apart. |
40
+ | 18. Dialogue box | Nine-slice body with separate tail, portrait, name and text. Reposition the tail to point at the speaker; do not stretch it with the body. | An intact dialogue-bubble body and one separate short tail; nine-slice-ready body, matching tail material and border, disconnected parts, no character, speaker name or dialogue text. |
41
+ | 19. Character nameplate | Three-slice background adapts to names; keep badges/faction icons independent and lay out names and titles as text. | An intact horizontal character-nameplate background and a separate faction badge, compact end caps, clean extensible center, blank name area, no badge attached to the middle. |
42
+ | 20. Dialogue option button | Three-slice for one line, nine-slice for multiple lines; handle selected skin, text, ordinal and quest icon separately. | Normal, focused and disabled dialogue-option backgrounds, suitable for nine-slice and multiline text, blank interiors, matching corner shapes and silhouettes, no option text or ordinals. |
43
+ | 21. Confirmation modal | Assemble reusable nine-slice panel, title, buttons and separate close icon in code; draw the screen dimmer separately. | An intact modal panel background, primary and secondary button backgrounds with matching outlines, and a separate close icon, all placed apart; no assembled modal screenshot, title, body text or screen dimmer. |
44
+ | 22. Notification banner | Three-slice or nine-slice background plus a fixed type icon and dynamic text. Size to content and animate entrance/exit in code. | A horizontally extensible notification-banner background and a separate notification icon, intact end decorations, blank middle, no text, attached icon or motion trail. |
45
+
46
+ Sliders and scrollbars control the track and moving parts independently; scrollbar thumbs also resize to represent visible content. These constructions correspond to runtime parts in [Unity Slider](https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/script-Slider.html) and [Scrollbar](https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/script-Scrollbar.html).
47
+
48
+ ## Optional additional components (outside the default 22)
49
+
50
+ | Component | Runtime use | Example generation description |
51
+ | --- | --- | --- |
52
+ | Checkbox | Fixed-size box plus checked/indeterminate marks, with independent toggle logic rather than radio-group behavior. | A fixed-size empty checkbox frame, separate checkmark and separate short dash, with consistent outlines and centered alignment, no labels. |
53
+ | Tooltip | Nine-slice body plus separate tail; code changes direction, position and text layout near screen edges. | A compact tooltip background and four separate short tails pointing up, down, left and right; nine-slice-ready body, matching materials, no text. |
54
+ | Circular progress/cooldown | Separate complete base ring, complete fill ring and center icon; control a sector mask in code rather than generating fixed 25%/50% screenshots. | An empty progress base ring and a complete continuous fill ring, matching dimensions, center and thickness, transparent centers, no missing sectors, percentages or numbers. |
55
+ | Divider/decorative ribbon | Fixed ends with a stretched middle or repeated motif; the same construction works vertically. | An intact horizontal decorative divider, fixed left/right caps, a middle pattern suitable for seamless horizontal repetition, consistent texture scale, no text or center emblem. |
56
+ | List row/tree node | Nine-slice row backgrounds plus independent disclosure/status icons; code controls indentation and text. | Normal, hover and selected list-row backgrounds plus a separate disclosure arrow, matching dimensions, nine-slice-ready blank centers, no data text. |
57
+
58
+ Generate complete fill images for both rings and straight bars, then select the visible range at runtime. For example, [Godot TextureProgressBar](https://docs.godotengine.org/en/stable/classes/class_textureprogressbar.html) provides background, progress and overlay textures with multiple fill directions.
59
+
60
+ ## Batching and handoff
61
+
62
+ 1. Use the UI kit tool for the base collection; use the general image tool for an exact family such as four button states or three health-bar parts, following this skill’s prompts. The kit tool’s `auto_split=false` only disables splitting.
63
+ 2. Put shared style and part requirements in `prompt`. Reference an approved sheet in later batches for consistency. The fixed list is a starting point, not a guarantee of an entire project’s complete UI system in one request.
64
+ 3. Inspect connected parts, splitting and state dimensions. Normalize state canvases and alignment before measuring slice margins; retain originals for recropping.
65
+ 4. Deliver the images together with measured usage instructions: component identity, part relationships, slice margins, resize axes, repetition mode, state mappings, fill direction and content padding. Never treat example numbers as measurements of generated images.
@@ -0,0 +1,45 @@
1
+ # Slicing and engine integration
2
+
3
+ This page explains how to use generated images. Measure configuration after inspecting the actual images; generation does not produce it automatically. Keep construction guidance and prompts in the skill without changing image functions. MCP and canvas continue calling the same existing task function.
4
+
5
+ ## Determine slices from the source
6
+
7
+ Separate components first, then measure each component's left, right, top and bottom margins. Sheet spacing is not border thickness. Do not divide into equal thirds or nine equal cells. Margins must fully contain corners, caps, outlines and decorations that need to retain their shape.
8
+
9
+ | Region | Runtime behavior |
10
+ | --- | --- |
11
+ | Horizontal three-slice ends | Preserve dimensions; use consistent overall scaling when changing the entire control's visual scale. |
12
+ | Horizontal three-slice middle | Stretch to target width minus both caps, or repeat texture within that region and clip the remainder. |
13
+ | Nine-slice corners | Preserve shape and dimensions. |
14
+ | Nine-slice top/bottom and left/right edges | Extend horizontally and vertically respectively. |
15
+ | Nine-slice center | Adapt to target width and height, or omit the center when only a frame is needed. |
16
+
17
+ For a measured 240×64 button with 24-pixel side margins at target width 360, the middle is `360−24−24=312` wide. These numbers are examples, not measurements of generated art. Minimum dimensions must also fit text and content padding; content padding controls layout separately from slice margins.
18
+
19
+ Stretch smooth backgrounds; tile only patterns whose continuity has been checked. Unique symbols or substantial lighting changes usually do not repeat well. Use nine-slice when height changes instead of vertically stretching a fixed-height three-slice button.
20
+
21
+ ## Engine mappings
22
+
23
+ | Environment | Common integration and limitations |
24
+ | --- | --- |
25
+ | Phaser | `NineSlice` supports three-slice and nine-slice; horizontal three-slice uses left/right margins with zero top/bottom margins. Resize through `setSize`. Stretch support does not imply arbitrary center tiling; use fixed caps and a clipped `TileSprite` when repetition is needed, and check renderer support.[Official guide](https://docs.phaser.io/phaser/concepts/gameobjects/nine-slice) |
26
+ | Unity uGUI | Configure Sprite borders; use `Image.Type.Sliced` for stretching or `Tiled` for repetition, resizing through RectTransform. Use a separate `Image` with `Filled`, or a mask, for progress. One Image cannot simultaneously have both Sliced and Filled types.[Image types](https://docs.unity3d.com/Packages/com.unity.ugui@2.0/api/UnityEngine.UI.Image.Type.html) |
27
+ | Godot | Use `StyleBoxTexture` in control themes or `NinePatchRect` for direct sliced display. Texture margins specify slices; content margins govern child layout. Choose stretching, tiling or tile-fit as needed.[StyleBoxTexture](https://docs.godotengine.org/en/stable/classes/class_styleboxtexture.html), [NinePatchRect](https://docs.godotengine.org/en/stable/classes/class_ninepatchrect.html) |
28
+ | HTML/CSS | `border-image-slice` divides the source and `border-image-width` sets displayed borders; add `fill` to draw the center. `border-image-repeat` provides `stretch`, `repeat` and `round`; `space` leaves gaps and is unsuitable for continuous borders.[Slicing](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/border-image-slice), [repetition](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/border-image-repeat) |
29
+
30
+ These mappings are supported by official documentation. Confirm API and renderer capabilities against the project's version; engines do not share identical configuration.
31
+
32
+ ## Drive assembled controls
33
+
34
+ - **Progress/health**: Keep trough and frame dimensions stable; update only the visible fraction of a full-length fill image. Clamp the fraction to 0–1 and render text separately. Use a sector mask over a complete source ring for radial cooldown.[Godot TextureProgressBar](https://docs.godotengine.org/en/stable/classes/class_textureprogressbar.html)
35
+ - **Slider**: Adapt track length to layout while preserving knob size. Subtract end padding and knob occupancy from usable travel, then map values to positions within it.[Unity Slider](https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/script-Slider.html)
36
+ - **Scrollbar**: Size the thumb according to visible content divided by total content, with an operable minimum length; move it within the remaining travel.[Unity Scrollbar](https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/script-Scrollbar.html)
37
+ - **Button states**: Swap equally sized, aligned skins or use tint/animation. Handle keyboard focus, disabled and pressed states separately. Define hit areas in controls; transparent artwork does not create them automatically.[Unity transitions](https://docs.unity3d.com/Packages/com.unity.ugui@2.0/manual/script-SelectableTransition.html)
38
+
39
+ ## Handoff and inspection
40
+
41
+ Record each image's path, role, state, source dimensions, slice margins, content padding, stretch/tile mode and alignment relative to other parts. A specification such as “240×64 button, left/right 24, top/bottom 0, horizontal three-slice stretch” must come from measurements, not prompts or examples.
42
+
43
+ Automatic splitting does not pad to equal dimensions. Normalize state canvases and alignment before sharing slice settings. When packing atlases, preserve trimming offsets, margins and separation, and check neighboring texture bleed; slice settings cannot continue referring to pre-crop coordinates. Check integer scaling and filtering for pixel art before treating blurred scaling as an art defect.
44
+
45
+ Inspect short, medium and long widths and multiple heights; bars at 0%, intermediate and 100%; state transitions for jumps; and text with long strings and different languages. Frames, portraits, icons, tails, knobs and numeric labels should each follow the catalog's resizing rules.