@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
|
@@ -71,7 +71,7 @@ export function productionMirror(dir) {
|
|
|
71
71
|
const making = read(join(dir, 'design', 'MAKING.md'));
|
|
72
72
|
const entries = (making.match(/^## /gm) ?? []).length;
|
|
73
73
|
if (!making)
|
|
74
|
-
add('warn', 'direct', 'no design/MAKING.md', 'the making-of log: per lane, the decision, its numbers and the lesson
|
|
74
|
+
add('warn', 'direct', 'no design/MAKING.md', 'the making-of log: per lane, the decision, its numbers and the lesson');
|
|
75
75
|
else if (entries <= 1)
|
|
76
76
|
add('note', 'direct', 'design/MAKING.md has no lane entry yet', 'write one when a lane lands: decision, numbers, lesson');
|
|
77
77
|
if (gdd && !/^## Identity lock/m.test(gdd))
|
|
@@ -84,7 +84,7 @@ export function makingLog(name, date) {
|
|
|
84
84
|
|
|
85
85
|
A running log, one entry per lane when it lands: what was decided, the numbers that decided it, and the lesson
|
|
86
86
|
for the next lane. Before/after frames at fixed framing (desktop 1280x720, phone 844x390) beside each entry.
|
|
87
|
-
|
|
87
|
+
Stays private (/design/ is in .harnessignore).
|
|
88
88
|
|
|
89
89
|
## ${date} · Lane 0: the plan
|
|
90
90
|
|
package/dist/sim/curve.js
CHANGED
|
@@ -23,7 +23,7 @@ export function judgeCurve(cohorts) {
|
|
|
23
23
|
const measured = ['naive', 'novice', 'skilled'].map((r) => byRole(cohorts, r)).filter((c) => !!c && split(c));
|
|
24
24
|
const played = cohorts.filter((c) => c.seeds > 0);
|
|
25
25
|
if (played.length && played.every((c) => c.lost === 0) && played.some((c) => c.seconds >= LOSABLE_SECONDS)) {
|
|
26
|
-
out.push({ id: 'losable', state: 'warn', says: `no run was lost by any of ${played.length} players over ${played[0].seeds} seeds (${played.map((c) => c.policy).join(', ')}): a run cannot be lost`, next: 'a puzzle or a toy on purpose? say so in the design doc and to the player; else a threat, a clock or a resource that can end a run
|
|
26
|
+
out.push({ id: 'losable', state: 'warn', says: `no run was lost by any of ${played.length} players over ${played[0].seeds} seeds (${played.map((c) => c.policy).join(', ')}): a run cannot be lost`, next: 'a puzzle or a toy on purpose? say so in the design doc and to the player; else a threat, a clock or a resource that can end a run' });
|
|
27
27
|
}
|
|
28
28
|
if (!measured.length) {
|
|
29
29
|
out.push({ id: 'curve', state: 'not measured', says: skilled?.levels?.length ? 'the probe keeps when levels were reached but not who cleared or lost them (an older src/probe-kit.ts: funtools upgrade parks the new one)' : 'no level(run) in test/probes.ts: the difficulty curve per level, stage or wave was never split', next: 'add level(run) to the probe game (the level, stage or wave number) so sim splits clear rate, loss rate and time per level' });
|
|
@@ -39,7 +39,7 @@ export function judgeCurve(cohorts) {
|
|
|
39
39
|
const s = at(skilled, lv), h = at(human, lv);
|
|
40
40
|
const sClear = s && s.reached ? share(s.cleared, s.reached) : null, hClear = h && h.reached ? share(h.cleared, h.reached) : null;
|
|
41
41
|
if (sClear !== null && hClear !== null && sClear >= 0.5 && hClear < HUMAN_SHARE * sClear) {
|
|
42
|
-
out.push({ id: `wall:${lv}`, state: 'warn', says: `level ${lv} is a wall for people: the skilled bot clears it on ${pct(sClear)} of seeds at 60 decisions a second, but ${pct(hClear)} at ${human.human.hz} a second with ${human.human.reactMs} ms to react`, next: 'the level asks for superhuman input (
|
|
42
|
+
out.push({ id: `wall:${lv}`, state: 'warn', says: `level ${lv} is a wall for people: the skilled bot clears it on ${pct(sClear)} of seeds at 60 decisions a second, but ${pct(hClear)} at ${human.human.hz} a second with ${human.human.reactMs} ms to react`, next: 'the level asks for superhuman input (one race, 30 Sep): longer warnings, a wider window, fewer inputs per second, or a slower rival' });
|
|
43
43
|
}
|
|
44
44
|
else if ((hClear ?? sClear) !== null && (hClear ?? sClear) < WALL_SHARE && ((h ?? s).lost ?? 0) > 0 && lv !== levels.at(-1)) {
|
|
45
45
|
const who = h ? `the skilled player at ${human.human.hz} decisions a second` : 'the skilled bot';
|
|
@@ -117,6 +117,6 @@ export function judgeReach(cohorts, claimed, where = 'the design doc') {
|
|
|
117
117
|
if (won && top >= claimed)
|
|
118
118
|
return { id: 'reach', state: 'ok', says: `the skilled bot plays through all ${claimed} areas ${where} claims` };
|
|
119
119
|
if (top <= claimed / 2)
|
|
120
|
-
return { id: 'reach', state: 'warn', says: `${where} claims ${claimed} areas or levels; the skilled bot reaches ${top}`, next: 'play reaches much less than the plan claims (
|
|
120
|
+
return { id: 'reach', state: 'warn', says: `${where} claims ${claimed} areas or levels; the skilled bot reaches ${top}`, next: 'play reaches much less than the plan claims (one game claimed 8 worlds, play reached 2): build and wire what the plan names, lower the claim, or fix the wall that stops the bot' };
|
|
121
121
|
return { id: 'reach', state: 'note', says: `${where} claims ${claimed} areas or levels; the skilled bot reaches ${top}${won ? '' : ' and never wins'}` };
|
|
122
122
|
}
|
package/dist/spec/scaffold.js
CHANGED
|
@@ -403,7 +403,7 @@ This folder is what a building agent works from (the ${o.tier} tier of the plan,
|
|
|
403
403
|
|
|
404
404
|
The data files live here, outside the Unity project, so the design and the game read one copy:
|
|
405
405
|
- an Editor step copies \`tunables.json\` and \`rooms.json\` into \`${o.copy}/\` (TextAssets the game reads at start);
|
|
406
|
-
- an EditMode test fails when a copy differs from this folder, so a change made here and not carried over is a red test, not a silent drift (
|
|
406
|
+
- an EditMode test fails when a copy differs from this folder, so a change made here and not carried over is a red test, not a silent drift (one game's tunables changed in design/ while its Unity copy did not);
|
|
407
407
|
- edit this folder, never the copy.
|
|
408
408
|
|
|
409
409
|
## Slice first
|
package/dist/studio/pitch.js
CHANGED
|
@@ -50,7 +50,7 @@ export const CATALOGUE = [
|
|
|
50
50
|
{ id: 'cutscenes', label: 'Cutscenes', why: 'one earned cinematic (the ending, a reveal), skippable', cost: '$1–3 each, plus a scene to stage' },
|
|
51
51
|
{ id: 'photo', label: 'Photo mode', why: 'players share the wow moments; the share card carries the game', cost: 'a free camera, a frame and a share sheet: about a day' },
|
|
52
52
|
{ id: 'multiplayer', label: 'Multiplayer', why: 'friends in one room through the relay', cost: 'doubles the test work; the host owns the world state' },
|
|
53
|
-
{ id: 'two-takes', label: 'Two takes', why: 'for a deep game: two parallel builds of the same locked plan, each winning different areas (one the environment, one the dynamics); `funtools compare-takes` plays both from the title and writes a best-of-both table, and the mix beats both (
|
|
53
|
+
{ id: 'two-takes', label: 'Two takes', why: 'for a deep game: two parallel builds of the same locked plan, each winning different areas (one the environment, one the dynamics); `funtools compare-takes` plays both from the title and writes a best-of-both table, and the mix beats both (one game, 3 rounds)', cost: 'twice the build sessions, plus a merge round' },
|
|
54
54
|
{ id: 'none', label: 'None', why: 'everything goes into the core' },
|
|
55
55
|
],
|
|
56
56
|
},
|
|
@@ -13,7 +13,7 @@ export function kitPackage(env = process.env, here = dirname(fileURLToPath(impor
|
|
|
13
13
|
export function reference(project, o) {
|
|
14
14
|
if (o.git) {
|
|
15
15
|
if (!o.ref)
|
|
16
|
-
return { error: '--git needs --ref <tag or commit>: an unpinned git package changes under the project (
|
|
16
|
+
return { error: '--git needs --ref <tag or commit>: an unpinned git package changes under the project (one game tracked #main)' };
|
|
17
17
|
const sep = o.git.includes('?') ? '&' : '?';
|
|
18
18
|
return `${o.git}${o.git.includes('path=') ? '' : `${sep}path=/funpixel-mono/libs/unity/${PACKAGE}`}#${o.ref}`;
|
|
19
19
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
// Three only: an actor must be SEEN to be measured. Rays go from the camera to
|
|
10
10
|
// its centre and to 0.6 m either side of it (camera right and up) against every
|
|
11
11
|
// other drawn, opaque mesh; when all five are blocked (behind a wall, a shut
|
|
12
|
-
// door) or off screen, it goes in `hidden`, not in `actors` —
|
|
12
|
+
// door) or off screen, it goes in `hidden`, not in `actors` — one game: all 8
|
|
13
13
|
// threats measured were behind walls, so their ΔE measured the walls.
|
|
14
14
|
//
|
|
15
15
|
// Who plays a role, most specific first, decided per role:
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
// that starts with the role (player-ines, threat-walker-3). Once
|
|
18
18
|
// any node in the scene, shown or not, carries a role's tag, only
|
|
19
19
|
// tagged nodes play that role, so a prop named hazard_barrier is
|
|
20
|
-
// scenery (
|
|
20
|
+
// scenery (one game: the usual words measured it as the threat)
|
|
21
21
|
// declared — the caller's pattern (funpixel.json "actors", --player/--threats)
|
|
22
22
|
// words — the usual words (player|hero|avatar; enemy|threat|hazard|…)
|
|
23
23
|
// `matched` says per role which of the three picked, and the node names it
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
// The phone's safe area is EMULATED before the view is entered, for every look
|
|
25
25
|
// but a bare listing (view null, no hold, no freeze): headless Chromium reports
|
|
26
26
|
// every env(safe-area-inset-*) as 0, so a game that pads with env() hugged the
|
|
27
|
-
// edge in the picture while audit-screens measured it against a notch (
|
|
28
|
-
//
|
|
27
|
+
// edge in the picture while audit-screens measured it against a notch (two
|
|
28
|
+
// games). The page's env(safe-area-inset-*) now resolves to the insets,
|
|
29
29
|
// in its stylesheets, its inline styles and those it adds later, and a resize
|
|
30
30
|
// is sent so a game that reads them again lays out again. capture and
|
|
31
31
|
// audit-screens (local and hosted) share this one emulation.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// How dressed is the play (lane V2, the Silt bar's S7: "dressing density with a clear road"; Silt's
|
|
2
|
-
// chapter one carries 42k instanced flowers,
|
|
2
|
+
// chapter one carries 42k instanced flowers, two of our games "read as shapes"): the small things of a
|
|
3
3
|
// Three scene counted per area round the player, by role, beside what they cost a frame.
|
|
4
4
|
//
|
|
5
5
|
// A thing is one instance of an InstancedMesh, or a mesh that is small (footprint under `max_size`,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Is this frame play, or a loading or splash screen? A capture that lands on a splash must never
|
|
2
|
-
// count as a moment (
|
|
2
|
+
// count as a moment (one game: captures fooled by a 3.7 s splash; another, 1 Oct: shots of a
|
|
3
3
|
// loading card scored as the moment). Three signs, each read only when the page offers it:
|
|
4
4
|
// state — __FPX_STATE__()'s screen / phase / view / mode names a splash, a loader or a boot
|
|
5
5
|
// dom — a shown element named splash / loading / loader / preload / boot covering ≥ 40% of the page
|
|
@@ -40,9 +40,9 @@ async (a) => {
|
|
|
40
40
|
|
|
41
41
|
// Seen by a player: laid out, on the screen, and hidden by neither itself nor
|
|
42
42
|
// an ancestor. Opacity multiplies down the tree and visibility inherits, so a
|
|
43
|
-
// faded screen's children are faded too (
|
|
43
|
+
// faded screen's children are faded too (one game: a chapter card at
|
|
44
44
|
// opacity 0 counted as HUD all chapter, a hidden title's text was flagged in
|
|
45
|
-
// every play view;
|
|
45
|
+
// every play view; another: a label inside a faded-out button).
|
|
46
46
|
// checkVisibility answers where the browser has it; the
|
|
47
47
|
// walk up the ancestors is the fallback, and also catches a stack of
|
|
48
48
|
// part-faded layers that multiplies to nothing.
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// Is everything big standing on the ground (owner, 2 Oct,
|
|
1
|
+
// Is everything big standing on the ground (owner, 2 Oct, one game's round 4: "the spacecraft must
|
|
2
2
|
// not stay in the air if it's landed" — the walk said "floating: none" because it only read actors).
|
|
3
3
|
// For the large props and the vehicles of a Three scene: where each one touches down (the lowest
|
|
4
4
|
// vertices of its mesh, cell by cell under it, or the bottom corners of its box), read by a vertical ray
|
|
5
5
|
// against the SURFACES under it, and how far it is above (hovering) or below (sunk) the nearest one. A
|
|
6
6
|
// thing resting on another (a stacked container) is held, not hovering.
|
|
7
7
|
//
|
|
8
|
-
// The surfaces (lane J4,
|
|
8
|
+
// The surfaces (lane J4, one game's round 5: a deck, a ramp, its railing and the gantry's trestles read
|
|
9
9
|
// "sunk" against the crater floor under them, and the landed ship "41 m over a drop" beside its pad):
|
|
10
10
|
// terrain meshes named ground, terrain, floor, road… (the `ground` regex)
|
|
11
11
|
// supports built things people stand on: a mesh named deck, pad, platform, ramp, bridge, pier, dock,
|
|
@@ -430,7 +430,7 @@
|
|
|
430
430
|
const hoverGap = verdict === 'hovering' && known.length ? Math.min(...known) : null;
|
|
431
431
|
// Touching down cell by cell: the gap where it is nearest a surface (a sloped railing is not "−3.6 m" at its centre).
|
|
432
432
|
const nearGap = t.mesh && known.length ? known.reduce((m, v) => (Math.abs(v) < Math.abs(m) ? v : m), known[0]) : null;
|
|
433
|
-
// Where it is off and by how much (
|
|
433
|
+
// Where it is off and by how much (one game: "a distance and not which corner or what tolerance").
|
|
434
434
|
let lo = -1, hi = -1, deep = -1;
|
|
435
435
|
gaps.forEach((q, i) => {
|
|
436
436
|
if (q.gap !== null) { if (lo < 0 || q.gap < gaps[lo].gap) lo = i; if (hi < 0 || q.gap > gaps[hi].gap) hi = i; }
|
|
@@ -49,7 +49,7 @@ async (a) => {
|
|
|
49
49
|
const alpha = p.length >= 3 ? (p[3] === undefined ? 1 : p[3]) : 0;
|
|
50
50
|
const image = (s.backgroundImage && s.backgroundImage !== 'none') || (s.borderImageSource && s.borderImageSource !== 'none');
|
|
51
51
|
if (alpha <= 0.05 && !image) return null;
|
|
52
|
-
// drawn: a picture (url()) dresses it, not only a gradient: a gradient clipped to system text is still system text (
|
|
52
|
+
// drawn: a picture (url()) dresses it, not only a gradient: a gradient clipped to system text is still system text (one game's round-4 title).
|
|
53
53
|
const drawn = /url\(/.test(`${s.backgroundImage} ${s.borderImageSource}`);
|
|
54
54
|
return { rgb: alpha > 0.05 ? [p[0], p[1], p[2]].map(Math.round) : null, alpha: Math.round(alpha * 100) / 100, image: !!image, drawn };
|
|
55
55
|
};
|
|
@@ -64,9 +64,9 @@ async (a) => {
|
|
|
64
64
|
};
|
|
65
65
|
// Seen by a player: laid out, on the screen, and hidden by neither itself nor
|
|
66
66
|
// an ancestor. Opacity multiplies down the tree and visibility inherits, so a
|
|
67
|
-
// faded screen's children are faded too (
|
|
67
|
+
// faded screen's children are faded too (one game: a chapter card at
|
|
68
68
|
// opacity 0 counted as HUD all chapter, a hidden title's text was flagged in
|
|
69
|
-
// every play view;
|
|
69
|
+
// every play view; another: a label inside a faded-out button).
|
|
70
70
|
// checkVisibility answers where the browser has it; the
|
|
71
71
|
// walk up the ancestors is the fallback, and also catches a stack of
|
|
72
72
|
// part-faded layers that multiplies to nothing.
|
|
@@ -31,12 +31,12 @@
|
|
|
31
31
|
// counts when both are hit there (clip-path and rounded
|
|
32
32
|
// corners respected) and both paint there (a background, an
|
|
33
33
|
// image's opaque pixel, a glyph line), so four clip-path
|
|
34
|
-
// wedges of a d-pad whose boxes cross do not overlap
|
|
34
|
+
// wedges of a d-pad whose boxes cross do not overlap;
|
|
35
35
|
// nor do one widget's layers (absolute siblings in a parent
|
|
36
36
|
// that clips them, no control, no text: a meter's fill and trail)
|
|
37
37
|
// clipped — HUD, controls or text cut by the viewport edge: { name, side };
|
|
38
38
|
// not what a scroll container (or the page) scrolls to on that
|
|
39
|
-
// side: below-the-fold content is reached by scrolling
|
|
39
|
+
// side: below-the-fold content is reached by scrolling;
|
|
40
40
|
// and a control cut by what it sits in (a clip-path, overflow
|
|
41
41
|
// hidden, a mask), under 80% of it shown: { name, side: 'clip',
|
|
42
42
|
// shown (%), by (the ancestor) } — its own shape set aside
|
|
@@ -50,9 +50,9 @@ async (a) => {
|
|
|
50
50
|
const HIT = 'button, a[href], [role="button"], [data-fpx-touch], input, select';
|
|
51
51
|
// Seen by a player: laid out, on the screen, and hidden by neither itself nor
|
|
52
52
|
// an ancestor. Opacity multiplies down the tree and visibility inherits, so a
|
|
53
|
-
// faded screen's children are faded too (
|
|
53
|
+
// faded screen's children are faded too (one game: a chapter card at
|
|
54
54
|
// opacity 0 counted as HUD all chapter, a hidden title's text was flagged in
|
|
55
|
-
// every play view;
|
|
55
|
+
// every play view; another: a label inside a faded-out button).
|
|
56
56
|
// checkVisibility answers where the browser has it; the
|
|
57
57
|
// walk up the ancestors is the fallback, and also catches a stack of
|
|
58
58
|
// part-faded layers that multiplies to nothing.
|
|
@@ -297,7 +297,7 @@ async (a) => {
|
|
|
297
297
|
const inset = Object.keys(e).find((k) => safe[k] > 0 && e[k] < safe[k] - 1 && !scrollsTo(el, k));
|
|
298
298
|
if (inset) add(unsafe, { name: nameOf(el), side: inset });
|
|
299
299
|
}
|
|
300
|
-
// A control cut by an ancestor (
|
|
300
|
+
// A control cut by an ancestor (one game, 9 Oct: a clip-path on the end card's paper tag cut its
|
|
301
301
|
// "Title" button half off on a tall card, and every check passed it): points over the part of the
|
|
302
302
|
// control on the screen are hit-tested with its OWN clip-path and corners set aside (its shape is
|
|
303
303
|
// its design), so a point that misses it was cut by something it sits in (a clip-path, overflow
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Motion is not animation (owner, 1 Oct,
|
|
1
|
+
// Motion is not animation (owner, 1 Oct, one game: "static people, static creatures; what is
|
|
2
2
|
// animated is unlike living, just stone moves"). A sampler installed in the page watches the people,
|
|
3
3
|
// creatures and the player and tells, per actor, whether anything INSIDE it changed: its picture (a
|
|
4
4
|
// texture, a sheet frame, a UV offset), its bones, its morph weights, its vertices, or the pose of
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// near than with the player far (a crab that always bobs changes at one rate everywhere; one that
|
|
11
11
|
// scatters when the player comes changes more near). Counted per actor, not per change.
|
|
12
12
|
//
|
|
13
|
-
// Moving through space is not animating in place (
|
|
13
|
+
// Moving through space is not animating in place (one game's round 3: 28 townsfolk animated IN
|
|
14
14
|
// PLACE, none walked anywhere): each actor says how far it travelled, and a crowd that never travels
|
|
15
15
|
// is named. A crowd that wears the hero's face (the same geometry or texture as the player: rig
|
|
16
16
|
// clones of the hero) and a crowd of one look are named too. Flyers (contract `flies`/`flying`, or a
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
// shader cannot be read from the scene: declare it in the actors contract (`deform: true`). Mirroring
|
|
26
26
|
// (scale.x sign) and opacity or tint pulses are never animation.
|
|
27
27
|
//
|
|
28
|
-
// A CODE-DRAWN shape (a Pixi Graphics cleared and drawn again each frame:
|
|
29
|
-
// tail streams that way) is read by what it draws: the drawing's size and its paths' points measured from
|
|
28
|
+
// A CODE-DRAWN shape (a Pixi Graphics cleared and drawn again each frame: one game's gulls flap and its
|
|
29
|
+
// kite's tail streams that way) is read by what it draws: the drawing's size and its paths' points measured from
|
|
30
30
|
// the drawing's own corner, so the same shape drawn at a new place is motion and a shape drawn
|
|
31
31
|
// differently is animation. A Pixi mesh is read by its vertices. What the sampler cannot read inside (a
|
|
32
32
|
// filter, a shader material, a drawing it cannot parse) makes an actor `unseen` when nothing else changed:
|
|
@@ -262,7 +262,7 @@
|
|
|
262
262
|
return t ? `${t.uuid}:${t.offset ? `${t.offset.x.toFixed(3)},${t.offset.y.toFixed(3)}` : ''}:${t.repeat ? `${t.repeat.x.toFixed(3)},${t.repeat.y.toFixed(3)}` : ''}` : '';
|
|
263
263
|
};
|
|
264
264
|
// A code-drawn Pixi shape (Graphics, redrawn each frame: a gull's wings, a streaming tail, a paper sail that
|
|
265
|
-
// bellies;
|
|
265
|
+
// bellies; one game, 9 Oct) is read by what it draws, not by a picture: its drawing's size and every path's
|
|
266
266
|
// points measured from the drawing's own corner, so a shape drawn again at a new place reads the same (that
|
|
267
267
|
// is motion) and a shape drawn differently reads as changed (that is animation). Pixi v8 (context
|
|
268
268
|
// instructions), v7 (geometry.graphicsData); null when neither can be read.
|
|
@@ -420,7 +420,7 @@
|
|
|
420
420
|
if (pixi && (o.alpha ?? 1) <= 0.01) return;
|
|
421
421
|
const name = o.label || o.name || '';
|
|
422
422
|
const role = roleOf(name);
|
|
423
|
-
// A node named like a creature that holds the player (
|
|
423
|
+
// A node named like a creature that holds the player (one game: the "kite" container around the player's
|
|
424
424
|
// sail, a kite also being a flyer's word) is not an actor: the player inside it is looked for.
|
|
425
425
|
if (role && !(role !== 'player' && playerBelow(o))) {
|
|
426
426
|
found.push([o, role, name]);
|
|
@@ -85,7 +85,7 @@ async (a) => {
|
|
|
85
85
|
if (app && app.stage && typeof app.stage.getChildByLabel === 'function') {
|
|
86
86
|
const s = app.stage.getChildByLabel(subject, true);
|
|
87
87
|
if (s && typeof s.getGlobalPosition === 'function') {
|
|
88
|
-
// A container whose children move (
|
|
88
|
+
// A container whose children move (one game: a "kite" container stays at 0,0 while its sail flies) is
|
|
89
89
|
// where its drawing is: the centre of its world bounds. A leaf is where its position is.
|
|
90
90
|
if (Array.isArray(s.children) && s.children.length && typeof s.getBounds === 'function') {
|
|
91
91
|
try {
|
|
@@ -27,9 +27,9 @@ async (a) => {
|
|
|
27
27
|
|
|
28
28
|
// Seen by a player: laid out, on the screen, and hidden by neither itself nor
|
|
29
29
|
// an ancestor. Opacity multiplies down the tree and visibility inherits, so a
|
|
30
|
-
// faded screen's children are faded too (
|
|
30
|
+
// faded screen's children are faded too (one game: a chapter card at
|
|
31
31
|
// opacity 0 counted as HUD all chapter, a hidden title's text was flagged in
|
|
32
|
-
// every play view;
|
|
32
|
+
// every play view; another: a label inside a faded-out button).
|
|
33
33
|
// checkVisibility answers where the browser has it; the
|
|
34
34
|
// walk up the ancestors is the fallback, and also catches a stack of
|
|
35
35
|
// part-faded layers that multiplies to nothing.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// A real-time film of the play camera: MediaRecorder on the game's canvas stream (
|
|
2
|
-
//
|
|
1
|
+
// A real-time film of the play camera: MediaRecorder on the game's canvas stream (one GDK
|
|
2
|
+
// build had to hand-write one to show a walk; screenshots every few hundred ms are not a
|
|
3
3
|
// film, and a frozen clock is not real time). Records what the canvas draws at the game's own pace;
|
|
4
4
|
// DOM over the canvas (the HUD) is not in it. Read-only to the game.
|
|
5
5
|
//
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// What each part of the frame is made of (owner, 2 Oct,
|
|
1
|
+
// What each part of the frame is made of (owner, 2 Oct, one game's round 4: "the environment
|
|
2
2
|
// still has boxes, must be fixed" — flat-colour containers beside one painted building, big
|
|
3
3
|
// flat-shaded slabs filling the foreground). A coarse software raster of the Three scene from the
|
|
4
4
|
// play camera: every cell of a grid over the canvas gets the NEAREST triangle under its centre, so
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
// color, textures } }]
|
|
34
34
|
// tris_read, capped
|
|
35
35
|
// figures — the people and creatures of the actors contract (kind person|creature, by their `node`) built as a
|
|
36
|
-
// handful of boxes, whatever their size on screen (lane J4,
|
|
36
|
+
// handful of boxes, whatever their size on screen (lane J4, one game's r5: a herder and the hound were four
|
|
37
37
|
// and seven flat boxes, too small on screen for the area read): [{ id, kind, node, meshes, boxes (how many
|
|
38
38
|
// are cuboids: a BoxGeometry, or eight corners and axis-aligned faces), verts, on (in front of the camera) }]
|
|
39
39
|
(a) => {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Where every actor of the world stands, how big it is and where it lands on screen (owner, 1 Oct,
|
|
2
|
-
//
|
|
2
|
+
// one game: "lots of misplaces, collisions"; "we don't play and verify the environment is right
|
|
3
3
|
// and well built"). Read by `funtools walk` each tick (clipping, floating, scale, blocked paths) and
|
|
4
4
|
// by `funtools framing` (each actor's box on screen and its height share, so a camera can be set to
|
|
5
5
|
// a target's framing without rebuild-and-shoot rounds). Read-only.
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
// feet), grounded?, flies?, solid? (default true), state?, node? (the scene node's name) }
|
|
12
12
|
// Without it, a Three scene is read instead: named nodes matching the kind words below, boxed from
|
|
13
13
|
// their meshes and sprites as posed now; ground is then not observed.
|
|
14
|
-
// More shapes are read as the same contract (
|
|
14
|
+
// More shapes are read as the same contract (one game's round 3, the owner's build answered a bare
|
|
15
15
|
// array with the species in `kind` and no `type`): a bare array or an { id: actor } map; a species or
|
|
16
16
|
// role word in `kind` (crab, townsfolk, npc, drone) read into person | creature | machine with the
|
|
17
17
|
// word kept as `type`; no `type` = `species` | `role` | the id without its number; `flying` = `flies`;
|
|
@@ -115,7 +115,7 @@ async (a) => {
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
// --- the scene fallback: named nodes, boxed as posed now -------------------
|
|
118
|
-
// The box is the actor's OWN model (
|
|
118
|
+
// The box is the actor's OWN model (one game, 7 Oct: the hero read 0% tall and counted what it carried):
|
|
119
119
|
// a node under a person, creature or machine named as a prop (a crate on a cart) is its own prop, and in a
|
|
120
120
|
// rigged model the body is what the skeleton moves, so a static mesh under it (a lantern in a hand) is carried.
|
|
121
121
|
// A skinned mesh is boxed from its vertices through its bones: its geometry's box is the bind pose, and a
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@funpixel/tools",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"private": false,
|
|
5
|
-
"description": "funtools
|
|
5
|
+
"description": "funtools \u2014 the Funpixel CLI: init, dev, doctor, upgrade, smoke, verify, pack, login and publish.",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"bin": {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Funpixel GDK
|
|
2
|
+
|
|
3
|
+
Skills, agents and hooks that help your coding agent make, check and publish browser games with Funpixel.
|
|
4
|
+
|
|
5
|
+
| Agent | Install |
|
|
6
|
+
|---|---|
|
|
7
|
+
| Claude Code | `npx @funpixel/tools setup --host claude` (the marketplace and the install, from the npm package) |
|
|
8
|
+
| Cursor | from the Cursor marketplace, or see [cursor/README.md](cursor/README.md) |
|
|
9
|
+
| Codex | enable `fp` from your marketplace; see [codex/README.md](codex/README.md) |
|
|
10
|
+
| Kiro CLI | see [kiro/README.md](kiro/README.md) |
|
|
11
|
+
|
|
12
|
+
Every agent also needs funtools, the kit's CLI: `npm i -g @funpixel/tools`, then `funtools login`.
|
|
13
|
+
|
|
14
|
+
Docs: https://docs.funpixel.ai · Licence: [LICENSE](LICENSE) · Notices: [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)
|
|
15
|
+
|
|
16
|
+
This repository is built from Funpixel's source and published as is: changes made here are replaced by the next release.
|
package/plugins/claude/README.md
CHANGED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
Use Funpixel asset tools, game skills and optional studio workflows in your agent. Build, verify and publish browser games with advisory hooks and project-controlled review.
|
|
4
4
|
|
|
5
5
|
```
|
|
6
|
-
claude
|
|
7
|
-
claude plugin install fp@funpixel
|
|
6
|
+
npx @funpixel/tools setup --host claude # adds the marketplace from the npm package and installs fp@funpixel
|
|
8
7
|
funtools login # the plugin's MCP is `funtools mcp`, which signs in with this
|
|
9
8
|
```
|
|
10
9
|
|
|
@@ -12,4 +11,4 @@ Needs funtools: `npm i -g @funpixel/tools` (the kit's CLI; `npx @funpixel/tools
|
|
|
12
11
|
|
|
13
12
|
Commands: `/fp:first-look`, `/fp:flow`, `/fp:lanes`, `/fp:mobile-qa`, `/fp:new`, `/fp:playtest`, `/fp:publish`, `/fp:smoke-build`, `/fp:verify`.
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
This folder is built from Funpixel's source and published as is: changes made here are replaced by the next release.
|
|
@@ -22,8 +22,8 @@ whole-game target creation belongs to an unresolved or new-game direction.
|
|
|
22
22
|
comfort (match the targets' quality, not their density), and framing numbers left to the owner
|
|
23
23
|
(`fp:art`, references/judging-frames.md).
|
|
24
24
|
3. **Generated assets.** The words live in `assets/style.json`: the medium sentence, the palette
|
|
25
|
-
roles, one isolation clause per asset family. Sets drift when each prompt is free text (
|
|
26
|
-
|
|
25
|
+
roles, one isolation clause per asset family. Sets drift when each prompt is free text (one game
|
|
26
|
+
shipped a whole family at 0% chroma), so a new asset changes the subject or the
|
|
27
27
|
repair and keeps the rest of the words.
|
|
28
28
|
4. **Asset specs.** Before generation, list the assets this task needs and settle the choices that
|
|
29
29
|
change the result. For each: family, role size, the reference it uses, the one-line prompt
|
|
@@ -21,7 +21,7 @@ person: it changes nothing in the game, and its steps are suggestions they pick
|
|
|
21
21
|
seat. Each prompt carries those numbers as facts F1, F2, … to read before the frames (Scenario's
|
|
22
22
|
numbers first, then eyes); the report says which facts each seat cited.
|
|
23
23
|
4. Run every seat now, in parallel in the foreground (a background seat answered after a session
|
|
24
|
-
had already ended,
|
|
24
|
+
had already ended, in one game's third session), each as a fresh agent given only the contents of its prompt
|
|
25
25
|
file: one per `seats/<name>.md`, per `versus/<name>.md` and `fidelity/fidelity.md` when printed (and `fidelity/ui.md` from step 5), each a general-purpose
|
|
26
26
|
agent (the `critic` agent's own format would override the prompt's), and the `player` agent with
|
|
27
27
|
`player.md` at phone size. The Mobile QA seat (`mobile/mobile-qa.md`, the `mobile-qa` agent: is
|
|
@@ -45,7 +45,7 @@ person: it changes nothing in the game, and its steps are suggestions they pick
|
|
|
45
45
|
(`.funtools/playtest/history.json`: panel axes, the experience bar, the blind player, minutes of
|
|
46
46
|
real play, fidelity per moment and the AD lines, every round), with each drop marked. When it
|
|
47
47
|
opens with "Look at the captures first", open those frames before trusting any score: a view
|
|
48
|
-
that never reached its beat is scored as the wrong game (
|
|
48
|
+
that never reached its beat is scored as the wrong game (one game scored 4.9 on views stuck at
|
|
49
49
|
the opening shot, 6.55 once they reached their beats). A thing on the list that is lost is a
|
|
50
50
|
regression: the report leads with it and exits 1, the flow makes putting it back the round's first
|
|
51
51
|
step, and only the owner takes an item off (`playtest keep --drop K<n> --by owner "<their words>"`).
|
|
@@ -87,7 +87,7 @@ the demo with your game (`rules.ts`, `session.ts`, `game.ts`, `feel.ts`, `hud.ts
|
|
|
87
87
|
paths, an environment map (they render flat grey without one), and `mixer.update(dt)` every frame.
|
|
88
88
|
- Pixi: every display object gets a `.label`; `window.__PIXI_APP__ = app` after `app.init()`.
|
|
89
89
|
- Room codes, share codes and seeds carry `data-funpixel-selectable` (else they cannot be copied).
|
|
90
|
-
- `@funpixel/sdk` is pinned exactly (`"0.
|
|
90
|
+
- `@funpixel/sdk` is pinned exactly (`"0.7.0"`). Import the root only for `setupGameResize`;
|
|
91
91
|
everything else from a subpath. Multiplayer is `Room.autoJoin(getGameKey(), …)`, never a raw
|
|
92
92
|
WebSocket (skill `fp:game-spine`).
|
|
93
93
|
- A performance fix changes how a frame is made (pooling, atlases, instancing), never what it shows.
|
|
@@ -16,7 +16,7 @@ export const PANEL_DEFAULT = 7.3;
|
|
|
16
16
|
export const CATALOGUE = {
|
|
17
17
|
pitch: {
|
|
18
18
|
title: 'Invent and pitch',
|
|
19
|
-
why: 'a game whose answers are generic loses to one that invented something (
|
|
19
|
+
why: 'a game whose answers are generic loses to one that invented something (an A/B, 3 of 3 seats)',
|
|
20
20
|
gates: [{ kind: 'gdd', headings: ['The invention'] }, { kind: 'studio' }, { kind: 'worth' }],
|
|
21
21
|
rules: [
|
|
22
22
|
'Answer the six forcing questions for THIS game in the GDD\'s `## The invention`: what the core object means, why the verb exists in this world, who wants what (names), what the twist costs, the one system that lives, what only this game has. A generic answer means the idea is not there yet.',
|
|
@@ -71,20 +71,20 @@ export const CATALOGUE = {
|
|
|
71
71
|
},
|
|
72
72
|
'first-look': {
|
|
73
73
|
title: 'First look',
|
|
74
|
-
why: 'identity drifts between frames unless it is locked first (
|
|
74
|
+
why: 'identity drifts between frames unless it is locked first (one game: 7 of 7 redraws on-model with reference sheets)',
|
|
75
75
|
gates: [{ kind: 'refs', min: 1 }, { kind: 'targets', min: 4 }, { kind: 'kit' }, { kind: 'set' }],
|
|
76
76
|
rules: [
|
|
77
77
|
`The whole game, not a few frames (owner, 4 Oct, asked twice): key art; every screen (the title as the play world, pause, the end; past small settings, results, a level select); the HUD on the phone and the desktop; a frame per place, each tied to a story beat; a living-world sheet; an animation board; a juice board; the sound list; the fun page. \`${T} firstlook\` lists what is missing; places and the living world only for a world game.`,
|
|
78
78
|
'Reference sheets (identity lock) BEFORE moment frames; every recurring design drawn with its references and one verbatim style block.',
|
|
79
79
|
'A target frame per hook moment at the play framing (desktop 1280x720, phone held sideways 852x393).',
|
|
80
|
-
`The world's kit beside the hero: sheets of its made parts (structures, ground, props, the living cast), cut into pieces before the slice (\`${T} cut\`); the slice is built from them, never from plain shapes (a fresh
|
|
80
|
+
`The world's kit beside the hero: sheets of its made parts (structures, ground, props, the living cast), cut into pieces before the slice (\`${T} cut\`); the slice is built from them, never from plain shapes (a fresh build shipped code-drawn primitives until the owner's note).`,
|
|
81
81
|
'A picture of every place; no two places alike in shape, material, era and light.',
|
|
82
82
|
'The HUD mockup drawn over a target frame.',
|
|
83
83
|
],
|
|
84
84
|
},
|
|
85
85
|
'core-test': {
|
|
86
86
|
title: 'Core test (A1): the game bites',
|
|
87
|
-
why: 'both
|
|
87
|
+
why: 'both builds of one game spent their rounds on looks and the challenge never bit ("no challenges at all")',
|
|
88
88
|
gates: [{ kind: 'tests' }, { kind: 'sim' }],
|
|
89
89
|
rules: [
|
|
90
90
|
`The GDD's named bots play the REAL level (\`${T} sim\`): an engine-free, fixed-step, seeded sim, plus a replay test.`,
|
|
@@ -119,7 +119,7 @@ export const CATALOGUE = {
|
|
|
119
119
|
},
|
|
120
120
|
expand: {
|
|
121
121
|
title: 'Expand, room by room',
|
|
122
|
-
why: 'our real games are 10 to 18 minutes of designed play, grown room by room from a slice that passed (
|
|
122
|
+
why: 'our real games are 10 to 18 minutes of designed play, grown room by room from a slice that passed (one plan: "nothing in Rooms 2-6 starts until the slice passes its gates")',
|
|
123
123
|
gates: [{ kind: 'rooms' }],
|
|
124
124
|
rules: [
|
|
125
125
|
`Slice first: a room is opened for building only once the room before it passes (\`${T} rooms open <id>\`); the owner alone releases one early (\`--by owner\`).`,
|
|
@@ -162,7 +162,7 @@ export const CATALOGUE = {
|
|
|
162
162
|
},
|
|
163
163
|
'blind-play': {
|
|
164
164
|
title: 'Blind play from the title',
|
|
165
|
-
why: 'blind players from the title found the blockers no panel could
|
|
165
|
+
why: 'blind players from the title found the blockers no panel could',
|
|
166
166
|
gates: [{ kind: 'play' }, { kind: 'sim' }],
|
|
167
167
|
rules: [
|
|
168
168
|
`A blind player from the title, no instructions (\`${T} play\`): a stall counts as blocking.`,
|
|
@@ -51,7 +51,7 @@ export const CATALOGUE = [
|
|
|
51
51
|
{ id: 'cutscenes', label: 'Cutscenes', why: 'one earned cinematic (the ending, a reveal), skippable', cost: '$1–3 each, plus a scene to stage' },
|
|
52
52
|
{ id: 'photo', label: 'Photo mode', why: 'players share the wow moments; the share card carries the game', cost: 'a free camera, a frame and a share sheet: about a day' },
|
|
53
53
|
{ id: 'multiplayer', label: 'Multiplayer', why: 'friends in one room through the relay', cost: 'doubles the test work; the host owns the world state' },
|
|
54
|
-
{ id: 'two-takes', label: 'Two takes', why: 'for a deep game: two parallel builds of the same locked plan, each winning different areas (one the environment, one the dynamics); `funtools compare-takes` plays both from the title and writes a best-of-both table, and the mix beats both (
|
|
54
|
+
{ id: 'two-takes', label: 'Two takes', why: 'for a deep game: two parallel builds of the same locked plan, each winning different areas (one the environment, one the dynamics); `funtools compare-takes` plays both from the title and writes a best-of-both table, and the mix beats both (one game, 3 rounds)', cost: 'twice the build sessions, plus a merge round' },
|
|
55
55
|
{ id: 'none', label: 'None', why: 'everything goes into the core' },
|
|
56
56
|
],
|
|
57
57
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# The model bake-off: several candidates, one judged against the master
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
from turntable sheets;
|
|
3
|
+
One game tried its hero three ways (three providers' takes of the same front picture) and picked
|
|
4
|
+
from turntable sheets; another made two to four models of each crew member before one held.
|
|
5
5
|
A model is the most expensive asset a game makes, and the first one is rarely the keeper. The
|
|
6
6
|
bake-off makes the choice cheap to see and puts it on record.
|
|
7
7
|
|
|
@@ -41,7 +41,7 @@ never before (step 5 of the skill).
|
|
|
41
41
|
|
|
42
42
|
## What it showed on real files
|
|
43
43
|
|
|
44
|
-
On
|
|
44
|
+
On the first game's own models, rendered by the bench: each prop's model was ranked first against its own
|
|
45
45
|
reference picture, by 0.03 to 0.13 over the next (crate, door, lockers, canister, bell); the three
|
|
46
46
|
providers' takes of the hero scored within 0.03 of each other, and well above any prop. The team
|
|
47
47
|
kept the Rodin take for reasons a silhouette cannot see (triangle budget, separable limbs). That is
|
|
@@ -44,7 +44,7 @@ pins up to 8 colours. It changes the paint, not the shape: a knight is not a res
|
|
|
44
44
|
|
|
45
45
|
## When the game poses its own skeleton
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
A three.js horror game (29 Sep 2026) posed a code skeleton from its sim every frame, and
|
|
48
48
|
its enemies lose limbs, so neither the library nor an auto-rig fit: their bones carry their own
|
|
49
49
|
names, rolls and rest rotations, and none splits a body for severing. What it did instead, run in
|
|
50
50
|
local Blender:
|
|
@@ -4,10 +4,10 @@ The default path for every hero of a 3D game: the player, the rivals, the bosses
|
|
|
4
4
|
prop the player stares at. A choice the person locked (a code-built toy style, a budget of zero
|
|
5
5
|
credits, a library character) overrides it. Environment and background may stay procedural.
|
|
6
6
|
|
|
7
|
-
Why it exists:
|
|
7
|
+
Why it exists: a phone racer was offered `generate_3d_model` in three creator rounds
|
|
8
8
|
and never called it. Its boats and world were boxes, cones and extrusions; stills of tidy
|
|
9
9
|
primitives read as a style, and the blind panel scored the look above 7 while the owner saw "a
|
|
10
|
-
shapes game".
|
|
10
|
+
shapes game". Another game, rooms of code geometry, reached 7.28 against Monument Valley 2's 8.60.
|
|
11
11
|
|
|
12
12
|
## Declared, proven, or named
|
|
13
13
|
|
|
@@ -40,7 +40,7 @@ numbered fact. Three honest states for a code-built hero:
|
|
|
40
40
|
([levels.md](levels.md)): 300K triangles on Meshy 7.1 (the default engine, 2048 px maps,
|
|
41
41
|
about 160 credits), 500K faces and 4096 px PNG maps with `engine: "hunyuan"` (about 135), or
|
|
42
42
|
500K triangles and 4096 px PBR maps with `engine: "rodin"` (about 240; the hard-surface take:
|
|
43
|
-
|
|
43
|
+
one game kept Rodin's crate, door, lockers and bell). A rigged hero stays `standard`, and
|
|
44
44
|
never Rodin (it has no rig).
|
|
45
45
|
|
|
46
46
|
Rodin 2.5 (`engine: "rodin"`) runs only when named and never falls back: static only (with
|
|
@@ -51,12 +51,12 @@ numbered fact. Three honest states for a code-built hero:
|
|
|
51
51
|
`raw: true`: the engine's file untouched (the optimized copy clamps maps to 1024 px), then
|
|
52
52
|
cut it to the device yourself. `npx @funpixel/tools gen model3d --image-asset front.png
|
|
53
53
|
--back-asset back.png --style hero --engine hunyuan --raw` does all of it from the CLI.
|
|
54
|
-
**Fidelity against the views** (
|
|
54
|
+
**Fidelity against the views** (one game's hero, 10 Oct 2026, `npx @funpixel/tools fidelity`):
|
|
55
55
|
from one view the model is a slab whose end views score ~46%; four views (front, back, both
|
|
56
56
|
ends) fix the depth. Projecting the views onto the mesh was the largest single gain (a profile
|
|
57
57
|
84 → 91%), and generation plus projection plateaued near 73% (Hunyuan from four views 72.8%,
|
|
58
58
|
Meshy hero 73.3%: Meshy keeps profiles sharper, Hunyuan the ends). Check the views agree
|
|
59
|
-
first: `fidelity` names views no one object can match (the
|
|
59
|
+
first: `fidelity` names views no one object can match (the hero's drawings drew the drum two
|
|
60
60
|
sizes, which capped even a hand-built mesh at ~74%). For 95% (reached, 95.0% mean), the studio
|
|
61
61
|
order: block the shape in Blender from primitives measured off the views (6.4K faces); render
|
|
62
62
|
the plain mesh in four orthographic views; `gen edit` each render into a paintover in the house
|
|
@@ -93,7 +93,7 @@ A heist in a two-room cottage with a garden:
|
|
|
93
93
|
## Common mistakes
|
|
94
94
|
|
|
95
95
|
- Colliding against the art: a character snags on every table leg and falls through foliage.
|
|
96
|
-
- Colliders for the hero but not the camera:
|
|
96
|
+
- Colliders for the hero but not the camera: one game's shoulder camera entered walls six
|
|
97
97
|
times in one blind phone run and lost her; cast it against the walls and planes at the kit's faces.
|
|
98
98
|
- Dressing before walking the blockout: every prop moved twice.
|
|
99
99
|
- A marker the code asks for that the spec never declared.
|