@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,127 +0,0 @@
1
- # The studio's Unity packages
2
-
3
- The studio's two packages, `com.joydle.core` (0.1.0) and `com.joydle.firebase`, are optional: the
4
- games inside its repository use both, Knockout Lap, Gallery Heist and Particle Rush the core only,
5
- and Floe Jam neither. They live in that repository, `joydle/joydle-games` (private: the person needs
6
- read access), under `packages/`. A game that uses them never writes their pieces again. The field report's starter
7
- is "the SDK wired, switched off" (Starter project), and a fix made in the package reached every game at
8
- once (§1). Read as of 9 Oct 2026, from the packages' own code; what changes there wins over this page.
9
-
10
- ## Adding them
11
-
12
- Every project lists them by `file:` path. Inside the repository that is `file:../../../packages/…`;
13
- the three outside it (Knockout Lap, Gallery Heist, Particle Rush) use `file:../../joydle-games/packages/…`
14
- (Knockout Lap, one folder deeper, `../../../`), so `joydle-games` must be cloned beside them, and
15
- `funtools doctor` warns when the path is missing. A git URL pinned to a commit needs no sibling
16
- clone (`#main` moves under a store build); no project uses one yet. Run `git lfs install` first: the splash's pictures and sounds are LFS files, and without it they arrive as
17
- pointer files. Inside the repository the same holds for a checkout whose LFS files were never pulled.
18
- `funtools doctor` in the game finds pointer files in Assets, Packages, every local package and the
19
- package cache, and names the repository to run `git lfs pull` in; run it before a build.
20
-
21
- ```json
22
- "dependencies": {
23
- "com.joydle.core": "file:../../joydle-games/packages/com.joydle.core",
24
- "com.joydle.firebase": "file:../../joydle-games/packages/com.joydle.firebase",
25
- "com.unity.inputsystem": "1.20.0",
26
- "com.unity.render-pipelines.universal": "17.6.0",
27
- "com.unity.test-framework": "1.8.0",
28
- "com.unity.ugui": "2.6.0"
29
- }
30
- ```
31
-
32
- The pinned form is `https://github.com/joydle/joydle-games.git?path=/packages/com.joydle.core#<commit>`.
33
-
34
- - `com.unity.inputsystem` goes in the game's own manifest: the core's assembly references it and its
35
- `package.json` does not pull it in. Set the player to the new Input System only.
36
- - `com.unity.purchasing` 5.4.3 comes with the core (StoreKit 2 on iOS, Play Billing on Android).
37
- - The Firebase package needs Google's packages at 13.17.0 (app, analytics, crashlytics) and the External
38
- Dependency Manager 1.2.189. The games repository keeps their `.tgz` files in `packages/vendor/` (LFS)
39
- and lists them by `file:` path; another project keeps the same versions in its own folder, in LFS.
40
- Each game has its own Firebase project, with its config file under `Assets/`.
41
- - Take out what no game uses: collab-proxy, learn, visual scripting, the Aseprite and PSD importers
42
- (Scrap Riot also dropped 2D animation, sprite shape, tilemap extras and timeline: 88 → 78 MiB). Keep
43
- what a game uses: Gallery Heist loads its rooms through Addressables 4.1 (built into the app, no
44
- remote catalog) and aims its camera with Cinemachine 6.6, beside VFX Graph, Splines and Timeline.
45
- No game uses DOTween (`Juice` tweens).
46
-
47
- ## What each piece gives, and the rule it settles
48
-
49
- Editor side of `com.joydle.core`:
50
-
51
- | Piece | What it does | Settles |
52
- |---|---|---|
53
- | `ProjectConfig.ApplyIOS(name, bundleId, version, landscape)` | Company name, bundle id, IL2CPP, iOS 16, iPhone only, a fixed orientation, status bar hidden, Unity splash off; switches the build target to iOS | settings by script, not a copied file (`funpixel-unity-game` step 6). It does not set colour space, 48 kHz, render scale, ProMotion, the accelerometer or physics: `Setup.Configure` sets those after it |
54
- | `ProjectConfig.ApplyAndroid(packageName)` | API 26 to 36 (pinned), ARM64, IL2CPP, App Category game, GameActivity, full screen under cutouts, R8 off (it strips Firebase and purchase classes reached by reflection) | the Android half of the same rule |
55
- | `BuildTools.Simulator`, `SimulatorDev`, `SimulatorMuted`, `Device`, `TestFlight` | Headless iOS builds (`-executeMethod Joydle.Core.Editor.BuildTools.TestFlight`) into `Builds/iOS-sim` or `Builds/iOS`. Every build applies the size settings (stripping High, engine stripping, IL2CPP OptimizeSize, unused mesh channels off); LZ4HC when `ProjectSettings/JoydleLz4hc.txt` exists. `TestFlight` sets the studio's team and automatic signing, and the build number (`JOYDLE_BUILD_NUMBER`, else a `yyMMddHHmm` stamp) and refuses to build without `Assets/_Game/Art/Icon/app_icon.png`. `SimulatorMuted` turns audio off for that one build and restores it | size settings and LZ4HC ([performance](performance.md) step 8); the icon gate (Porcelain Panic shipped Unity's default icon); the CoreAudio wedge on a Simulator relaunched many times |
56
- | `BuildTools.Android`, `AndroidApk`, `AndroidDev`, `VersionCode()` | A signed `.aab` with its symbols (refuses without `JOYDLE_KEYSTORE` and `JOYDLE_KEYSTORE_PASS`); a release `.apk` for tests that reads launch args (never upload it); versionCode = minutes since 1 Jan 2026, because the iOS stamp is over Play's 2,100,000,000 cap | Android, planned in the report and built since (§15) |
57
- | `IosPostprocess` | Writes `ITSAppUsesNonExemptEncryption` false and stamps every embedded framework's minimum OS with the app's | ITMS-90208 (`funpixel-store`) |
58
- | `JoydleLaunch` | A black launch storyboard under its own name, for games that play the splash | iOS caches a launch screen by name across updates (§10) |
59
- | `SplashImport` | Splash parts scaled to a power of two, mipmapped, compressed | 10.3 MB of raw splash in every game, now about 2.6 MB |
60
- | `TextureBudget` | Textures named `model__basecolor.png` (and `__normal`, `__mr`, `__emissive`) under an `Art/` or `Models/` folder: ASTC 6×6, mipmaps, sRGB only for base colour and emissive, at most 512 under `Food/`, `Props/` or `Characters/`, else 1024 | glTFast's raw RGBA32 model textures (`funpixel-3d`, Unity page) |
61
- | `AndroidManifestPost` | Adds the vibrate permission the haptics need | |
62
-
63
- Runtime side of `com.joydle.core`:
64
-
65
- | Piece | What it does | Settles |
66
- |---|---|---|
67
- | `Sfx.Create(music)`, `Play(clip, volume)`, `Sfx.EnsureListener()` | 8 pooled one-shots with pitch jitter 0.06, one looping music source at 0.45, and exactly one AudioListener | the four silent TestFlight builds (`funpixel-audio`, Unity page, step 1) |
68
- | `Haptics.Light`, `Medium`, `Heavy`, `Success`, `Error` | iOS taptics through the package's native plugin, Android vibration effects; off when `Settings.Haptics` is | haptics by strength (`funpixel-game-feel`, Unity page). The 80–90 ms throttle and the 120 ms merge are the game's |
69
- | `Juice.Tween`, `Pop`, `Shake`, `EaseOutBack`, `EaseOutCubic`, `EaseInQuad`, `Ring`, `Dot`, `Rounded` | Coroutine tweens with the defaults the games used (pop 0.18 over 0.22 s, shake 0.08 over 0.25 s); a pop keeps the true rest scale | the compounding pop, fixed once for every game |
70
- | `UiKit` | A canvas scaled at 1170×2532 (match 0.5), a `Safe` rect from `Screen.safeArea`, rounded panels, text, buttons that pop, modal cards, a dim layer, `FitToContent`; text and images take no taps | the code-built UI and the Restore label that covered the shop card (`funpixel-mobile-ui`, Unity page). `Safe` is read once when the kit is made, and the landscape island-side rule is not in it |
71
- | `LaunchArgs.Get()` | Launch arguments: on iOS from the native process (Mono never sees `simctl launch` args), on Android from the intent extra `joydle_args`, in development builds and test APKs only | the basis of every automation flag. On iOS it is not gated: read it through the game's own wrapper that returns nothing unless `Debug.isDebugBuild` (Scrap Riot's), or a release build obeys an unlock flag (§1) |
72
- | `Settings.Music`, `Sound`, `Haptics` | The three player toggles, kept in PlayerPrefs | |
73
- | `Telemetry.Event`, `LevelStart`, `LevelEnd`, `TutorialComplete`, `ShopOpen`, `Log`; `Telemetry.Muted` | The one analytics and crash boundary; logs to the console in a development build with no sink | mute it under every dev flag: autoplay and capture runs must not reach analytics |
74
- | `IapService(catalog, grant)` with `Init`, `Buy`, `Restore(done)`, `Price`, `Refetch` | Unity IAP 5. Grants in the pending-order handler once per transaction, then confirms; non-consumables come back from confirmed orders on every fetch; `Restore(done)` asks StoreKit to sync on iOS and answers true or false; `Price` is the store's localised string | the double grant (fixed on main on 7 Oct; a game built before needs a new build), Restore that ends (`funpixel-store`) |
75
- | `Ads.CreateDefault(font)`, `Ads.Available`, `Ads.ShouldShowInterstitial(level, noAds)` | Test ads in development builds and the Editor, none in release; interstitials from level 15, every third level, never for a No Ads buyer | hide every ad button and No Ads while `Ads.Service` is null |
76
- | `JoydleSplash` | The studio splash, 4.25 s, tap to skip after 1 s. A game opts in with a text asset `Resources/JoydleSplashOn`; it holds the game's audio, waits for the first scene and 10 smooth frames (1 s floor, 3 s cap), and is skipped in the Editor and on any launch with a `-flag` (`-splash` forces it); `JoydleSplash.Playing` says when it is up | "add joydle splash … as we did for other games" (the owner, twice) |
77
- | `BackButton.PressedThisFrame`, `AndroidSystem.MoveToBack()`, `AndroidSystem.Density` | Android Back read from input events, since Back arrives pressed and released inside one frame and polling misses it; leave the app from the root screen; the dp scale | |
78
-
79
- `com.joydle.firebase` boots itself before the first scene and installs Analytics and Crashlytics as
80
- `Telemetry`'s sink (uncaught exceptions are fatal reports); the Editor keeps the console. It hands its
81
- `link.xml` to the linker and marks its assembly always linked, because High stripping removed it and
82
- Firebase never started in release builds (3 broken uploads). It pins the no-tracking setup: no
83
- advertising identifier and no ad personalisation in the iOS plist, the advertising-id and ad-services
84
- permissions removed on Android. That is what lets the privacy answers say nothing is used for
85
- tracking, with no tracking prompt.
86
-
87
- ## A studio splash
88
-
89
- A game never makes its own splash or a "Funpixel presents" card, package or not: the opening belongs
90
- to the studio that makes the game, or to nothing. A studio's splash comes from its package, so one
91
- fix reaches every game. Today
92
- that is Joydle Core's `Joydle.Core.JoydleSplash` (read from its code on 10 Oct 2026; the code wins
93
- over this table). A project on another studio's package wires that package's splash the same way; a
94
- project with none ships no splash.
95
-
96
- | Day-one rule | How `JoydleSplash` does it |
97
- |---|---|
98
- | Opt in, once | A text asset that `Resources.Load<TextAsset>("JoydleSplashOn")` finds, such as `Assets/_Game/Resources/JoydleSplashOn.txt` (the games write one line: what it does and "Delete this file to turn it off"), with its `.meta` committed. Nothing else is called: the package boots it before the first scene loads (`RuntimeInitializeOnLoadMethod(BeforeSceneLoad)`) |
99
- | Before the first scene, on top | A `DontDestroyOnLoad` object with an overlay canvas at sorting order 32000. It waits for the first scene and 10 smooth frames (1 s floor, 3 s cap), then plays 4.25 s; a tap skips it after 1 s. On iOS `JoydleLaunch` makes the launch screen the black it opens on |
100
- | Holds the game's audio | `AudioListener.pause` is true until it ends; its own sounds ignore the pause and follow `Settings.Sound` |
101
- | Skipped in the Editor and on any flag | `Application.isEditor`, or any argument from `LaunchArgs.Get()` that starts with `-` (every automation, capture and test launch passes one); `-splash` forces it, to see it on the Simulator |
102
- | Title music waits | `JoydleSplash.Playing` is true from before the first scene until the fade ends (false when it was skipped): start the title music once it is false. Pocket Crew also hides its loading view while it is up |
103
- | The studio credit | Every credit line (Settings, About, an end card) names the studio, Joydle, and never Funpixel |
104
-
105
- Its pictures and sounds are LFS files under the package's `Runtime/Resources/JoydleSplash/`. On a Mac
106
- where the studio repository's LFS files were not pulled they are pointer text: the splash draws
107
- blank parts and stays silent, and Unity logs "FSBTool ERROR: Failed decoding audio clip" for each
108
- `JoydleSplash/*.wav` in every build. `funtools doctor` fails on them and says where to pull.
109
-
110
- ## What they do not give
111
-
112
- What each game still writes by hand (§1): import rules (or `funtools gen --unity`'s, for what it
113
- makes), the `SceneBuilder`, the TMP font builder, capture tools, the launch-flag dev gate, a safe-area
114
- root off `UiKit`, the frame governor, saves, Firebase's Simulator stubs (its C++ SDK has no arm64
115
- Simulator slice), a smoke driver and a UI audit. The repository's scripts are not in the packages.
116
-
117
- ## Rules for changing them
118
-
119
- - Fix a shared bug in the package, once, never in one game's copy. The pop and the AudioListener fixes
120
- reached four games at once; the purchase double grant lived on one branch while four games still had
121
- it (§1).
122
- - A change to the build pipeline every game shares (`BuildTools`) comes with a per-game opt-in marker,
123
- as `JoydleLz4hc.txt` does, and a person looks before it lands (§10).
124
- - Additive only: a game built on 0.1.0 keeps building.
125
- - `BuildTools.TestFlight` signs automatically for the studio's own Apple team (KBAT76634X), and
126
- `ApplyIOS` writes its company name. A game for another team needs its own build method until the
127
- package takes a team per game.
@@ -1,127 +0,0 @@
1
- # The studio's Unity packages
2
-
3
- The studio's two packages, `com.joydle.core` (0.1.0) and `com.joydle.firebase`, are optional: the
4
- games inside its repository use both, Knockout Lap, Gallery Heist and Particle Rush the core only,
5
- and Floe Jam neither. They live in that repository, `joydle/joydle-games` (private: the person needs
6
- read access), under `packages/`. A game that uses them never writes their pieces again. The field report's starter
7
- is "the SDK wired, switched off" (Starter project), and a fix made in the package reached every game at
8
- once (§1). Read as of 9 Oct 2026, from the packages' own code; what changes there wins over this page.
9
-
10
- ## Adding them
11
-
12
- Every project lists them by `file:` path. Inside the repository that is `file:../../../packages/…`;
13
- the three outside it (Knockout Lap, Gallery Heist, Particle Rush) use `file:../../joydle-games/packages/…`
14
- (Knockout Lap, one folder deeper, `../../../`), so `joydle-games` must be cloned beside them, and
15
- `funtools doctor` warns when the path is missing. A git URL pinned to a commit needs no sibling
16
- clone (`#main` moves under a store build); no project uses one yet. Run `git lfs install` first: the splash's pictures and sounds are LFS files, and without it they arrive as
17
- pointer files. Inside the repository the same holds for a checkout whose LFS files were never pulled.
18
- `funtools doctor` in the game finds pointer files in Assets, Packages, every local package and the
19
- package cache, and names the repository to run `git lfs pull` in; run it before a build.
20
-
21
- ```json
22
- "dependencies": {
23
- "com.joydle.core": "file:../../joydle-games/packages/com.joydle.core",
24
- "com.joydle.firebase": "file:../../joydle-games/packages/com.joydle.firebase",
25
- "com.unity.inputsystem": "1.20.0",
26
- "com.unity.render-pipelines.universal": "17.6.0",
27
- "com.unity.test-framework": "1.8.0",
28
- "com.unity.ugui": "2.6.0"
29
- }
30
- ```
31
-
32
- The pinned form is `https://github.com/joydle/joydle-games.git?path=/packages/com.joydle.core#<commit>`.
33
-
34
- - `com.unity.inputsystem` goes in the game's own manifest: the core's assembly references it and its
35
- `package.json` does not pull it in. Set the player to the new Input System only.
36
- - `com.unity.purchasing` 5.4.3 comes with the core (StoreKit 2 on iOS, Play Billing on Android).
37
- - The Firebase package needs Google's packages at 13.17.0 (app, analytics, crashlytics) and the External
38
- Dependency Manager 1.2.189. The games repository keeps their `.tgz` files in `packages/vendor/` (LFS)
39
- and lists them by `file:` path; another project keeps the same versions in its own folder, in LFS.
40
- Each game has its own Firebase project, with its config file under `Assets/`.
41
- - Take out what no game uses: collab-proxy, learn, visual scripting, the Aseprite and PSD importers
42
- (Scrap Riot also dropped 2D animation, sprite shape, tilemap extras and timeline: 88 → 78 MiB). Keep
43
- what a game uses: Gallery Heist loads its rooms through Addressables 4.1 (built into the app, no
44
- remote catalog) and aims its camera with Cinemachine 6.6, beside VFX Graph, Splines and Timeline.
45
- No game uses DOTween (`Juice` tweens).
46
-
47
- ## What each piece gives, and the rule it settles
48
-
49
- Editor side of `com.joydle.core`:
50
-
51
- | Piece | What it does | Settles |
52
- |---|---|---|
53
- | `ProjectConfig.ApplyIOS(name, bundleId, version, landscape)` | Company name, bundle id, IL2CPP, iOS 16, iPhone only, a fixed orientation, status bar hidden, Unity splash off; switches the build target to iOS | settings by script, not a copied file (`fp:unity-game` step 6). It does not set colour space, 48 kHz, render scale, ProMotion, the accelerometer or physics: `Setup.Configure` sets those after it |
54
- | `ProjectConfig.ApplyAndroid(packageName)` | API 26 to 36 (pinned), ARM64, IL2CPP, App Category game, GameActivity, full screen under cutouts, R8 off (it strips Firebase and purchase classes reached by reflection) | the Android half of the same rule |
55
- | `BuildTools.Simulator`, `SimulatorDev`, `SimulatorMuted`, `Device`, `TestFlight` | Headless iOS builds (`-executeMethod Joydle.Core.Editor.BuildTools.TestFlight`) into `Builds/iOS-sim` or `Builds/iOS`. Every build applies the size settings (stripping High, engine stripping, IL2CPP OptimizeSize, unused mesh channels off); LZ4HC when `ProjectSettings/JoydleLz4hc.txt` exists. `TestFlight` sets the studio's team and automatic signing, and the build number (`JOYDLE_BUILD_NUMBER`, else a `yyMMddHHmm` stamp) and refuses to build without `Assets/_Game/Art/Icon/app_icon.png`. `SimulatorMuted` turns audio off for that one build and restores it | size settings and LZ4HC ([performance](performance.md) step 8); the icon gate (Porcelain Panic shipped Unity's default icon); the CoreAudio wedge on a Simulator relaunched many times |
56
- | `BuildTools.Android`, `AndroidApk`, `AndroidDev`, `VersionCode()` | A signed `.aab` with its symbols (refuses without `JOYDLE_KEYSTORE` and `JOYDLE_KEYSTORE_PASS`); a release `.apk` for tests that reads launch args (never upload it); versionCode = minutes since 1 Jan 2026, because the iOS stamp is over Play's 2,100,000,000 cap | Android, planned in the report and built since (§15) |
57
- | `IosPostprocess` | Writes `ITSAppUsesNonExemptEncryption` false and stamps every embedded framework's minimum OS with the app's | ITMS-90208 (`fp:store`) |
58
- | `JoydleLaunch` | A black launch storyboard under its own name, for games that play the splash | iOS caches a launch screen by name across updates (§10) |
59
- | `SplashImport` | Splash parts scaled to a power of two, mipmapped, compressed | 10.3 MB of raw splash in every game, now about 2.6 MB |
60
- | `TextureBudget` | Textures named `model__basecolor.png` (and `__normal`, `__mr`, `__emissive`) under an `Art/` or `Models/` folder: ASTC 6×6, mipmaps, sRGB only for base colour and emissive, at most 512 under `Food/`, `Props/` or `Characters/`, else 1024 | glTFast's raw RGBA32 model textures (`fp:3d`, Unity page) |
61
- | `AndroidManifestPost` | Adds the vibrate permission the haptics need | |
62
-
63
- Runtime side of `com.joydle.core`:
64
-
65
- | Piece | What it does | Settles |
66
- |---|---|---|
67
- | `Sfx.Create(music)`, `Play(clip, volume)`, `Sfx.EnsureListener()` | 8 pooled one-shots with pitch jitter 0.06, one looping music source at 0.45, and exactly one AudioListener | the four silent TestFlight builds (`fp:audio`, Unity page, step 1) |
68
- | `Haptics.Light`, `Medium`, `Heavy`, `Success`, `Error` | iOS taptics through the package's native plugin, Android vibration effects; off when `Settings.Haptics` is | haptics by strength (`fp:game-feel`, Unity page). The 80–90 ms throttle and the 120 ms merge are the game's |
69
- | `Juice.Tween`, `Pop`, `Shake`, `EaseOutBack`, `EaseOutCubic`, `EaseInQuad`, `Ring`, `Dot`, `Rounded` | Coroutine tweens with the defaults the games used (pop 0.18 over 0.22 s, shake 0.08 over 0.25 s); a pop keeps the true rest scale | the compounding pop, fixed once for every game |
70
- | `UiKit` | A canvas scaled at 1170×2532 (match 0.5), a `Safe` rect from `Screen.safeArea`, rounded panels, text, buttons that pop, modal cards, a dim layer, `FitToContent`; text and images take no taps | the code-built UI and the Restore label that covered the shop card (`fp:mobile-ui`, Unity page). `Safe` is read once when the kit is made, and the landscape island-side rule is not in it |
71
- | `LaunchArgs.Get()` | Launch arguments: on iOS from the native process (Mono never sees `simctl launch` args), on Android from the intent extra `joydle_args`, in development builds and test APKs only | the basis of every automation flag. On iOS it is not gated: read it through the game's own wrapper that returns nothing unless `Debug.isDebugBuild` (Scrap Riot's), or a release build obeys an unlock flag (§1) |
72
- | `Settings.Music`, `Sound`, `Haptics` | The three player toggles, kept in PlayerPrefs | |
73
- | `Telemetry.Event`, `LevelStart`, `LevelEnd`, `TutorialComplete`, `ShopOpen`, `Log`; `Telemetry.Muted` | The one analytics and crash boundary; logs to the console in a development build with no sink | mute it under every dev flag: autoplay and capture runs must not reach analytics |
74
- | `IapService(catalog, grant)` with `Init`, `Buy`, `Restore(done)`, `Price`, `Refetch` | Unity IAP 5. Grants in the pending-order handler once per transaction, then confirms; non-consumables come back from confirmed orders on every fetch; `Restore(done)` asks StoreKit to sync on iOS and answers true or false; `Price` is the store's localised string | the double grant (fixed on main on 7 Oct; a game built before needs a new build), Restore that ends (`fp:store`) |
75
- | `Ads.CreateDefault(font)`, `Ads.Available`, `Ads.ShouldShowInterstitial(level, noAds)` | Test ads in development builds and the Editor, none in release; interstitials from level 15, every third level, never for a No Ads buyer | hide every ad button and No Ads while `Ads.Service` is null |
76
- | `JoydleSplash` | The studio splash, 4.25 s, tap to skip after 1 s. A game opts in with a text asset `Resources/JoydleSplashOn`; it holds the game's audio, waits for the first scene and 10 smooth frames (1 s floor, 3 s cap), and is skipped in the Editor and on any launch with a `-flag` (`-splash` forces it); `JoydleSplash.Playing` says when it is up | "add joydle splash … as we did for other games" (the owner, twice) |
77
- | `BackButton.PressedThisFrame`, `AndroidSystem.MoveToBack()`, `AndroidSystem.Density` | Android Back read from input events, since Back arrives pressed and released inside one frame and polling misses it; leave the app from the root screen; the dp scale | |
78
-
79
- `com.joydle.firebase` boots itself before the first scene and installs Analytics and Crashlytics as
80
- `Telemetry`'s sink (uncaught exceptions are fatal reports); the Editor keeps the console. It hands its
81
- `link.xml` to the linker and marks its assembly always linked, because High stripping removed it and
82
- Firebase never started in release builds (3 broken uploads). It pins the no-tracking setup: no
83
- advertising identifier and no ad personalisation in the iOS plist, the advertising-id and ad-services
84
- permissions removed on Android. That is what lets the privacy answers say nothing is used for
85
- tracking, with no tracking prompt.
86
-
87
- ## A studio splash
88
-
89
- A game never makes its own splash or a "Funpixel presents" card, package or not: the opening belongs
90
- to the studio that makes the game, or to nothing. A studio's splash comes from its package, so one
91
- fix reaches every game. Today
92
- that is Joydle Core's `Joydle.Core.JoydleSplash` (read from its code on 10 Oct 2026; the code wins
93
- over this table). A project on another studio's package wires that package's splash the same way; a
94
- project with none ships no splash.
95
-
96
- | Day-one rule | How `JoydleSplash` does it |
97
- |---|---|
98
- | Opt in, once | A text asset that `Resources.Load<TextAsset>("JoydleSplashOn")` finds, such as `Assets/_Game/Resources/JoydleSplashOn.txt` (the games write one line: what it does and "Delete this file to turn it off"), with its `.meta` committed. Nothing else is called: the package boots it before the first scene loads (`RuntimeInitializeOnLoadMethod(BeforeSceneLoad)`) |
99
- | Before the first scene, on top | A `DontDestroyOnLoad` object with an overlay canvas at sorting order 32000. It waits for the first scene and 10 smooth frames (1 s floor, 3 s cap), then plays 4.25 s; a tap skips it after 1 s. On iOS `JoydleLaunch` makes the launch screen the black it opens on |
100
- | Holds the game's audio | `AudioListener.pause` is true until it ends; its own sounds ignore the pause and follow `Settings.Sound` |
101
- | Skipped in the Editor and on any flag | `Application.isEditor`, or any argument from `LaunchArgs.Get()` that starts with `-` (every automation, capture and test launch passes one); `-splash` forces it, to see it on the Simulator |
102
- | Title music waits | `JoydleSplash.Playing` is true from before the first scene until the fade ends (false when it was skipped): start the title music once it is false. Pocket Crew also hides its loading view while it is up |
103
- | The studio credit | Every credit line (Settings, About, an end card) names the studio, Joydle, and never Funpixel |
104
-
105
- Its pictures and sounds are LFS files under the package's `Runtime/Resources/JoydleSplash/`. On a Mac
106
- where the studio repository's LFS files were not pulled they are pointer text: the splash draws
107
- blank parts and stays silent, and Unity logs "FSBTool ERROR: Failed decoding audio clip" for each
108
- `JoydleSplash/*.wav` in every build. `funtools doctor` fails on them and says where to pull.
109
-
110
- ## What they do not give
111
-
112
- What each game still writes by hand (§1): import rules (or `funtools gen --unity`'s, for what it
113
- makes), the `SceneBuilder`, the TMP font builder, capture tools, the launch-flag dev gate, a safe-area
114
- root off `UiKit`, the frame governor, saves, Firebase's Simulator stubs (its C++ SDK has no arm64
115
- Simulator slice), a smoke driver and a UI audit. The repository's scripts are not in the packages.
116
-
117
- ## Rules for changing them
118
-
119
- - Fix a shared bug in the package, once, never in one game's copy. The pop and the AudioListener fixes
120
- reached four games at once; the purchase double grant lived on one branch while four games still had
121
- it (§1).
122
- - A change to the build pipeline every game shares (`BuildTools`) comes with a per-game opt-in marker,
123
- as `JoydleLz4hc.txt` does, and a person looks before it lands (§10).
124
- - Additive only: a game built on 0.1.0 keeps building.
125
- - `BuildTools.TestFlight` signs automatically for the studio's own Apple team (KBAT76634X), and
126
- `ApplyIOS` writes its company name. A game for another team needs its own build method until the
127
- package takes a team per game.
@@ -1,127 +0,0 @@
1
- # The studio's Unity packages
2
-
3
- The studio's two packages, `com.joydle.core` (0.1.0) and `com.joydle.firebase`, are optional: the
4
- games inside its repository use both, Knockout Lap, Gallery Heist and Particle Rush the core only,
5
- and Floe Jam neither. They live in that repository, `joydle/joydle-games` (private: the person needs
6
- read access), under `packages/`. A game that uses them never writes their pieces again. The field report's starter
7
- is "the SDK wired, switched off" (Starter project), and a fix made in the package reached every game at
8
- once (§1). Read as of 9 Oct 2026, from the packages' own code; what changes there wins over this page.
9
-
10
- ## Adding them
11
-
12
- Every project lists them by `file:` path. Inside the repository that is `file:../../../packages/…`;
13
- the three outside it (Knockout Lap, Gallery Heist, Particle Rush) use `file:../../joydle-games/packages/…`
14
- (Knockout Lap, one folder deeper, `../../../`), so `joydle-games` must be cloned beside them, and
15
- `funtools doctor` warns when the path is missing. A git URL pinned to a commit needs no sibling
16
- clone (`#main` moves under a store build); no project uses one yet. Run `git lfs install` first: the splash's pictures and sounds are LFS files, and without it they arrive as
17
- pointer files. Inside the repository the same holds for a checkout whose LFS files were never pulled.
18
- `funtools doctor` in the game finds pointer files in Assets, Packages, every local package and the
19
- package cache, and names the repository to run `git lfs pull` in; run it before a build.
20
-
21
- ```json
22
- "dependencies": {
23
- "com.joydle.core": "file:../../joydle-games/packages/com.joydle.core",
24
- "com.joydle.firebase": "file:../../joydle-games/packages/com.joydle.firebase",
25
- "com.unity.inputsystem": "1.20.0",
26
- "com.unity.render-pipelines.universal": "17.6.0",
27
- "com.unity.test-framework": "1.8.0",
28
- "com.unity.ugui": "2.6.0"
29
- }
30
- ```
31
-
32
- The pinned form is `https://github.com/joydle/joydle-games.git?path=/packages/com.joydle.core#<commit>`.
33
-
34
- - `com.unity.inputsystem` goes in the game's own manifest: the core's assembly references it and its
35
- `package.json` does not pull it in. Set the player to the new Input System only.
36
- - `com.unity.purchasing` 5.4.3 comes with the core (StoreKit 2 on iOS, Play Billing on Android).
37
- - The Firebase package needs Google's packages at 13.17.0 (app, analytics, crashlytics) and the External
38
- Dependency Manager 1.2.189. The games repository keeps their `.tgz` files in `packages/vendor/` (LFS)
39
- and lists them by `file:` path; another project keeps the same versions in its own folder, in LFS.
40
- Each game has its own Firebase project, with its config file under `Assets/`.
41
- - Take out what no game uses: collab-proxy, learn, visual scripting, the Aseprite and PSD importers
42
- (Scrap Riot also dropped 2D animation, sprite shape, tilemap extras and timeline: 88 → 78 MiB). Keep
43
- what a game uses: Gallery Heist loads its rooms through Addressables 4.1 (built into the app, no
44
- remote catalog) and aims its camera with Cinemachine 6.6, beside VFX Graph, Splines and Timeline.
45
- No game uses DOTween (`Juice` tweens).
46
-
47
- ## What each piece gives, and the rule it settles
48
-
49
- Editor side of `com.joydle.core`:
50
-
51
- | Piece | What it does | Settles |
52
- |---|---|---|
53
- | `ProjectConfig.ApplyIOS(name, bundleId, version, landscape)` | Company name, bundle id, IL2CPP, iOS 16, iPhone only, a fixed orientation, status bar hidden, Unity splash off; switches the build target to iOS | settings by script, not a copied file (`funpixel-unity-game` step 6). It does not set colour space, 48 kHz, render scale, ProMotion, the accelerometer or physics: `Setup.Configure` sets those after it |
54
- | `ProjectConfig.ApplyAndroid(packageName)` | API 26 to 36 (pinned), ARM64, IL2CPP, App Category game, GameActivity, full screen under cutouts, R8 off (it strips Firebase and purchase classes reached by reflection) | the Android half of the same rule |
55
- | `BuildTools.Simulator`, `SimulatorDev`, `SimulatorMuted`, `Device`, `TestFlight` | Headless iOS builds (`-executeMethod Joydle.Core.Editor.BuildTools.TestFlight`) into `Builds/iOS-sim` or `Builds/iOS`. Every build applies the size settings (stripping High, engine stripping, IL2CPP OptimizeSize, unused mesh channels off); LZ4HC when `ProjectSettings/JoydleLz4hc.txt` exists. `TestFlight` sets the studio's team and automatic signing, and the build number (`JOYDLE_BUILD_NUMBER`, else a `yyMMddHHmm` stamp) and refuses to build without `Assets/_Game/Art/Icon/app_icon.png`. `SimulatorMuted` turns audio off for that one build and restores it | size settings and LZ4HC ([performance](performance.md) step 8); the icon gate (Porcelain Panic shipped Unity's default icon); the CoreAudio wedge on a Simulator relaunched many times |
56
- | `BuildTools.Android`, `AndroidApk`, `AndroidDev`, `VersionCode()` | A signed `.aab` with its symbols (refuses without `JOYDLE_KEYSTORE` and `JOYDLE_KEYSTORE_PASS`); a release `.apk` for tests that reads launch args (never upload it); versionCode = minutes since 1 Jan 2026, because the iOS stamp is over Play's 2,100,000,000 cap | Android, planned in the report and built since (§15) |
57
- | `IosPostprocess` | Writes `ITSAppUsesNonExemptEncryption` false and stamps every embedded framework's minimum OS with the app's | ITMS-90208 (`funpixel-store`) |
58
- | `JoydleLaunch` | A black launch storyboard under its own name, for games that play the splash | iOS caches a launch screen by name across updates (§10) |
59
- | `SplashImport` | Splash parts scaled to a power of two, mipmapped, compressed | 10.3 MB of raw splash in every game, now about 2.6 MB |
60
- | `TextureBudget` | Textures named `model__basecolor.png` (and `__normal`, `__mr`, `__emissive`) under an `Art/` or `Models/` folder: ASTC 6×6, mipmaps, sRGB only for base colour and emissive, at most 512 under `Food/`, `Props/` or `Characters/`, else 1024 | glTFast's raw RGBA32 model textures (`funpixel-3d`, Unity page) |
61
- | `AndroidManifestPost` | Adds the vibrate permission the haptics need | |
62
-
63
- Runtime side of `com.joydle.core`:
64
-
65
- | Piece | What it does | Settles |
66
- |---|---|---|
67
- | `Sfx.Create(music)`, `Play(clip, volume)`, `Sfx.EnsureListener()` | 8 pooled one-shots with pitch jitter 0.06, one looping music source at 0.45, and exactly one AudioListener | the four silent TestFlight builds (`funpixel-audio`, Unity page, step 1) |
68
- | `Haptics.Light`, `Medium`, `Heavy`, `Success`, `Error` | iOS taptics through the package's native plugin, Android vibration effects; off when `Settings.Haptics` is | haptics by strength (`funpixel-game-feel`, Unity page). The 80–90 ms throttle and the 120 ms merge are the game's |
69
- | `Juice.Tween`, `Pop`, `Shake`, `EaseOutBack`, `EaseOutCubic`, `EaseInQuad`, `Ring`, `Dot`, `Rounded` | Coroutine tweens with the defaults the games used (pop 0.18 over 0.22 s, shake 0.08 over 0.25 s); a pop keeps the true rest scale | the compounding pop, fixed once for every game |
70
- | `UiKit` | A canvas scaled at 1170×2532 (match 0.5), a `Safe` rect from `Screen.safeArea`, rounded panels, text, buttons that pop, modal cards, a dim layer, `FitToContent`; text and images take no taps | the code-built UI and the Restore label that covered the shop card (`funpixel-mobile-ui`, Unity page). `Safe` is read once when the kit is made, and the landscape island-side rule is not in it |
71
- | `LaunchArgs.Get()` | Launch arguments: on iOS from the native process (Mono never sees `simctl launch` args), on Android from the intent extra `joydle_args`, in development builds and test APKs only | the basis of every automation flag. On iOS it is not gated: read it through the game's own wrapper that returns nothing unless `Debug.isDebugBuild` (Scrap Riot's), or a release build obeys an unlock flag (§1) |
72
- | `Settings.Music`, `Sound`, `Haptics` | The three player toggles, kept in PlayerPrefs | |
73
- | `Telemetry.Event`, `LevelStart`, `LevelEnd`, `TutorialComplete`, `ShopOpen`, `Log`; `Telemetry.Muted` | The one analytics and crash boundary; logs to the console in a development build with no sink | mute it under every dev flag: autoplay and capture runs must not reach analytics |
74
- | `IapService(catalog, grant)` with `Init`, `Buy`, `Restore(done)`, `Price`, `Refetch` | Unity IAP 5. Grants in the pending-order handler once per transaction, then confirms; non-consumables come back from confirmed orders on every fetch; `Restore(done)` asks StoreKit to sync on iOS and answers true or false; `Price` is the store's localised string | the double grant (fixed on main on 7 Oct; a game built before needs a new build), Restore that ends (`funpixel-store`) |
75
- | `Ads.CreateDefault(font)`, `Ads.Available`, `Ads.ShouldShowInterstitial(level, noAds)` | Test ads in development builds and the Editor, none in release; interstitials from level 15, every third level, never for a No Ads buyer | hide every ad button and No Ads while `Ads.Service` is null |
76
- | `JoydleSplash` | The studio splash, 4.25 s, tap to skip after 1 s. A game opts in with a text asset `Resources/JoydleSplashOn`; it holds the game's audio, waits for the first scene and 10 smooth frames (1 s floor, 3 s cap), and is skipped in the Editor and on any launch with a `-flag` (`-splash` forces it); `JoydleSplash.Playing` says when it is up | "add joydle splash … as we did for other games" (the owner, twice) |
77
- | `BackButton.PressedThisFrame`, `AndroidSystem.MoveToBack()`, `AndroidSystem.Density` | Android Back read from input events, since Back arrives pressed and released inside one frame and polling misses it; leave the app from the root screen; the dp scale | |
78
-
79
- `com.joydle.firebase` boots itself before the first scene and installs Analytics and Crashlytics as
80
- `Telemetry`'s sink (uncaught exceptions are fatal reports); the Editor keeps the console. It hands its
81
- `link.xml` to the linker and marks its assembly always linked, because High stripping removed it and
82
- Firebase never started in release builds (3 broken uploads). It pins the no-tracking setup: no
83
- advertising identifier and no ad personalisation in the iOS plist, the advertising-id and ad-services
84
- permissions removed on Android. That is what lets the privacy answers say nothing is used for
85
- tracking, with no tracking prompt.
86
-
87
- ## A studio splash
88
-
89
- A game never makes its own splash or a "Funpixel presents" card, package or not: the opening belongs
90
- to the studio that makes the game, or to nothing. A studio's splash comes from its package, so one
91
- fix reaches every game. Today
92
- that is Joydle Core's `Joydle.Core.JoydleSplash` (read from its code on 10 Oct 2026; the code wins
93
- over this table). A project on another studio's package wires that package's splash the same way; a
94
- project with none ships no splash.
95
-
96
- | Day-one rule | How `JoydleSplash` does it |
97
- |---|---|
98
- | Opt in, once | A text asset that `Resources.Load<TextAsset>("JoydleSplashOn")` finds, such as `Assets/_Game/Resources/JoydleSplashOn.txt` (the games write one line: what it does and "Delete this file to turn it off"), with its `.meta` committed. Nothing else is called: the package boots it before the first scene loads (`RuntimeInitializeOnLoadMethod(BeforeSceneLoad)`) |
99
- | Before the first scene, on top | A `DontDestroyOnLoad` object with an overlay canvas at sorting order 32000. It waits for the first scene and 10 smooth frames (1 s floor, 3 s cap), then plays 4.25 s; a tap skips it after 1 s. On iOS `JoydleLaunch` makes the launch screen the black it opens on |
100
- | Holds the game's audio | `AudioListener.pause` is true until it ends; its own sounds ignore the pause and follow `Settings.Sound` |
101
- | Skipped in the Editor and on any flag | `Application.isEditor`, or any argument from `LaunchArgs.Get()` that starts with `-` (every automation, capture and test launch passes one); `-splash` forces it, to see it on the Simulator |
102
- | Title music waits | `JoydleSplash.Playing` is true from before the first scene until the fade ends (false when it was skipped): start the title music once it is false. Pocket Crew also hides its loading view while it is up |
103
- | The studio credit | Every credit line (Settings, About, an end card) names the studio, Joydle, and never Funpixel |
104
-
105
- Its pictures and sounds are LFS files under the package's `Runtime/Resources/JoydleSplash/`. On a Mac
106
- where the studio repository's LFS files were not pulled they are pointer text: the splash draws
107
- blank parts and stays silent, and Unity logs "FSBTool ERROR: Failed decoding audio clip" for each
108
- `JoydleSplash/*.wav` in every build. `funtools doctor` fails on them and says where to pull.
109
-
110
- ## What they do not give
111
-
112
- What each game still writes by hand (§1): import rules (or `funtools gen --unity`'s, for what it
113
- makes), the `SceneBuilder`, the TMP font builder, capture tools, the launch-flag dev gate, a safe-area
114
- root off `UiKit`, the frame governor, saves, Firebase's Simulator stubs (its C++ SDK has no arm64
115
- Simulator slice), a smoke driver and a UI audit. The repository's scripts are not in the packages.
116
-
117
- ## Rules for changing them
118
-
119
- - Fix a shared bug in the package, once, never in one game's copy. The pop and the AudioListener fixes
120
- reached four games at once; the purchase double grant lived on one branch while four games still had
121
- it (§1).
122
- - A change to the build pipeline every game shares (`BuildTools`) comes with a per-game opt-in marker,
123
- as `JoydleLz4hc.txt` does, and a person looks before it lands (§10).
124
- - Additive only: a game built on 0.1.0 keeps building.
125
- - `BuildTools.TestFlight` signs automatically for the studio's own Apple team (KBAT76634X), and
126
- `ApplyIOS` writes its company name. A game for another team needs its own build method until the
127
- package takes a team per game.
@@ -1,127 +0,0 @@
1
- # The studio's Unity packages
2
-
3
- The studio's two packages, `com.joydle.core` (0.1.0) and `com.joydle.firebase`, are optional: the
4
- games inside its repository use both, Knockout Lap, Gallery Heist and Particle Rush the core only,
5
- and Floe Jam neither. They live in that repository, `joydle/joydle-games` (private: the person needs
6
- read access), under `packages/`. A game that uses them never writes their pieces again. The field report's starter
7
- is "the SDK wired, switched off" (Starter project), and a fix made in the package reached every game at
8
- once (§1). Read as of 9 Oct 2026, from the packages' own code; what changes there wins over this page.
9
-
10
- ## Adding them
11
-
12
- Every project lists them by `file:` path. Inside the repository that is `file:../../../packages/…`;
13
- the three outside it (Knockout Lap, Gallery Heist, Particle Rush) use `file:../../joydle-games/packages/…`
14
- (Knockout Lap, one folder deeper, `../../../`), so `joydle-games` must be cloned beside them, and
15
- `funtools doctor` warns when the path is missing. A git URL pinned to a commit needs no sibling
16
- clone (`#main` moves under a store build); no project uses one yet. Run `git lfs install` first: the splash's pictures and sounds are LFS files, and without it they arrive as
17
- pointer files. Inside the repository the same holds for a checkout whose LFS files were never pulled.
18
- `funtools doctor` in the game finds pointer files in Assets, Packages, every local package and the
19
- package cache, and names the repository to run `git lfs pull` in; run it before a build.
20
-
21
- ```json
22
- "dependencies": {
23
- "com.joydle.core": "file:../../joydle-games/packages/com.joydle.core",
24
- "com.joydle.firebase": "file:../../joydle-games/packages/com.joydle.firebase",
25
- "com.unity.inputsystem": "1.20.0",
26
- "com.unity.render-pipelines.universal": "17.6.0",
27
- "com.unity.test-framework": "1.8.0",
28
- "com.unity.ugui": "2.6.0"
29
- }
30
- ```
31
-
32
- The pinned form is `https://github.com/joydle/joydle-games.git?path=/packages/com.joydle.core#<commit>`.
33
-
34
- - `com.unity.inputsystem` goes in the game's own manifest: the core's assembly references it and its
35
- `package.json` does not pull it in. Set the player to the new Input System only.
36
- - `com.unity.purchasing` 5.4.3 comes with the core (StoreKit 2 on iOS, Play Billing on Android).
37
- - The Firebase package needs Google's packages at 13.17.0 (app, analytics, crashlytics) and the External
38
- Dependency Manager 1.2.189. The games repository keeps their `.tgz` files in `packages/vendor/` (LFS)
39
- and lists them by `file:` path; another project keeps the same versions in its own folder, in LFS.
40
- Each game has its own Firebase project, with its config file under `Assets/`.
41
- - Take out what no game uses: collab-proxy, learn, visual scripting, the Aseprite and PSD importers
42
- (Scrap Riot also dropped 2D animation, sprite shape, tilemap extras and timeline: 88 → 78 MiB). Keep
43
- what a game uses: Gallery Heist loads its rooms through Addressables 4.1 (built into the app, no
44
- remote catalog) and aims its camera with Cinemachine 6.6, beside VFX Graph, Splines and Timeline.
45
- No game uses DOTween (`Juice` tweens).
46
-
47
- ## What each piece gives, and the rule it settles
48
-
49
- Editor side of `com.joydle.core`:
50
-
51
- | Piece | What it does | Settles |
52
- |---|---|---|
53
- | `ProjectConfig.ApplyIOS(name, bundleId, version, landscape)` | Company name, bundle id, IL2CPP, iOS 16, iPhone only, a fixed orientation, status bar hidden, Unity splash off; switches the build target to iOS | settings by script, not a copied file (`funpixel-unity-game` step 6). It does not set colour space, 48 kHz, render scale, ProMotion, the accelerometer or physics: `Setup.Configure` sets those after it |
54
- | `ProjectConfig.ApplyAndroid(packageName)` | API 26 to 36 (pinned), ARM64, IL2CPP, App Category game, GameActivity, full screen under cutouts, R8 off (it strips Firebase and purchase classes reached by reflection) | the Android half of the same rule |
55
- | `BuildTools.Simulator`, `SimulatorDev`, `SimulatorMuted`, `Device`, `TestFlight` | Headless iOS builds (`-executeMethod Joydle.Core.Editor.BuildTools.TestFlight`) into `Builds/iOS-sim` or `Builds/iOS`. Every build applies the size settings (stripping High, engine stripping, IL2CPP OptimizeSize, unused mesh channels off); LZ4HC when `ProjectSettings/JoydleLz4hc.txt` exists. `TestFlight` sets the studio's team and automatic signing, and the build number (`JOYDLE_BUILD_NUMBER`, else a `yyMMddHHmm` stamp) and refuses to build without `Assets/_Game/Art/Icon/app_icon.png`. `SimulatorMuted` turns audio off for that one build and restores it | size settings and LZ4HC ([performance](performance.md) step 8); the icon gate (Porcelain Panic shipped Unity's default icon); the CoreAudio wedge on a Simulator relaunched many times |
56
- | `BuildTools.Android`, `AndroidApk`, `AndroidDev`, `VersionCode()` | A signed `.aab` with its symbols (refuses without `JOYDLE_KEYSTORE` and `JOYDLE_KEYSTORE_PASS`); a release `.apk` for tests that reads launch args (never upload it); versionCode = minutes since 1 Jan 2026, because the iOS stamp is over Play's 2,100,000,000 cap | Android, planned in the report and built since (§15) |
57
- | `IosPostprocess` | Writes `ITSAppUsesNonExemptEncryption` false and stamps every embedded framework's minimum OS with the app's | ITMS-90208 (`funpixel-store`) |
58
- | `JoydleLaunch` | A black launch storyboard under its own name, for games that play the splash | iOS caches a launch screen by name across updates (§10) |
59
- | `SplashImport` | Splash parts scaled to a power of two, mipmapped, compressed | 10.3 MB of raw splash in every game, now about 2.6 MB |
60
- | `TextureBudget` | Textures named `model__basecolor.png` (and `__normal`, `__mr`, `__emissive`) under an `Art/` or `Models/` folder: ASTC 6×6, mipmaps, sRGB only for base colour and emissive, at most 512 under `Food/`, `Props/` or `Characters/`, else 1024 | glTFast's raw RGBA32 model textures (`funpixel-3d`, Unity page) |
61
- | `AndroidManifestPost` | Adds the vibrate permission the haptics need | |
62
-
63
- Runtime side of `com.joydle.core`:
64
-
65
- | Piece | What it does | Settles |
66
- |---|---|---|
67
- | `Sfx.Create(music)`, `Play(clip, volume)`, `Sfx.EnsureListener()` | 8 pooled one-shots with pitch jitter 0.06, one looping music source at 0.45, and exactly one AudioListener | the four silent TestFlight builds (`funpixel-audio`, Unity page, step 1) |
68
- | `Haptics.Light`, `Medium`, `Heavy`, `Success`, `Error` | iOS taptics through the package's native plugin, Android vibration effects; off when `Settings.Haptics` is | haptics by strength (`funpixel-game-feel`, Unity page). The 80–90 ms throttle and the 120 ms merge are the game's |
69
- | `Juice.Tween`, `Pop`, `Shake`, `EaseOutBack`, `EaseOutCubic`, `EaseInQuad`, `Ring`, `Dot`, `Rounded` | Coroutine tweens with the defaults the games used (pop 0.18 over 0.22 s, shake 0.08 over 0.25 s); a pop keeps the true rest scale | the compounding pop, fixed once for every game |
70
- | `UiKit` | A canvas scaled at 1170×2532 (match 0.5), a `Safe` rect from `Screen.safeArea`, rounded panels, text, buttons that pop, modal cards, a dim layer, `FitToContent`; text and images take no taps | the code-built UI and the Restore label that covered the shop card (`funpixel-mobile-ui`, Unity page). `Safe` is read once when the kit is made, and the landscape island-side rule is not in it |
71
- | `LaunchArgs.Get()` | Launch arguments: on iOS from the native process (Mono never sees `simctl launch` args), on Android from the intent extra `joydle_args`, in development builds and test APKs only | the basis of every automation flag. On iOS it is not gated: read it through the game's own wrapper that returns nothing unless `Debug.isDebugBuild` (Scrap Riot's), or a release build obeys an unlock flag (§1) |
72
- | `Settings.Music`, `Sound`, `Haptics` | The three player toggles, kept in PlayerPrefs | |
73
- | `Telemetry.Event`, `LevelStart`, `LevelEnd`, `TutorialComplete`, `ShopOpen`, `Log`; `Telemetry.Muted` | The one analytics and crash boundary; logs to the console in a development build with no sink | mute it under every dev flag: autoplay and capture runs must not reach analytics |
74
- | `IapService(catalog, grant)` with `Init`, `Buy`, `Restore(done)`, `Price`, `Refetch` | Unity IAP 5. Grants in the pending-order handler once per transaction, then confirms; non-consumables come back from confirmed orders on every fetch; `Restore(done)` asks StoreKit to sync on iOS and answers true or false; `Price` is the store's localised string | the double grant (fixed on main on 7 Oct; a game built before needs a new build), Restore that ends (`funpixel-store`) |
75
- | `Ads.CreateDefault(font)`, `Ads.Available`, `Ads.ShouldShowInterstitial(level, noAds)` | Test ads in development builds and the Editor, none in release; interstitials from level 15, every third level, never for a No Ads buyer | hide every ad button and No Ads while `Ads.Service` is null |
76
- | `JoydleSplash` | The studio splash, 4.25 s, tap to skip after 1 s. A game opts in with a text asset `Resources/JoydleSplashOn`; it holds the game's audio, waits for the first scene and 10 smooth frames (1 s floor, 3 s cap), and is skipped in the Editor and on any launch with a `-flag` (`-splash` forces it); `JoydleSplash.Playing` says when it is up | "add joydle splash … as we did for other games" (the owner, twice) |
77
- | `BackButton.PressedThisFrame`, `AndroidSystem.MoveToBack()`, `AndroidSystem.Density` | Android Back read from input events, since Back arrives pressed and released inside one frame and polling misses it; leave the app from the root screen; the dp scale | |
78
-
79
- `com.joydle.firebase` boots itself before the first scene and installs Analytics and Crashlytics as
80
- `Telemetry`'s sink (uncaught exceptions are fatal reports); the Editor keeps the console. It hands its
81
- `link.xml` to the linker and marks its assembly always linked, because High stripping removed it and
82
- Firebase never started in release builds (3 broken uploads). It pins the no-tracking setup: no
83
- advertising identifier and no ad personalisation in the iOS plist, the advertising-id and ad-services
84
- permissions removed on Android. That is what lets the privacy answers say nothing is used for
85
- tracking, with no tracking prompt.
86
-
87
- ## A studio splash
88
-
89
- A game never makes its own splash or a "Funpixel presents" card, package or not: the opening belongs
90
- to the studio that makes the game, or to nothing. A studio's splash comes from its package, so one
91
- fix reaches every game. Today
92
- that is Joydle Core's `Joydle.Core.JoydleSplash` (read from its code on 10 Oct 2026; the code wins
93
- over this table). A project on another studio's package wires that package's splash the same way; a
94
- project with none ships no splash.
95
-
96
- | Day-one rule | How `JoydleSplash` does it |
97
- |---|---|
98
- | Opt in, once | A text asset that `Resources.Load<TextAsset>("JoydleSplashOn")` finds, such as `Assets/_Game/Resources/JoydleSplashOn.txt` (the games write one line: what it does and "Delete this file to turn it off"), with its `.meta` committed. Nothing else is called: the package boots it before the first scene loads (`RuntimeInitializeOnLoadMethod(BeforeSceneLoad)`) |
99
- | Before the first scene, on top | A `DontDestroyOnLoad` object with an overlay canvas at sorting order 32000. It waits for the first scene and 10 smooth frames (1 s floor, 3 s cap), then plays 4.25 s; a tap skips it after 1 s. On iOS `JoydleLaunch` makes the launch screen the black it opens on |
100
- | Holds the game's audio | `AudioListener.pause` is true until it ends; its own sounds ignore the pause and follow `Settings.Sound` |
101
- | Skipped in the Editor and on any flag | `Application.isEditor`, or any argument from `LaunchArgs.Get()` that starts with `-` (every automation, capture and test launch passes one); `-splash` forces it, to see it on the Simulator |
102
- | Title music waits | `JoydleSplash.Playing` is true from before the first scene until the fade ends (false when it was skipped): start the title music once it is false. Pocket Crew also hides its loading view while it is up |
103
- | The studio credit | Every credit line (Settings, About, an end card) names the studio, Joydle, and never Funpixel |
104
-
105
- Its pictures and sounds are LFS files under the package's `Runtime/Resources/JoydleSplash/`. On a Mac
106
- where the studio repository's LFS files were not pulled they are pointer text: the splash draws
107
- blank parts and stays silent, and Unity logs "FSBTool ERROR: Failed decoding audio clip" for each
108
- `JoydleSplash/*.wav` in every build. `funtools doctor` fails on them and says where to pull.
109
-
110
- ## What they do not give
111
-
112
- What each game still writes by hand (§1): import rules (or `funtools gen --unity`'s, for what it
113
- makes), the `SceneBuilder`, the TMP font builder, capture tools, the launch-flag dev gate, a safe-area
114
- root off `UiKit`, the frame governor, saves, Firebase's Simulator stubs (its C++ SDK has no arm64
115
- Simulator slice), a smoke driver and a UI audit. The repository's scripts are not in the packages.
116
-
117
- ## Rules for changing them
118
-
119
- - Fix a shared bug in the package, once, never in one game's copy. The pop and the AudioListener fixes
120
- reached four games at once; the purchase double grant lived on one branch while four games still had
121
- it (§1).
122
- - A change to the build pipeline every game shares (`BuildTools`) comes with a per-game opt-in marker,
123
- as `JoydleLz4hc.txt` does, and a person looks before it lands (§10).
124
- - Additive only: a game built on 0.1.0 keeps building.
125
- - `BuildTools.TestFlight` signs automatically for the studio's own Apple team (KBAT76634X), and
126
- `ApplyIOS` writes its company name. A game for another team needs its own build method until the
127
- package takes a team per game.