@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.
- package/bench/handlers/bake_emissive.py +2 -2
- package/bench/handlers/decimate.py +2 -2
- package/bench/handlers/fracture.py +1 -1
- package/bench/handlers/normalize_transform.py +3 -3
- package/bench/handlers/render_views.py +2 -2
- package/bench/handlers/views.py +6 -6
- package/dist/cli.js +8 -9
- package/dist/commands/feedback.js +5 -5
- package/dist/commands/init.js +1 -1
- package/dist/direct/read.js +1 -1
- package/dist/doctor/unity-checks.js +5 -5
- package/dist/doctor/unity-history.js +17 -33
- package/dist/feedback/ab.js +0 -40
- package/dist/gen/unity.js +3 -3
- package/dist/mcp/server.js +2 -1
- package/dist/pipeline/pipeline.js +6 -6
- package/dist/playtest/moments.js +1 -1
- package/dist/playtest/report.js +1 -1
- package/dist/production/mirror.js +2 -2
- package/dist/sim/curve.js +3 -3
- package/dist/spec/scaffold.js +1 -1
- package/dist/studio/pitch.js +1 -1
- package/dist/unity/probe/install.js +1 -1
- package/dist/vendor/verify/src/page/actors.js +2 -2
- package/dist/vendor/verify/src/page/capture_view.js +2 -2
- package/dist/vendor/verify/src/page/dressing.js +1 -1
- package/dist/vendor/verify/src/page/frame_honesty.js +1 -1
- package/dist/vendor/verify/src/page/front_door.js +2 -2
- package/dist/vendor/verify/src/page/grounding.js +3 -3
- package/dist/vendor/verify/src/page/hud.js +3 -3
- package/dist/vendor/verify/src/page/layout.js +5 -5
- package/dist/vendor/verify/src/page/life_anim.js +6 -6
- package/dist/vendor/verify/src/page/mechanic_check.js +1 -1
- package/dist/vendor/verify/src/page/phone_check.js +2 -2
- package/dist/vendor/verify/src/page/recorder.js +2 -2
- package/dist/vendor/verify/src/page/surfaces.js +2 -2
- package/dist/vendor/verify/src/page/world_actors.js +3 -3
- package/package.json +2 -2
- package/plugins/README.md +16 -0
- package/plugins/claude/README.md +2 -3
- package/plugins/claude/agents/art-director.md +2 -2
- package/plugins/claude/commands/playtest.md +2 -2
- package/plugins/claude/hooks/brief.md +1 -1
- package/plugins/claude/hooks/guidance.json +1 -1
- package/plugins/claude/hooks/vendor/pipeline/pipeline.mjs +6 -6
- package/plugins/claude/hooks/vendor/studio/pitch.mjs +1 -1
- package/plugins/claude/skills/3d/references/bake-off.md +3 -3
- package/plugins/claude/skills/3d/references/characters.md +1 -1
- package/plugins/claude/skills/3d/references/hero-route.md +5 -5
- package/plugins/claude/skills/3d/references/level-spec.md +1 -1
- package/plugins/claude/skills/3d/references/levels.md +3 -3
- package/plugins/claude/skills/3d/references/light-and-places.md +3 -3
- package/plugins/claude/skills/3d/references/painted-target.md +7 -7
- package/plugins/claude/skills/3d/references/three-loading.md +4 -4
- package/plugins/claude/skills/3d/references/unity.md +13 -13
- package/plugins/claude/skills/art/references/animation.md +1 -1
- package/plugins/claude/skills/art/references/cast.md +3 -3
- package/plugins/claude/skills/art/references/effects.md +2 -2
- package/plugins/claude/skills/art/references/frames.md +6 -6
- package/plugins/claude/skills/art/references/judging-frames.md +8 -8
- package/plugins/claude/skills/art/references/look.md +4 -4
- package/plugins/claude/skills/art/references/pipeline.md +2 -2
- package/plugins/claude/skills/art/references/prompts.md +4 -4
- package/plugins/claude/skills/art/references/ui.md +15 -15
- package/plugins/claude/skills/art/references/unity.md +14 -14
- package/plugins/claude/skills/audio/references/adaptive-music.md +4 -4
- package/plugins/claude/skills/audio/references/engine.md +2 -2
- package/plugins/claude/skills/audio/references/measure.md +1 -1
- package/plugins/claude/skills/audio/references/unity.md +20 -19
- package/plugins/claude/skills/game-feel/SKILL.md +4 -4
- package/plugins/claude/skills/game-feel/references/contact.md +6 -6
- package/plugins/claude/skills/game-feel/references/unity.md +18 -23
- package/plugins/claude/skills/game-logic/SKILL.md +3 -3
- package/plugins/claude/skills/game-logic/references/balance.md +2 -2
- package/plugins/claude/skills/game-logic/references/depth.md +2 -2
- package/plugins/claude/skills/game-logic/references/escalation.md +5 -5
- package/plugins/claude/skills/game-logic/references/probes.md +10 -10
- package/plugins/claude/skills/game-logic/references/unity.md +28 -28
- package/plugins/claude/skills/game-spine/SKILL.md +1 -1
- package/plugins/claude/skills/game-spine/references/performance.md +2 -2
- package/plugins/claude/skills/game-spine/references/replay.md +11 -11
- package/plugins/claude/skills/game-spine/references/room-api.md +1 -1
- package/plugins/claude/skills/game-spine/references/sdk.md +1 -1
- package/plugins/claude/skills/gdd/SKILL.md +2 -2
- package/plugins/claude/skills/gdd/references/as-built.md +2 -2
- package/plugins/claude/skills/gdd/references/design-measures.md +2 -2
- package/plugins/claude/skills/gdd/references/design-note.md +1 -1
- package/plugins/claude/skills/gdd/references/first-look.md +1 -1
- package/plugins/claude/skills/gdd/references/floors.md +2 -2
- package/plugins/claude/skills/gdd/references/gameplay-contract.md +1 -1
- package/plugins/claude/skills/gdd/references/genre-puzzle.md +4 -4
- package/plugins/claude/skills/gdd/references/genre-racing.md +2 -2
- package/plugins/claude/skills/gdd/references/genre-rpg.md +2 -2
- package/plugins/claude/skills/gdd/references/genre-shooter.md +2 -2
- package/plugins/claude/skills/gdd/references/genre-survival.md +2 -2
- package/plugins/claude/skills/gdd/references/invent-first.md +3 -3
- package/plugins/claude/skills/gdd/references/level-and-fun.md +11 -11
- package/plugins/claude/skills/gdd/references/pages.md +2 -5
- package/plugins/claude/skills/gdd/references/plan-at-size.md +5 -5
- package/plugins/claude/skills/gdd/references/production-tiers.md +11 -11
- package/plugins/claude/skills/gdd/references/sections.md +7 -7
- package/plugins/claude/skills/gdd/references/spec-folder.md +3 -3
- package/plugins/claude/skills/gdd/references/the-path.md +3 -4
- package/plugins/claude/skills/gdd/references/world-and-identity.md +4 -4
- package/plugins/claude/skills/gdd/references/worth.md +4 -4
- package/plugins/claude/skills/mobile-ui/SKILL.md +3 -3
- package/plugins/claude/skills/mobile-ui/references/hud-and-title.md +3 -3
- package/plugins/claude/skills/mobile-ui/references/phone-check.md +1 -1
- package/plugins/claude/skills/mobile-ui/references/recipes.md +1 -1
- package/plugins/claude/skills/mobile-ui/references/restyle-ui.md +11 -11
- package/plugins/claude/skills/mobile-ui/references/unity.md +23 -23
- package/plugins/claude/skills/publishing/references/compose.md +1 -1
- package/plugins/claude/skills/publishing/references/server-build.md +1 -1
- package/plugins/claude/skills/store/SKILL.md +3 -3
- package/plugins/claude/skills/store/references/app-store.md +1 -1
- package/plugins/claude/skills/store/references/google-play.md +2 -2
- package/plugins/claude/skills/store/references/ios-release.md +19 -20
- package/plugins/claude/skills/store/references/money.md +2 -2
- package/plugins/claude/skills/store/references/purchases-and-review.md +18 -18
- package/plugins/claude/skills/store/references/readiness-page.md +1 -1
- package/plugins/claude/skills/store/references/readiness.md +3 -3
- package/plugins/claude/skills/store/references/unity-store.md +9 -12
- package/plugins/claude/skills/unity-game/SKILL.md +28 -35
- package/plugins/claude/skills/unity-game/references/agent-ops.md +9 -9
- package/plugins/claude/skills/unity-game/references/fixes.md +21 -21
- package/plugins/claude/skills/unity-game/references/from-a-web-game.md +17 -17
- package/plugins/claude/skills/unity-game/references/handing-off.md +4 -4
- package/plugins/claude/skills/unity-game/references/performance.md +10 -14
- package/plugins/claude/skills/unity-game/references/probe.md +4 -4
- package/plugins/claude/skills/unity-game/references/shared-mac.md +1 -1
- package/plugins/claude/skills/unity-game/references/traps.md +13 -14
- package/plugins/claude/skills/verifying/references/bar.md +1 -1
- package/plugins/claude/skills/verifying/references/fidelity.md +11 -11
- package/plugins/claude/skills/verifying/references/mobile-qa.md +10 -10
- package/plugins/claude/skills/verifying/references/playtest.md +14 -14
- package/plugins/claude/skills/verifying/references/unity.md +11 -11
- package/plugins/claude/skills/world-and-story/SKILL.md +1 -1
- package/plugins/claude/skills/world-and-story/references/atmosphere.md +4 -4
- package/plugins/claude/skills/world-and-story/references/living-world.md +2 -2
- package/plugins/claude/skills/world-and-story/references/opening-and-chapters.md +1 -1
- package/plugins/claude/skills/world-and-story/references/story-at-size.md +2 -2
- package/plugins/claude/skills/world-and-story/references/voice.md +1 -1
- package/plugins/codex/AGENTS.md +1 -1
- package/plugins/codex/README.md +1 -1
- package/plugins/codex/hooks/brief.md +1 -1
- package/plugins/codex/hooks/guidance.json +1 -1
- package/plugins/codex/hooks/host.md +1 -1
- package/plugins/codex/hooks/vendor/pipeline/pipeline.mjs +6 -6
- package/plugins/codex/hooks/vendor/studio/pitch.mjs +1 -1
- package/plugins/codex/skills/fp-art-director/SKILL.md +2 -2
- package/plugins/codex/skills/fp-art-director/references/codex.md +1 -1
- package/plugins/codex/skills/fp-audio-director/references/codex.md +1 -1
- package/plugins/codex/skills/fp-critic/references/codex.md +1 -1
- package/plugins/codex/skills/fp-lane/references/codex.md +1 -1
- package/plugins/codex/skills/fp-level-designer/references/codex.md +1 -1
- package/plugins/codex/skills/fp-mobile-qa-seat/references/codex.md +1 -1
- package/plugins/codex/skills/fp-player/references/codex.md +1 -1
- package/plugins/codex/skills/fp-playtest/SKILL.md +2 -2
- package/plugins/codex/skills/fp-qa-lead/references/codex.md +1 -1
- package/plugins/codex/skills/fp-studio/SKILL.md +1 -1
- package/plugins/codex/skills/funpixel-3d/references/bake-off.md +3 -3
- package/plugins/codex/skills/funpixel-3d/references/characters.md +1 -1
- package/plugins/codex/skills/funpixel-3d/references/hero-route.md +5 -5
- package/plugins/codex/skills/funpixel-3d/references/level-spec.md +1 -1
- package/plugins/codex/skills/funpixel-3d/references/levels.md +3 -3
- package/plugins/codex/skills/funpixel-3d/references/light-and-places.md +3 -3
- package/plugins/codex/skills/funpixel-3d/references/painted-target.md +7 -7
- package/plugins/codex/skills/funpixel-3d/references/three-loading.md +4 -4
- package/plugins/codex/skills/funpixel-3d/references/unity.md +13 -13
- package/plugins/codex/skills/funpixel-art/references/animation.md +1 -1
- package/plugins/codex/skills/funpixel-art/references/cast.md +3 -3
- package/plugins/codex/skills/funpixel-art/references/effects.md +2 -2
- package/plugins/codex/skills/funpixel-art/references/frames.md +6 -6
- package/plugins/codex/skills/funpixel-art/references/judging-frames.md +8 -8
- package/plugins/codex/skills/funpixel-art/references/look.md +4 -4
- package/plugins/codex/skills/funpixel-art/references/pipeline.md +2 -2
- package/plugins/codex/skills/funpixel-art/references/prompts.md +4 -4
- package/plugins/codex/skills/funpixel-art/references/ui.md +15 -15
- package/plugins/codex/skills/funpixel-art/references/unity.md +14 -14
- package/plugins/codex/skills/funpixel-audio/references/adaptive-music.md +4 -4
- package/plugins/codex/skills/funpixel-audio/references/engine.md +2 -2
- package/plugins/codex/skills/funpixel-audio/references/measure.md +1 -1
- package/plugins/codex/skills/funpixel-audio/references/unity.md +20 -19
- package/plugins/codex/skills/funpixel-game-feel/SKILL.md +4 -4
- package/plugins/codex/skills/funpixel-game-feel/references/contact.md +6 -6
- package/plugins/codex/skills/funpixel-game-feel/references/unity.md +18 -23
- package/plugins/codex/skills/funpixel-game-logic/SKILL.md +3 -3
- package/plugins/codex/skills/funpixel-game-logic/references/balance.md +2 -2
- package/plugins/codex/skills/funpixel-game-logic/references/depth.md +2 -2
- package/plugins/codex/skills/funpixel-game-logic/references/escalation.md +5 -5
- package/plugins/codex/skills/funpixel-game-logic/references/probes.md +10 -10
- package/plugins/codex/skills/funpixel-game-logic/references/unity.md +28 -28
- package/plugins/codex/skills/funpixel-game-spine/SKILL.md +1 -1
- package/plugins/codex/skills/funpixel-game-spine/references/performance.md +2 -2
- package/plugins/codex/skills/funpixel-game-spine/references/replay.md +11 -11
- package/plugins/codex/skills/funpixel-game-spine/references/room-api.md +1 -1
- package/plugins/codex/skills/funpixel-game-spine/references/sdk.md +1 -1
- package/plugins/codex/skills/funpixel-gdd/SKILL.md +2 -2
- package/plugins/codex/skills/funpixel-gdd/references/as-built.md +2 -2
- package/plugins/codex/skills/funpixel-gdd/references/design-measures.md +2 -2
- package/plugins/codex/skills/funpixel-gdd/references/design-note.md +1 -1
- package/plugins/codex/skills/funpixel-gdd/references/first-look.md +1 -1
- package/plugins/codex/skills/funpixel-gdd/references/floors.md +2 -2
- package/plugins/codex/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
- package/plugins/codex/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
- package/plugins/codex/skills/funpixel-gdd/references/genre-racing.md +2 -2
- package/plugins/codex/skills/funpixel-gdd/references/genre-rpg.md +2 -2
- package/plugins/codex/skills/funpixel-gdd/references/genre-shooter.md +2 -2
- package/plugins/codex/skills/funpixel-gdd/references/genre-survival.md +2 -2
- package/plugins/codex/skills/funpixel-gdd/references/invent-first.md +3 -3
- package/plugins/codex/skills/funpixel-gdd/references/level-and-fun.md +11 -11
- package/plugins/codex/skills/funpixel-gdd/references/pages.md +2 -5
- package/plugins/codex/skills/funpixel-gdd/references/plan-at-size.md +5 -5
- package/plugins/codex/skills/funpixel-gdd/references/production-tiers.md +11 -11
- package/plugins/codex/skills/funpixel-gdd/references/sections.md +7 -7
- package/plugins/codex/skills/funpixel-gdd/references/spec-folder.md +3 -3
- package/plugins/codex/skills/funpixel-gdd/references/the-path.md +3 -4
- package/plugins/codex/skills/funpixel-gdd/references/world-and-identity.md +4 -4
- package/plugins/codex/skills/funpixel-gdd/references/worth.md +4 -4
- package/plugins/codex/skills/funpixel-mobile-ui/SKILL.md +3 -3
- package/plugins/codex/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
- package/plugins/codex/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
- package/plugins/codex/skills/funpixel-mobile-ui/references/recipes.md +1 -1
- package/plugins/codex/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
- package/plugins/codex/skills/funpixel-mobile-ui/references/unity.md +23 -23
- package/plugins/codex/skills/funpixel-publish/references/compose.md +1 -1
- package/plugins/codex/skills/funpixel-publish/references/server-build.md +1 -1
- package/plugins/codex/skills/funpixel-store/SKILL.md +3 -3
- package/plugins/codex/skills/funpixel-store/references/app-store.md +1 -1
- package/plugins/codex/skills/funpixel-store/references/google-play.md +2 -2
- package/plugins/codex/skills/funpixel-store/references/ios-release.md +19 -20
- package/plugins/codex/skills/funpixel-store/references/money.md +2 -2
- package/plugins/codex/skills/funpixel-store/references/purchases-and-review.md +18 -18
- package/plugins/codex/skills/funpixel-store/references/readiness-page.md +1 -1
- package/plugins/codex/skills/funpixel-store/references/readiness.md +3 -3
- package/plugins/codex/skills/funpixel-store/references/unity-store.md +9 -12
- package/plugins/codex/skills/funpixel-unity-game/SKILL.md +28 -35
- package/plugins/codex/skills/funpixel-unity-game/references/agent-ops.md +9 -9
- package/plugins/codex/skills/funpixel-unity-game/references/fixes.md +21 -21
- package/plugins/codex/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
- package/plugins/codex/skills/funpixel-unity-game/references/handing-off.md +4 -4
- package/plugins/codex/skills/funpixel-unity-game/references/performance.md +10 -14
- package/plugins/codex/skills/funpixel-unity-game/references/probe.md +4 -4
- package/plugins/codex/skills/funpixel-unity-game/references/shared-mac.md +1 -1
- package/plugins/codex/skills/funpixel-unity-game/references/traps.md +13 -14
- package/plugins/codex/skills/funpixel-verify/references/bar.md +1 -1
- package/plugins/codex/skills/funpixel-verify/references/fidelity.md +11 -11
- package/plugins/codex/skills/funpixel-verify/references/mobile-qa.md +10 -10
- package/plugins/codex/skills/funpixel-verify/references/playtest.md +14 -14
- package/plugins/codex/skills/funpixel-verify/references/unity.md +11 -11
- package/plugins/codex/skills/funpixel-world-and-story/SKILL.md +1 -1
- package/plugins/codex/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
- package/plugins/codex/skills/funpixel-world-and-story/references/living-world.md +2 -2
- package/plugins/codex/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
- package/plugins/codex/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
- package/plugins/codex/skills/funpixel-world-and-story/references/voice.md +1 -1
- package/plugins/cursor/README.md +1 -1
- package/plugins/cursor/agents/art-director.md +2 -2
- package/plugins/cursor/commands/playtest.md +2 -2
- package/plugins/cursor/hooks/brief.md +1 -1
- package/plugins/cursor/hooks/guidance.json +1 -1
- package/plugins/cursor/hooks/vendor/pipeline/pipeline.mjs +6 -6
- package/plugins/cursor/hooks/vendor/studio/pitch.mjs +1 -1
- package/plugins/cursor/rules/funpixel-brief.mdc +1 -1
- package/plugins/cursor/skills/funpixel-3d/references/bake-off.md +3 -3
- package/plugins/cursor/skills/funpixel-3d/references/characters.md +1 -1
- package/plugins/cursor/skills/funpixel-3d/references/hero-route.md +5 -5
- package/plugins/cursor/skills/funpixel-3d/references/level-spec.md +1 -1
- package/plugins/cursor/skills/funpixel-3d/references/levels.md +3 -3
- package/plugins/cursor/skills/funpixel-3d/references/light-and-places.md +3 -3
- package/plugins/cursor/skills/funpixel-3d/references/painted-target.md +7 -7
- package/plugins/cursor/skills/funpixel-3d/references/three-loading.md +4 -4
- package/plugins/cursor/skills/funpixel-3d/references/unity.md +13 -13
- package/plugins/cursor/skills/funpixel-art/references/animation.md +1 -1
- package/plugins/cursor/skills/funpixel-art/references/cast.md +3 -3
- package/plugins/cursor/skills/funpixel-art/references/effects.md +2 -2
- package/plugins/cursor/skills/funpixel-art/references/frames.md +6 -6
- package/plugins/cursor/skills/funpixel-art/references/judging-frames.md +8 -8
- package/plugins/cursor/skills/funpixel-art/references/look.md +4 -4
- package/plugins/cursor/skills/funpixel-art/references/pipeline.md +2 -2
- package/plugins/cursor/skills/funpixel-art/references/prompts.md +4 -4
- package/plugins/cursor/skills/funpixel-art/references/ui.md +15 -15
- package/plugins/cursor/skills/funpixel-art/references/unity.md +14 -14
- package/plugins/cursor/skills/funpixel-audio/references/adaptive-music.md +4 -4
- package/plugins/cursor/skills/funpixel-audio/references/engine.md +2 -2
- package/plugins/cursor/skills/funpixel-audio/references/measure.md +1 -1
- package/plugins/cursor/skills/funpixel-audio/references/unity.md +20 -19
- package/plugins/cursor/skills/funpixel-game-feel/SKILL.md +4 -4
- package/plugins/cursor/skills/funpixel-game-feel/references/contact.md +6 -6
- package/plugins/cursor/skills/funpixel-game-feel/references/unity.md +18 -23
- package/plugins/cursor/skills/funpixel-game-logic/SKILL.md +3 -3
- package/plugins/cursor/skills/funpixel-game-logic/references/balance.md +2 -2
- package/plugins/cursor/skills/funpixel-game-logic/references/depth.md +2 -2
- package/plugins/cursor/skills/funpixel-game-logic/references/escalation.md +5 -5
- package/plugins/cursor/skills/funpixel-game-logic/references/probes.md +10 -10
- package/plugins/cursor/skills/funpixel-game-logic/references/unity.md +28 -28
- package/plugins/cursor/skills/funpixel-game-spine/SKILL.md +1 -1
- package/plugins/cursor/skills/funpixel-game-spine/references/performance.md +2 -2
- package/plugins/cursor/skills/funpixel-game-spine/references/replay.md +11 -11
- package/plugins/cursor/skills/funpixel-game-spine/references/room-api.md +1 -1
- package/plugins/cursor/skills/funpixel-game-spine/references/sdk.md +1 -1
- package/plugins/cursor/skills/funpixel-gdd/SKILL.md +2 -2
- package/plugins/cursor/skills/funpixel-gdd/references/as-built.md +2 -2
- package/plugins/cursor/skills/funpixel-gdd/references/design-measures.md +2 -2
- package/plugins/cursor/skills/funpixel-gdd/references/design-note.md +1 -1
- package/plugins/cursor/skills/funpixel-gdd/references/first-look.md +1 -1
- package/plugins/cursor/skills/funpixel-gdd/references/floors.md +2 -2
- package/plugins/cursor/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
- package/plugins/cursor/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
- package/plugins/cursor/skills/funpixel-gdd/references/genre-racing.md +2 -2
- package/plugins/cursor/skills/funpixel-gdd/references/genre-rpg.md +2 -2
- package/plugins/cursor/skills/funpixel-gdd/references/genre-shooter.md +2 -2
- package/plugins/cursor/skills/funpixel-gdd/references/genre-survival.md +2 -2
- package/plugins/cursor/skills/funpixel-gdd/references/invent-first.md +3 -3
- package/plugins/cursor/skills/funpixel-gdd/references/level-and-fun.md +11 -11
- package/plugins/cursor/skills/funpixel-gdd/references/pages.md +2 -5
- package/plugins/cursor/skills/funpixel-gdd/references/plan-at-size.md +5 -5
- package/plugins/cursor/skills/funpixel-gdd/references/production-tiers.md +11 -11
- package/plugins/cursor/skills/funpixel-gdd/references/sections.md +7 -7
- package/plugins/cursor/skills/funpixel-gdd/references/spec-folder.md +3 -3
- package/plugins/cursor/skills/funpixel-gdd/references/the-path.md +3 -4
- package/plugins/cursor/skills/funpixel-gdd/references/world-and-identity.md +4 -4
- package/plugins/cursor/skills/funpixel-gdd/references/worth.md +4 -4
- package/plugins/cursor/skills/funpixel-mobile-ui/SKILL.md +3 -3
- package/plugins/cursor/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
- package/plugins/cursor/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
- package/plugins/cursor/skills/funpixel-mobile-ui/references/recipes.md +1 -1
- package/plugins/cursor/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
- package/plugins/cursor/skills/funpixel-mobile-ui/references/unity.md +23 -23
- package/plugins/cursor/skills/funpixel-publish/references/compose.md +1 -1
- package/plugins/cursor/skills/funpixel-publish/references/server-build.md +1 -1
- package/plugins/cursor/skills/funpixel-store/SKILL.md +3 -3
- package/plugins/cursor/skills/funpixel-store/references/app-store.md +1 -1
- package/plugins/cursor/skills/funpixel-store/references/google-play.md +2 -2
- package/plugins/cursor/skills/funpixel-store/references/ios-release.md +19 -20
- package/plugins/cursor/skills/funpixel-store/references/money.md +2 -2
- package/plugins/cursor/skills/funpixel-store/references/purchases-and-review.md +18 -18
- package/plugins/cursor/skills/funpixel-store/references/readiness-page.md +1 -1
- package/plugins/cursor/skills/funpixel-store/references/readiness.md +3 -3
- package/plugins/cursor/skills/funpixel-store/references/unity-store.md +9 -12
- package/plugins/cursor/skills/funpixel-unity-game/SKILL.md +28 -35
- package/plugins/cursor/skills/funpixel-unity-game/references/agent-ops.md +9 -9
- package/plugins/cursor/skills/funpixel-unity-game/references/fixes.md +21 -21
- package/plugins/cursor/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
- package/plugins/cursor/skills/funpixel-unity-game/references/handing-off.md +4 -4
- package/plugins/cursor/skills/funpixel-unity-game/references/performance.md +10 -14
- package/plugins/cursor/skills/funpixel-unity-game/references/probe.md +4 -4
- package/plugins/cursor/skills/funpixel-unity-game/references/shared-mac.md +1 -1
- package/plugins/cursor/skills/funpixel-unity-game/references/traps.md +13 -14
- package/plugins/cursor/skills/funpixel-verify/references/bar.md +1 -1
- package/plugins/cursor/skills/funpixel-verify/references/fidelity.md +11 -11
- package/plugins/cursor/skills/funpixel-verify/references/mobile-qa.md +10 -10
- package/plugins/cursor/skills/funpixel-verify/references/playtest.md +14 -14
- package/plugins/cursor/skills/funpixel-verify/references/unity.md +11 -11
- package/plugins/cursor/skills/funpixel-world-and-story/SKILL.md +1 -1
- package/plugins/cursor/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
- package/plugins/cursor/skills/funpixel-world-and-story/references/living-world.md +2 -2
- package/plugins/cursor/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
- package/plugins/cursor/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
- package/plugins/cursor/skills/funpixel-world-and-story/references/voice.md +1 -1
- package/plugins/kiro/AGENTS.md +1 -1
- package/plugins/kiro/README.md +1 -1
- package/plugins/kiro/hooks/brief.md +1 -1
- package/plugins/kiro/hooks/guidance.json +1 -1
- package/plugins/kiro/hooks/vendor/pipeline/pipeline.mjs +6 -6
- package/plugins/kiro/hooks/vendor/studio/pitch.mjs +1 -1
- package/plugins/kiro/skills/fp-art-director/SKILL.md +2 -2
- package/plugins/kiro/skills/fp-playtest/SKILL.md +2 -2
- package/plugins/kiro/skills/funpixel-3d/references/bake-off.md +3 -3
- package/plugins/kiro/skills/funpixel-3d/references/characters.md +1 -1
- package/plugins/kiro/skills/funpixel-3d/references/hero-route.md +5 -5
- package/plugins/kiro/skills/funpixel-3d/references/level-spec.md +1 -1
- package/plugins/kiro/skills/funpixel-3d/references/levels.md +3 -3
- package/plugins/kiro/skills/funpixel-3d/references/light-and-places.md +3 -3
- package/plugins/kiro/skills/funpixel-3d/references/painted-target.md +7 -7
- package/plugins/kiro/skills/funpixel-3d/references/three-loading.md +4 -4
- package/plugins/kiro/skills/funpixel-3d/references/unity.md +13 -13
- package/plugins/kiro/skills/funpixel-art/references/animation.md +1 -1
- package/plugins/kiro/skills/funpixel-art/references/cast.md +3 -3
- package/plugins/kiro/skills/funpixel-art/references/effects.md +2 -2
- package/plugins/kiro/skills/funpixel-art/references/frames.md +6 -6
- package/plugins/kiro/skills/funpixel-art/references/judging-frames.md +8 -8
- package/plugins/kiro/skills/funpixel-art/references/look.md +4 -4
- package/plugins/kiro/skills/funpixel-art/references/pipeline.md +2 -2
- package/plugins/kiro/skills/funpixel-art/references/prompts.md +4 -4
- package/plugins/kiro/skills/funpixel-art/references/ui.md +15 -15
- package/plugins/kiro/skills/funpixel-art/references/unity.md +14 -14
- package/plugins/kiro/skills/funpixel-audio/references/adaptive-music.md +4 -4
- package/plugins/kiro/skills/funpixel-audio/references/engine.md +2 -2
- package/plugins/kiro/skills/funpixel-audio/references/measure.md +1 -1
- package/plugins/kiro/skills/funpixel-audio/references/unity.md +20 -19
- package/plugins/kiro/skills/funpixel-game-feel/SKILL.md +4 -4
- package/plugins/kiro/skills/funpixel-game-feel/references/contact.md +6 -6
- package/plugins/kiro/skills/funpixel-game-feel/references/unity.md +18 -23
- package/plugins/kiro/skills/funpixel-game-logic/SKILL.md +3 -3
- package/plugins/kiro/skills/funpixel-game-logic/references/balance.md +2 -2
- package/plugins/kiro/skills/funpixel-game-logic/references/depth.md +2 -2
- package/plugins/kiro/skills/funpixel-game-logic/references/escalation.md +5 -5
- package/plugins/kiro/skills/funpixel-game-logic/references/probes.md +10 -10
- package/plugins/kiro/skills/funpixel-game-logic/references/unity.md +28 -28
- package/plugins/kiro/skills/funpixel-game-spine/SKILL.md +1 -1
- package/plugins/kiro/skills/funpixel-game-spine/references/performance.md +2 -2
- package/plugins/kiro/skills/funpixel-game-spine/references/replay.md +11 -11
- package/plugins/kiro/skills/funpixel-game-spine/references/room-api.md +1 -1
- package/plugins/kiro/skills/funpixel-game-spine/references/sdk.md +1 -1
- package/plugins/kiro/skills/funpixel-gdd/SKILL.md +2 -2
- package/plugins/kiro/skills/funpixel-gdd/references/as-built.md +2 -2
- package/plugins/kiro/skills/funpixel-gdd/references/design-measures.md +2 -2
- package/plugins/kiro/skills/funpixel-gdd/references/design-note.md +1 -1
- package/plugins/kiro/skills/funpixel-gdd/references/first-look.md +1 -1
- package/plugins/kiro/skills/funpixel-gdd/references/floors.md +2 -2
- package/plugins/kiro/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
- package/plugins/kiro/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
- package/plugins/kiro/skills/funpixel-gdd/references/genre-racing.md +2 -2
- package/plugins/kiro/skills/funpixel-gdd/references/genre-rpg.md +2 -2
- package/plugins/kiro/skills/funpixel-gdd/references/genre-shooter.md +2 -2
- package/plugins/kiro/skills/funpixel-gdd/references/genre-survival.md +2 -2
- package/plugins/kiro/skills/funpixel-gdd/references/invent-first.md +3 -3
- package/plugins/kiro/skills/funpixel-gdd/references/level-and-fun.md +11 -11
- package/plugins/kiro/skills/funpixel-gdd/references/pages.md +2 -5
- package/plugins/kiro/skills/funpixel-gdd/references/plan-at-size.md +5 -5
- package/plugins/kiro/skills/funpixel-gdd/references/production-tiers.md +11 -11
- package/plugins/kiro/skills/funpixel-gdd/references/sections.md +7 -7
- package/plugins/kiro/skills/funpixel-gdd/references/spec-folder.md +3 -3
- package/plugins/kiro/skills/funpixel-gdd/references/the-path.md +3 -4
- package/plugins/kiro/skills/funpixel-gdd/references/world-and-identity.md +4 -4
- package/plugins/kiro/skills/funpixel-gdd/references/worth.md +4 -4
- package/plugins/kiro/skills/funpixel-mobile-ui/SKILL.md +3 -3
- package/plugins/kiro/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
- package/plugins/kiro/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
- package/plugins/kiro/skills/funpixel-mobile-ui/references/recipes.md +1 -1
- package/plugins/kiro/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
- package/plugins/kiro/skills/funpixel-mobile-ui/references/unity.md +23 -23
- package/plugins/kiro/skills/funpixel-publish/references/compose.md +1 -1
- package/plugins/kiro/skills/funpixel-publish/references/server-build.md +1 -1
- package/plugins/kiro/skills/funpixel-store/SKILL.md +3 -3
- package/plugins/kiro/skills/funpixel-store/references/app-store.md +1 -1
- package/plugins/kiro/skills/funpixel-store/references/google-play.md +2 -2
- package/plugins/kiro/skills/funpixel-store/references/ios-release.md +19 -20
- package/plugins/kiro/skills/funpixel-store/references/money.md +2 -2
- package/plugins/kiro/skills/funpixel-store/references/purchases-and-review.md +18 -18
- package/plugins/kiro/skills/funpixel-store/references/readiness-page.md +1 -1
- package/plugins/kiro/skills/funpixel-store/references/readiness.md +3 -3
- package/plugins/kiro/skills/funpixel-store/references/unity-store.md +9 -12
- package/plugins/kiro/skills/funpixel-unity-game/SKILL.md +28 -35
- package/plugins/kiro/skills/funpixel-unity-game/references/agent-ops.md +9 -9
- package/plugins/kiro/skills/funpixel-unity-game/references/fixes.md +21 -21
- package/plugins/kiro/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
- package/plugins/kiro/skills/funpixel-unity-game/references/handing-off.md +4 -4
- package/plugins/kiro/skills/funpixel-unity-game/references/performance.md +10 -14
- package/plugins/kiro/skills/funpixel-unity-game/references/probe.md +4 -4
- package/plugins/kiro/skills/funpixel-unity-game/references/shared-mac.md +1 -1
- package/plugins/kiro/skills/funpixel-unity-game/references/traps.md +13 -14
- package/plugins/kiro/skills/funpixel-verify/references/bar.md +1 -1
- package/plugins/kiro/skills/funpixel-verify/references/fidelity.md +11 -11
- package/plugins/kiro/skills/funpixel-verify/references/mobile-qa.md +10 -10
- package/plugins/kiro/skills/funpixel-verify/references/playtest.md +14 -14
- package/plugins/kiro/skills/funpixel-verify/references/unity.md +11 -11
- package/plugins/kiro/skills/funpixel-world-and-story/SKILL.md +1 -1
- package/plugins/kiro/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
- package/plugins/kiro/skills/funpixel-world-and-story/references/living-world.md +2 -2
- package/plugins/kiro/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
- package/plugins/kiro/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
- package/plugins/kiro/skills/funpixel-world-and-story/references/voice.md +1 -1
- package/plugins/robin/README.md +1 -1
- package/plugins/robin/claude/README.md +2 -3
- package/plugins/robin/claude/agents/art-director.md +2 -2
- package/plugins/robin/claude/commands/playtest.md +2 -2
- package/plugins/robin/claude/hooks/brief.md +1 -1
- package/plugins/robin/claude/hooks/guidance.json +1 -1
- package/plugins/robin/claude/hooks/vendor/pipeline/pipeline.mjs +6 -6
- package/plugins/robin/claude/hooks/vendor/studio/pitch.mjs +1 -1
- package/plugins/robin/claude/skills/3d/references/bake-off.md +3 -3
- package/plugins/robin/claude/skills/3d/references/characters.md +1 -1
- package/plugins/robin/claude/skills/3d/references/hero-route.md +5 -5
- package/plugins/robin/claude/skills/3d/references/level-spec.md +1 -1
- package/plugins/robin/claude/skills/3d/references/levels.md +3 -3
- package/plugins/robin/claude/skills/3d/references/light-and-places.md +3 -3
- package/plugins/robin/claude/skills/3d/references/painted-target.md +7 -7
- package/plugins/robin/claude/skills/3d/references/three-loading.md +4 -4
- package/plugins/robin/claude/skills/3d/references/unity.md +13 -13
- package/plugins/robin/claude/skills/art/references/animation.md +1 -1
- package/plugins/robin/claude/skills/art/references/cast.md +3 -3
- package/plugins/robin/claude/skills/art/references/effects.md +2 -2
- package/plugins/robin/claude/skills/art/references/frames.md +6 -6
- package/plugins/robin/claude/skills/art/references/judging-frames.md +8 -8
- package/plugins/robin/claude/skills/art/references/look.md +4 -4
- package/plugins/robin/claude/skills/art/references/pipeline.md +2 -2
- package/plugins/robin/claude/skills/art/references/prompts.md +4 -4
- package/plugins/robin/claude/skills/art/references/ui.md +15 -15
- package/plugins/robin/claude/skills/art/references/unity.md +14 -14
- package/plugins/robin/claude/skills/audio/references/adaptive-music.md +4 -4
- package/plugins/robin/claude/skills/audio/references/engine.md +2 -2
- package/plugins/robin/claude/skills/audio/references/measure.md +1 -1
- package/plugins/robin/claude/skills/audio/references/unity.md +20 -19
- package/plugins/robin/claude/skills/game-feel/SKILL.md +4 -4
- package/plugins/robin/claude/skills/game-feel/references/contact.md +6 -6
- package/plugins/robin/claude/skills/game-feel/references/unity.md +18 -23
- package/plugins/robin/claude/skills/game-logic/SKILL.md +3 -3
- package/plugins/robin/claude/skills/game-logic/references/balance.md +2 -2
- package/plugins/robin/claude/skills/game-logic/references/depth.md +2 -2
- package/plugins/robin/claude/skills/game-logic/references/escalation.md +5 -5
- package/plugins/robin/claude/skills/game-logic/references/probes.md +10 -10
- package/plugins/robin/claude/skills/game-logic/references/unity.md +28 -28
- package/plugins/robin/claude/skills/game-spine/SKILL.md +1 -1
- package/plugins/robin/claude/skills/game-spine/references/performance.md +2 -2
- package/plugins/robin/claude/skills/game-spine/references/replay.md +11 -11
- package/plugins/robin/claude/skills/game-spine/references/room-api.md +1 -1
- package/plugins/robin/claude/skills/game-spine/references/sdk.md +1 -1
- package/plugins/robin/claude/skills/gdd/SKILL.md +2 -2
- package/plugins/robin/claude/skills/gdd/references/as-built.md +2 -2
- package/plugins/robin/claude/skills/gdd/references/design-measures.md +2 -2
- package/plugins/robin/claude/skills/gdd/references/design-note.md +1 -1
- package/plugins/robin/claude/skills/gdd/references/first-look.md +1 -1
- package/plugins/robin/claude/skills/gdd/references/floors.md +2 -2
- package/plugins/robin/claude/skills/gdd/references/gameplay-contract.md +1 -1
- package/plugins/robin/claude/skills/gdd/references/genre-puzzle.md +4 -4
- package/plugins/robin/claude/skills/gdd/references/genre-racing.md +2 -2
- package/plugins/robin/claude/skills/gdd/references/genre-rpg.md +2 -2
- package/plugins/robin/claude/skills/gdd/references/genre-shooter.md +2 -2
- package/plugins/robin/claude/skills/gdd/references/genre-survival.md +2 -2
- package/plugins/robin/claude/skills/gdd/references/invent-first.md +3 -3
- package/plugins/robin/claude/skills/gdd/references/level-and-fun.md +11 -11
- package/plugins/robin/claude/skills/gdd/references/pages.md +2 -5
- package/plugins/robin/claude/skills/gdd/references/plan-at-size.md +5 -5
- package/plugins/robin/claude/skills/gdd/references/production-tiers.md +11 -11
- package/plugins/robin/claude/skills/gdd/references/sections.md +7 -7
- package/plugins/robin/claude/skills/gdd/references/spec-folder.md +3 -3
- package/plugins/robin/claude/skills/gdd/references/the-path.md +3 -4
- package/plugins/robin/claude/skills/gdd/references/world-and-identity.md +4 -4
- package/plugins/robin/claude/skills/gdd/references/worth.md +4 -4
- package/plugins/robin/claude/skills/mobile-ui/SKILL.md +3 -3
- package/plugins/robin/claude/skills/mobile-ui/references/hud-and-title.md +3 -3
- package/plugins/robin/claude/skills/mobile-ui/references/phone-check.md +1 -1
- package/plugins/robin/claude/skills/mobile-ui/references/recipes.md +1 -1
- package/plugins/robin/claude/skills/mobile-ui/references/restyle-ui.md +11 -11
- package/plugins/robin/claude/skills/mobile-ui/references/unity.md +23 -23
- package/plugins/robin/claude/skills/publishing/references/compose.md +1 -1
- package/plugins/robin/claude/skills/publishing/references/server-build.md +1 -1
- package/plugins/robin/claude/skills/store/SKILL.md +3 -3
- package/plugins/robin/claude/skills/store/references/app-store.md +1 -1
- package/plugins/robin/claude/skills/store/references/google-play.md +2 -2
- package/plugins/robin/claude/skills/store/references/ios-release.md +19 -20
- package/plugins/robin/claude/skills/store/references/money.md +2 -2
- package/plugins/robin/claude/skills/store/references/purchases-and-review.md +18 -18
- package/plugins/robin/claude/skills/store/references/readiness-page.md +1 -1
- package/plugins/robin/claude/skills/store/references/readiness.md +3 -3
- package/plugins/robin/claude/skills/store/references/unity-store.md +9 -12
- package/plugins/robin/claude/skills/unity-game/SKILL.md +28 -35
- package/plugins/robin/claude/skills/unity-game/references/agent-ops.md +9 -9
- package/plugins/robin/claude/skills/unity-game/references/fixes.md +21 -21
- package/plugins/robin/claude/skills/unity-game/references/from-a-web-game.md +17 -17
- package/plugins/robin/claude/skills/unity-game/references/handing-off.md +4 -4
- package/plugins/robin/claude/skills/unity-game/references/performance.md +10 -14
- package/plugins/robin/claude/skills/unity-game/references/probe.md +4 -4
- package/plugins/robin/claude/skills/unity-game/references/shared-mac.md +1 -1
- package/plugins/robin/claude/skills/unity-game/references/traps.md +13 -14
- package/plugins/robin/claude/skills/verifying/references/bar.md +1 -1
- package/plugins/robin/claude/skills/verifying/references/fidelity.md +11 -11
- package/plugins/robin/claude/skills/verifying/references/mobile-qa.md +10 -10
- package/plugins/robin/claude/skills/verifying/references/playtest.md +14 -14
- package/plugins/robin/claude/skills/verifying/references/unity.md +11 -11
- package/plugins/robin/claude/skills/world-and-story/SKILL.md +1 -1
- package/plugins/robin/claude/skills/world-and-story/references/atmosphere.md +4 -4
- package/plugins/robin/claude/skills/world-and-story/references/living-world.md +2 -2
- package/plugins/robin/claude/skills/world-and-story/references/opening-and-chapters.md +1 -1
- package/plugins/robin/claude/skills/world-and-story/references/story-at-size.md +2 -2
- package/plugins/robin/claude/skills/world-and-story/references/voice.md +1 -1
- package/plugins/robin/skills/fp-playtest/SKILL.md +2 -2
- package/plugins/robin/skills/funpixel-3d/references/bake-off.md +3 -3
- package/plugins/robin/skills/funpixel-3d/references/characters.md +1 -1
- package/plugins/robin/skills/funpixel-3d/references/hero-route.md +5 -5
- package/plugins/robin/skills/funpixel-3d/references/level-spec.md +1 -1
- package/plugins/robin/skills/funpixel-3d/references/levels.md +3 -3
- package/plugins/robin/skills/funpixel-3d/references/light-and-places.md +3 -3
- package/plugins/robin/skills/funpixel-3d/references/painted-target.md +7 -7
- package/plugins/robin/skills/funpixel-3d/references/three-loading.md +4 -4
- package/plugins/robin/skills/funpixel-3d/references/unity.md +13 -13
- package/plugins/robin/skills/funpixel-art/references/animation.md +1 -1
- package/plugins/robin/skills/funpixel-art/references/cast.md +3 -3
- package/plugins/robin/skills/funpixel-art/references/effects.md +2 -2
- package/plugins/robin/skills/funpixel-art/references/frames.md +6 -6
- package/plugins/robin/skills/funpixel-art/references/judging-frames.md +8 -8
- package/plugins/robin/skills/funpixel-art/references/look.md +4 -4
- package/plugins/robin/skills/funpixel-art/references/pipeline.md +2 -2
- package/plugins/robin/skills/funpixel-art/references/prompts.md +4 -4
- package/plugins/robin/skills/funpixel-art/references/ui.md +15 -15
- package/plugins/robin/skills/funpixel-art/references/unity.md +14 -14
- package/plugins/robin/skills/funpixel-audio/references/adaptive-music.md +4 -4
- package/plugins/robin/skills/funpixel-audio/references/engine.md +2 -2
- package/plugins/robin/skills/funpixel-audio/references/measure.md +1 -1
- package/plugins/robin/skills/funpixel-audio/references/unity.md +20 -19
- package/plugins/robin/skills/funpixel-brief/SKILL.md +1 -1
- package/plugins/robin/skills/funpixel-game-feel/SKILL.md +4 -4
- package/plugins/robin/skills/funpixel-game-feel/references/contact.md +6 -6
- package/plugins/robin/skills/funpixel-game-feel/references/unity.md +18 -23
- package/plugins/robin/skills/funpixel-game-logic/SKILL.md +3 -3
- package/plugins/robin/skills/funpixel-game-logic/references/balance.md +2 -2
- package/plugins/robin/skills/funpixel-game-logic/references/depth.md +2 -2
- package/plugins/robin/skills/funpixel-game-logic/references/escalation.md +5 -5
- package/plugins/robin/skills/funpixel-game-logic/references/probes.md +10 -10
- package/plugins/robin/skills/funpixel-game-logic/references/unity.md +28 -28
- package/plugins/robin/skills/funpixel-game-spine/SKILL.md +1 -1
- package/plugins/robin/skills/funpixel-game-spine/references/performance.md +2 -2
- package/plugins/robin/skills/funpixel-game-spine/references/replay.md +11 -11
- package/plugins/robin/skills/funpixel-game-spine/references/room-api.md +1 -1
- package/plugins/robin/skills/funpixel-game-spine/references/sdk.md +1 -1
- package/plugins/robin/skills/funpixel-gdd/SKILL.md +2 -2
- package/plugins/robin/skills/funpixel-gdd/references/as-built.md +2 -2
- package/plugins/robin/skills/funpixel-gdd/references/design-measures.md +2 -2
- package/plugins/robin/skills/funpixel-gdd/references/design-note.md +1 -1
- package/plugins/robin/skills/funpixel-gdd/references/first-look.md +1 -1
- package/plugins/robin/skills/funpixel-gdd/references/floors.md +2 -2
- package/plugins/robin/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
- package/plugins/robin/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
- package/plugins/robin/skills/funpixel-gdd/references/genre-racing.md +2 -2
- package/plugins/robin/skills/funpixel-gdd/references/genre-rpg.md +2 -2
- package/plugins/robin/skills/funpixel-gdd/references/genre-shooter.md +2 -2
- package/plugins/robin/skills/funpixel-gdd/references/genre-survival.md +2 -2
- package/plugins/robin/skills/funpixel-gdd/references/invent-first.md +3 -3
- package/plugins/robin/skills/funpixel-gdd/references/level-and-fun.md +11 -11
- package/plugins/robin/skills/funpixel-gdd/references/pages.md +2 -5
- package/plugins/robin/skills/funpixel-gdd/references/plan-at-size.md +5 -5
- package/plugins/robin/skills/funpixel-gdd/references/production-tiers.md +11 -11
- package/plugins/robin/skills/funpixel-gdd/references/sections.md +7 -7
- package/plugins/robin/skills/funpixel-gdd/references/spec-folder.md +3 -3
- package/plugins/robin/skills/funpixel-gdd/references/the-path.md +3 -4
- package/plugins/robin/skills/funpixel-gdd/references/world-and-identity.md +4 -4
- package/plugins/robin/skills/funpixel-gdd/references/worth.md +4 -4
- package/plugins/robin/skills/funpixel-mobile-ui/SKILL.md +3 -3
- package/plugins/robin/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
- package/plugins/robin/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
- package/plugins/robin/skills/funpixel-mobile-ui/references/recipes.md +1 -1
- package/plugins/robin/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
- package/plugins/robin/skills/funpixel-mobile-ui/references/unity.md +23 -23
- package/plugins/robin/skills/funpixel-publish/references/compose.md +1 -1
- package/plugins/robin/skills/funpixel-publish/references/server-build.md +1 -1
- package/plugins/robin/skills/funpixel-store/SKILL.md +3 -3
- package/plugins/robin/skills/funpixel-store/references/app-store.md +1 -1
- package/plugins/robin/skills/funpixel-store/references/google-play.md +2 -2
- package/plugins/robin/skills/funpixel-store/references/ios-release.md +19 -20
- package/plugins/robin/skills/funpixel-store/references/money.md +2 -2
- package/plugins/robin/skills/funpixel-store/references/purchases-and-review.md +18 -18
- package/plugins/robin/skills/funpixel-store/references/readiness-page.md +1 -1
- package/plugins/robin/skills/funpixel-store/references/readiness.md +3 -3
- package/plugins/robin/skills/funpixel-store/references/unity-store.md +9 -12
- package/plugins/robin/skills/funpixel-unity-game/SKILL.md +28 -35
- package/plugins/robin/skills/funpixel-unity-game/references/agent-ops.md +9 -9
- package/plugins/robin/skills/funpixel-unity-game/references/fixes.md +21 -21
- package/plugins/robin/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
- package/plugins/robin/skills/funpixel-unity-game/references/handing-off.md +4 -4
- package/plugins/robin/skills/funpixel-unity-game/references/performance.md +10 -14
- package/plugins/robin/skills/funpixel-unity-game/references/probe.md +4 -4
- package/plugins/robin/skills/funpixel-unity-game/references/shared-mac.md +1 -1
- package/plugins/robin/skills/funpixel-unity-game/references/traps.md +13 -14
- package/plugins/robin/skills/funpixel-verify/references/bar.md +1 -1
- package/plugins/robin/skills/funpixel-verify/references/fidelity.md +11 -11
- package/plugins/robin/skills/funpixel-verify/references/mobile-qa.md +10 -10
- package/plugins/robin/skills/funpixel-verify/references/playtest.md +14 -14
- package/plugins/robin/skills/funpixel-verify/references/unity.md +11 -11
- package/plugins/robin/skills/funpixel-world-and-story/SKILL.md +1 -1
- package/plugins/robin/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
- package/plugins/robin/skills/funpixel-world-and-story/references/living-world.md +2 -2
- package/plugins/robin/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
- package/plugins/robin/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
- package/plugins/robin/skills/funpixel-world-and-story/references/voice.md +1 -1
- package/templates/common/.agents/skills/funpixel-3d/references/bake-off.md +3 -3
- package/templates/common/.agents/skills/funpixel-3d/references/characters.md +1 -1
- package/templates/common/.agents/skills/funpixel-3d/references/hero-route.md +5 -5
- package/templates/common/.agents/skills/funpixel-3d/references/level-spec.md +1 -1
- package/templates/common/.agents/skills/funpixel-3d/references/levels.md +3 -3
- package/templates/common/.agents/skills/funpixel-3d/references/light-and-places.md +3 -3
- package/templates/common/.agents/skills/funpixel-3d/references/painted-target.md +7 -7
- package/templates/common/.agents/skills/funpixel-3d/references/three-loading.md +4 -4
- package/templates/common/.agents/skills/funpixel-3d/references/unity.md +13 -13
- package/templates/common/.agents/skills/funpixel-art/references/animation.md +1 -1
- package/templates/common/.agents/skills/funpixel-art/references/cast.md +3 -3
- package/templates/common/.agents/skills/funpixel-art/references/effects.md +2 -2
- package/templates/common/.agents/skills/funpixel-art/references/frames.md +6 -6
- package/templates/common/.agents/skills/funpixel-art/references/judging-frames.md +8 -8
- package/templates/common/.agents/skills/funpixel-art/references/look.md +4 -4
- package/templates/common/.agents/skills/funpixel-art/references/pipeline.md +2 -2
- package/templates/common/.agents/skills/funpixel-art/references/prompts.md +4 -4
- package/templates/common/.agents/skills/funpixel-art/references/ui.md +15 -15
- package/templates/common/.agents/skills/funpixel-art/references/unity.md +14 -14
- package/templates/common/.agents/skills/funpixel-audio/references/adaptive-music.md +4 -4
- package/templates/common/.agents/skills/funpixel-audio/references/engine.md +2 -2
- package/templates/common/.agents/skills/funpixel-audio/references/measure.md +1 -1
- package/templates/common/.agents/skills/funpixel-audio/references/unity.md +20 -19
- package/templates/common/.agents/skills/funpixel-game-feel/SKILL.md +4 -4
- package/templates/common/.agents/skills/funpixel-game-feel/references/contact.md +6 -6
- package/templates/common/.agents/skills/funpixel-game-feel/references/unity.md +18 -23
- package/templates/common/.agents/skills/funpixel-game-logic/SKILL.md +3 -3
- package/templates/common/.agents/skills/funpixel-game-logic/references/balance.md +2 -2
- package/templates/common/.agents/skills/funpixel-game-logic/references/depth.md +2 -2
- package/templates/common/.agents/skills/funpixel-game-logic/references/escalation.md +5 -5
- package/templates/common/.agents/skills/funpixel-game-logic/references/probes.md +10 -10
- package/templates/common/.agents/skills/funpixel-game-logic/references/unity.md +28 -28
- package/templates/common/.agents/skills/funpixel-game-spine/SKILL.md +1 -1
- package/templates/common/.agents/skills/funpixel-game-spine/references/performance.md +2 -2
- package/templates/common/.agents/skills/funpixel-game-spine/references/replay.md +11 -11
- package/templates/common/.agents/skills/funpixel-game-spine/references/room-api.md +1 -1
- package/templates/common/.agents/skills/funpixel-game-spine/references/sdk.md +1 -1
- package/templates/common/.agents/skills/funpixel-gdd/SKILL.md +2 -2
- package/templates/common/.agents/skills/funpixel-gdd/references/as-built.md +2 -2
- package/templates/common/.agents/skills/funpixel-gdd/references/design-measures.md +2 -2
- package/templates/common/.agents/skills/funpixel-gdd/references/design-note.md +1 -1
- package/templates/common/.agents/skills/funpixel-gdd/references/first-look.md +1 -1
- package/templates/common/.agents/skills/funpixel-gdd/references/floors.md +2 -2
- package/templates/common/.agents/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
- package/templates/common/.agents/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
- package/templates/common/.agents/skills/funpixel-gdd/references/genre-racing.md +2 -2
- package/templates/common/.agents/skills/funpixel-gdd/references/genre-rpg.md +2 -2
- package/templates/common/.agents/skills/funpixel-gdd/references/genre-shooter.md +2 -2
- package/templates/common/.agents/skills/funpixel-gdd/references/genre-survival.md +2 -2
- package/templates/common/.agents/skills/funpixel-gdd/references/invent-first.md +3 -3
- package/templates/common/.agents/skills/funpixel-gdd/references/level-and-fun.md +11 -11
- package/templates/common/.agents/skills/funpixel-gdd/references/pages.md +2 -5
- package/templates/common/.agents/skills/funpixel-gdd/references/plan-at-size.md +5 -5
- package/templates/common/.agents/skills/funpixel-gdd/references/production-tiers.md +11 -11
- package/templates/common/.agents/skills/funpixel-gdd/references/sections.md +7 -7
- package/templates/common/.agents/skills/funpixel-gdd/references/spec-folder.md +3 -3
- package/templates/common/.agents/skills/funpixel-gdd/references/the-path.md +3 -4
- package/templates/common/.agents/skills/funpixel-gdd/references/world-and-identity.md +4 -4
- package/templates/common/.agents/skills/funpixel-gdd/references/worth.md +4 -4
- package/templates/common/.agents/skills/funpixel-mobile-ui/SKILL.md +3 -3
- package/templates/common/.agents/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
- package/templates/common/.agents/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
- package/templates/common/.agents/skills/funpixel-mobile-ui/references/recipes.md +1 -1
- package/templates/common/.agents/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
- package/templates/common/.agents/skills/funpixel-mobile-ui/references/unity.md +23 -23
- package/templates/common/.agents/skills/funpixel-publish/references/compose.md +1 -1
- package/templates/common/.agents/skills/funpixel-publish/references/server-build.md +1 -1
- package/templates/common/.agents/skills/funpixel-store/SKILL.md +3 -3
- package/templates/common/.agents/skills/funpixel-store/references/app-store.md +1 -1
- package/templates/common/.agents/skills/funpixel-store/references/google-play.md +2 -2
- package/templates/common/.agents/skills/funpixel-store/references/ios-release.md +19 -20
- package/templates/common/.agents/skills/funpixel-store/references/money.md +2 -2
- package/templates/common/.agents/skills/funpixel-store/references/purchases-and-review.md +18 -18
- package/templates/common/.agents/skills/funpixel-store/references/readiness-page.md +1 -1
- package/templates/common/.agents/skills/funpixel-store/references/readiness.md +3 -3
- package/templates/common/.agents/skills/funpixel-store/references/unity-store.md +9 -12
- package/templates/common/.agents/skills/funpixel-unity-game/SKILL.md +28 -35
- package/templates/common/.agents/skills/funpixel-unity-game/references/agent-ops.md +9 -9
- package/templates/common/.agents/skills/funpixel-unity-game/references/fixes.md +21 -21
- package/templates/common/.agents/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
- package/templates/common/.agents/skills/funpixel-unity-game/references/handing-off.md +4 -4
- package/templates/common/.agents/skills/funpixel-unity-game/references/performance.md +10 -14
- package/templates/common/.agents/skills/funpixel-unity-game/references/probe.md +4 -4
- package/templates/common/.agents/skills/funpixel-unity-game/references/shared-mac.md +1 -1
- package/templates/common/.agents/skills/funpixel-unity-game/references/traps.md +13 -14
- package/templates/common/.agents/skills/funpixel-verify/references/bar.md +1 -1
- package/templates/common/.agents/skills/funpixel-verify/references/fidelity.md +11 -11
- package/templates/common/.agents/skills/funpixel-verify/references/mobile-qa.md +10 -10
- package/templates/common/.agents/skills/funpixel-verify/references/playtest.md +14 -14
- package/templates/common/.agents/skills/funpixel-verify/references/unity.md +11 -11
- package/templates/common/.agents/skills/funpixel-world-and-story/SKILL.md +1 -1
- package/templates/common/.agents/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
- package/templates/common/.agents/skills/funpixel-world-and-story/references/living-world.md +2 -2
- package/templates/common/.agents/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
- package/templates/common/.agents/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
- package/templates/common/.agents/skills/funpixel-world-and-story/references/voice.md +1 -1
- package/templates/common/AGENTS.md +1 -1
- package/templates/common/src/platform.ts +1 -1
- package/templates/common/src/probe-human.ts +3 -3
- package/templates/common/src/save.ts +1 -1
- package/templates/common/test/platform.test.ts +1 -1
- package/templates/three-world/src/budget.ts +1 -1
- package/templates/three-world/src/cutouts.ts +2 -2
- package/templates/three-world/src/game.ts +1 -1
- package/templates/three-world/src/models.ts +1 -1
- package/unity/com.funpixel.probe/Runtime/Player/Args.cs +1 -1
- package/unity/com.funpixel.probe/Runtime/Player/Bridge.cs +2 -2
- package/unity/com.funpixel.probe/Runtime/Player/Capture.cs +2 -2
- package/unity/com.funpixel.probe/Runtime/Player/Inject.cs +1 -2
- package/unity/com.funpixel.probe/Runtime/Player/Probe.cs +2 -2
- package/unity/com.funpixel.probe/Runtime/Player/UiTargets.cs +1 -1
- package/plugins/claude/skills/unity-game/references/studio-packages.md +0 -127
- package/plugins/codex/skills/funpixel-unity-game/references/studio-packages.md +0 -127
- package/plugins/cursor/skills/funpixel-unity-game/references/studio-packages.md +0 -127
- package/plugins/kiro/skills/funpixel-unity-game/references/studio-packages.md +0 -127
- package/plugins/robin/claude/skills/unity-game/references/studio-packages.md +0 -127
- package/plugins/robin/skills/funpixel-unity-game/references/studio-packages.md +0 -127
- package/templates/common/.agents/skills/funpixel-unity-game/references/studio-packages.md +0 -127
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Game logic in a Unity game
|
|
2
2
|
|
|
3
3
|
Rules kept in plain C#, outside the engine, can be tested in seconds and played by bots thousands
|
|
4
|
-
of times. That only helps when the tests and bots see what a player sees.
|
|
4
|
+
of times. That only helps when the tests and bots see what a player sees. A 3D platformer's first
|
|
5
5
|
TestFlight build drew every moving platform frozen after the first level behind 1,118 green
|
|
6
|
-
tests, and
|
|
6
|
+
tests, and a ball puzzle was tuned twice against bots that aimed worse than a person, who then
|
|
7
7
|
cleared level 62 in one shot.
|
|
8
8
|
|
|
9
9
|
## Tools
|
|
@@ -13,7 +13,7 @@ learned with (`unity_check.py` among them) are proposed. "Partial" below means a
|
|
|
13
13
|
studio's games, not in the kit. Until the starter ships, run what exists: `dotnet test` on an
|
|
14
14
|
engine-free core (seconds, many agents at once), Unity's own test runner for the rest
|
|
15
15
|
(`funtools unity run -- -nographics -runTests -testPlatform EditMode -testResults results.xml`,
|
|
16
|
-
or `-testPlatform PlayMode` for tests that need a running scene, as
|
|
16
|
+
or `-testPlatform PlayMode` for tests that need a running scene, as one game's `PlayTests` assembly does,
|
|
17
17
|
queued one run per project across agents, and never with `-quit`: the test runner exits by itself), and each check below as an ordinary test in your own project.
|
|
18
18
|
|
|
19
19
|
| Check | Pass | Status and tool |
|
|
@@ -22,14 +22,14 @@ queued one run per project across agents, and never with `-quit`: the test runne
|
|
|
22
22
|
| `core_tests` | 0 failures, count ≥ baseline, csproj tracked | partial: a `CoreTests~` project; count and csproj checks proposed |
|
|
23
23
|
| `core_engine_free` | no `UnityEngine` in Core | partial: compiler-enforced, no lint guards the flag |
|
|
24
24
|
| `determinism_lint` | 0 uses of `Math.Round`, `List.Sort`, `Mathf.*` and similar outside the JS-math shims | proposed |
|
|
25
|
-
| `web_goldens` | 0 diffs against web traces | partial:
|
|
25
|
+
| `web_goldens` | 0 diffs against web traces | partial: one port |
|
|
26
26
|
| `rules_guard` | `Rules.Mobile` with fix flags off equals `Rules.WebParity` | partial: branches |
|
|
27
27
|
| `alloc_quiet` | 0 B per warm sim step | partial: an allocation test in one game |
|
|
28
|
-
| `balance_gate` | every character 40–60% at every AI level, N ≥ 200 per pairing | partial:
|
|
29
|
-
| `difficulty_bots` | sharp bot ≥ 2 shots past onboarding; noisy bot ≥ 75% clears per section | partial:
|
|
30
|
-
| `softlock_bot` | 0 states with no valid action | partial:
|
|
31
|
-
| `economy_pacing` | time to finish in band; offline pay ≤ next purchase | partial:
|
|
32
|
-
| `physics_fuzz` | 0 inside-solid, tunnel, NaN or stuck | partial:
|
|
28
|
+
| `balance_gate` | every character 40–60% at every AI level, N ≥ 200 per pairing | partial: one game, one level only |
|
|
29
|
+
| `difficulty_bots` | sharp bot ≥ 2 shots past onboarding; noisy bot ≥ 75% clears per section | partial: one game |
|
|
30
|
+
| `softlock_bot` | 0 states with no valid action | partial: one game's level tests |
|
|
31
|
+
| `economy_pacing` | time to finish in band; offline pay ≤ next purchase | partial: two games |
|
|
32
|
+
| `physics_fuzz` | 0 inside-solid, tunnel, NaN or stuck | partial: one game |
|
|
33
33
|
|
|
34
34
|
`Rules` flags are default-off switches in the Core for experiments and mobile fixes. The report
|
|
35
35
|
defines `Rules.WebParity` and `Rules.Mobile` only through `rules_guard`.
|
|
@@ -48,43 +48,43 @@ defines `Rules.WebParity` and `Rules.Mobile` only through `rules_guard`.
|
|
|
48
48
|
|
|
49
49
|
| Pattern | Proof | Game |
|
|
50
50
|
|---|---|---|
|
|
51
|
-
| Generated, solvable by construction | a solver test |
|
|
52
|
-
| Generated, fitted to a bot | budgets fitted to sharp-bot shots, then capped from human play |
|
|
51
|
+
| Generated, solvable by construction | a solver test | a puzzle game: 600 levels by reverse removal, 29 tests |
|
|
52
|
+
| Generated, fitted to a bot | budgets fitted to sharp-bot shots, then capped from human play | the ball puzzle |
|
|
53
53
|
| Data from the web build | level laws as tests | every port |
|
|
54
54
|
|
|
55
|
-
Level laws are properties held as tests.
|
|
55
|
+
Level laws are properties held as tests. The platformer's: widest gap, dock distance, player at
|
|
56
56
|
least 9% of screen height, every attack at least 0.6 s after its tell, plus a journey bot
|
|
57
57
|
that frees all crew on 5 seeds.
|
|
58
58
|
5. Set difficulty with two bots and a person. A sharp bot plays like a sharp player and gives
|
|
59
|
-
the floor; a noisy bot gives the clear rate; the cap comes from a person playing.
|
|
60
|
-
|
|
59
|
+
the floor; a noisy bot gives the clear rate; the cap comes from a person playing. The ball
|
|
60
|
+
puzzle ended at budget = bot estimate × 0.5, capped at 10 balls (one room) and 14 (two).
|
|
61
61
|
6. Gate balance at every AI level, on unseen seeds, one change at a time. Four matches per
|
|
62
62
|
pairing is ±5 points of noise, so use 200. Run the sweep before building art for a rule
|
|
63
|
-
change:
|
|
63
|
+
change: a soccer game built two rounds of goal art first.
|
|
64
64
|
7. Judge a power-up with paired seeds at large N. Pass: the holder's goal delta is under 0.3
|
|
65
|
-
either way (2,400 pairs, about 10 minutes, in
|
|
65
|
+
either way (2,400 pairs, about 10 minutes, in the soccer game).
|
|
66
66
|
8. Simulate the economy with offline earnings and a spend-everything bot.
|
|
67
67
|
9. Hold the warm sim step at 0 B of garbage with a test: a 40-robot chain went from 4 KB to 0 B
|
|
68
|
-
(game not in the report), and
|
|
68
|
+
(game not in the report), and one port holds 0 B over 600 frames.
|
|
69
69
|
10. Fuzz physics per level: a short fuzz every run, a deep fuzz before TestFlight.
|
|
70
70
|
11. Test levels the way players reach them: enter each as a second or later level through Next,
|
|
71
71
|
Continue or Restart (the check `entry_path`, proposed).
|
|
72
|
-
12. Run each new regression test against the parent commit, where it must fail. A
|
|
72
|
+
12. Run each new regression test against the parent commit, where it must fail. A soccer-game
|
|
73
73
|
cheat test passed on the old server too.
|
|
74
74
|
13. Play by hand through remote input after the bots pass. Bots miss readability: hand play in
|
|
75
|
-
|
|
75
|
+
the platformer found fans that looked walkable.
|
|
76
76
|
14. Test the save: migration from every earlier format and corruption (the games test 12 kinds of
|
|
77
77
|
bad JSON). Unity's NUnit is old (no `Assert.Multiple`, no `Does.Contain` on an enum), so write
|
|
78
78
|
those tests for the plain .NET project or keep to the old asserts.
|
|
79
79
|
15. Treat a hit you are measuring against as a reference, not a target: measure it frame by frame
|
|
80
80
|
(the owner's recording at `ffmpeg -vf fps=1`, contact sheets, a timed log) before copying a
|
|
81
|
-
number.
|
|
81
|
+
number. The soccer game's ball was 40% too big and play 1.6× faster than Head Ball 2's; a taller goal
|
|
82
82
|
to match it added 15–20% goals and was rejected ("if it makes scoring too easy, don't"). A tempo
|
|
83
83
|
of 0.75 matched its 10.5 goals per 90 s.
|
|
84
84
|
|
|
85
85
|
## Worked example
|
|
86
86
|
|
|
87
|
-
|
|
87
|
+
The soccer game's balance gate (a three.js port with several characters and AI levels):
|
|
88
88
|
1. A narrower pitch with ground goals looked fine at the "good" AI level.
|
|
89
89
|
2. At the Alpha level it spread 33–68%.
|
|
90
90
|
3. The dead end cost about 220,000 simulated matches.
|
|
@@ -93,16 +93,16 @@ Dawg Ball's balance gate (a three.js port with several characters and AI levels)
|
|
|
93
93
|
|
|
94
94
|
## Common mistakes
|
|
95
95
|
|
|
96
|
-
- Tuning against a weak bot:
|
|
96
|
+
- Tuning against a weak bot: the ball puzzle's random-aim bot won 90–100% everywhere, and its
|
|
97
97
|
"human-style" bot left 33 balls on level 72. Two redesigns in two days.
|
|
98
|
-
- Calibrating at one AI level:
|
|
99
|
-
- Leaving offline pay out of the economy sim:
|
|
98
|
+
- Calibrating at one AI level: one head then spread 15–76% at Alpha.
|
|
99
|
+
- Leaving offline pay out of the economy sim: an idle city game paid about $50K for two hours away
|
|
100
100
|
at minute 5, about the price of the whole city. Offline pay is now ≤ the next pad's cost, and
|
|
101
101
|
cost growth 1.12 gives a 162-minute city.
|
|
102
102
|
- A bot that takes only legal actions: it missed food picked up with nowhere to deliver it
|
|
103
|
-
(reported with
|
|
104
|
-
- Starting every level fresh at boot:
|
|
103
|
+
(reported with the idle game).
|
|
104
|
+
- Starting every level fresh at boot: the platformer's movers drew frozen in every level after the
|
|
105
105
|
first; the audit's frozen count went 219 → 0 once fixed.
|
|
106
|
-
- Skipping the physics fuzz:
|
|
106
|
+
- Skipping the physics fuzz: the platformer had 1,988 respawns inside solid geometry on 24 of 26
|
|
107
107
|
levels.
|
|
108
|
-
- A test that never asserts:
|
|
108
|
+
- A test that never asserts: the soccer game's "always ends with a winner" did not.
|
|
@@ -70,7 +70,7 @@ bundles ESM packages, and a CDN script is a runtime fetch the build cannot see.
|
|
|
70
70
|
|
|
71
71
|
No model was trained on `@funpixel/sdk`, so a guessed name costs a build, and a guess that
|
|
72
72
|
type-checks can do nothing at runtime: look it up in [references/sdk.md](references/sdk.md) or
|
|
73
|
-
`node_modules/@funpixel/sdk/dist/*.d.ts`, never cast it. Pin it exactly (`"0.
|
|
73
|
+
`node_modules/@funpixel/sdk/dist/*.d.ts`, never cast it. Pin it exactly (`"0.7.0"`). The six worth
|
|
74
74
|
using: `setupGameResize` from `@funpixel/sdk` (the only root export), `AudioEngine` from
|
|
75
75
|
`@funpixel/sdk/audio`, `SaveManager` from `@funpixel/sdk/save`, `initLiveParams` from
|
|
76
76
|
`@funpixel/sdk/liveParams`, `safeArea` from `@funpixel/sdk/device`, and `Room`, `getGameKey`,
|
|
@@ -86,10 +86,10 @@ handful of characters and some dozens of props spend about a millisecond in simu
|
|
|
86
86
|
|
|
87
87
|
## Worked examples
|
|
88
88
|
|
|
89
|
-
- The per-stage frame budget:
|
|
89
|
+
- The per-stage frame budget: one racer's `src/game/prof.ts`, with its marks in
|
|
90
90
|
`src/game/loop.ts` (private repository; copy the approach). It reads as `window.__FPX_PROF__()`
|
|
91
91
|
and on screen behind `#prof`.
|
|
92
|
-
- Measuring a load:
|
|
92
|
+
- Measuring a load: one game's repository (private; copy the approach, not a dependency) keeps
|
|
93
93
|
the measuring scripts in `game/tools/perf/`: `phone-load.mjs` (the throttled load: time to Play,
|
|
94
94
|
bytes before it, long tasks and 20 s of play, as one JSON line), `phone-ab.sh` (builds
|
|
95
95
|
alternated), `phone-profile.mjs` (a CPU profile of the load) and `gpu-mem.mjs` with `gputrack.js`
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Two options for a game whose rules already step from input (skill `funpixel-game-logic`: seeded,
|
|
4
4
|
engine-free, a fixed step): keep a run as data and play it back frame by frame, and prove a
|
|
5
|
-
refactor changed nothing a player sees. Both are lessons from one game
|
|
5
|
+
refactor changed nothing a player sees. Both are lessons from one game (a third-person
|
|
6
6
|
3D horror chapter in three.js, September 2026, hand-iterated over many agent sessions), gathered by
|
|
7
|
-
|
|
7
|
+
its lane. No first-try action game has tested them yet; read them as options with the
|
|
8
8
|
reasons they earned, not as a procedure.
|
|
9
9
|
|
|
10
10
|
## What the kit already does
|
|
@@ -30,7 +30,7 @@ If the sim advances one fixed step per intent (what the hands asked for this ste
|
|
|
30
30
|
dodge), a run is the list of intents plus the seed and any setting that changes the sim. Replaying
|
|
31
31
|
it means feeding that list instead of live input.
|
|
32
32
|
|
|
33
|
-
- **
|
|
33
|
+
- **That game's shape.** Its chapter bots produce intents; a small script wrote a bot run's intents
|
|
34
34
|
to JSON, and the game read them from a window global in place of the controls, through the real
|
|
35
35
|
renderer, camera and sound. One test made the replay trustworthy:
|
|
36
36
|
`same_seed_same_inputs_same_events` plays a bot's intents again on a fresh sim with the same seed
|
|
@@ -39,10 +39,10 @@ it means feeding that list instead of live input.
|
|
|
39
39
|
what a step did; turning it on by default silently broke every recorded replay. The game now
|
|
40
40
|
turns the assist off whenever a replay runs. Store such settings with the recording.
|
|
41
41
|
- **Re-record after a sim change.** A recording holds intents, not positions: a tuned run speed
|
|
42
|
-
moves where she stands when the next intent arrives, and the replay drifts. The symptom
|
|
43
|
-
|
|
42
|
+
moves where she stands when the next intent arrives, and the replay drifts. The symptom the
|
|
43
|
+
game learned to read: a still of her staring at a wall is usually a stale recording.
|
|
44
44
|
- **A recorder in the game.** A key saves a person's run the same way, with its long frames,
|
|
45
|
-
camera jumps and errors marked.
|
|
45
|
+
camera jumps and errors marked. The game's note says a human run beats any bot for feel; when it
|
|
46
46
|
was written, no human run had been replayed yet.
|
|
47
47
|
|
|
48
48
|
## Film mode: the same frame every time
|
|
@@ -59,16 +59,16 @@ function loop(now: number) {
|
|
|
59
59
|
}
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
Its stills script replayed an intent file, ticked 1/60 s at a time until the sim's clock
|
|
63
63
|
reached each requested second, held the sim for about 20 frames so the camera settled, then shot.
|
|
64
64
|
A still at 36.8 s was the same picture every run, so:
|
|
65
65
|
|
|
66
66
|
- **A moment can be debugged a frame at a time.** Replay to just before it, tick, read
|
|
67
|
-
`__FPX_STATE__` and `funtools inspect --at x,y` on each frame.
|
|
67
|
+
`__FPX_STATE__` and `funtools inspect --at x,y` on each frame. Its "what is that white
|
|
68
68
|
ball?" was found this way: at one fixed frame, hide one thing at a time (the torch light, the
|
|
69
69
|
enemy, the particles, the beam) until it goes. It was an additive beam seen down its own axis
|
|
70
70
|
(skill `funpixel-art`, `references/frames.md`).
|
|
71
|
-
- **An A/B at a frame only means something if the frame keeps it.**
|
|
71
|
+
- **An A/B at a frame only means something if the frame keeps it.** The game's torch and emissive
|
|
72
72
|
materials were re-posed every frame, so turning them off in a debug step did nothing, while the
|
|
73
73
|
albedo, which nothing re-set, could be tested. Turn a thing off where the frame reads it from.
|
|
74
74
|
- **Wall-clock work does not follow the film clock.** CSS transitions and timers ran in real time;
|
|
@@ -78,7 +78,7 @@ This is the spine's one loop and one clock with a second driver, not a second lo
|
|
|
78
78
|
|
|
79
79
|
## Proving a refactor or a split
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
The game's `sim.ts`, `station.ts` and `game.ts` each grew past 800 to 1,100 lines and were split
|
|
82
82
|
into small modules with typed seams. A split that should change nothing was accepted on four
|
|
83
83
|
agreements, each an option:
|
|
84
84
|
|
|
@@ -94,7 +94,7 @@ wall clock, can differ between two captures of one build; capture the same build
|
|
|
94
94
|
treat a later difference no larger than that as noise (the same idea as `journey replay --repeat 2`).
|
|
95
95
|
With film mode the stills can be identical to the pixel, and then any difference is real.
|
|
96
96
|
|
|
97
|
-
The case for it, from
|
|
97
|
+
The case for it, from that game: after the game split, the capture hook reached the game through a
|
|
98
98
|
loose cast, the replay cursor and the intro timer had moved, and every capture view silently sat at
|
|
99
99
|
t = 0 behind the opening shot. A blind panel scored that round 4.9 ("no enemy in any capture").
|
|
100
100
|
Typing the seam (no cast) and logging an error when a view misses its beat fixed it; on real
|
|
@@ -18,7 +18,7 @@ and tweens).
|
|
|
18
18
|
|
|
19
19
|
## The surface
|
|
20
20
|
|
|
21
|
-
1. Pin it exactly: `"@funpixel/sdk": "0.
|
|
21
|
+
1. Pin it exactly: `"@funpixel/sdk": "0.7.0"`, no caret. The root export is `setupGameResize`
|
|
22
22
|
only; everything else comes from a subpath (`/audio`, `/multiplayer`, `/save`, `/liveParams`,
|
|
23
23
|
`/device`).
|
|
24
24
|
2. **Resize.** `setupGameResize(cb: (width: number, height: number) => void, win?: Window): () => void`
|
|
@@ -28,8 +28,8 @@ is an evidence gap, not a rebuild.
|
|
|
28
28
|
|
|
29
29
|
## Invent first, then fill the template
|
|
30
30
|
|
|
31
|
-
A plan filled template-first lost 3 of 3 blind seats to one that spent its time on design (
|
|
32
|
-
|
|
31
|
+
A plan filled template-first lost 3 of 3 blind seats to one that spent its time on design (one
|
|
32
|
+
game, 1 Oct 2026). The order that won, in [references/invent-first.md](references/invent-first.md):
|
|
33
33
|
|
|
34
34
|
1. **Six forcing questions**, in `## The invention`: what the core object means, why the verb
|
|
35
35
|
exists in this world, who wants what by name, what the twist costs in feeling and in play, the
|
|
@@ -28,9 +28,9 @@ team's robot game passed that test: its Unity port matched the web build exactly
|
|
|
28
28
|
- Name what is not built yet as not built. A planned feature stays in Part 1 until a test or a
|
|
29
29
|
recorded playthrough shows it running.
|
|
30
30
|
- Write each value beside where it lives (`src/tuning.ts · FUSE_S = 3.0`), a shape a short script
|
|
31
|
-
can compare to the code on every build (
|
|
31
|
+
can compare to the code on every build (one game checked 213 numbers that way). Where a value
|
|
32
32
|
moved from its target, "the reason was not recorded" is better than a guessed one.
|
|
33
|
-
- Keep a list of the defects writing the spec found; writing
|
|
33
|
+
- Keep a list of the defects writing the spec found; writing one game's found five.
|
|
34
34
|
- Say what nothing has observed yet (unheard, never played on a phone, fun unproven) and leave the
|
|
35
35
|
person's own play as a question for them until it happens.
|
|
36
36
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# The design measures
|
|
2
2
|
|
|
3
3
|
`npx @funpixel/tools gdd` ends with six numbers read off the GDD, each with why and the peers' figures. They come
|
|
4
|
-
from
|
|
4
|
+
from one game's field report (10 Oct 2026), and its owner's rule holds them: "Advise, never gate." Each is advice.
|
|
5
5
|
Read them, decide what to do, and leave the call on the game's size and scope to the owner. A dense, systemic game
|
|
6
6
|
can be the choice; the lint then says "dense: is each element learned (used again after its teach)?", never "too
|
|
7
7
|
many".
|
|
@@ -13,7 +13,7 @@ it.
|
|
|
13
13
|
| Measure | What it reads | The line |
|
|
14
14
|
|---|---|---|
|
|
15
15
|
| Elements per hour | `design/spec/elements.json` (`[{id, kind, name, debut_place, debut_beat_t, uses}]`), else `## Elements`, else the tables under `## Content` (`### Roster` and its kin, the player's row left out) | new mechanics, enemies, tools and systems ÷ first-playthrough hours; good games sit at about 1.4–3 (Prey 1.4, Scorn 2.2, Superhot 2–3); warns above about 4; any element used fewer than twice after its teach is "check by hand" |
|
|
16
|
-
| The spine | `## The spine`: a `Spine:` sentence, clauses split by `;`, and a table of system, the clause it serves (quoted or by number), genre beat | a system that serves no clause warns:
|
|
16
|
+
| The spine | `## The spine`: a `Spine:` sentence, clauses split by `;`, and a table of system, the clause it serves (quoted or by number), genre beat | a system that serves no clause warns: one game cut the systems that mapped to none |
|
|
17
17
|
| Sources | every table with a Source column (the identity lock's and the asset script's are pictures, not claims), footnotes `[^n]` with their `[^n]: …` line, `[source?]` markers | a marked claim with no source line warns; "approx, from memory" is kept and listed as secondhand; `gdd --sources` lists them all |
|
|
18
18
|
| Peers | `## Worth against the genre` or `## Peers` | each peer's length and elements per hour: the report's figures where it has them, the GDD's own figure when its row carries a link, else unknown, never guessed |
|
|
19
19
|
| Length totals | the parts' minutes: `design/spec/places/*.json` `target_minutes.first_time`, else a Length column in `## Chapters`, `## Places` or `### Stages` | summed against `Play length:` (or `**Length:**`), the difference shown; warns past 10% (or 2 minutes); the owner's `target_minutes` is shown, never judged |
|
|
@@ -19,7 +19,7 @@ What each line is for:
|
|
|
19
19
|
- **Depth** is where a finished level still loses to the genre hit: critics picked the hit for a
|
|
20
20
|
longer, denser run and a reason to replay. Fill the `Depth:` line under the core loop from bot
|
|
21
21
|
runs; the options and genre numbers are in the game-logic skill's depth reference.
|
|
22
|
-
- **The first minute** puts the signature on screen early:
|
|
22
|
+
- **The first minute** puts the signature on screen early: one game's first cut showed it at
|
|
23
23
|
3:45, and the fix moved it under 30 s.
|
|
24
24
|
- **Juice** maps actual events to visible responses and explicit audio choices, including silence.
|
|
25
25
|
Remove inapplicable example rows: a loss or reward tier invented to fill the template is a
|
|
@@ -36,7 +36,7 @@ style words or the rule, redraw that frame once, and write what changed into the
|
|
|
36
36
|
## Identity lock first
|
|
37
37
|
|
|
38
38
|
Make each recurring design's sheet from its best draft before anything else, then draw every picture
|
|
39
|
-
to the sheets and one verbatim style block (
|
|
39
|
+
to the sheets and one verbatim style block (one game: seven of seven redraws on-model). Drift
|
|
40
40
|
check: frames side by side, each design part by part (hair, outfit, silhouette, colours, a vehicle's
|
|
41
41
|
shape); `funtools judge identity <frames…> --concept ref-hero.png` asks a seat. Keep a before/after
|
|
42
42
|
of each redraw, then list the honest breaks. Details: [world-and-identity.md](world-and-identity.md).
|
|
@@ -14,8 +14,8 @@ game keeps the checks; a Stop with nothing open or deferred removes it. Delete i
|
|
|
14
14
|
What the team's best shipped games had in common (research 08, 17, 20), each with why:
|
|
15
15
|
- coherent art and readable actors, scenery and UI in the chosen medium;
|
|
16
16
|
- every row of the juice table in the game, with its limits (skill `funpixel-game-feel`);
|
|
17
|
-
- the signature on screen within about 30 seconds, and controls taught where first needed (
|
|
18
|
-
|
|
17
|
+
- the signature on screen within about 30 seconds, and controls taught where first needed (one
|
|
18
|
+
game's first cut showed its signature at 3:45);
|
|
19
19
|
- a signature-moment view (`moment: true`) that plays the payoff, since critics judge stills
|
|
20
20
|
(skill `funpixel-verify`);
|
|
21
21
|
- the full screen set: a real title, how to play, settings (sound, motion), play, pause, and the
|
|
@@ -62,7 +62,7 @@ state and emitted events. A table and an existing test file prove neither execut
|
|
|
62
62
|
Keep a seeded novice simulation beside the skilled balance bot. The novice receives only the
|
|
63
63
|
observation a player could have, reacts at a declared interval, and sometimes misses or hesitates;
|
|
64
64
|
it cannot inspect future spawns, exact hidden state or a solver's answer. Freeze its policy and
|
|
65
|
-
seed list before tuning. A floor used on
|
|
65
|
+
seed list before tuning. A floor used on one game's first wave: 100
|
|
66
66
|
fixed seeds, at least 80 runs that both survive the stage and earn score. Record both counts, elapsed time,
|
|
67
67
|
deaths by cause, policy parameters and failing seeds. Other genres state the equivalent first
|
|
68
68
|
success and deadline before the run. This is a regression floor, not a human success estimate.
|
|
@@ -62,7 +62,7 @@ What a player of the hit expects without being told. Keep them as defaults; brea
|
|
|
62
62
|
Starting code with these as defaults, and the screen flow: [starters.md](starters.md), "Merge or drop".
|
|
63
63
|
|
|
64
64
|
- Drop and merge (Suika): the piece hangs over a drop line that shows where it will fall, and the next piece is shown.
|
|
65
|
-
- Aim and bounce (Peggle): the aim guide shows the first path, and the free-ball bucket moves along the bottom every shot; it never runs out. A capped helper read as a bug twice in
|
|
65
|
+
- Aim and bounce (Peggle): the aim guide shows the first path, and the free-ball bucket moves along the bottom every shot; it never runs out. A capped helper read as a bug twice in one of our games.
|
|
66
66
|
- A wrong move is cheap: undo or an instant restart of the level, and a solved state that is unmistakable.
|
|
67
67
|
- No clock on thinking in a pure puzzle (Monument Valley has no fail state); pressure comes from a board that fills, not a timer.
|
|
68
68
|
|
|
@@ -85,7 +85,7 @@ Pick one signature and up to three more before building (`npx @funpixel/tools wo
|
|
|
85
85
|
Portal, Monument Valley and The Witness are puzzles you walk through. What differs from a board:
|
|
86
86
|
|
|
87
87
|
- **The chamber is the unit.** Each debuts one element, then asks for it in a new combination; a
|
|
88
|
-
chapter spends itself on one trick. A chamber that tells you every step is a tutorial:
|
|
88
|
+
chapter spends itself on one trick. A chamber that tells you every step is a tutorial: one game's
|
|
89
89
|
first version cleared in 1:11 with a hint per step, and critics called it "a tutorial, not a
|
|
90
90
|
puzzle". The aha is a known tool used a new way: the exit seen through the portal, the cube
|
|
91
91
|
carried through it, the switch reachable only from the far side.
|
|
@@ -94,7 +94,7 @@ Portal, Monument Valley and The Witness are puzzles you walk through. What diffe
|
|
|
94
94
|
- **Readable space.** The player always knows which side of a portal they are on (a different light
|
|
95
95
|
or colour per room), where a carried object will land (a ring on the floor before the drop) and
|
|
96
96
|
when something is in reach (it answers before the tap). These were our blind players' three
|
|
97
|
-
medium findings on
|
|
97
|
+
medium findings on that game.
|
|
98
98
|
- **Controls.** First person, or a fixed three-quarter view with tap-to-move (Monument Valley). Held
|
|
99
99
|
sideways: move on the left thumb, look on the right, one action button of at least 44 px, and the
|
|
100
100
|
two thumbs never share a zone.
|
|
@@ -123,7 +123,7 @@ Options with reasons; more in skill `funpixel-game-logic`, its depth reference.
|
|
|
123
123
|
places its hard levels on a rhythm the player can feel; a daily seeded board gives a reason to
|
|
124
124
|
return.
|
|
125
125
|
- Pressure from the first drops: a small container or a partly filled seeded start, so the first
|
|
126
|
-
minute already asks where things go. Critics called
|
|
126
|
+
minute already asks where things go. Critics called one game's early basket "too sparse, no
|
|
127
127
|
packing pressure" beside Suika Game.
|
|
128
128
|
- The best score per mode saved, the next piece shown, restart in one tap.
|
|
129
129
|
|
|
@@ -31,7 +31,7 @@ that catch this genre's quiet bugs. The creator's brief wins over anything here.
|
|
|
31
31
|
time), a colour that owns it, and a body that leans, squats and bounces with the physics.
|
|
32
32
|
- A driver visible in the seat, or a face on the kart, buys character for very little.
|
|
33
33
|
- Rivals each keep one colour and one personality in how they drive (the bully, the careful one).
|
|
34
|
-
- **Keep the pack in view** (
|
|
34
|
+
- **Keep the pack in view** (one racer, Oct 2026). Draw rivals at true scale out to about 60 m
|
|
35
35
|
and compress the distance beyond it, so the pack stays on screen while contact up close reads
|
|
36
36
|
exactly. A bunching rule tuned for the chase keeps it there: a racer more than 10 m from the
|
|
37
37
|
pack's mean distance is pulled toward it, 0.05 m/s per metre beyond, at most 0.8 m/s, ahead or
|
|
@@ -76,7 +76,7 @@ What a player of the hit expects without being told. Keep them as defaults; brea
|
|
|
76
76
|
Starting code with these as defaults, and the screen flow: [starters.md](starters.md), "Racing".
|
|
77
77
|
|
|
78
78
|
- A fall or a wall is a short respawn on the track, never a restart of the race.
|
|
79
|
-
- Position and lap are always on screen; the rivals' pace is beatable with a thumb, not only with frame-perfect input (
|
|
79
|
+
- Position and lap are always on screen; the rivals' pace is beatable with a thumb, not only with frame-perfect input (one racer's last cup was won only at 60 decisions a second).
|
|
80
80
|
- Help for the back of the pack: Mario Kart weights its items toward the players behind, so a race stays open.
|
|
81
81
|
- A ghost or a best time to beat on the next attempt.
|
|
82
82
|
|
|
@@ -86,8 +86,8 @@ Pick one signature and up to three more before building (`npx @funpixel/tools wo
|
|
|
86
86
|
|
|
87
87
|
A design question for the GDD: for each weapon, ability or spell, the situation where it beats the
|
|
88
88
|
others (reach, a crowd, a shield, a state it opens or finishes) and what it costs. A choice of three
|
|
89
|
-
reads as a choice when the three answer different situations (our reading).
|
|
90
|
-
hand-iterated games
|
|
89
|
+
reads as a choice when the three answer different situations (our reading). One of our
|
|
90
|
+
hand-iterated games answered it per weapon (a cutter for joints, a rivet driver that pins an enemy
|
|
91
91
|
from range, a scattergun that clears a crowd at the cost of stealth, a knife that finishes a staggered
|
|
92
92
|
enemy). A question, not a mandate; more in skill `funpixel-game-feel`, `references/contact.md`.
|
|
93
93
|
|
|
@@ -87,8 +87,8 @@ Pick one signature and up to three more before building (`npx @funpixel/tools wo
|
|
|
87
87
|
|
|
88
88
|
A design question for the GDD: for each gun, upgrade or panic button, the situation where it beats
|
|
89
89
|
the others (range, a crowd, armour, a state it opens or finishes) and what it costs. Two guns that
|
|
90
|
-
answer the same situation are one weapon wearing two looks (our reading).
|
|
91
|
-
hand-iterated games
|
|
90
|
+
answer the same situation are one weapon wearing two looks (our reading). One of our
|
|
91
|
+
hand-iterated games answered it per weapon (a cutter for joints, a rivet driver that pins an enemy
|
|
92
92
|
from range, a scattergun that clears a crowd at the cost of stealth, a knife that finishes a staggered
|
|
93
93
|
enemy). A question, not a mandate; more in skill `funpixel-game-feel`, `references/contact.md`.
|
|
94
94
|
|
|
@@ -83,8 +83,8 @@ Pick one signature and up to three more before building (`npx @funpixel/tools wo
|
|
|
83
83
|
|
|
84
84
|
A design question for the GDD: for each weapon, tool or upgrade, the situation where it beats the
|
|
85
85
|
others (a crowd, range, the night, a resource it saves) and what it costs. An upgrade that answers
|
|
86
|
-
no new situation is a bigger number rather than a choice (our reading).
|
|
87
|
-
hand-iterated games
|
|
86
|
+
no new situation is a bigger number rather than a choice (our reading). One of our
|
|
87
|
+
hand-iterated games answered it per weapon (a cutter for joints, a rivet driver that pins an enemy
|
|
88
88
|
from range, a scattergun that clears a crowd at the cost of stealth, a knife that finishes a staggered
|
|
89
89
|
enemy). A question, not a mandate; more in skill `funpixel-game-feel`, `references/contact.md`.
|
|
90
90
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Invent first, then fill the template
|
|
2
2
|
|
|
3
|
-
Two plans were written from one brief on 1 Oct 2026 (
|
|
3
|
+
Two plans were written from one brief on 1 Oct 2026 (a first-person paint shooter in
|
|
4
4
|
a museum at night). The plan that followed this skill's template was clearer (8.4 against 8.1) and
|
|
5
5
|
more buildable (7.2 against 6.4), and lost 3 of 3 blind seats, 7.0 against 8.0. It trailed on level
|
|
6
6
|
design by 1.8, story and world by 1.7, fun by 1.2 and phone controls by 1.0. It spent its extra
|
|
@@ -70,14 +70,14 @@ Canvas): genre and fidelity, depth (5 minutes, 30 minutes or chapters), the core
|
|
|
70
70
|
clock, question, antagonist, frame), extras with their cost (voice per character, cutscenes, photo
|
|
71
71
|
mode, multiplayer, and for a deep game two takes: two parallel builds of the locked plan, played
|
|
72
72
|
side by side from the title by `npx @funpixel/tools compare-takes`, the mix keeping what each won;
|
|
73
|
-
on
|
|
73
|
+
on one game, one take won the environment and the other the dynamics). Propose a pick per card with its reason for this game
|
|
74
74
|
(`pitch propose core world --why "…"`); the plan shows your picks and the owner approves them with it
|
|
75
75
|
at the lock (`flow ask`). Under their autonomy "ask", each card is theirs instead: `pitch ask` posts each
|
|
76
76
|
as a question in the chat, and `pitch lock` waits for their answers. From then on the core gets the art budget, the tests and the hardest checks, and
|
|
77
77
|
what was not picked stays light. Autonomy is the OWNER's setting (funpixel.json `flow.autonomy`,
|
|
78
78
|
from their brief), never a card you propose: under `ask` and `plan-then-go` every pitch card waits
|
|
79
79
|
for their answer; only their `go` lets you pick, record each pick with its reason, and lock.
|
|
80
|
-
(
|
|
80
|
+
(One game, 4 Oct: under "ask" the agent proposed and locked all seven cards itself.)
|
|
81
81
|
|
|
82
82
|
## 4. Named behaviour tests, before code
|
|
83
83
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Levels, a world that plays, fun and the phone
|
|
2
2
|
|
|
3
|
-
Where a plan made with the kit lost to the owner's own workflow (
|
|
3
|
+
Where a plan made with the kit lost to the owner's own workflow (one game, 1 Oct 2026: two
|
|
4
4
|
GDDs from one brief, three blind judges, 7.0 against 8.0). The kit's plan led on clarity and
|
|
5
5
|
feasibility and trailed on level design (−1.8), story and world (−1.7), fun (−1.2) and phone UX
|
|
6
6
|
(−1.0). Every judge named the same four things, so this page is those four, with what our best
|
|
@@ -26,9 +26,9 @@ Write the place row before drawing its picture, and draw each picture from its r
|
|
|
26
26
|
pictures to each other: if two could swap captions, one of them is not a place yet.
|
|
27
27
|
|
|
28
28
|
**Shape of a level.** Teach the new thing alone, test it, twist it, then combine it with what came
|
|
29
|
-
before (teach, develop, twist, test, celebrate).
|
|
30
|
-
rule;
|
|
31
|
-
joins a crowd (41, 82, then 100 robots per floor).
|
|
29
|
+
before (teach, develop, twist, test, celebrate). One game gave each of its eight islands one
|
|
30
|
+
rule; another debuts each of its nine kinds alone at the head of its wave before it
|
|
31
|
+
joins a crowd (41, 82, then 100 robots per floor). A third calmed its level after watching the
|
|
32
32
|
gray-box: a plan is allowed to lose to the game in front of you.
|
|
33
33
|
|
|
34
34
|
**Layout laws as tests.** The winning plan wrote its rooms as data with laws a test can read: a
|
|
@@ -61,7 +61,7 @@ Ask of the world: **what does it do when you play?**
|
|
|
61
61
|
one kind is a painting to the gun (auto-fire skips him), one sidesteps after 0.3 s of lock so your
|
|
62
62
|
burst flies into the art, one always perches against a dark backdrop, one carries a canvas as a
|
|
63
63
|
shield. Each asks a different question of the same verb. The kit's roster was one striped body
|
|
64
|
-
with five props: one enemy in five coats.
|
|
64
|
+
with five props: one enemy in five coats. One game's "one chassis, nine heads" works
|
|
65
65
|
because each head is a different idea, not because the chassis is shared.
|
|
66
66
|
|
|
67
67
|
## 3. Fun with depth
|
|
@@ -69,13 +69,13 @@ Ask of the world: **what does it do when you play?**
|
|
|
69
69
|
| Ask | A strong answer | Where it showed |
|
|
70
70
|
|---|---|---|
|
|
71
71
|
| How many decisions a minute does the verb make? | every shot is a choice about where you stand | the winning plan: "the game rewards the step before the shot" |
|
|
72
|
-
| What is the boring optimum, and what makes it lose? | named, with the rule that beats it | panic-firing pays nothing;
|
|
73
|
-
| Does risk pay? | a riskier line scores more, never only costs more |
|
|
74
|
-
| What does each verb cost? | a price in time, resource or the route |
|
|
75
|
-
| Why play the next room? | it asks a new question of the same verb | each kind debuts alone (
|
|
72
|
+
| What is the boring optimum, and what makes it lose? | named, with the rule that beats it | panic-firing pays nothing; in one horror game, welding every door runs you out of gas |
|
|
73
|
+
| Does risk pay? | a riskier line scores more, never only costs more | one game's kill ladder (10 in 2 s up to 100 in 3 s, slow motion on the top rung) |
|
|
74
|
+
| What does each verb cost? | a price in time, resource or the route | the horror game: hold 1.5 s, 25 gas, and the room beyond is gone |
|
|
75
|
+
| Why play the next room? | it asks a new question of the same verb | each kind debuts alone (the nine-kind game above) |
|
|
76
76
|
| Why play again? | a grade, a medal for clean play, a best to beat | the winning plan's results screen grades splashes, and only your own cost the clean-hand medal |
|
|
77
77
|
|
|
78
|
-
|
|
78
|
+
The horror game added weapons only when each answered a different situation, all drawing on one canister;
|
|
79
79
|
two answers to the same situation are one tool wearing two looks.
|
|
80
80
|
|
|
81
81
|
## 4. Phone UX: two thumbs, 852 × 393
|
|
@@ -85,7 +85,7 @@ The phone is where a plan is cheapest to fix and most often lost.
|
|
|
85
85
|
- **Controls off the play and off the held thing.** Both plans first put Fire and Cover on the gun;
|
|
86
86
|
the kit's HUD v2 moved them to the right edge and shrank the gun to a sixth of the screen.
|
|
87
87
|
Whatever the hero holds is part of the frame budget; a mockup that breaks its own cap breaks it in
|
|
88
|
-
the build.
|
|
88
|
+
the build. One game's HUD covered 41% of the phone screen until it was measured.
|
|
89
89
|
- **One gesture per thumb zone.** The winning plan put aim, tap-for-cover and hold-to-wipe all in
|
|
90
90
|
the right thumb's zone: three gestures that collide. Give each zone one gesture, or make one a
|
|
91
91
|
button.
|
|
@@ -11,11 +11,8 @@ data gets none; a map drawn by hand is a page of its own.
|
|
|
11
11
|
## The bar: the studio's best GDD pages
|
|
12
12
|
|
|
13
13
|
The owner judges a plan page against the studio's own bespoke design pages, not against the base
|
|
14
|
-
`gdd page` writes.
|
|
15
|
-
|
|
16
|
-
- **Knockout Lap v0.2**: kept locally by the owner, so ask for it by name.
|
|
17
|
-
- **Particle Rush**'s GDD page: ask the owner for its link.
|
|
18
|
-
- **Gallery Heist**'s GDD page.
|
|
14
|
+
`gdd page` writes. Ask the owner for them (one is kept locally by the owner, the others by link),
|
|
15
|
+
name them when you show yours, and say where yours falls short.
|
|
19
16
|
|
|
20
17
|
What makes them strong, and how much of it `gdd page` draws:
|
|
21
18
|
|
|
@@ -29,11 +29,11 @@ What play must reach, counted. It goes in the GDD's `## Content list`:
|
|
|
29
29
|
- **Size it to play length:** a game is at least 15 minutes of real play by a first-time
|
|
30
30
|
player, even with one level: escalation (a new idea per stage, not only speed), variety, a twist
|
|
31
31
|
around the middle, and an ending worth reaching. Write the `Play length:` line and count the
|
|
32
|
-
content that fills it (
|
|
32
|
+
content that fills it (two of our games: "at least 15 minutes play, to be a game", owner,
|
|
33
33
|
3 Oct); a 2-minute arcade round is a choice the line states "on purpose". `funtools sim` holds
|
|
34
34
|
the skilled bot's run to that line and asks that it reaches the ending, and `playtest experience` fills `Reached in play` for areas,
|
|
35
35
|
levels and waves from the long blind player and the bot (marked `(measured)`). Play reaching half
|
|
36
|
-
the claimed areas or less is a warn:
|
|
36
|
+
the claimed areas or less is a warn: one game claimed 8 worlds and play reached 2.
|
|
37
37
|
- **Size it to the game:** a one-screen toy can honestly say "Levels 1"; say that it is the choice
|
|
38
38
|
in the list ("one screen on purpose") and the ambition read leaves it alone. A full game names
|
|
39
39
|
its areas, kinds with a debut each (the `## Content` roster), a climax and at least one ending.
|
|
@@ -96,7 +96,7 @@ under `## AD rules` (the hooks and the fidelity seat read that heading):
|
|
|
96
96
|
|
|
97
97
|
- **Offer them and explain why:** every playtest round, the fidelity seat judges each line held,
|
|
98
98
|
partly held or broken beside the target frames. Without lines, "does it still look like the plan"
|
|
99
|
-
has no answer.
|
|
99
|
+
has no answer. One game's six lines caught a darker art pass that hid its threats.
|
|
100
100
|
- **They are the creator's words.** Offer drafts from the pitch and the first look; the creator
|
|
101
101
|
rewrites, keeps or cuts them.
|
|
102
102
|
- **Declining is fine, and kept:** `Declined: I will judge the look by eye (the creator, 30 Sep)`.
|
|
@@ -121,8 +121,8 @@ them once to PNGs.
|
|
|
121
121
|
Moments that invite someone to look: after the plan is applied, after the first look, after the
|
|
122
122
|
first slice. The someone can be a friend, the owner, a player, or the creator's next-morning self.
|
|
123
123
|
Offer the pause, record who looked and what they said in the GDD's `## Pause points` table, and
|
|
124
|
-
carry on either way.
|
|
125
|
-
minutes after its approval;
|
|
124
|
+
carry on either way. One game waited four days for its owner's "go ahead"; another built twenty
|
|
125
|
+
minutes after its approval; a third never paused and still reached its gate. The pause is there
|
|
126
126
|
because a second pair of eyes is cheapest before code, not because the path needs permission.
|
|
127
127
|
|
|
128
128
|
## 6 · The plan grows with the game
|