@funpixel/tools 0.1.0 → 0.1.1

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 (784) hide show
  1. package/bench/handlers/bake_emissive.py +2 -2
  2. package/bench/handlers/decimate.py +2 -2
  3. package/bench/handlers/fracture.py +1 -1
  4. package/bench/handlers/normalize_transform.py +3 -3
  5. package/bench/handlers/render_views.py +2 -2
  6. package/bench/handlers/views.py +6 -6
  7. package/dist/cli.js +8 -9
  8. package/dist/commands/feedback.js +5 -5
  9. package/dist/commands/init.js +1 -1
  10. package/dist/direct/read.js +1 -1
  11. package/dist/doctor/unity-checks.js +5 -5
  12. package/dist/doctor/unity-history.js +17 -33
  13. package/dist/feedback/ab.js +0 -40
  14. package/dist/gen/unity.js +3 -3
  15. package/dist/mcp/server.js +2 -1
  16. package/dist/pipeline/pipeline.js +6 -6
  17. package/dist/playtest/moments.js +1 -1
  18. package/dist/playtest/report.js +1 -1
  19. package/dist/production/mirror.js +2 -2
  20. package/dist/sim/curve.js +3 -3
  21. package/dist/spec/scaffold.js +1 -1
  22. package/dist/studio/pitch.js +1 -1
  23. package/dist/unity/probe/install.js +1 -1
  24. package/dist/vendor/verify/src/page/actors.js +2 -2
  25. package/dist/vendor/verify/src/page/capture_view.js +2 -2
  26. package/dist/vendor/verify/src/page/dressing.js +1 -1
  27. package/dist/vendor/verify/src/page/frame_honesty.js +1 -1
  28. package/dist/vendor/verify/src/page/front_door.js +2 -2
  29. package/dist/vendor/verify/src/page/grounding.js +3 -3
  30. package/dist/vendor/verify/src/page/hud.js +3 -3
  31. package/dist/vendor/verify/src/page/layout.js +5 -5
  32. package/dist/vendor/verify/src/page/life_anim.js +6 -6
  33. package/dist/vendor/verify/src/page/mechanic_check.js +1 -1
  34. package/dist/vendor/verify/src/page/phone_check.js +2 -2
  35. package/dist/vendor/verify/src/page/recorder.js +2 -2
  36. package/dist/vendor/verify/src/page/surfaces.js +2 -2
  37. package/dist/vendor/verify/src/page/world_actors.js +3 -3
  38. package/package.json +2 -2
  39. package/plugins/README.md +16 -0
  40. package/plugins/claude/README.md +2 -3
  41. package/plugins/claude/agents/art-director.md +2 -2
  42. package/plugins/claude/commands/playtest.md +2 -2
  43. package/plugins/claude/hooks/brief.md +1 -1
  44. package/plugins/claude/hooks/guidance.json +1 -1
  45. package/plugins/claude/hooks/vendor/pipeline/pipeline.mjs +6 -6
  46. package/plugins/claude/hooks/vendor/studio/pitch.mjs +1 -1
  47. package/plugins/claude/skills/3d/references/bake-off.md +3 -3
  48. package/plugins/claude/skills/3d/references/characters.md +1 -1
  49. package/plugins/claude/skills/3d/references/hero-route.md +5 -5
  50. package/plugins/claude/skills/3d/references/level-spec.md +1 -1
  51. package/plugins/claude/skills/3d/references/levels.md +3 -3
  52. package/plugins/claude/skills/3d/references/light-and-places.md +3 -3
  53. package/plugins/claude/skills/3d/references/painted-target.md +7 -7
  54. package/plugins/claude/skills/3d/references/three-loading.md +4 -4
  55. package/plugins/claude/skills/3d/references/unity.md +13 -13
  56. package/plugins/claude/skills/art/references/animation.md +1 -1
  57. package/plugins/claude/skills/art/references/cast.md +3 -3
  58. package/plugins/claude/skills/art/references/effects.md +2 -2
  59. package/plugins/claude/skills/art/references/frames.md +6 -6
  60. package/plugins/claude/skills/art/references/judging-frames.md +8 -8
  61. package/plugins/claude/skills/art/references/look.md +4 -4
  62. package/plugins/claude/skills/art/references/pipeline.md +2 -2
  63. package/plugins/claude/skills/art/references/prompts.md +4 -4
  64. package/plugins/claude/skills/art/references/ui.md +15 -15
  65. package/plugins/claude/skills/art/references/unity.md +14 -14
  66. package/plugins/claude/skills/audio/references/adaptive-music.md +4 -4
  67. package/plugins/claude/skills/audio/references/engine.md +2 -2
  68. package/plugins/claude/skills/audio/references/measure.md +1 -1
  69. package/plugins/claude/skills/audio/references/unity.md +20 -19
  70. package/plugins/claude/skills/game-feel/SKILL.md +4 -4
  71. package/plugins/claude/skills/game-feel/references/contact.md +6 -6
  72. package/plugins/claude/skills/game-feel/references/unity.md +18 -23
  73. package/plugins/claude/skills/game-logic/SKILL.md +3 -3
  74. package/plugins/claude/skills/game-logic/references/balance.md +2 -2
  75. package/plugins/claude/skills/game-logic/references/depth.md +2 -2
  76. package/plugins/claude/skills/game-logic/references/escalation.md +5 -5
  77. package/plugins/claude/skills/game-logic/references/probes.md +10 -10
  78. package/plugins/claude/skills/game-logic/references/unity.md +28 -28
  79. package/plugins/claude/skills/game-spine/SKILL.md +1 -1
  80. package/plugins/claude/skills/game-spine/references/performance.md +2 -2
  81. package/plugins/claude/skills/game-spine/references/replay.md +11 -11
  82. package/plugins/claude/skills/game-spine/references/room-api.md +1 -1
  83. package/plugins/claude/skills/game-spine/references/sdk.md +1 -1
  84. package/plugins/claude/skills/gdd/SKILL.md +2 -2
  85. package/plugins/claude/skills/gdd/references/as-built.md +2 -2
  86. package/plugins/claude/skills/gdd/references/design-measures.md +2 -2
  87. package/plugins/claude/skills/gdd/references/design-note.md +1 -1
  88. package/plugins/claude/skills/gdd/references/first-look.md +1 -1
  89. package/plugins/claude/skills/gdd/references/floors.md +2 -2
  90. package/plugins/claude/skills/gdd/references/gameplay-contract.md +1 -1
  91. package/plugins/claude/skills/gdd/references/genre-puzzle.md +4 -4
  92. package/plugins/claude/skills/gdd/references/genre-racing.md +2 -2
  93. package/plugins/claude/skills/gdd/references/genre-rpg.md +2 -2
  94. package/plugins/claude/skills/gdd/references/genre-shooter.md +2 -2
  95. package/plugins/claude/skills/gdd/references/genre-survival.md +2 -2
  96. package/plugins/claude/skills/gdd/references/invent-first.md +3 -3
  97. package/plugins/claude/skills/gdd/references/level-and-fun.md +11 -11
  98. package/plugins/claude/skills/gdd/references/pages.md +2 -5
  99. package/plugins/claude/skills/gdd/references/plan-at-size.md +5 -5
  100. package/plugins/claude/skills/gdd/references/production-tiers.md +11 -11
  101. package/plugins/claude/skills/gdd/references/sections.md +7 -7
  102. package/plugins/claude/skills/gdd/references/spec-folder.md +3 -3
  103. package/plugins/claude/skills/gdd/references/the-path.md +3 -4
  104. package/plugins/claude/skills/gdd/references/world-and-identity.md +4 -4
  105. package/plugins/claude/skills/gdd/references/worth.md +4 -4
  106. package/plugins/claude/skills/mobile-ui/SKILL.md +3 -3
  107. package/plugins/claude/skills/mobile-ui/references/hud-and-title.md +3 -3
  108. package/plugins/claude/skills/mobile-ui/references/phone-check.md +1 -1
  109. package/plugins/claude/skills/mobile-ui/references/recipes.md +1 -1
  110. package/plugins/claude/skills/mobile-ui/references/restyle-ui.md +11 -11
  111. package/plugins/claude/skills/mobile-ui/references/unity.md +23 -23
  112. package/plugins/claude/skills/publishing/references/compose.md +1 -1
  113. package/plugins/claude/skills/publishing/references/server-build.md +1 -1
  114. package/plugins/claude/skills/store/SKILL.md +3 -3
  115. package/plugins/claude/skills/store/references/app-store.md +1 -1
  116. package/plugins/claude/skills/store/references/google-play.md +2 -2
  117. package/plugins/claude/skills/store/references/ios-release.md +19 -20
  118. package/plugins/claude/skills/store/references/money.md +2 -2
  119. package/plugins/claude/skills/store/references/purchases-and-review.md +18 -18
  120. package/plugins/claude/skills/store/references/readiness-page.md +1 -1
  121. package/plugins/claude/skills/store/references/readiness.md +3 -3
  122. package/plugins/claude/skills/store/references/unity-store.md +9 -12
  123. package/plugins/claude/skills/unity-game/SKILL.md +28 -35
  124. package/plugins/claude/skills/unity-game/references/agent-ops.md +9 -9
  125. package/plugins/claude/skills/unity-game/references/fixes.md +21 -21
  126. package/plugins/claude/skills/unity-game/references/from-a-web-game.md +17 -17
  127. package/plugins/claude/skills/unity-game/references/handing-off.md +4 -4
  128. package/plugins/claude/skills/unity-game/references/performance.md +10 -14
  129. package/plugins/claude/skills/unity-game/references/probe.md +4 -4
  130. package/plugins/claude/skills/unity-game/references/shared-mac.md +1 -1
  131. package/plugins/claude/skills/unity-game/references/traps.md +13 -14
  132. package/plugins/claude/skills/verifying/references/bar.md +1 -1
  133. package/plugins/claude/skills/verifying/references/fidelity.md +11 -11
  134. package/plugins/claude/skills/verifying/references/mobile-qa.md +10 -10
  135. package/plugins/claude/skills/verifying/references/playtest.md +14 -14
  136. package/plugins/claude/skills/verifying/references/unity.md +11 -11
  137. package/plugins/claude/skills/world-and-story/SKILL.md +1 -1
  138. package/plugins/claude/skills/world-and-story/references/atmosphere.md +4 -4
  139. package/plugins/claude/skills/world-and-story/references/living-world.md +2 -2
  140. package/plugins/claude/skills/world-and-story/references/opening-and-chapters.md +1 -1
  141. package/plugins/claude/skills/world-and-story/references/story-at-size.md +2 -2
  142. package/plugins/claude/skills/world-and-story/references/voice.md +1 -1
  143. package/plugins/codex/AGENTS.md +1 -1
  144. package/plugins/codex/README.md +1 -1
  145. package/plugins/codex/hooks/brief.md +1 -1
  146. package/plugins/codex/hooks/guidance.json +1 -1
  147. package/plugins/codex/hooks/host.md +1 -1
  148. package/plugins/codex/hooks/vendor/pipeline/pipeline.mjs +6 -6
  149. package/plugins/codex/hooks/vendor/studio/pitch.mjs +1 -1
  150. package/plugins/codex/skills/fp-art-director/SKILL.md +2 -2
  151. package/plugins/codex/skills/fp-art-director/references/codex.md +1 -1
  152. package/plugins/codex/skills/fp-audio-director/references/codex.md +1 -1
  153. package/plugins/codex/skills/fp-critic/references/codex.md +1 -1
  154. package/plugins/codex/skills/fp-lane/references/codex.md +1 -1
  155. package/plugins/codex/skills/fp-level-designer/references/codex.md +1 -1
  156. package/plugins/codex/skills/fp-mobile-qa-seat/references/codex.md +1 -1
  157. package/plugins/codex/skills/fp-player/references/codex.md +1 -1
  158. package/plugins/codex/skills/fp-playtest/SKILL.md +2 -2
  159. package/plugins/codex/skills/fp-qa-lead/references/codex.md +1 -1
  160. package/plugins/codex/skills/fp-studio/SKILL.md +1 -1
  161. package/plugins/codex/skills/funpixel-3d/references/bake-off.md +3 -3
  162. package/plugins/codex/skills/funpixel-3d/references/characters.md +1 -1
  163. package/plugins/codex/skills/funpixel-3d/references/hero-route.md +5 -5
  164. package/plugins/codex/skills/funpixel-3d/references/level-spec.md +1 -1
  165. package/plugins/codex/skills/funpixel-3d/references/levels.md +3 -3
  166. package/plugins/codex/skills/funpixel-3d/references/light-and-places.md +3 -3
  167. package/plugins/codex/skills/funpixel-3d/references/painted-target.md +7 -7
  168. package/plugins/codex/skills/funpixel-3d/references/three-loading.md +4 -4
  169. package/plugins/codex/skills/funpixel-3d/references/unity.md +13 -13
  170. package/plugins/codex/skills/funpixel-art/references/animation.md +1 -1
  171. package/plugins/codex/skills/funpixel-art/references/cast.md +3 -3
  172. package/plugins/codex/skills/funpixel-art/references/effects.md +2 -2
  173. package/plugins/codex/skills/funpixel-art/references/frames.md +6 -6
  174. package/plugins/codex/skills/funpixel-art/references/judging-frames.md +8 -8
  175. package/plugins/codex/skills/funpixel-art/references/look.md +4 -4
  176. package/plugins/codex/skills/funpixel-art/references/pipeline.md +2 -2
  177. package/plugins/codex/skills/funpixel-art/references/prompts.md +4 -4
  178. package/plugins/codex/skills/funpixel-art/references/ui.md +15 -15
  179. package/plugins/codex/skills/funpixel-art/references/unity.md +14 -14
  180. package/plugins/codex/skills/funpixel-audio/references/adaptive-music.md +4 -4
  181. package/plugins/codex/skills/funpixel-audio/references/engine.md +2 -2
  182. package/plugins/codex/skills/funpixel-audio/references/measure.md +1 -1
  183. package/plugins/codex/skills/funpixel-audio/references/unity.md +20 -19
  184. package/plugins/codex/skills/funpixel-game-feel/SKILL.md +4 -4
  185. package/plugins/codex/skills/funpixel-game-feel/references/contact.md +6 -6
  186. package/plugins/codex/skills/funpixel-game-feel/references/unity.md +18 -23
  187. package/plugins/codex/skills/funpixel-game-logic/SKILL.md +3 -3
  188. package/plugins/codex/skills/funpixel-game-logic/references/balance.md +2 -2
  189. package/plugins/codex/skills/funpixel-game-logic/references/depth.md +2 -2
  190. package/plugins/codex/skills/funpixel-game-logic/references/escalation.md +5 -5
  191. package/plugins/codex/skills/funpixel-game-logic/references/probes.md +10 -10
  192. package/plugins/codex/skills/funpixel-game-logic/references/unity.md +28 -28
  193. package/plugins/codex/skills/funpixel-game-spine/SKILL.md +1 -1
  194. package/plugins/codex/skills/funpixel-game-spine/references/performance.md +2 -2
  195. package/plugins/codex/skills/funpixel-game-spine/references/replay.md +11 -11
  196. package/plugins/codex/skills/funpixel-game-spine/references/room-api.md +1 -1
  197. package/plugins/codex/skills/funpixel-game-spine/references/sdk.md +1 -1
  198. package/plugins/codex/skills/funpixel-gdd/SKILL.md +2 -2
  199. package/plugins/codex/skills/funpixel-gdd/references/as-built.md +2 -2
  200. package/plugins/codex/skills/funpixel-gdd/references/design-measures.md +2 -2
  201. package/plugins/codex/skills/funpixel-gdd/references/design-note.md +1 -1
  202. package/plugins/codex/skills/funpixel-gdd/references/first-look.md +1 -1
  203. package/plugins/codex/skills/funpixel-gdd/references/floors.md +2 -2
  204. package/plugins/codex/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  205. package/plugins/codex/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  206. package/plugins/codex/skills/funpixel-gdd/references/genre-racing.md +2 -2
  207. package/plugins/codex/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  208. package/plugins/codex/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  209. package/plugins/codex/skills/funpixel-gdd/references/genre-survival.md +2 -2
  210. package/plugins/codex/skills/funpixel-gdd/references/invent-first.md +3 -3
  211. package/plugins/codex/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  212. package/plugins/codex/skills/funpixel-gdd/references/pages.md +2 -5
  213. package/plugins/codex/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  214. package/plugins/codex/skills/funpixel-gdd/references/production-tiers.md +11 -11
  215. package/plugins/codex/skills/funpixel-gdd/references/sections.md +7 -7
  216. package/plugins/codex/skills/funpixel-gdd/references/spec-folder.md +3 -3
  217. package/plugins/codex/skills/funpixel-gdd/references/the-path.md +3 -4
  218. package/plugins/codex/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  219. package/plugins/codex/skills/funpixel-gdd/references/worth.md +4 -4
  220. package/plugins/codex/skills/funpixel-mobile-ui/SKILL.md +3 -3
  221. package/plugins/codex/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  222. package/plugins/codex/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  223. package/plugins/codex/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  224. package/plugins/codex/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  225. package/plugins/codex/skills/funpixel-mobile-ui/references/unity.md +23 -23
  226. package/plugins/codex/skills/funpixel-publish/references/compose.md +1 -1
  227. package/plugins/codex/skills/funpixel-publish/references/server-build.md +1 -1
  228. package/plugins/codex/skills/funpixel-store/SKILL.md +3 -3
  229. package/plugins/codex/skills/funpixel-store/references/app-store.md +1 -1
  230. package/plugins/codex/skills/funpixel-store/references/google-play.md +2 -2
  231. package/plugins/codex/skills/funpixel-store/references/ios-release.md +19 -20
  232. package/plugins/codex/skills/funpixel-store/references/money.md +2 -2
  233. package/plugins/codex/skills/funpixel-store/references/purchases-and-review.md +18 -18
  234. package/plugins/codex/skills/funpixel-store/references/readiness-page.md +1 -1
  235. package/plugins/codex/skills/funpixel-store/references/readiness.md +3 -3
  236. package/plugins/codex/skills/funpixel-store/references/unity-store.md +9 -12
  237. package/plugins/codex/skills/funpixel-unity-game/SKILL.md +28 -35
  238. package/plugins/codex/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  239. package/plugins/codex/skills/funpixel-unity-game/references/fixes.md +21 -21
  240. package/plugins/codex/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  241. package/plugins/codex/skills/funpixel-unity-game/references/handing-off.md +4 -4
  242. package/plugins/codex/skills/funpixel-unity-game/references/performance.md +10 -14
  243. package/plugins/codex/skills/funpixel-unity-game/references/probe.md +4 -4
  244. package/plugins/codex/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  245. package/plugins/codex/skills/funpixel-unity-game/references/traps.md +13 -14
  246. package/plugins/codex/skills/funpixel-verify/references/bar.md +1 -1
  247. package/plugins/codex/skills/funpixel-verify/references/fidelity.md +11 -11
  248. package/plugins/codex/skills/funpixel-verify/references/mobile-qa.md +10 -10
  249. package/plugins/codex/skills/funpixel-verify/references/playtest.md +14 -14
  250. package/plugins/codex/skills/funpixel-verify/references/unity.md +11 -11
  251. package/plugins/codex/skills/funpixel-world-and-story/SKILL.md +1 -1
  252. package/plugins/codex/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  253. package/plugins/codex/skills/funpixel-world-and-story/references/living-world.md +2 -2
  254. package/plugins/codex/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  255. package/plugins/codex/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  256. package/plugins/codex/skills/funpixel-world-and-story/references/voice.md +1 -1
  257. package/plugins/cursor/README.md +1 -1
  258. package/plugins/cursor/agents/art-director.md +2 -2
  259. package/plugins/cursor/commands/playtest.md +2 -2
  260. package/plugins/cursor/hooks/brief.md +1 -1
  261. package/plugins/cursor/hooks/guidance.json +1 -1
  262. package/plugins/cursor/hooks/vendor/pipeline/pipeline.mjs +6 -6
  263. package/plugins/cursor/hooks/vendor/studio/pitch.mjs +1 -1
  264. package/plugins/cursor/rules/funpixel-brief.mdc +1 -1
  265. package/plugins/cursor/skills/funpixel-3d/references/bake-off.md +3 -3
  266. package/plugins/cursor/skills/funpixel-3d/references/characters.md +1 -1
  267. package/plugins/cursor/skills/funpixel-3d/references/hero-route.md +5 -5
  268. package/plugins/cursor/skills/funpixel-3d/references/level-spec.md +1 -1
  269. package/plugins/cursor/skills/funpixel-3d/references/levels.md +3 -3
  270. package/plugins/cursor/skills/funpixel-3d/references/light-and-places.md +3 -3
  271. package/plugins/cursor/skills/funpixel-3d/references/painted-target.md +7 -7
  272. package/plugins/cursor/skills/funpixel-3d/references/three-loading.md +4 -4
  273. package/plugins/cursor/skills/funpixel-3d/references/unity.md +13 -13
  274. package/plugins/cursor/skills/funpixel-art/references/animation.md +1 -1
  275. package/plugins/cursor/skills/funpixel-art/references/cast.md +3 -3
  276. package/plugins/cursor/skills/funpixel-art/references/effects.md +2 -2
  277. package/plugins/cursor/skills/funpixel-art/references/frames.md +6 -6
  278. package/plugins/cursor/skills/funpixel-art/references/judging-frames.md +8 -8
  279. package/plugins/cursor/skills/funpixel-art/references/look.md +4 -4
  280. package/plugins/cursor/skills/funpixel-art/references/pipeline.md +2 -2
  281. package/plugins/cursor/skills/funpixel-art/references/prompts.md +4 -4
  282. package/plugins/cursor/skills/funpixel-art/references/ui.md +15 -15
  283. package/plugins/cursor/skills/funpixel-art/references/unity.md +14 -14
  284. package/plugins/cursor/skills/funpixel-audio/references/adaptive-music.md +4 -4
  285. package/plugins/cursor/skills/funpixel-audio/references/engine.md +2 -2
  286. package/plugins/cursor/skills/funpixel-audio/references/measure.md +1 -1
  287. package/plugins/cursor/skills/funpixel-audio/references/unity.md +20 -19
  288. package/plugins/cursor/skills/funpixel-game-feel/SKILL.md +4 -4
  289. package/plugins/cursor/skills/funpixel-game-feel/references/contact.md +6 -6
  290. package/plugins/cursor/skills/funpixel-game-feel/references/unity.md +18 -23
  291. package/plugins/cursor/skills/funpixel-game-logic/SKILL.md +3 -3
  292. package/plugins/cursor/skills/funpixel-game-logic/references/balance.md +2 -2
  293. package/plugins/cursor/skills/funpixel-game-logic/references/depth.md +2 -2
  294. package/plugins/cursor/skills/funpixel-game-logic/references/escalation.md +5 -5
  295. package/plugins/cursor/skills/funpixel-game-logic/references/probes.md +10 -10
  296. package/plugins/cursor/skills/funpixel-game-logic/references/unity.md +28 -28
  297. package/plugins/cursor/skills/funpixel-game-spine/SKILL.md +1 -1
  298. package/plugins/cursor/skills/funpixel-game-spine/references/performance.md +2 -2
  299. package/plugins/cursor/skills/funpixel-game-spine/references/replay.md +11 -11
  300. package/plugins/cursor/skills/funpixel-game-spine/references/room-api.md +1 -1
  301. package/plugins/cursor/skills/funpixel-game-spine/references/sdk.md +1 -1
  302. package/plugins/cursor/skills/funpixel-gdd/SKILL.md +2 -2
  303. package/plugins/cursor/skills/funpixel-gdd/references/as-built.md +2 -2
  304. package/plugins/cursor/skills/funpixel-gdd/references/design-measures.md +2 -2
  305. package/plugins/cursor/skills/funpixel-gdd/references/design-note.md +1 -1
  306. package/plugins/cursor/skills/funpixel-gdd/references/first-look.md +1 -1
  307. package/plugins/cursor/skills/funpixel-gdd/references/floors.md +2 -2
  308. package/plugins/cursor/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  309. package/plugins/cursor/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  310. package/plugins/cursor/skills/funpixel-gdd/references/genre-racing.md +2 -2
  311. package/plugins/cursor/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  312. package/plugins/cursor/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  313. package/plugins/cursor/skills/funpixel-gdd/references/genre-survival.md +2 -2
  314. package/plugins/cursor/skills/funpixel-gdd/references/invent-first.md +3 -3
  315. package/plugins/cursor/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  316. package/plugins/cursor/skills/funpixel-gdd/references/pages.md +2 -5
  317. package/plugins/cursor/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  318. package/plugins/cursor/skills/funpixel-gdd/references/production-tiers.md +11 -11
  319. package/plugins/cursor/skills/funpixel-gdd/references/sections.md +7 -7
  320. package/plugins/cursor/skills/funpixel-gdd/references/spec-folder.md +3 -3
  321. package/plugins/cursor/skills/funpixel-gdd/references/the-path.md +3 -4
  322. package/plugins/cursor/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  323. package/plugins/cursor/skills/funpixel-gdd/references/worth.md +4 -4
  324. package/plugins/cursor/skills/funpixel-mobile-ui/SKILL.md +3 -3
  325. package/plugins/cursor/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  326. package/plugins/cursor/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  327. package/plugins/cursor/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  328. package/plugins/cursor/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  329. package/plugins/cursor/skills/funpixel-mobile-ui/references/unity.md +23 -23
  330. package/plugins/cursor/skills/funpixel-publish/references/compose.md +1 -1
  331. package/plugins/cursor/skills/funpixel-publish/references/server-build.md +1 -1
  332. package/plugins/cursor/skills/funpixel-store/SKILL.md +3 -3
  333. package/plugins/cursor/skills/funpixel-store/references/app-store.md +1 -1
  334. package/plugins/cursor/skills/funpixel-store/references/google-play.md +2 -2
  335. package/plugins/cursor/skills/funpixel-store/references/ios-release.md +19 -20
  336. package/plugins/cursor/skills/funpixel-store/references/money.md +2 -2
  337. package/plugins/cursor/skills/funpixel-store/references/purchases-and-review.md +18 -18
  338. package/plugins/cursor/skills/funpixel-store/references/readiness-page.md +1 -1
  339. package/plugins/cursor/skills/funpixel-store/references/readiness.md +3 -3
  340. package/plugins/cursor/skills/funpixel-store/references/unity-store.md +9 -12
  341. package/plugins/cursor/skills/funpixel-unity-game/SKILL.md +28 -35
  342. package/plugins/cursor/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  343. package/plugins/cursor/skills/funpixel-unity-game/references/fixes.md +21 -21
  344. package/plugins/cursor/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  345. package/plugins/cursor/skills/funpixel-unity-game/references/handing-off.md +4 -4
  346. package/plugins/cursor/skills/funpixel-unity-game/references/performance.md +10 -14
  347. package/plugins/cursor/skills/funpixel-unity-game/references/probe.md +4 -4
  348. package/plugins/cursor/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  349. package/plugins/cursor/skills/funpixel-unity-game/references/traps.md +13 -14
  350. package/plugins/cursor/skills/funpixel-verify/references/bar.md +1 -1
  351. package/plugins/cursor/skills/funpixel-verify/references/fidelity.md +11 -11
  352. package/plugins/cursor/skills/funpixel-verify/references/mobile-qa.md +10 -10
  353. package/plugins/cursor/skills/funpixel-verify/references/playtest.md +14 -14
  354. package/plugins/cursor/skills/funpixel-verify/references/unity.md +11 -11
  355. package/plugins/cursor/skills/funpixel-world-and-story/SKILL.md +1 -1
  356. package/plugins/cursor/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  357. package/plugins/cursor/skills/funpixel-world-and-story/references/living-world.md +2 -2
  358. package/plugins/cursor/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  359. package/plugins/cursor/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  360. package/plugins/cursor/skills/funpixel-world-and-story/references/voice.md +1 -1
  361. package/plugins/kiro/AGENTS.md +1 -1
  362. package/plugins/kiro/README.md +1 -1
  363. package/plugins/kiro/hooks/brief.md +1 -1
  364. package/plugins/kiro/hooks/guidance.json +1 -1
  365. package/plugins/kiro/hooks/vendor/pipeline/pipeline.mjs +6 -6
  366. package/plugins/kiro/hooks/vendor/studio/pitch.mjs +1 -1
  367. package/plugins/kiro/skills/fp-art-director/SKILL.md +2 -2
  368. package/plugins/kiro/skills/fp-playtest/SKILL.md +2 -2
  369. package/plugins/kiro/skills/funpixel-3d/references/bake-off.md +3 -3
  370. package/plugins/kiro/skills/funpixel-3d/references/characters.md +1 -1
  371. package/plugins/kiro/skills/funpixel-3d/references/hero-route.md +5 -5
  372. package/plugins/kiro/skills/funpixel-3d/references/level-spec.md +1 -1
  373. package/plugins/kiro/skills/funpixel-3d/references/levels.md +3 -3
  374. package/plugins/kiro/skills/funpixel-3d/references/light-and-places.md +3 -3
  375. package/plugins/kiro/skills/funpixel-3d/references/painted-target.md +7 -7
  376. package/plugins/kiro/skills/funpixel-3d/references/three-loading.md +4 -4
  377. package/plugins/kiro/skills/funpixel-3d/references/unity.md +13 -13
  378. package/plugins/kiro/skills/funpixel-art/references/animation.md +1 -1
  379. package/plugins/kiro/skills/funpixel-art/references/cast.md +3 -3
  380. package/plugins/kiro/skills/funpixel-art/references/effects.md +2 -2
  381. package/plugins/kiro/skills/funpixel-art/references/frames.md +6 -6
  382. package/plugins/kiro/skills/funpixel-art/references/judging-frames.md +8 -8
  383. package/plugins/kiro/skills/funpixel-art/references/look.md +4 -4
  384. package/plugins/kiro/skills/funpixel-art/references/pipeline.md +2 -2
  385. package/plugins/kiro/skills/funpixel-art/references/prompts.md +4 -4
  386. package/plugins/kiro/skills/funpixel-art/references/ui.md +15 -15
  387. package/plugins/kiro/skills/funpixel-art/references/unity.md +14 -14
  388. package/plugins/kiro/skills/funpixel-audio/references/adaptive-music.md +4 -4
  389. package/plugins/kiro/skills/funpixel-audio/references/engine.md +2 -2
  390. package/plugins/kiro/skills/funpixel-audio/references/measure.md +1 -1
  391. package/plugins/kiro/skills/funpixel-audio/references/unity.md +20 -19
  392. package/plugins/kiro/skills/funpixel-game-feel/SKILL.md +4 -4
  393. package/plugins/kiro/skills/funpixel-game-feel/references/contact.md +6 -6
  394. package/plugins/kiro/skills/funpixel-game-feel/references/unity.md +18 -23
  395. package/plugins/kiro/skills/funpixel-game-logic/SKILL.md +3 -3
  396. package/plugins/kiro/skills/funpixel-game-logic/references/balance.md +2 -2
  397. package/plugins/kiro/skills/funpixel-game-logic/references/depth.md +2 -2
  398. package/plugins/kiro/skills/funpixel-game-logic/references/escalation.md +5 -5
  399. package/plugins/kiro/skills/funpixel-game-logic/references/probes.md +10 -10
  400. package/plugins/kiro/skills/funpixel-game-logic/references/unity.md +28 -28
  401. package/plugins/kiro/skills/funpixel-game-spine/SKILL.md +1 -1
  402. package/plugins/kiro/skills/funpixel-game-spine/references/performance.md +2 -2
  403. package/plugins/kiro/skills/funpixel-game-spine/references/replay.md +11 -11
  404. package/plugins/kiro/skills/funpixel-game-spine/references/room-api.md +1 -1
  405. package/plugins/kiro/skills/funpixel-game-spine/references/sdk.md +1 -1
  406. package/plugins/kiro/skills/funpixel-gdd/SKILL.md +2 -2
  407. package/plugins/kiro/skills/funpixel-gdd/references/as-built.md +2 -2
  408. package/plugins/kiro/skills/funpixel-gdd/references/design-measures.md +2 -2
  409. package/plugins/kiro/skills/funpixel-gdd/references/design-note.md +1 -1
  410. package/plugins/kiro/skills/funpixel-gdd/references/first-look.md +1 -1
  411. package/plugins/kiro/skills/funpixel-gdd/references/floors.md +2 -2
  412. package/plugins/kiro/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  413. package/plugins/kiro/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  414. package/plugins/kiro/skills/funpixel-gdd/references/genre-racing.md +2 -2
  415. package/plugins/kiro/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  416. package/plugins/kiro/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  417. package/plugins/kiro/skills/funpixel-gdd/references/genre-survival.md +2 -2
  418. package/plugins/kiro/skills/funpixel-gdd/references/invent-first.md +3 -3
  419. package/plugins/kiro/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  420. package/plugins/kiro/skills/funpixel-gdd/references/pages.md +2 -5
  421. package/plugins/kiro/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  422. package/plugins/kiro/skills/funpixel-gdd/references/production-tiers.md +11 -11
  423. package/plugins/kiro/skills/funpixel-gdd/references/sections.md +7 -7
  424. package/plugins/kiro/skills/funpixel-gdd/references/spec-folder.md +3 -3
  425. package/plugins/kiro/skills/funpixel-gdd/references/the-path.md +3 -4
  426. package/plugins/kiro/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  427. package/plugins/kiro/skills/funpixel-gdd/references/worth.md +4 -4
  428. package/plugins/kiro/skills/funpixel-mobile-ui/SKILL.md +3 -3
  429. package/plugins/kiro/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  430. package/plugins/kiro/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  431. package/plugins/kiro/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  432. package/plugins/kiro/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  433. package/plugins/kiro/skills/funpixel-mobile-ui/references/unity.md +23 -23
  434. package/plugins/kiro/skills/funpixel-publish/references/compose.md +1 -1
  435. package/plugins/kiro/skills/funpixel-publish/references/server-build.md +1 -1
  436. package/plugins/kiro/skills/funpixel-store/SKILL.md +3 -3
  437. package/plugins/kiro/skills/funpixel-store/references/app-store.md +1 -1
  438. package/plugins/kiro/skills/funpixel-store/references/google-play.md +2 -2
  439. package/plugins/kiro/skills/funpixel-store/references/ios-release.md +19 -20
  440. package/plugins/kiro/skills/funpixel-store/references/money.md +2 -2
  441. package/plugins/kiro/skills/funpixel-store/references/purchases-and-review.md +18 -18
  442. package/plugins/kiro/skills/funpixel-store/references/readiness-page.md +1 -1
  443. package/plugins/kiro/skills/funpixel-store/references/readiness.md +3 -3
  444. package/plugins/kiro/skills/funpixel-store/references/unity-store.md +9 -12
  445. package/plugins/kiro/skills/funpixel-unity-game/SKILL.md +28 -35
  446. package/plugins/kiro/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  447. package/plugins/kiro/skills/funpixel-unity-game/references/fixes.md +21 -21
  448. package/plugins/kiro/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  449. package/plugins/kiro/skills/funpixel-unity-game/references/handing-off.md +4 -4
  450. package/plugins/kiro/skills/funpixel-unity-game/references/performance.md +10 -14
  451. package/plugins/kiro/skills/funpixel-unity-game/references/probe.md +4 -4
  452. package/plugins/kiro/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  453. package/plugins/kiro/skills/funpixel-unity-game/references/traps.md +13 -14
  454. package/plugins/kiro/skills/funpixel-verify/references/bar.md +1 -1
  455. package/plugins/kiro/skills/funpixel-verify/references/fidelity.md +11 -11
  456. package/plugins/kiro/skills/funpixel-verify/references/mobile-qa.md +10 -10
  457. package/plugins/kiro/skills/funpixel-verify/references/playtest.md +14 -14
  458. package/plugins/kiro/skills/funpixel-verify/references/unity.md +11 -11
  459. package/plugins/kiro/skills/funpixel-world-and-story/SKILL.md +1 -1
  460. package/plugins/kiro/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  461. package/plugins/kiro/skills/funpixel-world-and-story/references/living-world.md +2 -2
  462. package/plugins/kiro/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  463. package/plugins/kiro/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  464. package/plugins/kiro/skills/funpixel-world-and-story/references/voice.md +1 -1
  465. package/plugins/robin/README.md +1 -1
  466. package/plugins/robin/claude/README.md +2 -3
  467. package/plugins/robin/claude/agents/art-director.md +2 -2
  468. package/plugins/robin/claude/commands/playtest.md +2 -2
  469. package/plugins/robin/claude/hooks/brief.md +1 -1
  470. package/plugins/robin/claude/hooks/guidance.json +1 -1
  471. package/plugins/robin/claude/hooks/vendor/pipeline/pipeline.mjs +6 -6
  472. package/plugins/robin/claude/hooks/vendor/studio/pitch.mjs +1 -1
  473. package/plugins/robin/claude/skills/3d/references/bake-off.md +3 -3
  474. package/plugins/robin/claude/skills/3d/references/characters.md +1 -1
  475. package/plugins/robin/claude/skills/3d/references/hero-route.md +5 -5
  476. package/plugins/robin/claude/skills/3d/references/level-spec.md +1 -1
  477. package/plugins/robin/claude/skills/3d/references/levels.md +3 -3
  478. package/plugins/robin/claude/skills/3d/references/light-and-places.md +3 -3
  479. package/plugins/robin/claude/skills/3d/references/painted-target.md +7 -7
  480. package/plugins/robin/claude/skills/3d/references/three-loading.md +4 -4
  481. package/plugins/robin/claude/skills/3d/references/unity.md +13 -13
  482. package/plugins/robin/claude/skills/art/references/animation.md +1 -1
  483. package/plugins/robin/claude/skills/art/references/cast.md +3 -3
  484. package/plugins/robin/claude/skills/art/references/effects.md +2 -2
  485. package/plugins/robin/claude/skills/art/references/frames.md +6 -6
  486. package/plugins/robin/claude/skills/art/references/judging-frames.md +8 -8
  487. package/plugins/robin/claude/skills/art/references/look.md +4 -4
  488. package/plugins/robin/claude/skills/art/references/pipeline.md +2 -2
  489. package/plugins/robin/claude/skills/art/references/prompts.md +4 -4
  490. package/plugins/robin/claude/skills/art/references/ui.md +15 -15
  491. package/plugins/robin/claude/skills/art/references/unity.md +14 -14
  492. package/plugins/robin/claude/skills/audio/references/adaptive-music.md +4 -4
  493. package/plugins/robin/claude/skills/audio/references/engine.md +2 -2
  494. package/plugins/robin/claude/skills/audio/references/measure.md +1 -1
  495. package/plugins/robin/claude/skills/audio/references/unity.md +20 -19
  496. package/plugins/robin/claude/skills/game-feel/SKILL.md +4 -4
  497. package/plugins/robin/claude/skills/game-feel/references/contact.md +6 -6
  498. package/plugins/robin/claude/skills/game-feel/references/unity.md +18 -23
  499. package/plugins/robin/claude/skills/game-logic/SKILL.md +3 -3
  500. package/plugins/robin/claude/skills/game-logic/references/balance.md +2 -2
  501. package/plugins/robin/claude/skills/game-logic/references/depth.md +2 -2
  502. package/plugins/robin/claude/skills/game-logic/references/escalation.md +5 -5
  503. package/plugins/robin/claude/skills/game-logic/references/probes.md +10 -10
  504. package/plugins/robin/claude/skills/game-logic/references/unity.md +28 -28
  505. package/plugins/robin/claude/skills/game-spine/SKILL.md +1 -1
  506. package/plugins/robin/claude/skills/game-spine/references/performance.md +2 -2
  507. package/plugins/robin/claude/skills/game-spine/references/replay.md +11 -11
  508. package/plugins/robin/claude/skills/game-spine/references/room-api.md +1 -1
  509. package/plugins/robin/claude/skills/game-spine/references/sdk.md +1 -1
  510. package/plugins/robin/claude/skills/gdd/SKILL.md +2 -2
  511. package/plugins/robin/claude/skills/gdd/references/as-built.md +2 -2
  512. package/plugins/robin/claude/skills/gdd/references/design-measures.md +2 -2
  513. package/plugins/robin/claude/skills/gdd/references/design-note.md +1 -1
  514. package/plugins/robin/claude/skills/gdd/references/first-look.md +1 -1
  515. package/plugins/robin/claude/skills/gdd/references/floors.md +2 -2
  516. package/plugins/robin/claude/skills/gdd/references/gameplay-contract.md +1 -1
  517. package/plugins/robin/claude/skills/gdd/references/genre-puzzle.md +4 -4
  518. package/plugins/robin/claude/skills/gdd/references/genre-racing.md +2 -2
  519. package/plugins/robin/claude/skills/gdd/references/genre-rpg.md +2 -2
  520. package/plugins/robin/claude/skills/gdd/references/genre-shooter.md +2 -2
  521. package/plugins/robin/claude/skills/gdd/references/genre-survival.md +2 -2
  522. package/plugins/robin/claude/skills/gdd/references/invent-first.md +3 -3
  523. package/plugins/robin/claude/skills/gdd/references/level-and-fun.md +11 -11
  524. package/plugins/robin/claude/skills/gdd/references/pages.md +2 -5
  525. package/plugins/robin/claude/skills/gdd/references/plan-at-size.md +5 -5
  526. package/plugins/robin/claude/skills/gdd/references/production-tiers.md +11 -11
  527. package/plugins/robin/claude/skills/gdd/references/sections.md +7 -7
  528. package/plugins/robin/claude/skills/gdd/references/spec-folder.md +3 -3
  529. package/plugins/robin/claude/skills/gdd/references/the-path.md +3 -4
  530. package/plugins/robin/claude/skills/gdd/references/world-and-identity.md +4 -4
  531. package/plugins/robin/claude/skills/gdd/references/worth.md +4 -4
  532. package/plugins/robin/claude/skills/mobile-ui/SKILL.md +3 -3
  533. package/plugins/robin/claude/skills/mobile-ui/references/hud-and-title.md +3 -3
  534. package/plugins/robin/claude/skills/mobile-ui/references/phone-check.md +1 -1
  535. package/plugins/robin/claude/skills/mobile-ui/references/recipes.md +1 -1
  536. package/plugins/robin/claude/skills/mobile-ui/references/restyle-ui.md +11 -11
  537. package/plugins/robin/claude/skills/mobile-ui/references/unity.md +23 -23
  538. package/plugins/robin/claude/skills/publishing/references/compose.md +1 -1
  539. package/plugins/robin/claude/skills/publishing/references/server-build.md +1 -1
  540. package/plugins/robin/claude/skills/store/SKILL.md +3 -3
  541. package/plugins/robin/claude/skills/store/references/app-store.md +1 -1
  542. package/plugins/robin/claude/skills/store/references/google-play.md +2 -2
  543. package/plugins/robin/claude/skills/store/references/ios-release.md +19 -20
  544. package/plugins/robin/claude/skills/store/references/money.md +2 -2
  545. package/plugins/robin/claude/skills/store/references/purchases-and-review.md +18 -18
  546. package/plugins/robin/claude/skills/store/references/readiness-page.md +1 -1
  547. package/plugins/robin/claude/skills/store/references/readiness.md +3 -3
  548. package/plugins/robin/claude/skills/store/references/unity-store.md +9 -12
  549. package/plugins/robin/claude/skills/unity-game/SKILL.md +28 -35
  550. package/plugins/robin/claude/skills/unity-game/references/agent-ops.md +9 -9
  551. package/plugins/robin/claude/skills/unity-game/references/fixes.md +21 -21
  552. package/plugins/robin/claude/skills/unity-game/references/from-a-web-game.md +17 -17
  553. package/plugins/robin/claude/skills/unity-game/references/handing-off.md +4 -4
  554. package/plugins/robin/claude/skills/unity-game/references/performance.md +10 -14
  555. package/plugins/robin/claude/skills/unity-game/references/probe.md +4 -4
  556. package/plugins/robin/claude/skills/unity-game/references/shared-mac.md +1 -1
  557. package/plugins/robin/claude/skills/unity-game/references/traps.md +13 -14
  558. package/plugins/robin/claude/skills/verifying/references/bar.md +1 -1
  559. package/plugins/robin/claude/skills/verifying/references/fidelity.md +11 -11
  560. package/plugins/robin/claude/skills/verifying/references/mobile-qa.md +10 -10
  561. package/plugins/robin/claude/skills/verifying/references/playtest.md +14 -14
  562. package/plugins/robin/claude/skills/verifying/references/unity.md +11 -11
  563. package/plugins/robin/claude/skills/world-and-story/SKILL.md +1 -1
  564. package/plugins/robin/claude/skills/world-and-story/references/atmosphere.md +4 -4
  565. package/plugins/robin/claude/skills/world-and-story/references/living-world.md +2 -2
  566. package/plugins/robin/claude/skills/world-and-story/references/opening-and-chapters.md +1 -1
  567. package/plugins/robin/claude/skills/world-and-story/references/story-at-size.md +2 -2
  568. package/plugins/robin/claude/skills/world-and-story/references/voice.md +1 -1
  569. package/plugins/robin/skills/fp-playtest/SKILL.md +2 -2
  570. package/plugins/robin/skills/funpixel-3d/references/bake-off.md +3 -3
  571. package/plugins/robin/skills/funpixel-3d/references/characters.md +1 -1
  572. package/plugins/robin/skills/funpixel-3d/references/hero-route.md +5 -5
  573. package/plugins/robin/skills/funpixel-3d/references/level-spec.md +1 -1
  574. package/plugins/robin/skills/funpixel-3d/references/levels.md +3 -3
  575. package/plugins/robin/skills/funpixel-3d/references/light-and-places.md +3 -3
  576. package/plugins/robin/skills/funpixel-3d/references/painted-target.md +7 -7
  577. package/plugins/robin/skills/funpixel-3d/references/three-loading.md +4 -4
  578. package/plugins/robin/skills/funpixel-3d/references/unity.md +13 -13
  579. package/plugins/robin/skills/funpixel-art/references/animation.md +1 -1
  580. package/plugins/robin/skills/funpixel-art/references/cast.md +3 -3
  581. package/plugins/robin/skills/funpixel-art/references/effects.md +2 -2
  582. package/plugins/robin/skills/funpixel-art/references/frames.md +6 -6
  583. package/plugins/robin/skills/funpixel-art/references/judging-frames.md +8 -8
  584. package/plugins/robin/skills/funpixel-art/references/look.md +4 -4
  585. package/plugins/robin/skills/funpixel-art/references/pipeline.md +2 -2
  586. package/plugins/robin/skills/funpixel-art/references/prompts.md +4 -4
  587. package/plugins/robin/skills/funpixel-art/references/ui.md +15 -15
  588. package/plugins/robin/skills/funpixel-art/references/unity.md +14 -14
  589. package/plugins/robin/skills/funpixel-audio/references/adaptive-music.md +4 -4
  590. package/plugins/robin/skills/funpixel-audio/references/engine.md +2 -2
  591. package/plugins/robin/skills/funpixel-audio/references/measure.md +1 -1
  592. package/plugins/robin/skills/funpixel-audio/references/unity.md +20 -19
  593. package/plugins/robin/skills/funpixel-brief/SKILL.md +1 -1
  594. package/plugins/robin/skills/funpixel-game-feel/SKILL.md +4 -4
  595. package/plugins/robin/skills/funpixel-game-feel/references/contact.md +6 -6
  596. package/plugins/robin/skills/funpixel-game-feel/references/unity.md +18 -23
  597. package/plugins/robin/skills/funpixel-game-logic/SKILL.md +3 -3
  598. package/plugins/robin/skills/funpixel-game-logic/references/balance.md +2 -2
  599. package/plugins/robin/skills/funpixel-game-logic/references/depth.md +2 -2
  600. package/plugins/robin/skills/funpixel-game-logic/references/escalation.md +5 -5
  601. package/plugins/robin/skills/funpixel-game-logic/references/probes.md +10 -10
  602. package/plugins/robin/skills/funpixel-game-logic/references/unity.md +28 -28
  603. package/plugins/robin/skills/funpixel-game-spine/SKILL.md +1 -1
  604. package/plugins/robin/skills/funpixel-game-spine/references/performance.md +2 -2
  605. package/plugins/robin/skills/funpixel-game-spine/references/replay.md +11 -11
  606. package/plugins/robin/skills/funpixel-game-spine/references/room-api.md +1 -1
  607. package/plugins/robin/skills/funpixel-game-spine/references/sdk.md +1 -1
  608. package/plugins/robin/skills/funpixel-gdd/SKILL.md +2 -2
  609. package/plugins/robin/skills/funpixel-gdd/references/as-built.md +2 -2
  610. package/plugins/robin/skills/funpixel-gdd/references/design-measures.md +2 -2
  611. package/plugins/robin/skills/funpixel-gdd/references/design-note.md +1 -1
  612. package/plugins/robin/skills/funpixel-gdd/references/first-look.md +1 -1
  613. package/plugins/robin/skills/funpixel-gdd/references/floors.md +2 -2
  614. package/plugins/robin/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  615. package/plugins/robin/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  616. package/plugins/robin/skills/funpixel-gdd/references/genre-racing.md +2 -2
  617. package/plugins/robin/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  618. package/plugins/robin/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  619. package/plugins/robin/skills/funpixel-gdd/references/genre-survival.md +2 -2
  620. package/plugins/robin/skills/funpixel-gdd/references/invent-first.md +3 -3
  621. package/plugins/robin/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  622. package/plugins/robin/skills/funpixel-gdd/references/pages.md +2 -5
  623. package/plugins/robin/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  624. package/plugins/robin/skills/funpixel-gdd/references/production-tiers.md +11 -11
  625. package/plugins/robin/skills/funpixel-gdd/references/sections.md +7 -7
  626. package/plugins/robin/skills/funpixel-gdd/references/spec-folder.md +3 -3
  627. package/plugins/robin/skills/funpixel-gdd/references/the-path.md +3 -4
  628. package/plugins/robin/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  629. package/plugins/robin/skills/funpixel-gdd/references/worth.md +4 -4
  630. package/plugins/robin/skills/funpixel-mobile-ui/SKILL.md +3 -3
  631. package/plugins/robin/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  632. package/plugins/robin/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  633. package/plugins/robin/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  634. package/plugins/robin/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  635. package/plugins/robin/skills/funpixel-mobile-ui/references/unity.md +23 -23
  636. package/plugins/robin/skills/funpixel-publish/references/compose.md +1 -1
  637. package/plugins/robin/skills/funpixel-publish/references/server-build.md +1 -1
  638. package/plugins/robin/skills/funpixel-store/SKILL.md +3 -3
  639. package/plugins/robin/skills/funpixel-store/references/app-store.md +1 -1
  640. package/plugins/robin/skills/funpixel-store/references/google-play.md +2 -2
  641. package/plugins/robin/skills/funpixel-store/references/ios-release.md +19 -20
  642. package/plugins/robin/skills/funpixel-store/references/money.md +2 -2
  643. package/plugins/robin/skills/funpixel-store/references/purchases-and-review.md +18 -18
  644. package/plugins/robin/skills/funpixel-store/references/readiness-page.md +1 -1
  645. package/plugins/robin/skills/funpixel-store/references/readiness.md +3 -3
  646. package/plugins/robin/skills/funpixel-store/references/unity-store.md +9 -12
  647. package/plugins/robin/skills/funpixel-unity-game/SKILL.md +28 -35
  648. package/plugins/robin/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  649. package/plugins/robin/skills/funpixel-unity-game/references/fixes.md +21 -21
  650. package/plugins/robin/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  651. package/plugins/robin/skills/funpixel-unity-game/references/handing-off.md +4 -4
  652. package/plugins/robin/skills/funpixel-unity-game/references/performance.md +10 -14
  653. package/plugins/robin/skills/funpixel-unity-game/references/probe.md +4 -4
  654. package/plugins/robin/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  655. package/plugins/robin/skills/funpixel-unity-game/references/traps.md +13 -14
  656. package/plugins/robin/skills/funpixel-verify/references/bar.md +1 -1
  657. package/plugins/robin/skills/funpixel-verify/references/fidelity.md +11 -11
  658. package/plugins/robin/skills/funpixel-verify/references/mobile-qa.md +10 -10
  659. package/plugins/robin/skills/funpixel-verify/references/playtest.md +14 -14
  660. package/plugins/robin/skills/funpixel-verify/references/unity.md +11 -11
  661. package/plugins/robin/skills/funpixel-world-and-story/SKILL.md +1 -1
  662. package/plugins/robin/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  663. package/plugins/robin/skills/funpixel-world-and-story/references/living-world.md +2 -2
  664. package/plugins/robin/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  665. package/plugins/robin/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  666. package/plugins/robin/skills/funpixel-world-and-story/references/voice.md +1 -1
  667. package/templates/common/.agents/skills/funpixel-3d/references/bake-off.md +3 -3
  668. package/templates/common/.agents/skills/funpixel-3d/references/characters.md +1 -1
  669. package/templates/common/.agents/skills/funpixel-3d/references/hero-route.md +5 -5
  670. package/templates/common/.agents/skills/funpixel-3d/references/level-spec.md +1 -1
  671. package/templates/common/.agents/skills/funpixel-3d/references/levels.md +3 -3
  672. package/templates/common/.agents/skills/funpixel-3d/references/light-and-places.md +3 -3
  673. package/templates/common/.agents/skills/funpixel-3d/references/painted-target.md +7 -7
  674. package/templates/common/.agents/skills/funpixel-3d/references/three-loading.md +4 -4
  675. package/templates/common/.agents/skills/funpixel-3d/references/unity.md +13 -13
  676. package/templates/common/.agents/skills/funpixel-art/references/animation.md +1 -1
  677. package/templates/common/.agents/skills/funpixel-art/references/cast.md +3 -3
  678. package/templates/common/.agents/skills/funpixel-art/references/effects.md +2 -2
  679. package/templates/common/.agents/skills/funpixel-art/references/frames.md +6 -6
  680. package/templates/common/.agents/skills/funpixel-art/references/judging-frames.md +8 -8
  681. package/templates/common/.agents/skills/funpixel-art/references/look.md +4 -4
  682. package/templates/common/.agents/skills/funpixel-art/references/pipeline.md +2 -2
  683. package/templates/common/.agents/skills/funpixel-art/references/prompts.md +4 -4
  684. package/templates/common/.agents/skills/funpixel-art/references/ui.md +15 -15
  685. package/templates/common/.agents/skills/funpixel-art/references/unity.md +14 -14
  686. package/templates/common/.agents/skills/funpixel-audio/references/adaptive-music.md +4 -4
  687. package/templates/common/.agents/skills/funpixel-audio/references/engine.md +2 -2
  688. package/templates/common/.agents/skills/funpixel-audio/references/measure.md +1 -1
  689. package/templates/common/.agents/skills/funpixel-audio/references/unity.md +20 -19
  690. package/templates/common/.agents/skills/funpixel-game-feel/SKILL.md +4 -4
  691. package/templates/common/.agents/skills/funpixel-game-feel/references/contact.md +6 -6
  692. package/templates/common/.agents/skills/funpixel-game-feel/references/unity.md +18 -23
  693. package/templates/common/.agents/skills/funpixel-game-logic/SKILL.md +3 -3
  694. package/templates/common/.agents/skills/funpixel-game-logic/references/balance.md +2 -2
  695. package/templates/common/.agents/skills/funpixel-game-logic/references/depth.md +2 -2
  696. package/templates/common/.agents/skills/funpixel-game-logic/references/escalation.md +5 -5
  697. package/templates/common/.agents/skills/funpixel-game-logic/references/probes.md +10 -10
  698. package/templates/common/.agents/skills/funpixel-game-logic/references/unity.md +28 -28
  699. package/templates/common/.agents/skills/funpixel-game-spine/SKILL.md +1 -1
  700. package/templates/common/.agents/skills/funpixel-game-spine/references/performance.md +2 -2
  701. package/templates/common/.agents/skills/funpixel-game-spine/references/replay.md +11 -11
  702. package/templates/common/.agents/skills/funpixel-game-spine/references/room-api.md +1 -1
  703. package/templates/common/.agents/skills/funpixel-game-spine/references/sdk.md +1 -1
  704. package/templates/common/.agents/skills/funpixel-gdd/SKILL.md +2 -2
  705. package/templates/common/.agents/skills/funpixel-gdd/references/as-built.md +2 -2
  706. package/templates/common/.agents/skills/funpixel-gdd/references/design-measures.md +2 -2
  707. package/templates/common/.agents/skills/funpixel-gdd/references/design-note.md +1 -1
  708. package/templates/common/.agents/skills/funpixel-gdd/references/first-look.md +1 -1
  709. package/templates/common/.agents/skills/funpixel-gdd/references/floors.md +2 -2
  710. package/templates/common/.agents/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  711. package/templates/common/.agents/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  712. package/templates/common/.agents/skills/funpixel-gdd/references/genre-racing.md +2 -2
  713. package/templates/common/.agents/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  714. package/templates/common/.agents/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  715. package/templates/common/.agents/skills/funpixel-gdd/references/genre-survival.md +2 -2
  716. package/templates/common/.agents/skills/funpixel-gdd/references/invent-first.md +3 -3
  717. package/templates/common/.agents/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  718. package/templates/common/.agents/skills/funpixel-gdd/references/pages.md +2 -5
  719. package/templates/common/.agents/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  720. package/templates/common/.agents/skills/funpixel-gdd/references/production-tiers.md +11 -11
  721. package/templates/common/.agents/skills/funpixel-gdd/references/sections.md +7 -7
  722. package/templates/common/.agents/skills/funpixel-gdd/references/spec-folder.md +3 -3
  723. package/templates/common/.agents/skills/funpixel-gdd/references/the-path.md +3 -4
  724. package/templates/common/.agents/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  725. package/templates/common/.agents/skills/funpixel-gdd/references/worth.md +4 -4
  726. package/templates/common/.agents/skills/funpixel-mobile-ui/SKILL.md +3 -3
  727. package/templates/common/.agents/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  728. package/templates/common/.agents/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  729. package/templates/common/.agents/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  730. package/templates/common/.agents/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  731. package/templates/common/.agents/skills/funpixel-mobile-ui/references/unity.md +23 -23
  732. package/templates/common/.agents/skills/funpixel-publish/references/compose.md +1 -1
  733. package/templates/common/.agents/skills/funpixel-publish/references/server-build.md +1 -1
  734. package/templates/common/.agents/skills/funpixel-store/SKILL.md +3 -3
  735. package/templates/common/.agents/skills/funpixel-store/references/app-store.md +1 -1
  736. package/templates/common/.agents/skills/funpixel-store/references/google-play.md +2 -2
  737. package/templates/common/.agents/skills/funpixel-store/references/ios-release.md +19 -20
  738. package/templates/common/.agents/skills/funpixel-store/references/money.md +2 -2
  739. package/templates/common/.agents/skills/funpixel-store/references/purchases-and-review.md +18 -18
  740. package/templates/common/.agents/skills/funpixel-store/references/readiness-page.md +1 -1
  741. package/templates/common/.agents/skills/funpixel-store/references/readiness.md +3 -3
  742. package/templates/common/.agents/skills/funpixel-store/references/unity-store.md +9 -12
  743. package/templates/common/.agents/skills/funpixel-unity-game/SKILL.md +28 -35
  744. package/templates/common/.agents/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  745. package/templates/common/.agents/skills/funpixel-unity-game/references/fixes.md +21 -21
  746. package/templates/common/.agents/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  747. package/templates/common/.agents/skills/funpixel-unity-game/references/handing-off.md +4 -4
  748. package/templates/common/.agents/skills/funpixel-unity-game/references/performance.md +10 -14
  749. package/templates/common/.agents/skills/funpixel-unity-game/references/probe.md +4 -4
  750. package/templates/common/.agents/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  751. package/templates/common/.agents/skills/funpixel-unity-game/references/traps.md +13 -14
  752. package/templates/common/.agents/skills/funpixel-verify/references/bar.md +1 -1
  753. package/templates/common/.agents/skills/funpixel-verify/references/fidelity.md +11 -11
  754. package/templates/common/.agents/skills/funpixel-verify/references/mobile-qa.md +10 -10
  755. package/templates/common/.agents/skills/funpixel-verify/references/playtest.md +14 -14
  756. package/templates/common/.agents/skills/funpixel-verify/references/unity.md +11 -11
  757. package/templates/common/.agents/skills/funpixel-world-and-story/SKILL.md +1 -1
  758. package/templates/common/.agents/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  759. package/templates/common/.agents/skills/funpixel-world-and-story/references/living-world.md +2 -2
  760. package/templates/common/.agents/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  761. package/templates/common/.agents/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  762. package/templates/common/.agents/skills/funpixel-world-and-story/references/voice.md +1 -1
  763. package/templates/common/AGENTS.md +1 -1
  764. package/templates/common/src/platform.ts +1 -1
  765. package/templates/common/src/probe-human.ts +3 -3
  766. package/templates/common/src/save.ts +1 -1
  767. package/templates/common/test/platform.test.ts +1 -1
  768. package/templates/three-world/src/budget.ts +1 -1
  769. package/templates/three-world/src/cutouts.ts +2 -2
  770. package/templates/three-world/src/game.ts +1 -1
  771. package/templates/three-world/src/models.ts +1 -1
  772. package/unity/com.funpixel.probe/Runtime/Player/Args.cs +1 -1
  773. package/unity/com.funpixel.probe/Runtime/Player/Bridge.cs +2 -2
  774. package/unity/com.funpixel.probe/Runtime/Player/Capture.cs +2 -2
  775. package/unity/com.funpixel.probe/Runtime/Player/Inject.cs +1 -2
  776. package/unity/com.funpixel.probe/Runtime/Player/Probe.cs +2 -2
  777. package/unity/com.funpixel.probe/Runtime/Player/UiTargets.cs +1 -1
  778. package/plugins/claude/skills/unity-game/references/studio-packages.md +0 -127
  779. package/plugins/codex/skills/funpixel-unity-game/references/studio-packages.md +0 -127
  780. package/plugins/cursor/skills/funpixel-unity-game/references/studio-packages.md +0 -127
  781. package/plugins/kiro/skills/funpixel-unity-game/references/studio-packages.md +0 -127
  782. package/plugins/robin/claude/skills/unity-game/references/studio-packages.md +0 -127
  783. package/plugins/robin/skills/funpixel-unity-game/references/studio-packages.md +0 -127
  784. package/templates/common/.agents/skills/funpixel-unity-game/references/studio-packages.md +0 -127
@@ -1,6 +1,6 @@
1
1
  # Quality levels: one source, a cut per device
2
2
 
3
- Held Note decimated every model once for every device (the station kit 150,000 → 4,000
3
+ One game decimated every model once for every device (the station kit 150,000 → 4,000
4
4
  triangles, characters → 13,000, props → 1,200–3,000, textures 4096² → 512–1024²). Next to its
5
5
  target frames it read flat and melted on a desktop that had headroom to spare, and the untouched
6
6
  generations survived only in a git-ignored temporary folder. Levels are the other way to do it:
@@ -40,7 +40,7 @@ failure: the level is the most the source allows at that quality.
40
40
  Where the source lives is your call. A generation made with `gen model3d` keeps the provider's
41
41
  untouched GLB in `.funtools/sources/models/` (never published); the platform keeps its own copy
42
42
  beside the shipped one. Cut from that, never from a file you already decimated: a level cut from
43
- Held Note's shipped walker (18K triangles) reached only 16K on phone, because the detail it needed
43
+ its shipped walker (18K triangles) reached only 16K on phone, because the detail it needed
44
44
  to trade was already gone.
45
45
 
46
46
  A `hero` generation (`style: "hero"`) is the source this is built for, cut down per device
@@ -67,7 +67,7 @@ saver or a low GPU gets `phone`; `high` needs a GPU known to be high
67
67
  (`levelSignals(renderer.getContext())` reads it) and 8 GB; everything else `desktop`. A phone never
68
68
  downloads the desktop set. No manifest (a model never cut) loads the plain file, as before.
69
69
 
70
- ## Measured on Held Note's sources (29 Sep 2026)
70
+ ## Measured on that game's sources (29 Sep 2026)
71
71
 
72
72
  Release build of the engine on a shared M-series laptop; the time is mostly KTX2 texture encoding.
73
73
 
@@ -1,7 +1,7 @@
1
1
  # Light, dressing and places: directing the world
2
2
 
3
- A world reads as shapes when it is evenly lit, sparsely dressed and the same everywhere. Gallery
4
- Heist's plan was dark and moonlit, with spot-lit art and deep shadow, and its first build came back
3
+ A world reads as shapes when it is evenly lit, sparsely dressed and the same everywhere. One heist
4
+ game's plan was dark and moonlit, with spot-lit art and deep shadow, and its first build came back
5
5
  bright and evenly lit. Silt & Signal, by contrast, puts 42k instanced flowers along a clear road and
6
6
  gives each of its seven places its own light. The 3D starter (`funtools init --framework three-world`)
7
7
  directs all three from data, so you change values instead of writing a renderer:
@@ -116,7 +116,7 @@ palette (`sky-top`, `sky-horizon`, `ground`, `ground-2`, `stone`, `accent`, `glo
116
116
  (`grass`, `sand`, `cobble`, `flagstone`, `snow` or `moss`); its kit; its landmark; its road; its
117
117
  `density` target; and its `target` picture when the plan has one.
118
118
 
119
- Gallery Heist's spec is the model for a row: each room has a size and shape, a material, an era, a
119
+ One heist game's spec is the model for a row: each room has a size and shape, a material, an era, a
120
120
  light and a colour, and differs from the others in all five. For example:
121
121
 
122
122
  - "Long Gallery, oxblood velvet, cool moonlight from the lunette against warm gold picture lights"
@@ -1,19 +1,19 @@
1
1
  # From a painted target to a 3D scene that holds up
2
2
 
3
- Why this exists: Blue Freight was built twice from one plan (1 Oct). In both builds the title and
3
+ Why this exists: one game was built twice from one plan (1 Oct). In both builds the title and
4
4
  menus reached their painted targets, and the 3D walk stayed a flat, empty plane under a plain
5
5
  sky: a tech demo. In one build the cut-out hero's legs and arms drifted off the body as she
6
6
  walked. The walk is the first minutes of play, the stretch that decides whether people stay (the
7
- hook). Held Note shows the way that worked: every look pass ended in fidelity strips at fixed
8
- framings, today beside the target, and the next pass worked on the largest gap. Saltwake (boats of
9
- boxes and cones handed back as finished) and Fold Room (57 code primitives) show what happens
7
+ hook). Another game shows the way that worked: every look pass ended in fidelity strips at fixed
8
+ framings, today beside the target, and the next pass worked on the largest gap. A racer (boats of
9
+ boxes and cones handed back as finished) and a puzzle game (57 code primitives) show what happens
10
10
  when nobody puts the game beside the picture.
11
11
 
12
12
  ## Read the target first (five minutes, written down)
13
13
 
14
14
  Before any code, measure the target frame and write the answers beside it in the GDD's place row:
15
15
 
16
- | Read | Example (Blue Freight, f3_walk) |
16
+ | Read | Example (one game, f3_walk) |
17
17
  |---|---|
18
18
  | Horizon height, share of frame from the top | 0.42 |
19
19
  | Hero height, share of frame | 0.22, standing left of centre |
@@ -93,7 +93,7 @@ point at a closed gap in its strip did not close it.
93
93
 
94
94
  # A walk that reads as a person, in one piece
95
95
 
96
- The owner, after Blue Freight: "better walking animations, not like a robot; smooth movement like
96
+ The owner, after that game: "better walking animations, not like a robot; smooth movement like
97
97
  us humans." A robot walk is limbs swinging at a constant speed about fixed points while the body
98
98
  glides. A person's walk is the body falling forward and catching itself.
99
99
 
@@ -150,7 +150,7 @@ size on screen wins, whichever took less work.
150
150
  ## Many painted cut-outs, one draw call
151
151
 
152
152
  A painted world of props, creatures and folk drawn as one `THREE.Sprite` each costs a draw call
153
- each: the Blue Freight build reached 164 against its budget of 150 with about 200 cut-outs. The 3D
153
+ each: one build reached 164 against its budget of 150 with about 200 cut-outs. The 3D
154
154
  world starter's `src/cutouts.ts` draws every cut-out that shares an atlas as one instanced mesh, so
155
155
  300 cut-outs are one draw call. Cut the figures with `npx @funpixel/tools cut sheet.jpg` (clean
156
156
  alpha, no paper or floor patches), build the atlas in the page with `atlasFrom([...pngs])` (or use
@@ -48,8 +48,8 @@ root.traverse((o) => { const m = (o as THREE.Mesh).material as THREE.MeshStandar
48
48
 
49
49
  A free HDRI, when the game has one, replaces `RoomEnvironment` as both lighting and sky.
50
50
 
51
- Judge the result in the game's own light, not the generator's preview. Held Note (a dark three.js
52
- horror game, 29 Sep 2026) tuned every material in its loader rather than in the files: the hero's
51
+ Judge the result in the game's own light, not the generator's preview. A dark three.js
52
+ horror game (29 Sep 2026) tuned every material in its loader rather than in the files: the hero's
53
53
  suit to metalness 0.3 (it read as chrome under the torch), the crew's cloth to metalness 0 and 72%
54
54
  albedo (it burnt white in the beam). Its generated textures read near-black, and lifting the
55
55
  enemy's albedo ×1.9 made it go pure white a few metres into a spotlight: a colour above 1 has
@@ -169,13 +169,13 @@ function floorOffset(mixer: THREE.AnimationMixer, clip: THREE.AnimationClip) {
169
169
 
170
170
  Optimized GLBs are often quantized: positions stored as normalized int16, the real scale carried in
171
171
  the node. Baking a node transform into that geometry (`geometry.applyMatrix4`) clamps every vertex
172
- to ±1; Held Note's 3 m wall modules stood 1 m tall for a whole pass. Keep transforms in the object
172
+ to ±1; one game's 3 m wall modules stood 1 m tall for a whole pass. Keep transforms in the object
173
173
  or instance matrix. The same quantization moves each mesh's scale into its node, so a part scaled
174
174
  at runtime (a gauge's fill) has that scale baked back first, or `scale.y = fraction` is not literal.
175
175
 
176
176
  A skinned mesh keeps `frustumCulled = false` (its bind-pose bounds lie), so nothing culls a crowd
177
177
  of them: every one animates and casts shadows everywhere. Cull them by distance and screen yourself
178
- (skill `fp:art`, its frames reference, has Held Note's numbers).
178
+ (skill `fp:art`, its frames reference, has one game's numbers).
179
179
 
180
180
  Generated models usually face +Z, but not always. Wrap each in a group; yaw the inner model once
181
181
  at load (a vehicle whose posed size has x greater than z was authored sideways), and keep steering
@@ -1,17 +1,17 @@
1
1
  # 3D models from generator to Unity
2
2
 
3
- A 3D model can fail in Unity without an error. glTFast (the glTF importer, package `com.unity.cloud.gltfast`) decodes textures embedded in a GLB to raw RGBA32, 4–16 MB each, and imports a web GLB packed with meshopt or WebP as nothing. That made the 3D games 3–5× bigger than the 2D ones: Noodle Nights was 386 MB before this pipeline and 106 MB after. This skill takes a model from the generator to a compressed, collidable asset.
3
+ A 3D model can fail in Unity without an error. glTFast (the glTF importer, package `com.unity.cloud.gltfast`) decodes textures embedded in a GLB to raw RGBA32, 4–16 MB each, and imports a web GLB packed with meshopt or WebP as nothing. That made the 3D games 3–5× bigger than the 2D ones: one idle game was 386 MB before this pipeline and 106 MB after. This skill takes a model from the generator to a compressed, collidable asset.
4
4
 
5
5
  ## Tools
6
6
 
7
- The studio's `com.joydle.core` package carries the texture import rule, `TextureBudget` (fp:unity-game, `references/studio-packages.md`): a texture named `model__basecolor.png` (or `__normal`, `__mr`, `__emissive`) under an `Art/` or `Models/` folder imports as ASTC 6×6 with mipmaps, sRGB only for base colour and emissive, at most 512 under `Food/`, `Props/` or `Characters/` and 1024 elsewhere. Not shipped by the kit or the package: the Unity starter, its checks and the studio scripts (`blender_prep.py`, `render_glb.py`, a collision audit, a size audit). `TextureBudget` imports `__normal` maps as Default (field report, 10 Oct). Do the rest with what exists:
7
+ Not shipped by the kit: the Unity starter, its checks and the studio scripts (`blender_prep.py`, `render_glb.py`, a collision audit, a size audit). Do the rest with what exists:
8
8
 
9
- - Generate into the project: `npx @funpixel/tools gen model3d "<subject>" --image-asset concept.png --unity .` (after `npx @funpixel/tools login`) asks for the engine's own GLB (`--raw`: glTFast reads no Draco, meshopt or KTX2 without three more packages), splits it into `.gltf` + `.bin` + `model__basecolor`/`__normal`/`__mr` textures in `Assets/_Game/Generated/Models/<name>/` (the studio's `glb_split.py`, ported), and writes an import rule that sets those textures once, ASTC 6×6 at most 1024, sRGB only for colour, and keeps `__normal` a NormalMap over `TextureBudget`. Checked on 6000.6 with a Meshy and a Hunyuan model: meshes and textures import. The studio's `gen_3d.py` calls fal with a `.env` key: no metering, no cost log.
9
+ - Generate into the project: `npx @funpixel/tools gen model3d "<subject>" --image-asset concept.png --unity .` (after `npx @funpixel/tools login`) asks for the engine's own GLB (`--raw`: glTFast reads no Draco, meshopt or KTX2 without three more packages), splits it into `.gltf` + `.bin` + `model__basecolor`/`__normal`/`__mr` textures in `Assets/_Game/Generated/Models/<name>/` (the studio's `glb_split.py`, ported), and writes an import rule that sets those textures once, ASTC 6×6 at most 1024, sRGB only for colour, and keeps `__normal` a NormalMap. Checked on 6000.6 with a Meshy and a Hunyuan model: meshes and textures import. The studio's `gen_3d.py` calls fal with a `.env` key: no metering, no cost log.
10
10
 
11
11
  - Prepare in Blender through the kit's bench: `npx @funpixel/tools model --local normalize hero.glb --height-m 1` (unit height), `model --local decimate hero.glb --target-triangles 3000`, `model --local inspect hero.glb` (triangle count). The hosted `inspect_model`, `optimize_model` and `fracture_model` do the same on a model a job made. Joining meshes and moving the origin to the base centre are not in the bench; do them in Blender by hand or in your own script.
12
12
  - Proof render: the hosted `render_model`, or `npx @funpixel/tools model --local render hero.glb --frames 3`, gives the three angles.
13
13
  - Split a GLB for Unity with gltf-transform (`gltf-transform copy model.glb model.gltf` writes `.gltf` + `.bin` + texture files); name the textures by role (`model__basecolor`, `model__normal`, `model__mr`) so the import rule can find them. gltf-transform also decodes web GLBs (meshopt + WebP).
14
- - Name split textures by role and keep them under `Art/` or `Models/`, so `TextureBudget` finds them; a game without the package writes the same rule as an `AssetPostprocessor` in `Assets/Editor/`, or uses the one `gen --unity` writes.
14
+ - Name split textures by role and keep them under `Art/` or `Models/`, so the import rule finds them: write it as an `AssetPostprocessor` in `Assets/Editor/`, or use the one `gen --unity` writes.
15
15
  - Collision and size audits are your own Edit Mode tests until the checks ship: compare each prop's `Renderer.bounds` with its `Collider.bounds`, and read the Editor's build report for texture formats.
16
16
 
17
17
  Checks: `texture_audit`, `drawn_vs_solid`, `glb_import`, `tri_budget` and `lfs_audit` are proposed, not built (partial versions exist in single games). Until then `model --local inspect` gives the triangle count.
@@ -45,7 +45,7 @@ Checks: `texture_audit`, `drawn_vs_solid`, `glb_import`, `tri_budget` and `lfs_a
45
45
  | Kind | Setting |
46
46
  |---|---|
47
47
  | Model textures | ASTC 6×6, mipmaps, sRGB only for basecolor and emissive, max 512 (props) or 1024 (stalls) |
48
- | 3D models | default glTFast import of the split `.gltf`; no LODs except The Hot Gates' mid LOD |
48
+ | 3D models | default glTFast import of the split `.gltf`; no LODs except one game's mid LOD |
49
49
  | Rigged characters (FBX) | Generic rig, root `Hips`, Loop Time on, Apply Root Motion off, in-place clips at 30 fps |
50
50
 
51
51
  8. Confirm the import (`glb_import`): every GLB yields at least 1 mesh with more than 0 vertices, and no `.webp` or `.woff2` sits under Assets.
@@ -55,24 +55,24 @@ Checks: `texture_audit`, `drawn_vs_solid`, `glb_import`, `tri_budget` and `lfs_a
55
55
  12. Audit the build (`texture_audit`): 0 unwhitelisted RGBA32 textures, RGBA32 total under 1 MB. Mipmapped textures must be power of two; Unity 6000.6 ships a mipmapped non-power-of-two texture as RGBA32 even with an ASTC override.
56
56
  13. Store baked binary data as `.bytes` in LFS (`lfs_audit`: 0 tracked binaries over 500 KB outside LFS, no untracked paid art).
57
57
 
58
- Rigs: one shared skeleton gives one Animator for the whole cast. Large crowds use no rigs at runtime: The Hot Gates bakes rigged GLBs to vertex-animation textures.
58
+ Rigs: one shared skeleton gives one Animator for the whole cast. Large crowds use no rigs at runtime: one game bakes rigged GLBs to vertex-animation textures.
59
59
 
60
60
  ## Worked example
61
61
 
62
- Noodle Nights (a new 3D idle game), done with the studio's own scripts (proposed for the kit). Steps 2–4 are the report's general pipeline; it does not log them per game.
62
+ A new 3D idle game, done with the studio's own scripts (proposed for the kit). Steps 2–4 are the report's general pipeline; it does not log them per game.
63
63
 
64
64
  1. Props and stalls as generated GLB; characters as Meshy-rigged FBX (the auto-rig survived import 7 of 7).
65
65
  2. Blender prep at 3,000 triangles: joined, unit height, origin at base centre.
66
66
  3. A 3-angle proof render and the triangle count.
67
67
  4. Split: `.gltf` + `.bin` + `model__basecolor`, `model__normal`, `model__mr` PNGs.
68
68
  5. The texture import rule: ASTC 6×6, max 512 for props and 1024 for stalls.
69
- 6. Result: data 315 → 61 MB; the app 386 → 106 MB with the build size settings also on. Porcelain Panic went 229 → 75 MB.
69
+ 6. Result: data 315 → 61 MB; the app 386 → 106 MB with the build size settings also on. Another game went 229 → 75 MB.
70
70
 
71
71
  ## Common mistakes
72
72
 
73
- - Importing a web GLB as it is. Dawg Ball's 12 heads "did not import at all", with no error.
74
- - A prop with no collider, or art bigger than its collider. 42 Pocket Crew props could be walked through; Dead Letter's Paperweight art was 54 px taller than its collider; a Dawg Ball head drawn 1.15× its hitbox was removed.
75
- - `shader_feature` on a runtime-created material. Pocket Crew's instanced sets drew at the origin on device.
76
- - Baked data as serialised YAML in git. The Hot Gates' vertex-animation crowd assets are about 70 MB of YAML (minotaur 13.0 MB, cyclops 11.8 MB), and every re-bake adds about 70 MB to history.
73
+ - Importing a web GLB as it is. One game's 12 heads "did not import at all", with no error.
74
+ - A prop with no collider, or art bigger than its collider. 42 props in one game could be walked through; another's paperweight art was 54 px taller than its collider; a head drawn 1.15× its hitbox was removed.
75
+ - `shader_feature` on a runtime-created material. One game's instanced sets drew at the origin on device.
76
+ - Baked data as serialised YAML in git. One game's vertex-animation crowd assets are about 70 MB of YAML (minotaur 13.0 MB, cyclops 11.8 MB), and every re-bake adds about 70 MB to history.
77
77
  - Paid generations outside LFS: about 840 MB lived on one Mac.
78
- - Trusting Meshy's Idle preset. It bowed the head to the chest (Noodle Nights) and was re-keyed in Blender.
78
+ - Trusting Meshy's Idle preset. It bowed the head to the chest and was re-keyed in Blender.
@@ -38,7 +38,7 @@ is edited from, so the frames stay that character.
38
38
  the distinct poses per cycle.
39
39
  - The frames share one scale and one ground line; the feet are each frame's anchor.
40
40
  - The sheet draws every frame from the side or the front. An actor seen from above (a maze
41
- chase, a twin-stick arena) has no ground line, and a Riad Rush run got a side-view gecko back
41
+ chase, a twin-stick arena) has no ground line, and one run got a side-view gecko back
42
42
  for a top-down maze (57 credits, discarded). Give such an actor its two to four key poses as
43
43
  `edit_image` pose edits of the top-down sprite (below), stepped at the stride rate.
44
44
  - Measured (the studio's animation evals): the character holds across frames, but each
@@ -1,7 +1,7 @@
1
1
  # The cast: lock first, check second
2
2
 
3
- A game with a cast draws each member dozens of times: Gallery Heist drew its keepers 6 to 13 times
4
- each and its crew in rest, brace and cover poses; Held Note kept front, back and left pictures of
3
+ A game with a cast draws each member dozens of times: one heist game drew its keepers 6 to 13 times
4
+ each and its crew in rest, brace and cover poses; another kept front, back and left pictures of
5
5
  every character. What kept them on model was never a better sentence. It was the same picture
6
6
  attached to every call, and a look at each result against that picture before it was kept.
7
7
 
@@ -68,6 +68,6 @@ measure on any picture.
68
68
  ## What the numbers cannot see
69
69
 
70
70
  They catch a recolour, a lost signature colour, the wrong subject and a changed build. Two crew
71
- members in one uniform read close by numbers (Gallery Heist's Smudger and Carrier: 58% outline
71
+ members in one uniform read close by numbers (one heist game's two crew members: 58% outline
72
72
  overlap, the same colours). Named features (the face, the earring, what the hand holds) are the
73
73
  identity seat's: `npx @funpixel/tools judge identity --concept design/cast/ren/master.png <views…>`.
@@ -57,7 +57,7 @@ what each one measured. Pick what serves the look the game chose; a clean flat s
57
57
  9. **In a whole 3D game, read the slow frames.** Averages hide hitches: read p95/p99 at a named
58
58
  beat (the first fight, not the whole run), and name what appeared on each slow frame (a shader
59
59
  compile, a texture upload) before fixing it. Warm-up, culling skinned actors, a pixel budget,
60
- pacing to the refresh, and the leaks Held Note met: [frames.md](frames.md).
60
+ pacing to the refresh, and the leaks one game met: [frames.md](frames.md).
61
61
 
62
62
  ## Worked example
63
63
 
@@ -76,7 +76,7 @@ textures; at resolution 1 it held 4.1 MB, and on the software renderer its frame
76
76
  - A custom Pixi filter that redeclares `uInputSize` in the fragment shader: the precisions differ
77
77
  from the vertex stage and the program fails to link (a black screen). Pass a varying instead.
78
78
  - `EffectComposer` without `OutputPass`: colours come out dark and tone mapping is skipped.
79
- - A white starburst or full-screen flash on contact: Particle Rush's (Oct 2026) read as glare, one 38% clipped.
79
+ - A white starburst or full-screen flash on contact: one racer's (Oct 2026) read as glare, one 38% clipped.
80
80
  A small warm glow at the contact point, about 0.16 s, answers the hit.
81
81
  - Dither or halftone transparency in a shader: at phone size it reads as a glitch. Fade in broad, slow bands or
82
82
  real alpha. To find which module owns a fault, capture with one module off
@@ -2,13 +2,13 @@
2
2
 
3
3
  The recipe lab ([cost](cost.md)) measures one effect in a small scene. A whole game adds things a
4
4
  lab never meets: first-use compiles, a crowd of skinned actors, level rebuilds, big retina windows
5
- and displays faster than 60 Hz. This is what Held Note (a three.js third-person horror game, 29 Sep
5
+ and displays faster than 60 Hz. This is what one game (a three.js third-person horror game, 29 Sep
6
6
  2026, `design/PERF.md` in its repo) measured, and what each fix bought. The numbers are that game's
7
7
  on that machine; the causes recur.
8
8
 
9
9
  ## Smooth is a distribution, not an average
10
10
 
11
- At 78 fps average Held Note still stuttered. Read p95, p99 and the worst frame, and where the slow
11
+ At 78 fps average that game still stuttered. Read p95, p99 and the worst frame, and where the slow
12
12
  frames land. Then name each slow frame's cause before changing anything: on a hitch frame, read
13
13
  `renderer.info` for what appeared (new shader programs, textures, geometries). Every hitch it
14
14
  found had a cause that showed there.
@@ -21,7 +21,7 @@ Profile vsync-capped, as a player sees it. An uncapped run (`--disable-frame-rat
21
21
  the game's own refresh detection into cutting resolution at 2.5 ms frames. And profile on a machine
22
22
  nobody is playing on: films and profilers share the GPU and read as lag to the player.
23
23
 
24
- ## What Held Note found, and what each fix bought
24
+ ## What that game found, and what each fix bought
25
25
 
26
26
  | Symptom | Cause (measured) | Fix |
27
27
  |---|---|---|
@@ -44,13 +44,13 @@ Results on the same recorded run: desktop 1600×900 @2x worst frame 87 → 29 ms
44
44
  A 1950×1090 window at pixel ratio 1.5 is 4.8 M pixels through AO, depth of field and bloom:
45
45
  GPU-bound (p99 26 ms). On a 120 Hz display, 9 ms frames flip between 8 and 16 ms and judder.
46
46
 
47
- - **A pixel budget** caps the ratio by pixel count (Held Note: 2.6 M on desktop, 1.3 M on a phone);
47
+ - **A pixel budget** caps the ratio by pixel count (that game: 2.6 M on desktop, 1.3 M on a phone);
48
48
  the DOM HUD stays at full retina.
49
49
  - **Pace to the refresh.** Detect the refresh from the fastest frames, judge each second's p90
50
50
  against that slot, and when 120 cannot hold, lock to 60 (render every other refresh) before
51
51
  lowering resolution.
52
52
  - **Hysteresis.** Each resolution change rebuilds the post-processing targets (41 textures, a 70–100
53
- ms frame), so an oscillating scaler stutters every few seconds. Held Note's rule: no step up within
53
+ ms frame), so an oscillating scaler stutters every few seconds. Its rule: no step up within
54
54
  12 s of a step down, five fast seconds to earn one, none after two downs.
55
55
 
56
56
  Result: 119.2 fps on a 120 Hz display at 1950×1090 @2x, p99 9.4 ms, worst 17.5 ms, zero hitches.
@@ -74,7 +74,7 @@ with its animations paused, removed it.
74
74
 
75
75
  ## When something glows that should not
76
76
 
77
- "Anything that looks like a white ball is a light" held four times in Held Note: the torch's
77
+ "Anything that looks like a white ball is a light" held four times in that game: the torch's
78
78
  hotspot on a close surface, the beam cone seen end-on, coral pushed past the bloom's white point,
79
79
  and the worst one, an additive ray-marched beam seen down its own axis. From the camera behind her,
80
80
  the view ray ran down the whole lit cone and eight summed samples bloomed into a white disc that
@@ -1,6 +1,6 @@
1
1
  # Judging frames against the targets: a fixed rubric, fixes by module, eye comfort
2
2
 
3
- From Particle Rush (Oct 2026), a Unity 6 3D racer built by several module agents (world, racers, levels) and one
3
+ From a Unity 6 3D racer (Oct 2026) built by several module agents (world, racers, levels) and one
4
4
  integrator. An independent judge scored real captures against the painted targets every round; what follows is
5
5
  what held up, with its numbers. `funtools score` measures the same frames (layout, palette and light, density,
6
6
  comfort); this is the judge that reads what numbers cannot.
@@ -16,7 +16,7 @@ comfort); this is the judge that reads what numbers cannot.
16
16
 
17
17
  - **The same rubric every round**, written before seeing the frames, so a score moves only when a frame changed.
18
18
  - **Full-resolution phone captures from the real build** (the player on the target device size, not the editor, not
19
- a web stand-in): Particle Rush judged 1172×2532 frames; half-size shots hid the material detail being scored.
19
+ a web stand-in): the racer judged 1172×2532 frames; half-size shots hid the material detail being scored.
20
20
  - **Per frame:** a total, the four category scores, the change since last round, and one eye-comfort word
21
21
  (yes, mild, glare, busy, no): could a person look at it for a minute without strain?
22
22
 
@@ -26,7 +26,7 @@ Every fix names the module that owns it, `[WORLD]`, `[RACERS]`, `[LEVELS]` (or t
26
26
  frame, the pixel region and the number: "[WORLD] the sun bloom washes out the upper right (11% clipped): bloom
27
27
  intensity −50%, exposure −0.4 EV". The integrator routes each tag to that module's agent (its lane, where
28
28
  `funtools lanes` runs them), so no agent reads another's list. End with the five changes that would raise the average most,
29
- each with its expected gain; Particle Rush's round-2 list predicted 76–80 from 64.
29
+ each with its expected gain; the racer's round-2 list predicted 76–80 from 64.
30
30
 
31
31
  **Find the owner before assigning a fault.** Capture the same frame with one module turned off (a launch flag
32
32
  per module: no world dressing, no racer effects). The fault that disappears belongs to the module that was off;
@@ -34,7 +34,7 @@ a stripe under the racer that stays with the effects off is not the effects agen
34
34
 
35
35
  ## Read the categories, not only the total
36
36
 
37
- Particle Rush's round 2 rose 55.6 → 64.2, but composition gave +5.1 and effects +2.2 while light gave +0.7 and
37
+ The racer's round 2 rose 55.6 → 64.2, but composition gave +5.1 and effects +2.2 while light gave +0.7 and
38
38
  detail +0.6: the gain came from removing noise (a white halo, crossing speed lines, a fourth trail), not from
39
39
  adding quality. Calm is not finished. When light and detail stall, give materials and lighting a round of their
40
40
  own (per place: a key light, a rim, a regrade, authored hero surfaces, a bake-off of each hero asset against
@@ -48,17 +48,17 @@ frames than the targets are the goal, as long as the quality matches.
48
48
  - `funtools score` prints each frame's **busyness** (the mean brightness step between neighbouring pixels on a grey
49
49
  copy 360 px on its short side) and **clipped share** (pixels at luma ≤ 2 or ≥ 253) beside its target's, and
50
50
  stamps the zero board's `comfort` counter. It warns, never fails: over 14, over 1.25× the targets' busiest, or
51
- over 6% clipped. Particle Rush's painted targets read 9.2–15.4 there and its web frames 6.9–8.5; our liked
52
- games' frames 2.0–11.9; Gallery Heist's room read 7.8% clipped before its light round and 0 after.
51
+ over 6% clipped. The racer's painted targets read 9.2–15.4 there and its web frames 6.9–8.5; our liked
52
+ games' frames 2.0–11.9; one heist game's room read 7.8% clipped before its light round and 0 after.
53
53
  - A calm frame has room for detail: add mid-ground surface detail at about half the target's density, low
54
- contrast and slow (Particle Rush's near road, on its judge's own scale: a bottom-quarter gradient of about 3,
54
+ contrast and slow (the racer's near road, on its judge's own scale: a bottom-quarter gradient of about 3,
55
55
  against 1–2 then and 5–6 in the targets).
56
56
  - Clip sources are fixes, not taste: blown bloom, a white flash, an emissive that clips to white instead of
57
57
  keeping its colour (clamp it).
58
58
 
59
59
  ## Framing calls are the owner's
60
60
 
61
- A rubric's framing numbers are a judge's proposal. Particle Rush's rubric asked for the racer at 80% of the frame
61
+ A rubric's framing numbers are a judge's proposal. The racer's rubric asked for the racer at 80% of the frame
62
62
  width; the owner settled on about 40%. Record the owner's number as a rule in the GDD (a tuning row), tell the
63
63
  judge it is fixed and not to mark it down, and judge what fills the space the smaller hero leaves instead. Ask
64
64
  the owner before a judge's hero size, camera height or crop becomes a fix.
@@ -23,7 +23,7 @@ game, the moves below are what held our bar games' looks together.
23
23
  procedural proven by a rendered study; "primitives for now" is a stand-in, not a route).
24
24
  At the first look the world's kit stands beside the hero: sheets of its structures, ground,
25
25
  props and living cast, cut (`npx @funpixel/tools cut`) before the slice is built from them;
26
- without it a fresh Blue Freight build coded its world from shapes.
26
+ without it one fresh build coded its world from shapes.
27
27
  2. **Write five AD rules.** The critic panel reads them:
28
28
  each checkable in a frame (colour roles, outline weight, light, material, actor readability at
29
29
  a stated phone size); no universal percentage for hero size.
@@ -36,7 +36,7 @@ game, the moves below are what held our bar games' looks together.
36
36
  paying for new art. Check phone and desktop; a rule revised to excuse a defect stops measuring anything.
37
37
  For a game with a moment ladder, a target frame per moment and captures of the same seconds
38
38
  from a recorded run make a loop: name the biggest difference, fix it, recapture. Judge
39
- generated models under the game's own light, where Held Note's near-black textures were
39
+ generated models under the game's own light, where one game's near-black textures were
40
40
  lifted into white blow-outs. Both, with what they found:
41
41
  [prompts.md](prompts.md#target-frames-at-moments-and-the-loop-that-closes-the-gap).
42
42
  Match the targets' quality, not their density (`score` warns on a busy or clipped frame); the rubric,
@@ -55,7 +55,7 @@ game, the moves below are what held our bar games' looks together.
55
55
  a target, hero or key art where the comparison is worth its cost.
56
56
  - Before the game exists, `npx @funpixel/tools look --sheet` puts every sprite at play heights
57
57
  (24, 48, 96 px) on a neutral band and on the real ground colour (`roles.ground` or `--ground`)
58
- and measures each against it. The Hot Gates' sheet found its terracotta army vanishing on the
58
+ and measures each against it. One game's sheet found its terracotta army vanishing on the
59
59
  pass floor at 24 px before any game code.
60
60
  - A pixel-art look can be exact rather than imitated: `pixelArt` (scale, palette) in
61
61
  `funpixel.json` has `assets process` and `gen` snap every picture to the grid and palette, and
@@ -89,7 +89,7 @@ funpixel.json `art3d` declares it with its reason and a proof frame (skill `fp:3
89
89
 
90
90
  ## Worked example
91
91
 
92
- Fold Room's sandstone rooms wore dark pills: `look --hud` read system type, 20 dark plates and
92
+ One game's sandstone rooms wore dark pills: `look --hud` read system type, 20 dark plates and
93
93
  the scaffold's glyphs. A `## UI` section chose sandstone plaques, a carved face and an inked icon
94
94
  family; a generated plate went in through `border-image`.
95
95
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  When a game makes more than a handful of assets from text, the games that shipped best kept them
4
4
  as data: what each piece is, one style file, and a record of what made each file. Four of our
5
- games (The Last Good Robot, The Hot Gates and two more) arrived at the same shape on their own.
5
+ games arrived at the same shape on their own.
6
6
  `funtools assets` is that shape, on the shelf. Use all of it, part of it, or none: hand-made,
7
7
  procedural and one-off `gen` assets need no manifest, and nothing checks for one.
8
8
 
@@ -78,7 +78,7 @@ changed subject; `gen --only <name>` tries the same words again.
78
78
 
79
79
  ## At scale: the asset script
80
80
 
81
- Our own games carry 70 to 250 assets (Gallery Heist: 116 paintings, 183 sounds, 11 music cues, 25
81
+ Our own games carry 70 to 250 assets (one heist game: 116 paintings, 183 sounds, 11 music cues, 25
82
82
  models). Nobody calls a tool 200 times by hand. The plan's `## Asset script` is the list, one row
83
83
  per family with a count, and it becomes the manifest:
84
84
 
@@ -119,7 +119,7 @@ Taste goes to the `critic` agent, which grades craft within the declared style.
119
119
 
120
120
  ## Target frames at moments, and the loop that closes the gap
121
121
 
122
- Held Note (a three.js horror game, 29 Sep 2026) made its target frames for moments of the GDD's
122
+ A three.js horror game (29 Sep 2026) made its target frames for moments of the GDD's
123
123
  moment ladder (0:10 the moon pool, 1:00 the first enemy, 2:00 the dodge, 3:00 the splice, 5:00 the
124
124
  seam), so each capture has one picture it should match. The loop that closed its look gap:
125
125
 
@@ -134,13 +134,13 @@ floor fixed it), a camera inside lockers the hero could walk into (collision), a
134
134
  inside a door. The owner's note that started the second art pass was the same comparison: "what
135
135
  we imagined was better; we must get close to it".
136
136
 
137
- A capture only counts if it shows the moment. Held Note's third panel scored 4.9 because every
137
+ A capture only counts if it shows the moment. That game's third panel scored 4.9 because every
138
138
  view silently sat at t = 0 behind the opening shot after a refactor; looking at the captures before
139
139
  reading the score found it.
140
140
 
141
141
  ## Judging generated art in the game's own light
142
142
 
143
- A generator's preview is lit for the generator. Under the game's light Held Note's generated
143
+ A generator's preview is lit for the generator. Under its own light that game's generated
144
144
  textures read near-black, so the enemy's albedo was lifted ×1.9 to read in the dark; a few metres
145
145
  into the torch's spot it then went pure white with no face. Albedo above 1 has nowhere to go under
146
146
  a strong light. The lift went back to 1.05 and a cold rim light did the reading-in-the-dark job
@@ -153,7 +153,7 @@ When something white appears that should not, suspect a light first and hide one
153
153
 
154
154
  ## A rubric for a 3D cast, written before generating
155
155
 
156
- Held Note wrote ten lines before its first 3D model, each tied to an AD rule or a target frame, and
156
+ The horror game wrote ten lines before its first 3D model, each tied to an AD rule or a target frame, and
157
157
  turned every model on a turntable against them. Three show the shape: "light is the palette:
158
158
  surfaces desaturated, the only saturated hues amber (station), cyan (hero, safe tech), coral
159
159
  (enemies)"; "reads at phone size: at about 120 px tall the silhouette alone says what it is";
@@ -5,17 +5,17 @@ in the game's world, played on a real phone and judged every round with the same
5
5
  characters and the levels, never a layer added at the end. The controls count too: the gesture
6
6
  on the play, how it feels and how it answers, is part of the look.
7
7
 
8
- The owner played our games on an iPhone (30 Sep 2026) and named the same fault in each. Fold
9
- Room's warm sandstone rooms wore a HUD of dark app pills with cyan outlines and system type, and
10
- its title was a white bold wordmark over the scene with a cyan pill and three icon circles. Floe's
11
- frosty board sat under the same pills and stock glyphs ("better icons, not emojis"). Saltwake had
12
- heavy navy slabs; Plush Pop's title stacked panels over its basket; Lantern Night's title floated a
13
- small dark board in an empty sky. Riad Rush looked better only because its creator happened to
14
- carve its HUD from the riad's wood. The cause was ours: the look's direction covered the world,
8
+ The owner played our games on an iPhone (30 Sep 2026) and named the same fault in each. A puzzle
9
+ game's warm sandstone rooms wore a HUD of dark app pills with cyan outlines and system type, and
10
+ its title was a white bold wordmark over the scene with a cyan pill and three icon circles. An ice puzzle's
11
+ frosty board sat under the same pills and stock glyphs ("better icons, not emojis"). A racer had
12
+ heavy navy slabs; a toy game's title stacked panels over its basket; a night game's title floated a
13
+ small dark board in an empty sky. One game looked better only because its creator happened to
14
+ carve its HUD from its world's wood. The cause was ours: the look's direction covered the world,
15
15
  the cast and the target frames, but not the interface, so every game fell back to the scaffold's
16
- dark pill. All three of Fold Room, Floe and Lantern Night still ship the scaffold's own glyphs.
16
+ dark pill. Three of them still ship the scaffold's own glyphs.
17
17
 
18
- We had the answer already. The Last Good Robot's GDD: "Every screen is drawn in the factory's own
18
+ We had the answer already. One of our games' GDD: "Every screen is drawn in the factory's own
19
19
  kit (riveted steel plates, one hazard stripe, stencil type) and speaks in the world's voice. A
20
20
  screen that isn't specified gets invented by whoever reaches it first." So the look covers the UI
21
21
  by default, and the GDD specifies every screen in the world's kit: the screen list (title, how to
@@ -58,7 +58,7 @@ plan-at-size): a plate, a button in its states, a frame for cards, the icon fami
58
58
  with the game (two families at most); a system stack is a choice to name, not a default.
59
59
  3. **One icon family, drawn like the art.** Pause, sound, hint, undo, stars and the currency are
60
60
  one set: the art's outline weight, its corner radius, its two-tone fill, the palette's roles, a
61
- motif of the world (Fold Room's sun banner, Floe's snowflake). Never a stock glyph set or emoji.
61
+ motif of the world (a sun banner, a snowflake). Never a stock glyph set or emoji.
62
62
  Read them at 24 and 48 px on the plate they sit on.
63
63
  4. **Colour roles from the palette.** Plate, plate edge, ink on the plate, the one accent (and what
64
64
  it means), harm. Contrast is computed: 4.5:1 for text, 3:1 for icons (skill
@@ -106,7 +106,7 @@ better. Five that fit most genres:
106
106
  | Objects of the world | plates, plaques, tags and buttons made of the world's material | puzzle, adventure, cosy, 3D rooms |
107
107
  | The frame holds the numbers | the board's or jar's own frame carries score and next | merge, match, board puzzles |
108
108
  | The thin bar | one slim strip along an edge, everything else on the actors | cards, strategy, roguelikes |
109
- | On the actor | health and state on the hero or the tool (Held Note: "the suit is the HUD", a wrist gauge strapped to her arm) | action, platformers, 3D |
109
+ | On the actor | health and state on the hero or the tool (a horror game: "the suit is the HUD", a wrist gauge strapped to her arm) | action, platformers, 3D |
110
110
  | Paper and ink | margin notes, stamps, torn labels, a hand-drawn line | narrative, cosy, crafting |
111
111
 
112
112
  Then make it this game's: `npx @funpixel/tools variety` sets the title screen beside the other
@@ -133,8 +133,8 @@ game's style from its style frame and saved under `design/first-look/`; each is
133
133
  the plan and judged like the HUD:
134
134
  - **The title** is the game's first promise and the frame a player judges first. Title key art:
135
135
  the game's own scene, never a board preview floating on a flat colour. The overlay comes from the
136
- world: the wordmark carved into or lit on its surface, the start as a thing of the world (Fold
137
- Room's glowing fold: step in to start), menu buttons of the world's material, icons drawn like
136
+ world: the wordmark carved into or lit on its surface, the start as a thing of the world (a
137
+ glowing fold: step in to start), menu buttons of the world's material, icons drawn like
138
138
  its motifs, the caption in the display face. Ask of it what a player asks: does it make me want
139
139
  to press Play? A white bold wordmark over a pill and three icon circles is the overlay the
140
140
  owner called plain, however good the scene behind it.
@@ -150,8 +150,8 @@ the plan and judged like the HUD:
150
150
  `fp:verifying`, fidelity).
151
151
  - `npx @funpixel/tools look --hud` reads the play and the title for the scaffold's clothes: the
152
152
  system type stack, dark neutral plates, the scaffold's own glyphs, icons typed as characters (a
153
- "★" or an emoji in a label, what the owner called "emojis" on Floe), a wordmark that is plain
154
- system text (a gradient washed over it is still system text: Floe's R4 title). It informs; a creator who chose any of them names why in the hand-back.
153
+ "★" or an emoji in a label, what the owner called "emojis" on one game), a wordmark that is plain
154
+ system text (a gradient washed over it is still system text: one game's R4 title). It informs; a creator who chose any of them names why in the hand-back.
155
155
 
156
156
  How to dress the scaffold's HUD and screens, with worked examples: skill `fp:mobile-ui`, its
157
157
  reference `restyle-ui.md`.
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Tools
6
6
 
7
- The studio's `com.joydle.core` package carries two of the import rules (fp:unity-game, `references/studio-packages.md`): `SplashImport` scales the studio splash's parts to a power of two with mipmaps, and `BuildTools.TestFlight` refuses to build without `Assets/_Game/Art/Icon/app_icon.png`, importing it at 1024, uncompressed, no alpha. Not shipped by the kit or the package: the Unity starter, its checks and the studio scripts (`key_green.py`, `cut_sheet.py`, a font builder). Do the rest with what exists:
7
+ Have the build method refuse to build without `Assets/_Game/Art/Icon/app_icon.png`, imported at 1024, uncompressed, no alpha. Not shipped by the kit: the Unity starter, its checks and the studio scripts (`key_green.py`, `cut_sheet.py`, a font builder). Do the rest with what exists:
8
8
 
9
9
  - Generate with the hosted `generate_image` or `generate_sprite`, or `npx @funpixel/tools gen sprite "<prompt>" --size 1024x1024 --references target.png --unity .`: into `Assets/_Game/Generated/Sprites/` (`Images/` for plates, `Textures/` for tiles), imported on first sight as Sprite, no mipmaps, ASTC 5×5 (plates 6×6), by the rule it writes beside them (`Generated/Editor/FunpixelGenImport.cs`; no `.meta` written). Sign in once with `npx @funpixel/tools login`. Give the size: a 9:16 default made a 720×1280 icon. The studio's `gen_image.py` calls the provider with a `.env` key: no metering, no cost log.
10
10
  - Key with the hosted `key_sprite`, or ask for `--transparent` art; cut a sheet with `npx @funpixel/tools parts sheet.png --grid 4x2 --key auto` (or `cut` for a painted reference sheet).
@@ -18,7 +18,7 @@ Checks: `texture_audit`, `glyph_coverage`, `tmp_assets_small` and `import_clean`
18
18
  ## Procedure
19
19
 
20
20
  1. Generate sheets against the game's target image, on a green screen, and key them (`key_sprite`, or `--transparent` art). Background removal with BiRefNet ate white objects (a whole plate).
21
- 2. Read every word in generated art by OCR; the report's example is "JOTDLB". Which OCR tool is not in the report.
21
+ 2. Read every word in generated art by OCR; a misspelt logo got through. Which OCR tool is not in the report.
22
22
  3. Check sprite fill: 0.85 or more of the canvas. One sprite filled only 73%. How to measure fill is not in the report.
23
23
  4. Rasterise at the size the sprite is drawn. The reason is not in the report.
24
24
  5. Reuse web art: `dwebp` to PNG, pivots from the web's anchors at 100 pixels per unit.
@@ -31,7 +31,7 @@ Checks: `texture_audit`, `glyph_coverage`, `tmp_assets_small` and `import_clean`
31
31
  | Splash, any mipmapped art | scaled to power of two |
32
32
  | App icon | 1024×1024, uncompressed, no alpha |
33
33
 
34
- 7. Pick the ASTC block by role and measure it: round-trip each atlas with astcenc, and use 4×4 if it scores under 35 dB. 6×6 put ringing on Scrap Riot's ink outlines (27–35 dB); 4×4 everywhere costs +2.4 MB.
34
+ 7. Pick the ASTC block by role and measure it: round-trip each atlas with astcenc, and use 4×4 if it scores under 35 dB. 6×6 put ringing on one game's ink outlines (27–35 dB); 4×4 everywhere costs +2.4 MB.
35
35
  8. Use one material per atlas.
36
36
  9. Match colour space to the source renderer on day one. Pixi and canvas blend in gamma; under Linear their translucent overlays were about 2× too strong.
37
37
  10. After swapping a PNG, check its sprite rect. A PNG of a new size keeps the old rect and Unity drops the sprite; re-importing an atlas regenerates sprite ids. `import_clean`: a fresh import gives 0 `.meta` diffs and every rect fits its texture.
@@ -42,37 +42,37 @@ Text and glyphs:
42
42
  12. Import TMP Essential Resources first, once in the Editor, or `CreateFontAsset` returns null (`funtools doctor` fails a project without them).
43
43
  13. Build fonts from the full font file. A web subset lacked Ş, Ğ and İ; Nunito lacks ▶, ◀ and ★.
44
44
  14. Run `glyph_coverage`: every character in UI strings and names exists in the atlas, 0 missing.
45
- 15. Warm every glyph behind the title screen. First-use baking cost 183–266 ms in Dawg Ball and 50–270 ms in Pocket Crew (17–20 ms after warm-up); a missing glyph was The Hot Gates' last 48 ms hitch.
45
+ 15. Warm every glyph behind the title screen. First-use baking cost 183–266 ms in one game and 50–270 ms in another (17–20 ms after warm-up); a missing glyph was a third game's last 48 ms hitch.
46
46
  16. Atlases are 1024×1024 SDF, sampling 64–90, padding 8–12. The report does not settle static against dynamic.
47
47
 
48
48
  | Atlas | Cost | Seen in |
49
49
  |---|---|---|
50
- | Static | about 5 MB for 1024² atlases | Scrap Riot, which then went dynamic |
51
- | Dynamic | rewritten by every batch run, conflicts on every merge, 8 MB each in git after captures | Pocket Crew (`Nunito ExtraBold SDF.asset`) |
50
+ | Static | about 5 MB for 1024² atlases | one game, which then went dynamic |
51
+ | Dynamic | rewritten by every batch run, conflicts on every merge, 8 MB each in git after captures | one game (`Nunito ExtraBold SDF.asset`) |
52
52
 
53
53
  If dynamic, clear the atlases after captures. `tmp_assets_small`: every `*SDF.asset` in git under 50 KB.
54
54
  17. Ship TMP outline and underlay variants as material assets (`Resources/UiFontVariants`). Variants of materials made at runtime are stripped from release builds.
55
55
  18. Use `textWrappingMode`; `enableWordWrapping` is obsolete in Unity 6 (`funtools doctor` warns).
56
- 19. Judge icon candidates small and against competitors: The Hot Gates masked them at 100, 60 and 40 px in a mock search row with 41 competitor icons, for $5.95.
56
+ 19. Judge icon candidates small and against competitors: one game masked them at 100, 60 and 40 px in a mock search row with 41 competitor icons, for $5.95.
57
57
 
58
58
  ## Worked example
59
59
 
60
- Dead Letter (a 2D port from Pixi), texture pass:
60
+ A 2D port from Pixi, texture pass:
61
61
 
62
62
  1. Web sprites as PNG; pivots from the web's anchors at 100 pixels per unit, set in the game's setup script.
63
63
  2. Colour space switched from Linear to Gamma, because translucent overlays were about 2× too strong.
64
64
  3. ASTC by role: painted plates 8×8, sprites 6×6, hero and HUD art 5×5.
65
65
  4. Result: textures 69 → 50 MB with no visible change.
66
- 5. The power-of-two splash fix (PR #14) made every game 7–8 MiB smaller; Koi Out's resources went 11.7 → 3.8 MB.
66
+ 5. The power-of-two splash fix made every game 7–8 MiB smaller; one game's resources went 11.7 → 3.8 MB.
67
67
 
68
68
  ## Common mistakes
69
69
 
70
70
  - A mipmapped texture that is not a power of two. The splash shipped 10.3 MB raw in every game.
71
- - One block size for everything. 6×6 rang the ink outlines on Scrap Riot's atlases.
72
- - Text in generated art not read: "JOTDLB" (game not named).
71
+ - One block size for everything. 6×6 rang the ink outlines on one game's atlases.
72
+ - Text in generated art not read: a misspelt logo (game not named).
73
73
  - Art that does not fill its canvas: spool art at 73% fill (game not named).
74
74
  - A swapped PNG that kept its old sprite rect: an empty logo on TestFlight (game not named).
75
75
  - A subset font: "KARABAŞ" broke (game not named).
76
- - Outline variants not shipped: outlined numbers drew as cream blobs in The Hot Gates' player build.
77
- - Dynamic atlases left after captures: 8 MB each in git. Two review builds (Dead Letter, Scrap Riot) carried uncommitted reimports of 4 TMP font assets, so main no longer matched what Apple reviewed.
78
- - Icons by prompt: Dawg Ball spent $21.46 over 7 rounds before a pick; round one came out 720×1280 from the 9:16 default.
76
+ - Outline variants not shipped: outlined numbers drew as cream blobs in one game's player build.
77
+ - Dynamic atlases left after captures: 8 MB each in git. Two review builds carried uncommitted reimports of 4 TMP font assets, so main no longer matched what Apple reviewed.
78
+ - Icons by prompt: one game spent $21.46 over 7 rounds before a pick; round one came out 720×1280 from the 9:16 default.