summer-engine 2.8.2 → 3.0.0
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/.claude-plugin/marketplace.json +27 -7
- package/.claude-plugin/plugin.json +99 -83
- package/.codex-plugin/plugin.json +112 -82
- package/.cursor-plugin/plugin.json +119 -83
- package/.factory-plugin/plugin.json +100 -3
- package/.mcp.json +6 -1
- package/.opencode/INSTALL.md +7 -4
- package/.opencode/plugins/summer.js +31 -18
- package/AGENTS.md +107 -34
- package/CHANGELOG.md +131 -44
- package/CLAUDE.md +4 -2
- package/GEMINI.md +7 -53
- package/NOTICE +31 -0
- package/README.md +159 -391
- package/assets/api-docs.json.gz +0 -0
- package/assets/autopilot/README.md +20 -6
- package/assets/autopilot/autopilot.gd +80 -26
- package/assets/autopilot/run.sh +132 -7
- package/assets/navigation/web-routes.json +719 -0
- package/commands/gameskill.md +10 -108
- package/commands/summer.md +72 -4
- package/dist/bin/summer.js +6 -87
- package/dist/cli/banner.d.ts +1 -0
- package/dist/cli/banner.js +33 -0
- package/dist/{commands → cli/commands}/config.js +1 -1
- package/dist/cli/commands/create.d.ts +30 -0
- package/dist/cli/commands/create.js +212 -0
- package/dist/{commands → cli/commands}/debug.js +2 -2
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.js +18 -0
- package/dist/cli/commands/events.d.ts +57 -0
- package/dist/cli/commands/events.js +158 -0
- package/dist/cli/commands/install.d.ts +50 -0
- package/dist/cli/commands/install.js +447 -0
- package/dist/cli/commands/list.js +72 -0
- package/dist/{commands → cli/commands}/login.js +33 -17
- package/dist/{commands → cli/commands}/logout.d.ts +1 -0
- package/dist/cli/commands/logout.js +19 -0
- package/dist/{commands → cli/commands}/memory.d.ts +1 -8
- package/dist/{commands → cli/commands}/memory.js +20 -11
- package/dist/cli/commands/open.d.ts +45 -0
- package/dist/cli/commands/open.js +216 -0
- package/dist/{commands → cli/commands}/plan.js +2 -2
- package/dist/{commands → cli/commands}/publish.js +1 -1
- package/dist/{commands → cli/commands}/releases.js +1 -1
- package/dist/cli/commands/run.d.ts +19 -0
- package/dist/cli/commands/run.js +255 -0
- package/dist/{commands → cli/commands}/setup.js +43 -89
- package/dist/{commands → cli/commands}/skills.js +85 -222
- package/dist/{commands → cli/commands}/status.d.ts +1 -0
- package/dist/cli/commands/status.js +62 -0
- package/dist/cli/commands/tool.d.ts +11 -0
- package/dist/cli/commands/tool.js +121 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.js +89 -0
- package/dist/cli/root-action.d.ts +7 -0
- package/dist/cli/root-action.js +15 -0
- package/dist/{lib → core}/api-client.d.ts +106 -15
- package/dist/{lib → core}/api-client.js +267 -75
- package/dist/{lib → core}/async-op-lifecycle.d.ts +3 -4
- package/dist/{lib → core}/async-op-lifecycle.js +3 -4
- package/dist/{lib → core}/auth.d.ts +14 -6
- package/dist/{lib → core}/auth.js +56 -40
- package/dist/core/capabilities/agent-playbook.d.ts +20 -0
- package/dist/core/capabilities/agent-playbook.js +218 -0
- package/dist/core/capabilities/api-docs.d.ts +36 -0
- package/dist/core/capabilities/api-docs.js +118 -0
- package/dist/core/capabilities/asset-import.d.ts +49 -0
- package/dist/core/capabilities/asset-import.js +134 -0
- package/dist/core/capabilities/camera-view.d.ts +98 -0
- package/dist/core/capabilities/camera-view.js +222 -0
- package/dist/core/capabilities/capture.d.ts +63 -0
- package/dist/core/capabilities/capture.js +67 -0
- package/dist/core/capabilities/console-read.d.ts +17 -0
- package/dist/core/capabilities/console-read.js +21 -0
- package/dist/{lib → core/capabilities}/creator.d.ts +1 -29
- package/dist/{lib → core/capabilities}/creator.js +14 -33
- package/dist/{lib → core/capabilities}/debug-report.d.ts +1 -1
- package/dist/{lib → core/capabilities}/debug-report.js +12 -31
- package/dist/{commands → core/capabilities}/doctor.d.ts +7 -2
- package/dist/{commands → core/capabilities}/doctor.js +47 -73
- package/dist/core/capabilities/engine-fallbacks.d.ts +26 -0
- package/dist/core/capabilities/engine-fallbacks.js +36 -0
- package/dist/core/capabilities/engine-ops.d.ts +33 -0
- package/dist/core/capabilities/engine-ops.js +145 -0
- package/dist/core/capabilities/engine-receipt.d.ts +53 -0
- package/dist/core/capabilities/engine-receipt.js +134 -0
- package/dist/core/capabilities/events.d.ts +200 -0
- package/dist/core/capabilities/events.js +383 -0
- package/dist/core/capabilities/fabricate-mesh.d.ts +111 -0
- package/dist/core/capabilities/fabricate-mesh.js +165 -0
- package/dist/core/capabilities/frame-quality.d.ts +71 -0
- package/dist/core/capabilities/frame-quality.js +449 -0
- package/dist/core/capabilities/game-task-plan.d.ts +66 -0
- package/dist/{lib → core/capabilities}/game-task-plan.js +59 -8
- package/dist/core/capabilities/hdri-import.d.ts +90 -0
- package/dist/core/capabilities/hdri-import.js +250 -0
- package/dist/core/capabilities/image-generation.d.ts +24 -0
- package/dist/core/capabilities/image-generation.js +22 -0
- package/dist/core/capabilities/navigation/open.d.ts +156 -0
- package/dist/core/capabilities/navigation/open.js +567 -0
- package/dist/core/capabilities/navigation/render-product-map.d.ts +1 -0
- package/dist/core/capabilities/navigation/render-product-map.js +84 -0
- package/dist/core/capabilities/navigation/targets.d.ts +87 -0
- package/dist/core/capabilities/navigation/targets.js +250 -0
- package/dist/core/capabilities/play-determinism.d.ts +35 -0
- package/dist/core/capabilities/play-determinism.js +86 -0
- package/dist/core/capabilities/project-context.d.ts +114 -0
- package/dist/core/capabilities/project-context.js +249 -0
- package/dist/core/capabilities/runtime-control.d.ts +540 -0
- package/dist/core/capabilities/runtime-control.js +1011 -0
- package/dist/core/capabilities/scene-kind.d.ts +19 -0
- package/dist/core/capabilities/scene-kind.js +137 -0
- package/dist/core/capabilities/scene-script.d.ts +38 -0
- package/dist/core/capabilities/scene-script.js +45 -0
- package/dist/core/capabilities/tool-dispatch.d.ts +42 -0
- package/dist/core/capabilities/tool-dispatch.js +1490 -0
- package/dist/core/capabilities/ui-control.d.ts +179 -0
- package/dist/core/capabilities/ui-control.js +423 -0
- package/dist/core/capabilities/variant-types.d.ts +22 -0
- package/dist/core/capabilities/variant-types.js +101 -0
- package/dist/core/capability-skew.d.ts +205 -0
- package/dist/core/capability-skew.js +386 -0
- package/dist/{lib → core}/config.d.ts +11 -1
- package/dist/{lib → core}/config.js +13 -2
- package/dist/core/embeddings.d.ts +78 -0
- package/dist/core/embeddings.js +166 -0
- package/dist/core/engine-install.d.ts +105 -0
- package/dist/core/engine-install.js +190 -0
- package/dist/core/engine.d.ts +94 -0
- package/dist/{lib → core}/engine.js +74 -28
- package/dist/core/feedback/client.d.ts +88 -0
- package/dist/core/feedback/client.js +182 -0
- package/dist/{lib → core}/format.d.ts +0 -1
- package/dist/{lib → core}/format.js +1 -1
- package/dist/core/headless/connection.d.ts +86 -0
- package/dist/core/headless/connection.js +97 -0
- package/dist/core/headless/editor-connection.d.ts +26 -0
- package/dist/core/headless/editor-connection.js +81 -0
- package/dist/core/headless/mcp-routing.d.ts +38 -0
- package/dist/core/headless/mcp-routing.js +83 -0
- package/dist/core/headless/registry.d.ts +91 -0
- package/dist/core/headless/registry.js +226 -0
- package/dist/core/headless/resolve.d.ts +46 -0
- package/dist/core/headless/resolve.js +75 -0
- package/dist/core/headless/spawn.d.ts +46 -0
- package/dist/core/headless/spawn.js +205 -0
- package/dist/core/headless/worker-connection.d.ts +96 -0
- package/dist/core/headless/worker-connection.js +353 -0
- package/dist/core/headless/worker-engine-client.d.ts +58 -0
- package/dist/core/headless/worker-engine-client.js +246 -0
- package/dist/core/launch-posture.d.ts +170 -0
- package/dist/core/launch-posture.js +317 -0
- package/dist/core/library-read.d.ts +73 -0
- package/dist/core/library-read.js +279 -0
- package/dist/core/library-search.d.ts +143 -0
- package/dist/core/library-search.js +301 -0
- package/dist/{lib → core}/log-filters.js +4 -2
- package/dist/{lib → core}/mcp-log.js +2 -17
- package/dist/core/package-root.d.ts +9 -0
- package/dist/core/package-root.js +11 -0
- package/dist/core/redact.d.ts +20 -0
- package/dist/core/redact.js +64 -0
- package/dist/core/registry-search.d.ts +167 -0
- package/dist/core/registry-search.js +358 -0
- package/dist/core/skills-registry.d.ts +47 -0
- package/dist/core/skills-registry.js +83 -0
- package/dist/{lib → core}/store.js +11 -7
- package/dist/{lib → core}/summer-compatibility.js +3 -3
- package/dist/{lib → core}/telemetry.js +5 -2
- package/dist/core/templates.d.ts +98 -0
- package/dist/core/templates.js +241 -0
- package/dist/core/tool-errors.d.ts +30 -0
- package/dist/core/tool-errors.js +40 -0
- package/dist/core/trajectory.d.ts +80 -0
- package/dist/core/trajectory.js +307 -0
- package/dist/core/util/http.d.ts +13 -0
- package/dist/core/util/http.js +28 -0
- package/dist/core/util/json.d.ts +12 -0
- package/dist/core/util/json.js +21 -0
- package/dist/core/util/process.d.ts +3 -0
- package/dist/core/util/process.js +13 -0
- package/dist/core/util/sleep.d.ts +1 -0
- package/dist/core/util/sleep.js +3 -0
- package/dist/core/version.d.ts +3 -0
- package/dist/core/version.js +5 -0
- package/dist/{lib → installer}/agent-config.d.ts +20 -1
- package/dist/{lib → installer}/agent-config.js +138 -24
- package/dist/installer/legacy-skills.d.ts +26 -0
- package/dist/installer/legacy-skills.js +53 -0
- package/dist/installer/setup.d.ts +76 -0
- package/dist/installer/setup.js +146 -0
- package/dist/installer/skill-locations.d.ts +45 -0
- package/dist/installer/skill-locations.js +170 -0
- package/dist/installer/version-check.d.ts +174 -0
- package/dist/{lib → installer}/version-check.js +173 -42
- package/dist/{lib/mcp-boot-notice.d.ts → mcp/boot-notice.d.ts} +1 -1
- package/dist/{commands/mcp.js → mcp/command.js} +18 -6
- package/dist/mcp/server.d.ts +23 -3
- package/dist/mcp/server.js +122 -28
- package/dist/mcp/tools/asset-tools.js +62 -142
- package/dist/mcp/tools/creator-tools.js +5 -23
- package/dist/mcp/tools/debug-tools.js +61 -18
- package/dist/mcp/tools/event-tools.d.ts +14 -0
- package/dist/mcp/tools/event-tools.js +41 -0
- package/dist/mcp/tools/fabricate-tools.d.ts +2 -0
- package/dist/mcp/tools/fabricate-tools.js +28 -0
- package/dist/mcp/tools/feedback-tools.d.ts +77 -0
- package/dist/mcp/tools/feedback-tools.js +88 -0
- package/dist/mcp/tools/file-tools.js +6 -53
- package/dist/mcp/tools/generate-tools.js +37 -63
- package/dist/mcp/tools/library-tools.d.ts +11 -0
- package/dist/mcp/tools/library-tools.js +42 -0
- package/dist/mcp/tools/navigation-tools.d.ts +7 -0
- package/dist/mcp/tools/navigation-tools.js +37 -0
- package/dist/mcp/tools/perception-tools.d.ts +20 -0
- package/dist/mcp/tools/perception-tools.js +146 -0
- package/dist/mcp/tools/project-tools.d.ts +14 -0
- package/dist/mcp/tools/project-tools.js +72 -281
- package/dist/mcp/tools/runtime-tools.d.ts +2 -0
- package/dist/mcp/tools/runtime-tools.js +92 -0
- package/dist/mcp/tools/scene-tools.d.ts +3 -0
- package/dist/mcp/tools/scene-tools.js +68 -119
- package/dist/mcp/tools/script-tools.d.ts +3 -0
- package/dist/mcp/tools/script-tools.js +118 -0
- package/dist/mcp/tools/spatial-tools.d.ts +2 -0
- package/dist/mcp/tools/spatial-tools.js +485 -0
- package/dist/mcp/tools/text-json.d.ts +8 -0
- package/dist/mcp/tools/text-json.js +12 -0
- package/dist/mcp/tools/{cloud-tools.d.ts → ui-tools.d.ts} +1 -1
- package/dist/mcp/tools/ui-tools.js +82 -0
- package/dist/mcp/tools/visual-tools.d.ts +2 -7
- package/dist/mcp/tools/visual-tools.js +383 -101
- package/dist/mcp/tools/with-engine.d.ts +9 -15
- package/dist/mcp/tools/with-engine.js +60 -96
- package/dist/project-memory/project-manifest.d.ts +36 -0
- package/dist/project-memory/project-manifest.js +50 -0
- package/dist/project-memory/project-memory.d.ts +57 -0
- package/dist/{lib → project-memory}/project-memory.js +46 -0
- package/gemini-extension.json +103 -2
- package/hooks/hooks-cursor.json +2 -2
- package/hooks/hooks.json +2 -1
- package/hooks/pre-commit-doctor.sh +45 -39
- package/hooks/run-hook.cmd +30 -23
- package/hooks/run-hook.sh +20 -0
- package/hooks/session-start.sh +18 -7
- package/integrations/README.md +70 -0
- package/integrations/claude/README.md +19 -0
- package/integrations/claude/manifest-target.json +16 -0
- package/integrations/cline/README.md +13 -0
- package/integrations/cline/manifest-target.json +3 -0
- package/integrations/codex/README.md +15 -0
- package/integrations/codex/manifest-target.json +5 -0
- package/integrations/cursor/README.md +16 -0
- package/integrations/cursor/manifest-target.json +5 -0
- package/integrations/factory/README.md +26 -0
- package/integrations/factory/manifest-target.json +5 -0
- package/integrations/gemini/README.md +26 -0
- package/integrations/gemini/manifest-target.json +5 -0
- package/integrations/github-copilot/README.md +12 -0
- package/integrations/github-copilot/manifest-target.json +3 -0
- package/integrations/kilo-code/README.md +16 -0
- package/integrations/kilo-code/manifest-target.json +3 -0
- package/integrations/lm-studio/README.md +12 -0
- package/integrations/lm-studio/manifest-target.json +3 -0
- package/integrations/opencode/README.md +15 -0
- package/integrations/opencode/manifest-target.json +3 -0
- package/integrations/roo-code/README.md +13 -0
- package/integrations/roo-code/manifest-target.json +3 -0
- package/integrations/vscode-copilot/README.md +12 -0
- package/integrations/vscode-copilot/manifest-target.json +3 -0
- package/integrations/windsurf/README.md +13 -0
- package/integrations/windsurf/manifest-target.json +3 -0
- package/library/references/collaborative-protocol/resource.yaml +24 -0
- package/library/references/gd-style/resource.yaml +24 -0
- package/{references → library/references/godot-version}/godot-version.md +6 -6
- package/library/references/godot-version/resource.yaml +22 -0
- package/library/references/headless-routing/headless-routing.md +46 -0
- package/library/references/headless-routing/resource.yaml +24 -0
- package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +49 -0
- package/library/references/mcp-fresh-chat-playbook/resource.yaml +23 -0
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +271 -0
- package/library/references/mcp-tools-reference/resource.yaml +17 -0
- package/library/references/product-map/product-map.md +103 -0
- package/library/references/product-map/resource.yaml +33 -0
- package/{references → library/references/public-surface-language}/public-surface-language.md +5 -7
- package/library/references/public-surface-language/resource.yaml +17 -0
- package/library/references/summer-folder/resource.yaml +20 -0
- package/{references → library/references/summer-folder}/summer-folder.md +22 -21
- package/{skills/rendering-and-lighting → library/skills}/3d-lighting/SKILL.md +15 -11
- package/library/skills/3d-lighting/resource.yaml +27 -0
- package/{skills/audio → library/skills}/adaptive-music/SKILL.md +1 -1
- package/library/skills/adaptive-music/resource.yaml +28 -0
- package/library/skills/agent-playtesting/SKILL.md +148 -0
- package/library/skills/agent-playtesting/resource.yaml +52 -0
- package/library/skills/ambient-bed/resource.yaml +24 -0
- package/{skills/video → library/skills}/animated-loop/SKILL.md +1 -1
- package/library/skills/animated-loop/resource.yaml +27 -0
- package/{skills/animation → library/skills}/animation-tree/SKILL.md +29 -14
- package/library/skills/animation-tree/resource.yaml +33 -0
- package/{skills/rendering-and-lighting → library/skills}/art-direction/SKILL.md +3 -3
- package/library/skills/art-direction/resource.yaml +29 -0
- package/{skills/asset-pipeline → library/skills}/asset-strategy/SKILL.md +44 -44
- package/library/skills/asset-strategy/resource.yaml +63 -0
- package/{skills/audio → library/skills}/audio-direction/SKILL.md +7 -7
- package/library/skills/audio-direction/resource.yaml +32 -0
- package/library/skills/auto-fire-targeting/resource.yaml +22 -0
- package/{skills/scene-and-project → library/skills}/brainstorm-game/SKILL.md +8 -8
- package/library/skills/brainstorm-game/resource.yaml +30 -0
- package/{skills/workflow → library/skills}/brainstorming/SKILL.md +2 -22
- package/library/skills/brainstorming/resource.yaml +23 -0
- package/{skills/workflow → library/skills}/brainstorming/spec-document-reviewer-prompt.md +1 -1
- package/{skills/scene-and-project → library/skills}/browse-templates/SKILL.md +18 -18
- package/library/skills/browse-templates/resource.yaml +23 -0
- package/library/skills/celeste-momentum-platforming/SKILL.md +366 -0
- package/library/skills/celeste-momentum-platforming/resource.yaml +33 -0
- package/library/skills/character-animation-wiring/SKILL.md +249 -0
- package/library/skills/character-animation-wiring/resource.yaml +39 -0
- package/{skills/3d-assets → library/skills}/character-model/SKILL.md +25 -25
- package/library/skills/character-model/resource.yaml +36 -0
- package/{skills/2d-assets → library/skills}/character-portrait/SKILL.md +14 -14
- package/library/skills/character-portrait/resource.yaml +30 -0
- package/{skills/video → library/skills}/cinematic-cutscene/SKILL.md +2 -2
- package/library/skills/cinematic-cutscene/resource.yaml +29 -0
- package/{skills/2d-assets → library/skills}/concept-art/SKILL.md +15 -15
- package/library/skills/concept-art/resource.yaml +34 -0
- package/{skills/2d-assets → library/skills}/create-asset-sheet/SKILL.md +8 -8
- package/library/skills/create-asset-sheet/resource.yaml +33 -0
- package/{skills/debugging → library/skills}/debug/SKILL.md +3 -3
- package/library/skills/debug/resource.yaml +31 -0
- package/{skills/workflow → library/skills}/debugging-game-feel/SKILL.md +11 -11
- package/library/skills/debugging-game-feel/resource.yaml +25 -0
- package/{skills/level-design → library/skills}/design-level/SKILL.md +6 -6
- package/library/skills/design-level/resource.yaml +31 -0
- package/{skills/gameplay-mechanics → library/skills}/design-mechanic/SKILL.md +3 -3
- package/library/skills/design-mechanic/resource.yaml +31 -0
- package/{skills/ai-and-npcs → library/skills}/design-npc/SKILL.md +7 -3
- package/library/skills/design-npc/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/diagnosing-perf-regressions/SKILL.md +10 -10
- package/library/skills/diagnosing-perf-regressions/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/dispatching-parallel-agents/SKILL.md +8 -8
- package/library/skills/dispatching-parallel-agents/resource.yaml +23 -0
- package/library/skills/driving-the-editor-ui/SKILL.md +85 -0
- package/library/skills/driving-the-editor-ui/resource.yaml +46 -0
- package/{skills/3d-assets → library/skills}/environment-kit/SKILL.md +11 -11
- package/library/skills/environment-kit/resource.yaml +29 -0
- package/{skills/deployment → library/skills}/export-and-ship/SKILL.md +5 -5
- package/library/skills/export-and-ship/resource.yaml +32 -0
- package/library/skills/fabricating-assets/SKILL.md +195 -0
- package/library/skills/fabricating-assets/resource.yaml +52 -0
- package/{skills/animation → library/skills}/facial-and-lipsync/SKILL.md +23 -11
- package/library/skills/facial-and-lipsync/resource.yaml +36 -0
- package/{skills/character-controllers → library/skills}/fps-controller/SKILL.md +8 -4
- package/library/skills/fps-controller/resource.yaml +29 -0
- package/{skills/visual-effects → library/skills}/game-feel/SKILL.md +7 -7
- package/library/skills/game-feel/resource.yaml +27 -0
- package/library/skills/gameskill/SKILL.md +64 -0
- package/library/skills/gameskill/resource.yaml +22 -0
- package/library/skills/gdscript-patterns/resource.yaml +23 -0
- package/{skills/animation → library/skills}/generate-motion/SKILL.md +16 -16
- package/library/skills/generate-motion/resource.yaml +34 -0
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +223 -0
- package/library/skills/godogen-visual-proof-game-generation/resource.yaml +33 -0
- package/{skills/workflow → library/skills}/headless-scripting/SKILL.md +14 -7
- package/library/skills/headless-scripting/resource.yaml +26 -0
- package/library/skills/host-authoritative-state/resource.yaml +28 -0
- package/{skills/2d-assets → library/skills}/instantiate-asset-pack/SKILL.md +10 -12
- package/library/skills/instantiate-asset-pack/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/investigating-bugs/SKILL.md +4 -4
- package/{skills/workflow → library/skills}/investigating-bugs/condition-based-waiting.md +8 -8
- package/library/skills/investigating-bugs/resource.yaml +24 -0
- package/{skills/workflow → library/skills}/investigating-bugs/root-cause-tracing.md +1 -7
- package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +164 -0
- package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +35 -0
- package/{skills/scene-and-project → library/skills}/make-game/SKILL.md +22 -22
- package/library/skills/make-game/resource.yaml +35 -0
- package/library/skills/music-track/resource.yaml +28 -0
- package/library/skills/navigate-summer/SKILL.md +61 -0
- package/library/skills/navigate-summer/resource.yaml +35 -0
- package/{skills/scene-and-project → library/skills}/new-project/SKILL.md +10 -10
- package/library/skills/new-project/resource.yaml +28 -0
- package/{skills/3d-assets → library/skills}/organic-model/SKILL.md +16 -16
- package/library/skills/organic-model/resource.yaml +32 -0
- package/{skills/multiplayer-and-networking → library/skills}/peer-to-peer-multiplayer/SKILL.md +2 -2
- package/library/skills/peer-to-peer-multiplayer/resource.yaml +28 -0
- package/{skills/2d-assets → library/skills}/pixel-art/SKILL.md +13 -13
- package/library/skills/pixel-art/resource.yaml +31 -0
- package/library/skills/play/resource.yaml +26 -0
- package/{skills/workflow → library/skills}/playtesting-a-feature/SKILL.md +41 -22
- package/library/skills/playtesting-a-feature/resource.yaml +31 -0
- package/{skills/animation → library/skills}/procedural-animation/SKILL.md +25 -10
- package/library/skills/procedural-animation/resource.yaml +33 -0
- package/{skills/3d-assets → library/skills}/prop-model/SKILL.md +13 -13
- package/library/skills/prop-model/resource.yaml +33 -0
- package/library/skills/psx-retro-rendering/SKILL.md +416 -0
- package/library/skills/psx-retro-rendering/resource.yaml +36 -0
- package/library/skills/realtime-wet-surfaces/SKILL.md +189 -0
- package/library/skills/realtime-wet-surfaces/resource.yaml +31 -0
- package/{skills/deployment → library/skills}/remote-deploy/SKILL.md +3 -3
- package/library/skills/remote-deploy/resource.yaml +23 -0
- package/{skills/animation → library/skills}/retarget/SKILL.md +15 -14
- package/library/skills/retarget/resource.yaml +33 -0
- package/library/skills/running-in-the-cloud/SKILL.md +103 -0
- package/library/skills/running-in-the-cloud/resource.yaml +33 -0
- package/{skills/scene-and-project → library/skills}/scene-composition/SKILL.md +8 -0
- package/library/skills/scene-composition/resource.yaml +27 -0
- package/library/skills/scene-hierarchy-design/SKILL.md +102 -0
- package/library/skills/scene-hierarchy-design/resource.yaml +31 -0
- package/library/skills/scene-scripting/SKILL.md +764 -0
- package/library/skills/scene-scripting/resource.yaml +58 -0
- package/{skills/level-design → library/skills}/scene-to-level/SKILL.md +16 -17
- package/library/skills/scene-to-level/resource.yaml +33 -0
- package/library/skills/setup-multiplayer/resource.yaml +28 -0
- package/library/skills/skill-create/SKILL.md +138 -0
- package/library/skills/skill-create/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/skill-improve/SKILL.md +2 -2
- package/library/skills/skill-improve/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/skill-test/SKILL.md +4 -4
- package/library/skills/skill-test/resource.yaml +26 -0
- package/library/skills/skintokens-auto-rigging/SKILL.md +200 -0
- package/library/skills/skintokens-auto-rigging/resource.yaml +38 -0
- package/{skills/2d-assets → library/skills}/skybox-panorama/SKILL.md +8 -8
- package/library/skills/skybox-panorama/resource.yaml +28 -0
- package/{skills/audio → library/skills}/sound-effect/SKILL.md +2 -2
- package/library/skills/sound-effect/resource.yaml +27 -0
- package/library/skills/spatial-placement/SKILL.md +74 -0
- package/library/skills/spatial-placement/resource.yaml +42 -0
- package/library/skills/spatial-placement/tests/spec.md +65 -0
- package/{skills/2d-assets → library/skills}/sprite-sheet/SKILL.md +12 -12
- package/library/skills/sprite-sheet/resource.yaml +32 -0
- package/{skills/2d-assets → library/skills}/tileable-texture/SKILL.md +9 -9
- package/library/skills/tileable-texture/resource.yaml +31 -0
- package/{skills/video → library/skills}/trailer-shot/SKILL.md +1 -1
- package/library/skills/trailer-shot/resource.yaml +27 -0
- package/{skills/performance → library/skills}/tune-performance/SKILL.md +6 -6
- package/library/skills/tune-performance/resource.yaml +31 -0
- package/library/skills/ui-basics/resource.yaml +25 -0
- package/{skills/2d-assets → library/skills}/ui-graphics/SKILL.md +11 -11
- package/library/skills/ui-graphics/resource.yaml +29 -0
- package/{skills/2d-assets → library/skills}/use-widget-asset/SKILL.md +4 -4
- package/library/skills/use-widget-asset/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/using-summer/SKILL.md +12 -9
- package/library/skills/using-summer/resource.yaml +41 -0
- package/{skills/3d-assets → library/skills}/vehicle-model/SKILL.md +18 -18
- package/library/skills/vehicle-model/resource.yaml +34 -0
- package/{skills/workflow → library/skills}/verification-before-completion/SKILL.md +10 -10
- package/library/skills/verification-before-completion/resource.yaml +23 -0
- package/library/skills/verifying-scenes/SKILL.md +98 -0
- package/library/skills/verifying-scenes/resource.yaml +42 -0
- package/{skills/visual-effects/recipes/dissolve → library/skills/vfx-dissolve}/SKILL.md +31 -11
- package/library/skills/vfx-dissolve/resource.yaml +33 -0
- package/{skills/visual-effects/recipes/fire → library/skills/vfx-fire}/SKILL.md +43 -12
- package/library/skills/vfx-fire/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
- package/library/skills/vfx-fire/resource.yaml +35 -0
- package/{skills/visual-effects/recipes/hit-spark → library/skills/vfx-hit-spark}/SKILL.md +16 -10
- package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-hit-spark/resource.yaml +34 -0
- package/{skills/visual-effects/recipes/lightning → library/skills/vfx-lightning}/SKILL.md +24 -11
- package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-lightning/resource.yaml +33 -0
- package/{skills/visual-effects/recipes/magic-glow → library/skills/vfx-magic-glow}/SKILL.md +31 -11
- package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-magic-glow/resource.yaml +34 -0
- package/{skills/visual-effects/recipes/muzzle-flash → library/skills/vfx-muzzle-flash}/SKILL.md +29 -9
- package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +53 -0
- package/library/skills/vfx-muzzle-flash/resource.yaml +35 -0
- package/{skills/visual-effects/recipes/smoke → library/skills/vfx-smoke}/SKILL.md +35 -9
- package/library/skills/vfx-smoke/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
- package/library/skills/vfx-smoke/resource.yaml +32 -0
- package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md +31 -9
- package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-water-ripple/resource.yaml +31 -0
- package/library/skills/voice-line/resource.yaml +27 -0
- package/library/skills/world-building-3d/SKILL.md +105 -0
- package/library/skills/world-building-3d/references/spatial-tools.md +50 -0
- package/library/skills/world-building-3d/resource.yaml +44 -0
- package/library/skills/world-building-3d/tests/spec.md +48 -0
- package/{skills/workflow → library/skills}/writing-plans/SKILL.md +19 -14
- package/library/skills/writing-plans/resource.yaml +23 -0
- package/{skills/workflow → library/skills}/writing-skills/SKILL.md +38 -44
- package/library/skills/writing-skills/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/writing-skills/testing-skills-with-subagents.md +13 -14
- package/library/templates/2d-brario-platformer/resource.yaml +21 -0
- package/library/templates/2d-dungeon-roguelike/resource.yaml +23 -0
- package/library/templates/2d-grid-puzzle/resource.yaml +21 -0
- package/library/templates/2d-plants-and-zombies-tower-defense/resource.yaml +21 -0
- package/library/templates/2d-platformer/resource.yaml +24 -0
- package/library/templates/2d-rpg/resource.yaml +21 -0
- package/library/templates/2d-vampire-survivor-roguelike/resource.yaml +21 -0
- package/library/templates/3d-basic/resource.yaml +16 -0
- package/library/templates/3d-city-kit/resource.yaml +24 -0
- package/library/templates/3d-fps-old-school/resource.yaml +21 -0
- package/library/templates/3d-fps-simple-animated-npc/resource.yaml +21 -0
- package/library/templates/3d-lan-multiplayer-starter/resource.yaml +22 -0
- package/library/templates/3d-open-world-explore-tps/resource.yaml +21 -0
- package/library/templates/3d-procedural-road-world/resource.yaml +21 -0
- package/library/templates/3d-racing-game/resource.yaml +21 -0
- package/library/templates/3d-royale-clash-type/resource.yaml +21 -0
- package/library/templates/3d-third-person-controller/resource.yaml +21 -0
- package/library/templates/3d-voxel-sandbox/resource.yaml +24 -0
- package/library/templates/README.md +94 -0
- package/library/templates/empty/resource.yaml +16 -0
- package/library/tools/add-node/resource.yaml +60 -0
- package/library/tools/align-distribute-3d/resource.yaml +87 -0
- package/library/tools/api-docs/resource.yaml +57 -0
- package/library/tools/batch/resource.yaml +52 -0
- package/library/tools/camera-bookmark/resource.yaml +73 -0
- package/library/tools/check-job/resource.yaml +45 -0
- package/library/tools/clear-console/resource.yaml +40 -0
- package/library/tools/connect-signal/resource.yaml +63 -0
- package/library/tools/create-debug-report/resource.yaml +67 -0
- package/library/tools/create-scene/resource.yaml +59 -0
- package/library/tools/creator-config/resource.yaml +63 -0
- package/library/tools/creator-publish/resource.yaml +73 -0
- package/library/tools/creator-releases/resource.yaml +53 -0
- package/library/tools/fabricate-3d/resource.yaml +108 -0
- package/library/tools/game-control/resource.yaml +84 -0
- package/library/tools/game-input/resource.yaml +159 -0
- package/library/tools/game-probe/resource.yaml +90 -0
- package/library/tools/generate-3d/resource.yaml +112 -0
- package/library/tools/generate-audio/resource.yaml +80 -0
- package/library/tools/generate-image/resource.yaml +62 -0
- package/library/tools/generate-motion/resource.yaml +66 -0
- package/library/tools/generate-video/resource.yaml +66 -0
- package/library/tools/get-agent-playbook/resource.yaml +40 -0
- package/library/tools/get-asset/resource.yaml +42 -0
- package/library/tools/get-asset-download-url/resource.yaml +52 -0
- package/library/tools/get-console/resource.yaml +69 -0
- package/library/tools/get-debugger-errors/resource.yaml +56 -0
- package/library/tools/get-debugger-warnings/resource.yaml +52 -0
- package/library/tools/get-diagnostics/resource.yaml +42 -0
- package/library/tools/get-project-context/resource.yaml +45 -0
- package/library/tools/get-runtime-tree/resource.yaml +62 -0
- package/library/tools/get-scene-tree/resource.yaml +52 -0
- package/library/tools/get-script-errors/resource.yaml +45 -0
- package/library/tools/get-studio-workflow/resource.yaml +43 -0
- package/library/tools/import-asset/resource.yaml +73 -0
- package/library/tools/import-asset-by-id/resource.yaml +56 -0
- package/library/tools/import-from-url/resource.yaml +51 -0
- package/library/tools/import-from-url-batch/resource.yaml +60 -0
- package/library/tools/import-hdri/resource.yaml +69 -0
- package/library/tools/input-map-bind/resource.yaml +52 -0
- package/library/tools/inspect-node/resource.yaml +46 -0
- package/library/tools/inspect-resource/resource.yaml +45 -0
- package/library/tools/inspect-runtime-node/resource.yaml +54 -0
- package/library/tools/instantiate-scene/resource.yaml +62 -0
- package/library/tools/is-running/resource.yaml +40 -0
- package/library/tools/library-feedback/resource.yaml +89 -0
- package/library/tools/list-my-assets/resource.yaml +56 -0
- package/library/tools/navigation-probe/resource.yaml +85 -0
- package/library/tools/open/resource.yaml +80 -0
- package/library/tools/open-main-scene/resource.yaml +40 -0
- package/library/tools/open-scene/resource.yaml +46 -0
- package/library/tools/play/resource.yaml +91 -0
- package/library/tools/project-setting/resource.yaml +53 -0
- package/library/tools/read-file/resource.yaml +47 -0
- package/library/tools/read-library/resource.yaml +67 -0
- package/library/tools/recent-events/resource.yaml +71 -0
- package/library/tools/remove-node/resource.yaml +51 -0
- package/library/tools/replace-node/resource.yaml +57 -0
- package/library/tools/replace-text/resource.yaml +61 -0
- package/library/tools/run-editor-script/resource.yaml +61 -0
- package/library/tools/run-script/resource.yaml +73 -0
- package/library/tools/runtime-animate/resource.yaml +140 -0
- package/library/tools/runtime-call/resource.yaml +74 -0
- package/library/tools/runtime-set/resource.yaml +80 -0
- package/library/tools/runtime-spawn/resource.yaml +95 -0
- package/library/tools/save-scene/resource.yaml +50 -0
- package/library/tools/screenshot/resource.yaml +112 -0
- package/library/tools/search-assets/resource.yaml +67 -0
- package/library/tools/search-library/resource.yaml +81 -0
- package/library/tools/select-node/resource.yaml +48 -0
- package/library/tools/set-prop/resource.yaml +64 -0
- package/library/tools/set-resource-property/resource.yaml +66 -0
- package/library/tools/slice-asset-sheet/resource.yaml +47 -0
- package/library/tools/snap-to-surface/resource.yaml +90 -0
- package/library/tools/snapshot-diff/resource.yaml +58 -0
- package/library/tools/starcast/resource.yaml +120 -0
- package/library/tools/start-game-task/resource.yaml +91 -0
- package/library/tools/stop/resource.yaml +51 -0
- package/library/tools/test-placement/resource.yaml +109 -0
- package/library/tools/ui-actions/resource.yaml +77 -0
- package/library/tools/ui-activate/resource.yaml +88 -0
- package/library/tools/ui-screenshot/resource.yaml +63 -0
- package/library/tools/ui-tree/resource.yaml +69 -0
- package/library/tools/wait-for-event/resource.yaml +84 -0
- package/library/tools/world-snapshot/resource.yaml +60 -0
- package/library/tools/write-file/resource.yaml +54 -0
- package/package.json +22 -16
- package/registry/generated/aliases.json +207 -0
- package/registry/generated/counts.json +12 -0
- package/registry/generated/gemini-extension.json +122 -0
- package/registry/generated/index.json +7709 -0
- package/registry/generated/marketplace.claude.json +44 -0
- package/registry/generated/mcp.json +13 -0
- package/registry/generated/plugin.claude.json +135 -0
- package/registry/generated/plugin.codex.json +144 -0
- package/registry/generated/plugin.cursor.json +134 -0
- package/registry/generated/plugin.factory.json +117 -0
- package/registry/generated/skills-registry.json +851 -0
- package/registry/generated/templates-registry.json +455 -0
- package/registry/schemas/allowed-hosts.json +19 -0
- package/registry/schemas/collection.schema.json +68 -0
- package/registry/schemas/domains.json +96 -0
- package/registry/schemas/example.schema.json +11 -0
- package/registry/schemas/reference.schema.json +10 -0
- package/registry/schemas/resource.schema.json +154 -0
- package/registry/schemas/skill.schema.json +14 -0
- package/registry/schemas/template.schema.json +46 -0
- package/registry/schemas/tool.schema.json +61 -0
- package/_persona/summer/SKILL.md +0 -113
- package/dist/bin/postinstall.d.ts +0 -2
- package/dist/bin/postinstall.js +0 -3
- package/dist/commands/cloud.d.ts +0 -2
- package/dist/commands/cloud.js +0 -80
- package/dist/commands/create.d.ts +0 -3
- package/dist/commands/create.js +0 -171
- package/dist/commands/install.d.ts +0 -19
- package/dist/commands/install.js +0 -194
- package/dist/commands/list.js +0 -67
- package/dist/commands/logout.js +0 -13
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -19
- package/dist/commands/open.d.ts +0 -2
- package/dist/commands/open.js +0 -32
- package/dist/commands/orchestrator.d.ts +0 -8
- package/dist/commands/orchestrator.js +0 -143
- package/dist/commands/run.d.ts +0 -2
- package/dist/commands/run.js +0 -167
- package/dist/commands/status.js +0 -46
- package/dist/lib/banner.d.ts +0 -4
- package/dist/lib/banner.js +0 -122
- package/dist/lib/cloud/api.d.ts +0 -79
- package/dist/lib/cloud/api.js +0 -107
- package/dist/lib/cloud/apply.d.ts +0 -32
- package/dist/lib/cloud/apply.js +0 -294
- package/dist/lib/cloud/checkpoint.d.ts +0 -26
- package/dist/lib/cloud/checkpoint.js +0 -142
- package/dist/lib/cloud/conflicts.d.ts +0 -55
- package/dist/lib/cloud/conflicts.js +0 -131
- package/dist/lib/cloud/containment.d.ts +0 -8
- package/dist/lib/cloud/containment.js +0 -52
- package/dist/lib/cloud/diff.d.ts +0 -39
- package/dist/lib/cloud/diff.js +0 -138
- package/dist/lib/cloud/engine-bridge.d.ts +0 -34
- package/dist/lib/cloud/engine-bridge.js +0 -139
- package/dist/lib/cloud/hash-cache.d.ts +0 -23
- package/dist/lib/cloud/hash-cache.js +0 -44
- package/dist/lib/cloud/hash.d.ts +0 -10
- package/dist/lib/cloud/hash.js +0 -111
- package/dist/lib/cloud/http.d.ts +0 -17
- package/dist/lib/cloud/http.js +0 -47
- package/dist/lib/cloud/lock-path.d.ts +0 -1
- package/dist/lib/cloud/lock-path.js +0 -5
- package/dist/lib/cloud/lock.d.ts +0 -14
- package/dist/lib/cloud/lock.js +0 -143
- package/dist/lib/cloud/manifest.d.ts +0 -6
- package/dist/lib/cloud/manifest.js +0 -41
- package/dist/lib/cloud/paths.d.ts +0 -20
- package/dist/lib/cloud/paths.js +0 -90
- package/dist/lib/cloud/project-godot-merge.d.ts +0 -32
- package/dist/lib/cloud/project-godot-merge.js +0 -185
- package/dist/lib/cloud/rules.d.ts +0 -39
- package/dist/lib/cloud/rules.js +0 -159
- package/dist/lib/cloud/sync.d.ts +0 -21
- package/dist/lib/cloud/sync.js +0 -518
- package/dist/lib/cloud/transfer.d.ts +0 -23
- package/dist/lib/cloud/transfer.js +0 -184
- package/dist/lib/cloud/types.d.ts +0 -62
- package/dist/lib/cloud/types.js +0 -1
- package/dist/lib/cloud/validate-path.d.ts +0 -23
- package/dist/lib/cloud/validate-path.js +0 -103
- package/dist/lib/engine.d.ts +0 -51
- package/dist/lib/game-task-plan.d.ts +0 -42
- package/dist/lib/project-memory.d.ts +0 -33
- package/dist/lib/public-surface-paths.d.ts +0 -13
- package/dist/lib/public-surface-paths.js +0 -42
- package/dist/lib/remote-templates.d.ts +0 -25
- package/dist/lib/remote-templates.js +0 -86
- package/dist/lib/skills-registry.d.ts +0 -572
- package/dist/lib/skills-registry.js +0 -1061
- package/dist/lib/version-check.d.ts +0 -106
- package/dist/mcp/tools/cloud-tools.js +0 -42
- package/references/mcp-tools-reference.md +0 -199
- package/references/template-registry.md +0 -73
- package/skills/README.md +0 -103
- package/skills/scene-and-project/summer-cloud/SKILL.md +0 -92
- package/skills/workflow/brainstorming/scripts/frame-template.html +0 -214
- package/skills/workflow/brainstorming/scripts/helper.js +0 -88
- package/skills/workflow/brainstorming/scripts/server.cjs +0 -354
- package/skills/workflow/brainstorming/scripts/start-server.sh +0 -148
- package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -56
- package/skills/workflow/brainstorming/visual-companion.md +0 -287
- package/skills/workflow/gameskill/SKILL.md +0 -120
- package/skills/workflow/investigating-bugs/CREATION-LOG.md +0 -119
- package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +0 -158
- package/skills/workflow/investigating-bugs/find-polluter.sh +0 -63
- package/skills/workflow/investigating-bugs/test-academic.md +0 -14
- package/skills/workflow/investigating-bugs/test-pressure-1.md +0 -58
- package/skills/workflow/investigating-bugs/test-pressure-2.md +0 -68
- package/skills/workflow/investigating-bugs/test-pressure-3.md +0 -69
- package/skills/workflow/mcpupdate/SKILL.md +0 -134
- package/skills/workflow/skill-create/SKILL.md +0 -153
- package/skills/workflow/writing-skills/anthropic-best-practices.md +0 -1150
- package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
- package/skills/workflow/writing-skills/graphviz-conventions.dot +0 -172
- package/skills/workflow/writing-skills/persuasion-principles.md +0 -187
- package/skills/workflow/writing-skills/render-graphs.js +0 -168
- /package/dist/{commands → cli/commands}/config.d.ts +0 -0
- /package/dist/{commands → cli/commands}/debug.d.ts +0 -0
- /package/dist/{commands → cli/commands}/list.d.ts +0 -0
- /package/dist/{commands → cli/commands}/login.d.ts +0 -0
- /package/dist/{commands → cli/commands}/plan.d.ts +0 -0
- /package/dist/{commands → cli/commands}/publish.d.ts +0 -0
- /package/dist/{commands → cli/commands}/releases.d.ts +0 -0
- /package/dist/{commands → cli/commands}/setup.d.ts +0 -0
- /package/dist/{commands → cli/commands}/skills.d.ts +0 -0
- /package/dist/{lib → core}/log-filters.d.ts +0 -0
- /package/dist/{lib → core}/mcp-log.d.ts +0 -0
- /package/dist/{lib → core}/store.d.ts +0 -0
- /package/dist/{lib → core}/summer-compatibility.d.ts +0 -0
- /package/dist/{lib → core}/telemetry.d.ts +0 -0
- /package/dist/{lib/mcp-boot-notice.js → mcp/boot-notice.js} +0 -0
- /package/dist/{commands/mcp.d.ts → mcp/command.d.ts} +0 -0
- /package/{references → library/references/collaborative-protocol}/collaborative-protocol.md +0 -0
- /package/{references → library/references/gd-style}/gd-style.md +0 -0
- /package/{skills/audio → library/skills}/ambient-bed/SKILL.md +0 -0
- /package/{skills/gameplay-mechanics → library/skills}/auto-fire-targeting/SKILL.md +0 -0
- /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/SKILL.md +0 -0
- /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/reference.md +0 -0
- /package/{skills/multiplayer-and-networking → library/skills}/host-authoritative-state/SKILL.md +0 -0
- /package/{skills/workflow → library/skills}/investigating-bugs/defense-in-depth.md +0 -0
- /package/{skills/audio → library/skills}/music-track/SKILL.md +0 -0
- /package/{skills/scene-and-project → library/skills}/play/SKILL.md +0 -0
- /package/{skills/multiplayer-and-networking → library/skills}/setup-multiplayer/SKILL.md +0 -0
- /package/{skills/ui-and-ux → library/skills}/ui-basics/SKILL.md +0 -0
- /package/{skills/visual-effects → library/skills/vfx-dissolve}/_building-blocks/noise-3d-fbm.gdshaderinc +0 -0
- /package/{skills/visual-effects → library/skills/vfx-fire}/_building-blocks/additive-billboard-particles.md +0 -0
- /package/{skills/visual-effects → library/skills/vfx-lightning}/_building-blocks/trauma-shake-snippet.md +0 -0
- /package/{skills/audio → library/skills}/voice-line/SKILL.md +0 -0
- /package/{skills/workflow → library/skills}/writing-plans/plan-document-reviewer-prompt.md +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Additive Billboard Particles — Canonical Material Settings
|
|
2
|
+
|
|
3
|
+
Reusable material configuration for additive particle billboards (motes, sparks, glow, ash). Used by `magic-glow`, optionally substitutable in `hit-spark` and `fire` if a custom shader is overkill.
|
|
4
|
+
|
|
5
|
+
`BaseMaterial3D` is abstract — `BaseMaterial3D.new()` is a parse error ("Native class
|
|
6
|
+
"BaseMaterial3D" cannot be constructed as it is abstract"). Instantiate
|
|
7
|
+
`StandardMaterial3D`; the `BaseMaterial3D.*` enum constants below are still the right
|
|
8
|
+
way to name the values.
|
|
9
|
+
|
|
10
|
+
## Settings
|
|
11
|
+
|
|
12
|
+
```gdscript
|
|
13
|
+
var bm := StandardMaterial3D.new()
|
|
14
|
+
bm.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
|
|
15
|
+
bm.blend_mode = BaseMaterial3D.BLEND_MODE_ADD
|
|
16
|
+
bm.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
|
|
17
|
+
bm.billboard_mode = BaseMaterial3D.BILLBOARD_PARTICLES
|
|
18
|
+
bm.emission_enabled = true
|
|
19
|
+
bm.emission_energy_multiplier = 3.0 # 1.0–5.0 typical; bump for HDR bloom
|
|
20
|
+
bm.disable_receive_shadows = true
|
|
21
|
+
bm.shadow_to_opacity = false
|
|
22
|
+
bm.no_depth_test = false # true only if particles must read on TOP of opaque geometry
|
|
23
|
+
bm.billboard_keep_scale = true # BILLBOARD_PARTICLES drops per-particle scale without this
|
|
24
|
+
bm.albedo_color = Color(R, G, B, 1.0)
|
|
25
|
+
bm.emission = Color(R, G, B) # usually same as albedo for single-color motes
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## When to use this vs a custom shader
|
|
29
|
+
|
|
30
|
+
- **Use this `StandardMaterial3D` config** when the effect is just a tinted soft-circle mote (magic glow, sparkles, dust). Less code, faster iteration, free Godot-managed billboard math.
|
|
31
|
+
- **Per-particle color over age does NOT need a custom shader.** `ParticleProcessMaterial` has `color_ramp`, `color_initial_ramp`, `alpha_curve` and `emission_curve` (all verified present in 4.6) — those drive the particle's `COLOR` from age and feed straight into a plain `StandardMaterial3D`. Reach for a ramp before reaching for a shader.
|
|
32
|
+
- **Use a custom `ShaderMaterial`** when you need per-fragment shape masks (muzzle flash star burst), noise-distorted UVs (fire, smoke), or anything that varies *within* the quad. Those are what `StandardMaterial3D` genuinely can't express.
|
|
33
|
+
- If a custom shader does need the particle age, note that the age lives in `INSTANCE_CUSTOM.y` (normalized by `INSTANCE_CUSTOM.w`, the lifetime), that `INSTANCE_CUSTOM.x` is the rotation angle — not the age — and that `INSTANCE_CUSTOM` is **vertex-stage only**. Pass it to `fragment()` through a `varying`.
|
|
34
|
+
|
|
35
|
+
## Performance note
|
|
36
|
+
|
|
37
|
+
Additive overdraw is fillrate-bound. `draw_pass_1` is a `Mesh`, so the size dial is on the mesh: keep `QuadMesh.size` at or under `Vector2(0.2, 0.2)` for motes/sparks. Larger quads at full additive intensity destroy mobile fillrate budgets fast.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Trauma Camera Shake — Reusable Snippet
|
|
2
|
+
|
|
3
|
+
Variant of the canonical "trauma model" shake (see `visual-effects/game-feel/SKILL.md` for the full game-feel discipline). Lightning and explosion recipes call `add_trauma()` to chain visual impact with screen-level reaction.
|
|
4
|
+
|
|
5
|
+
## Setup (autoload script)
|
|
6
|
+
|
|
7
|
+
`autoloads/CameraShake.gd`:
|
|
8
|
+
|
|
9
|
+
```gdscript
|
|
10
|
+
extends Node
|
|
11
|
+
|
|
12
|
+
var trauma: float = 0.0
|
|
13
|
+
var trauma_decay: float = 1.4
|
|
14
|
+
var max_offset: Vector3 = Vector3(0.4, 0.4, 0.0)
|
|
15
|
+
var max_yaw: float = 0.05
|
|
16
|
+
var max_pitch: float = 0.05
|
|
17
|
+
var camera: Camera3D
|
|
18
|
+
|
|
19
|
+
func _process(delta: float) -> void:
|
|
20
|
+
if camera == null:
|
|
21
|
+
camera = get_viewport().get_camera_3d()
|
|
22
|
+
if camera == null:
|
|
23
|
+
return
|
|
24
|
+
if trauma > 0.0:
|
|
25
|
+
var s := trauma * trauma # perceived intensity grows quadratically
|
|
26
|
+
camera.h_offset = max_offset.x * s * (randf() * 2.0 - 1.0)
|
|
27
|
+
camera.v_offset = max_offset.y * s * (randf() * 2.0 - 1.0)
|
|
28
|
+
camera.rotation.x += max_pitch * s * (randf() * 2.0 - 1.0) * 0.1
|
|
29
|
+
camera.rotation.y += max_yaw * s * (randf() * 2.0 - 1.0) * 0.1
|
|
30
|
+
trauma = max(0.0, trauma - trauma_decay * delta)
|
|
31
|
+
else:
|
|
32
|
+
camera.h_offset = 0.0
|
|
33
|
+
camera.v_offset = 0.0
|
|
34
|
+
|
|
35
|
+
func add_trauma(amount: float) -> void:
|
|
36
|
+
trauma = clamp(trauma + amount, 0.0, 1.0)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Register `CameraShake` as autoload in Project Settings. An autoload is a node at
|
|
40
|
+
`/root/CameraShake`, not an engine singleton — reach it with
|
|
41
|
+
`get_node_or_null("/root/CameraShake")`. `Engine.has_singleton("CameraShake")` is
|
|
42
|
+
always `false` for an autoload (measured), so never gate the call on it.
|
|
43
|
+
|
|
44
|
+
## Usage
|
|
45
|
+
|
|
46
|
+
```gdscript
|
|
47
|
+
# In a recipe controller:
|
|
48
|
+
CameraShake.add_trauma(0.6) # lightning strike
|
|
49
|
+
CameraShake.add_trauma(1.0) # explosion (saturates to max)
|
|
50
|
+
CameraShake.add_trauma(0.2) # hit spark
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The trauma model: noise-driven shake whose intensity grows quadratically with `trauma`. Multiple sources stack but saturate — a player taking 5 hits in a row shakes harder, but never beyond the max.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
id: skill/vfx-muzzle-flash
|
|
2
|
+
kind: skill
|
|
3
|
+
version: 1.0.3
|
|
4
|
+
summary: Muzzle-flash effect — a one-shot ~80 ms burst at a gun barrel built with a particle one-shot or a flashing quad with a star-burst shader.
|
|
5
|
+
use_when:
|
|
6
|
+
- authoring a muzzle-flash effect — gun fire, weapon flash, barrel flash, spell-cast burst at a hand
|
|
7
|
+
- a gun or spell-casting hand shoots with no visible flash at the barrel or palm
|
|
8
|
+
facets:
|
|
9
|
+
lifecycle:
|
|
10
|
+
- build
|
|
11
|
+
domains:
|
|
12
|
+
- vfx
|
|
13
|
+
- rendering
|
|
14
|
+
modalities:
|
|
15
|
+
- scenes
|
|
16
|
+
- shaders
|
|
17
|
+
compatibility:
|
|
18
|
+
engine: ">=4.6"
|
|
19
|
+
related:
|
|
20
|
+
skills:
|
|
21
|
+
- skill/scene-scripting
|
|
22
|
+
- skill/sound-effect
|
|
23
|
+
- skill/game-feel
|
|
24
|
+
- skill/vfx-fire
|
|
25
|
+
- skill/vfx-hit-spark
|
|
26
|
+
- skill/vfx-lightning
|
|
27
|
+
- skill/vfx-magic-glow
|
|
28
|
+
- skill/vfx-smoke
|
|
29
|
+
source: official
|
|
30
|
+
license: MIT
|
|
31
|
+
status: stable
|
|
32
|
+
recommended: true
|
|
33
|
+
aliases:
|
|
34
|
+
- skills/visual-effects/recipes/muzzle-flash
|
|
35
|
+
- muzzle-flash
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: smoke
|
|
2
|
+
name: vfx-smoke
|
|
3
3
|
description: Use when authoring a smoke visual effect — a slow-rising column or puff of soft particles built with a noise + density falloff shader on a quad mesh, GPUParticles3D. Trigger on "smoke", "smoke trail", "puff", "chimney smoke", "smoke from a fire", "steam", "fog cloud", "explosion smoke".
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read Write Edit summer_write_file summer_read_file summer_create_scene summer_add_node summer_set_prop summer_set_resource_property summer_inspect_node summer_inspect_resource summer_save_scene summer_get_script_errors summer_get_debugger_errors summer_play summer_stop
|
|
8
|
+
allowed-tools: Read Write Edit summer_write_file summer_read_file summer_create_scene summer_add_node summer_set_prop summer_set_resource_property summer_inspect_node summer_inspect_resource summer_save_scene summer_run_script summer_world_snapshot summer_snapshot_diff summer_screenshot summer_get_script_errors summer_get_debugger_errors summer_play summer_stop
|
|
9
9
|
paths: ["**/*.tscn", "**/*.gd", "**/*.gdshader", "addons/vfx/**"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -255,6 +255,32 @@ summer_set_prop(scenePath="res://main.tscn", path="./World/Campfire/Smoke", key=
|
|
|
255
255
|
summer_set_prop(scenePath="res://main.tscn", path="./World/Campfire/Smoke", key="rise_height", value=3.0)
|
|
256
256
|
```
|
|
257
257
|
|
|
258
|
+
### 5a. One-script wiring (summer_run_script)
|
|
259
|
+
|
|
260
|
+
On engines with `summer_run_script` (see `scene-scripting`), the node wiring
|
|
261
|
+
above is ONE ctx script — transactional, and it builds the QuadMesh + ShaderMaterial
|
|
262
|
+
resources directly instead of `.tres` sidecars:
|
|
263
|
+
|
|
264
|
+
```gdscript
|
|
265
|
+
func run(ctx):
|
|
266
|
+
var smoke := ctx.add_node("GPUParticles3D", "Smoke", ctx.find("Chimney"))
|
|
267
|
+
smoke.set_script(load("res://addons/vfx/smoke/smoke_controller.gd"))
|
|
268
|
+
smoke.process_material = ParticleProcessMaterial.new()
|
|
269
|
+
var quad := QuadMesh.new()
|
|
270
|
+
quad.size = Vector2(1, 1)
|
|
271
|
+
var mat := ShaderMaterial.new()
|
|
272
|
+
mat.shader = load("res://addons/vfx/smoke/smoke.gdshader")
|
|
273
|
+
quad.material = mat
|
|
274
|
+
smoke.draw_pass_1 = quad
|
|
275
|
+
smoke.position = Vector3(0, 0.3, 0)
|
|
276
|
+
smoke.set("rise_height", 4.0)
|
|
277
|
+
smoke.set("particle_count", 48)
|
|
278
|
+
smoke.set("wind_direction", Vector3(0.4, 0, 0.1))
|
|
279
|
+
ctx.save_scene()
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
Verify with `summer_snapshot_diff` (exactly one node added) and a `summer_screenshot`.
|
|
283
|
+
|
|
258
284
|
### 5b. Verify
|
|
259
285
|
|
|
260
286
|
The shader and the controller are compiled code. Check them before tuning anything.
|
|
@@ -429,14 +455,14 @@ manually in Summer Engine:
|
|
|
429
455
|
|
|
430
456
|
After firing this recipe, suggest:
|
|
431
457
|
|
|
432
|
-
- `
|
|
433
|
-
- `
|
|
434
|
-
- `
|
|
435
|
-
- `
|
|
458
|
+
- `vfx-fire` — the partner; almost any fire wants smoke 0.5–2 m above the flame top.
|
|
459
|
+
- `vfx-dissolve` — pair `black-fire-smoke` with a dissolving target for "the bandit camp burns and ashes drift away."
|
|
460
|
+
- `vfx-lightning` — for a smoke flash from a lightning strike (use `puff()` on impact).
|
|
461
|
+
- `sound-effect` — generate `gentle wind through smoke, soft hiss, 4s loop` for chimneys.
|
|
436
462
|
|
|
437
463
|
## See also
|
|
438
464
|
|
|
439
465
|
- `_building-blocks/noise-3d-fbm.gdshaderinc` — the FBM noise this shader includes
|
|
440
|
-
- `
|
|
441
|
-
- `
|
|
442
|
-
- `
|
|
466
|
+
- `vfx-fire` — sister recipe, almost always paired
|
|
467
|
+
- `vfx-dissolve` — for ash particles after disintegration
|
|
468
|
+
- `gdscript-patterns` — for the controller idioms (signals, exports, `@tool`)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// 3D Fractal Brownian Motion noise — used by fire, dissolve, smoke, magic-glow.
|
|
2
|
+
// Include with: #include "res://addons/vfx/_building-blocks/noise-3d-fbm.gdshaderinc"
|
|
3
|
+
|
|
4
|
+
float hash3(vec3 p) {
|
|
5
|
+
p = fract(p * vec3(443.8975, 397.2973, 491.1871));
|
|
6
|
+
p += dot(p, p.yxz + 19.19);
|
|
7
|
+
return fract((p.x + p.y) * p.z);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
float noise3(vec3 p) {
|
|
11
|
+
vec3 i = floor(p);
|
|
12
|
+
vec3 f = fract(p);
|
|
13
|
+
f = f * f * (3.0 - 2.0 * f);
|
|
14
|
+
|
|
15
|
+
float n000 = hash3(i + vec3(0.0, 0.0, 0.0));
|
|
16
|
+
float n100 = hash3(i + vec3(1.0, 0.0, 0.0));
|
|
17
|
+
float n010 = hash3(i + vec3(0.0, 1.0, 0.0));
|
|
18
|
+
float n110 = hash3(i + vec3(1.0, 1.0, 0.0));
|
|
19
|
+
float n001 = hash3(i + vec3(0.0, 0.0, 1.0));
|
|
20
|
+
float n101 = hash3(i + vec3(1.0, 0.0, 1.0));
|
|
21
|
+
float n011 = hash3(i + vec3(0.0, 1.0, 1.0));
|
|
22
|
+
float n111 = hash3(i + vec3(1.0, 1.0, 1.0));
|
|
23
|
+
|
|
24
|
+
float x00 = mix(n000, n100, f.x);
|
|
25
|
+
float x10 = mix(n010, n110, f.x);
|
|
26
|
+
float x01 = mix(n001, n101, f.x);
|
|
27
|
+
float x11 = mix(n011, n111, f.x);
|
|
28
|
+
|
|
29
|
+
float y0 = mix(x00, x10, f.y);
|
|
30
|
+
float y1 = mix(x01, x11, f.y);
|
|
31
|
+
|
|
32
|
+
return mix(y0, y1, f.z);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
float fbm3(vec3 p) {
|
|
36
|
+
float v = 0.0;
|
|
37
|
+
float amp = 0.5;
|
|
38
|
+
float freq = 1.0;
|
|
39
|
+
for (int i = 0; i < 4; i++) {
|
|
40
|
+
v += amp * noise3(p * freq);
|
|
41
|
+
freq *= 2.0;
|
|
42
|
+
amp *= 0.5;
|
|
43
|
+
}
|
|
44
|
+
return v;
|
|
45
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
id: skill/vfx-smoke
|
|
2
|
+
kind: skill
|
|
3
|
+
version: 1.0.2
|
|
4
|
+
summary: Smoke effect — a slow-rising column or puff of soft particles built with a noise + density falloff shader on a quad mesh, GPUParticles3D.
|
|
5
|
+
use_when:
|
|
6
|
+
- authoring a smoke effect — smoke trail, puff, chimney smoke, steam, fog cloud, explosion smoke
|
|
7
|
+
- a chimney, campfire, explosion, or vent needs a rising smoke column or puff in a 3D scene
|
|
8
|
+
facets:
|
|
9
|
+
lifecycle:
|
|
10
|
+
- build
|
|
11
|
+
domains:
|
|
12
|
+
- vfx
|
|
13
|
+
- rendering
|
|
14
|
+
modalities:
|
|
15
|
+
- scenes
|
|
16
|
+
- shaders
|
|
17
|
+
compatibility:
|
|
18
|
+
engine: ">=4.6"
|
|
19
|
+
related:
|
|
20
|
+
skills:
|
|
21
|
+
- skill/scene-scripting
|
|
22
|
+
- skill/sound-effect
|
|
23
|
+
- skill/vfx-dissolve
|
|
24
|
+
- skill/vfx-fire
|
|
25
|
+
- skill/vfx-lightning
|
|
26
|
+
source: official
|
|
27
|
+
license: MIT
|
|
28
|
+
status: stable
|
|
29
|
+
recommended: false
|
|
30
|
+
aliases:
|
|
31
|
+
- skills/visual-effects/recipes/smoke
|
|
32
|
+
- smoke
|
package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: water-ripple
|
|
2
|
+
name: vfx-water-ripple
|
|
3
3
|
description: Use when authoring a water-ripple visual effect — animated normal-distortion ripples on a water plane (or as a Decal) triggered by impacts. Trigger on "water ripple", "ripples on water", "raindrop ripple", "splash ripple", "rain on water", "footstep in puddle", "fish jumps".
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
6
|
category: visual-effects
|
|
7
7
|
user-invocable: true
|
|
8
|
-
allowed-tools: Read Write Edit summer_write_file summer_read_file summer_create_scene summer_add_node summer_set_prop summer_set_resource_property summer_inspect_node summer_inspect_resource summer_save_scene summer_get_script_errors summer_get_debugger_errors summer_play summer_stop
|
|
8
|
+
allowed-tools: Read Write Edit summer_write_file summer_read_file summer_create_scene summer_add_node summer_set_prop summer_set_resource_property summer_inspect_node summer_inspect_resource summer_save_scene summer_run_script summer_get_script_errors summer_get_debugger_errors summer_play summer_stop
|
|
9
9
|
paths: ["**/*.tscn", "**/*.gd", "**/*.gdshader", "addons/vfx/**"]
|
|
10
10
|
---
|
|
11
11
|
|
|
@@ -246,6 +246,28 @@ summer_set_resource_property(scenePath="res://main.tscn", nodePath="./World/Pudd
|
|
|
246
246
|
summer_save_scene(scenePath="res://main.tscn")
|
|
247
247
|
```
|
|
248
248
|
|
|
249
|
+
### 5a. One-script wiring (summer_run_script)
|
|
250
|
+
|
|
251
|
+
On engines with `summer_run_script` (see `scene-scripting`), the node and
|
|
252
|
+
resource wiring is ONE transactional ctx script — and it builds the subdivided
|
|
253
|
+
PlaneMesh directly, so the `plane.tres` sidecar disappears:
|
|
254
|
+
|
|
255
|
+
```gdscript
|
|
256
|
+
func run(ctx):
|
|
257
|
+
var puddle := ctx.add_node("MeshInstance3D", "Puddle", null)
|
|
258
|
+
var plane := PlaneMesh.new()
|
|
259
|
+
plane.subdivide_width = 32
|
|
260
|
+
plane.subdivide_depth = 32
|
|
261
|
+
puddle.mesh = plane
|
|
262
|
+
puddle.position = Vector3(0, 0.01, 0)
|
|
263
|
+
puddle.set_script(load("res://addons/vfx/water-ripple/water_ripple_surface.gd"))
|
|
264
|
+
puddle.set("normal_texture", load("res://addons/vfx/water-ripple/water_normals.png"))
|
|
265
|
+
ctx.save_scene()
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Set the mesh BEFORE the script if the controller reads it in `_ready`; either way,
|
|
269
|
+
`ctx.add_node` has already owned the node, so it survives the save.
|
|
270
|
+
|
|
249
271
|
### 5b. Verify
|
|
250
272
|
|
|
251
273
|
The shader and the controller are compiled code, and the controller `preload`s the
|
|
@@ -387,14 +409,14 @@ manually in Summer Engine:
|
|
|
387
409
|
|
|
388
410
|
After firing this recipe, suggest:
|
|
389
411
|
|
|
390
|
-
- `
|
|
391
|
-
- `
|
|
392
|
-
- `
|
|
393
|
-
- For weather-driven rain ripples,
|
|
412
|
+
- `vfx-hit-spark` — recolor white-blue and spawn at the impact point for a few water droplets flying up. Pair them.
|
|
413
|
+
- `vfx-smoke` — recolor pale gray for the steam if you're hitting hot water or lava.
|
|
414
|
+
- `sound-effect` — generate `single water drop in shallow puddle, splash, 200ms` and trigger on each `add_ripple`.
|
|
415
|
+
- For weather-driven rain ripples, scaffold a simple Rain node that calls `add_ripple` 30×/sec across the puddle bounds.
|
|
394
416
|
|
|
395
417
|
## See also
|
|
396
418
|
|
|
397
419
|
- `_building-blocks/additive-billboard-particles.md` — for paired splash droplets
|
|
398
|
-
- `
|
|
399
|
-
- `
|
|
400
|
-
- `
|
|
420
|
+
- `vfx-hit-spark` — sister recipe for the upward droplets
|
|
421
|
+
- `vfx-smoke` — for steam over hot liquids
|
|
422
|
+
- `gdscript-patterns` — for the controller idioms
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Additive Billboard Particles — Canonical Material Settings
|
|
2
|
+
|
|
3
|
+
Reusable material configuration for additive particle billboards (motes, sparks, glow, ash). Used by `magic-glow`, optionally substitutable in `hit-spark` and `fire` if a custom shader is overkill.
|
|
4
|
+
|
|
5
|
+
`BaseMaterial3D` is abstract — `BaseMaterial3D.new()` is a parse error ("Native class
|
|
6
|
+
"BaseMaterial3D" cannot be constructed as it is abstract"). Instantiate
|
|
7
|
+
`StandardMaterial3D`; the `BaseMaterial3D.*` enum constants below are still the right
|
|
8
|
+
way to name the values.
|
|
9
|
+
|
|
10
|
+
## Settings
|
|
11
|
+
|
|
12
|
+
```gdscript
|
|
13
|
+
var bm := StandardMaterial3D.new()
|
|
14
|
+
bm.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
|
|
15
|
+
bm.blend_mode = BaseMaterial3D.BLEND_MODE_ADD
|
|
16
|
+
bm.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
|
|
17
|
+
bm.billboard_mode = BaseMaterial3D.BILLBOARD_PARTICLES
|
|
18
|
+
bm.emission_enabled = true
|
|
19
|
+
bm.emission_energy_multiplier = 3.0 # 1.0–5.0 typical; bump for HDR bloom
|
|
20
|
+
bm.disable_receive_shadows = true
|
|
21
|
+
bm.shadow_to_opacity = false
|
|
22
|
+
bm.no_depth_test = false # true only if particles must read on TOP of opaque geometry
|
|
23
|
+
bm.billboard_keep_scale = true # BILLBOARD_PARTICLES drops per-particle scale without this
|
|
24
|
+
bm.albedo_color = Color(R, G, B, 1.0)
|
|
25
|
+
bm.emission = Color(R, G, B) # usually same as albedo for single-color motes
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## When to use this vs a custom shader
|
|
29
|
+
|
|
30
|
+
- **Use this `StandardMaterial3D` config** when the effect is just a tinted soft-circle mote (magic glow, sparkles, dust). Less code, faster iteration, free Godot-managed billboard math.
|
|
31
|
+
- **Per-particle color over age does NOT need a custom shader.** `ParticleProcessMaterial` has `color_ramp`, `color_initial_ramp`, `alpha_curve` and `emission_curve` (all verified present in 4.6) — those drive the particle's `COLOR` from age and feed straight into a plain `StandardMaterial3D`. Reach for a ramp before reaching for a shader.
|
|
32
|
+
- **Use a custom `ShaderMaterial`** when you need per-fragment shape masks (muzzle flash star burst), noise-distorted UVs (fire, smoke), or anything that varies *within* the quad. Those are what `StandardMaterial3D` genuinely can't express.
|
|
33
|
+
- If a custom shader does need the particle age, note that the age lives in `INSTANCE_CUSTOM.y` (normalized by `INSTANCE_CUSTOM.w`, the lifetime), that `INSTANCE_CUSTOM.x` is the rotation angle — not the age — and that `INSTANCE_CUSTOM` is **vertex-stage only**. Pass it to `fragment()` through a `varying`.
|
|
34
|
+
|
|
35
|
+
## Performance note
|
|
36
|
+
|
|
37
|
+
Additive overdraw is fillrate-bound. `draw_pass_1` is a `Mesh`, so the size dial is on the mesh: keep `QuadMesh.size` at or under `Vector2(0.2, 0.2)` for motes/sparks. Larger quads at full additive intensity destroy mobile fillrate budgets fast.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
id: skill/vfx-water-ripple
|
|
2
|
+
kind: skill
|
|
3
|
+
version: 1.0.2
|
|
4
|
+
summary: Water-ripple effect — animated normal-distortion ripples on a water plane (or as a Decal) triggered by impacts.
|
|
5
|
+
use_when:
|
|
6
|
+
- authoring a water-ripple effect — raindrop ripples, splash ripples, footstep in a puddle, fish jumps
|
|
7
|
+
- rain, footsteps, or falling objects should disturb a water surface with spreading ripples
|
|
8
|
+
facets:
|
|
9
|
+
lifecycle:
|
|
10
|
+
- build
|
|
11
|
+
domains:
|
|
12
|
+
- vfx
|
|
13
|
+
- rendering
|
|
14
|
+
modalities:
|
|
15
|
+
- scenes
|
|
16
|
+
- shaders
|
|
17
|
+
compatibility:
|
|
18
|
+
engine: ">=4.6"
|
|
19
|
+
related:
|
|
20
|
+
skills:
|
|
21
|
+
- skill/scene-scripting
|
|
22
|
+
- skill/sound-effect
|
|
23
|
+
- skill/vfx-hit-spark
|
|
24
|
+
- skill/vfx-smoke
|
|
25
|
+
source: official
|
|
26
|
+
license: MIT
|
|
27
|
+
status: stable
|
|
28
|
+
recommended: false
|
|
29
|
+
aliases:
|
|
30
|
+
- skills/visual-effects/recipes/water-ripple
|
|
31
|
+
- water-ripple
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
id: skill/voice-line
|
|
2
|
+
kind: skill
|
|
3
|
+
version: 1.0.2
|
|
4
|
+
summary: Generate TTS voice lines — NPC barks, narrator, dialogue — with voice-id sourcing, a character-to-voice decision tree, and multi-line dialogue support.
|
|
5
|
+
use_when:
|
|
6
|
+
- '"the NPC needs a greeting / a bark / a narrator intro read aloud"'
|
|
7
|
+
- giving a character a voice that fits their personality (gruff, cheerful, robotic)
|
|
8
|
+
- a back-and-forth dialogue between two or more characters
|
|
9
|
+
do_not_use_when:
|
|
10
|
+
- non-speech audio — sound effects or music (skill/sound-effect, skill/music-track)
|
|
11
|
+
facets:
|
|
12
|
+
lifecycle:
|
|
13
|
+
- build
|
|
14
|
+
domains:
|
|
15
|
+
- audio
|
|
16
|
+
- assets
|
|
17
|
+
modalities:
|
|
18
|
+
- audio
|
|
19
|
+
- assets
|
|
20
|
+
compatibility:
|
|
21
|
+
engine: ">=4.6"
|
|
22
|
+
source: official
|
|
23
|
+
license: MIT
|
|
24
|
+
status: stable
|
|
25
|
+
recommended: true
|
|
26
|
+
aliases:
|
|
27
|
+
- skills/audio/voice-line
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: world-building-3d
|
|
3
|
+
description: Use when composing, placing, grounding, spacing, or validating 3D objects in Summer Engine scenes. Trigger on "world building", "place props", "snap to floor", "align objects", "distribute objects", "navigation reachability", or requests to make a 3D scene look deliberately arranged rather than roughly positioned.
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: scene-and-project
|
|
7
|
+
allowed-tools: Read Grep summer_open_scene summer_get_scene_tree summer_inspect_node summer_set_prop summer_test_placement summer_snap_to_surface summer_align_distribute_3d summer_navigation_probe summer_screenshot summer_play
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Build 3D Worlds with Spatial Evidence
|
|
11
|
+
|
|
12
|
+
Use exact scene and node paths, make one geometric decision at a time, and verify the saved result. Treat spatial tools as bounded evidence: they reduce guesswork but do not replace a final rendered or gameplay check.
|
|
13
|
+
|
|
14
|
+
Read [references/spatial-tools.md](references/spatial-tools.md) before the first spatial-tool call in a task. It defines each tool's evidence boundary and the result fields that must not be overinterpreted.
|
|
15
|
+
|
|
16
|
+
## Choose the narrowest tool
|
|
17
|
+
|
|
18
|
+
| Need | Tool | Effect |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| Evaluate a proposed prop pose | `summer_test_placement` | Read-only ghost pose |
|
|
21
|
+
| Seat one object on a floor, shelf, table, or ramp | `summer_snap_to_surface` | Moves subject and saves |
|
|
22
|
+
| Align or evenly space 2–16 objects | `summer_align_distribute_3d` | Moves subjects and saves |
|
|
23
|
+
| Check whether two positions share a navigation route | `summer_navigation_probe` | Read-only |
|
|
24
|
+
|
|
25
|
+
Use ordinary `summer_get_scene_tree` and `summer_inspect_node` first when paths, hierarchy, authored transforms, collision layers, or camera settings are unknown.
|
|
26
|
+
|
|
27
|
+
## Follow the composition loop
|
|
28
|
+
|
|
29
|
+
1. Open the exact target scene and resolve exact `./`-relative paths.
|
|
30
|
+
2. Inspect the subject, its visual/collider descendants, intended support or neighbors, and the camera.
|
|
31
|
+
3. State the intended invariant: contact gap, clearance, spacing axis, or reachable destination.
|
|
32
|
+
If the support, ordering, or destination is genuinely ambiguous, ask
|
|
33
|
+
`Proceed?` with the concrete choice before making a user-visible mutation.
|
|
34
|
+
4. Query before mutation when a read-only tool exists.
|
|
35
|
+
5. Apply the smallest mutation. Prefer the dedicated solver over hand-tuned transform loops.
|
|
36
|
+
6. Re-query the saved pose. Do not treat a successful mutation receipt as proof of visual quality.
|
|
37
|
+
7. Run a rendered or gameplay verification when renderer visibility, transparent materials, concave silhouettes, navigation behavior, or player perception matters.
|
|
38
|
+
|
|
39
|
+
Keep scene A and scene B independent. Never copy a solved world transform between scenes unless their relevant parents, bounds, and obstacles are proven identical.
|
|
40
|
+
|
|
41
|
+
There is no raw `.tscn` fallback for these evidence queries or solver mutations.
|
|
42
|
+
They depend on the running Summer Engine's live scene, physics, camera, and
|
|
43
|
+
navigation state. If the required tool is unavailable, inspect and explain the
|
|
44
|
+
limitation instead of hand-editing a scene around it.
|
|
45
|
+
|
|
46
|
+
## Place and ground props
|
|
47
|
+
|
|
48
|
+
For a known candidate pose, call `summer_test_placement` before setting the transform. Preserve the current global scale unless the user asked to resize the asset.
|
|
49
|
+
|
|
50
|
+
- `overlapCount > 0` or known overlap evidence means reject the pose.
|
|
51
|
+
- `fits: null` means the physics backend could not prove completeness; it is not `true`.
|
|
52
|
+
- Require `grounded: true` and an acceptable absolute `floorGap` for seated props.
|
|
53
|
+
- Treat `visual_aabb` as broad-phase evidence. Irregular meshes can have empty-looking AABB corners.
|
|
54
|
+
|
|
55
|
+
For a direct seat operation, call `summer_snap_to_surface` with a world-space direction. Use `alignUp: true` only when the object should inherit an exact physics support normal. After slope alignment, verify both up alignment and preserved heading. Do not infer a usable normal from `visual_aabb` fallback.
|
|
56
|
+
|
|
57
|
+
`SnapToSurface` does not return the raw support normal or a heading residual.
|
|
58
|
+
Require `evidence: physics`, `evidenceDetails.contactResolved: true`, the expected
|
|
59
|
+
`supportPath`, `alignApplied: true`, a plausible `slopeDeg`, and inspect the saved
|
|
60
|
+
`after.basis` plus a rendered view. Keep `maxDistance` tight because the current
|
|
61
|
+
solver cannot take an expected-support path and will stop at the first surface.
|
|
62
|
+
|
|
63
|
+
On mixed-height or sloped supports, arrange the subjects laterally first, then
|
|
64
|
+
snap each subject. A later alignment can lift a grounded prop or bury it in a
|
|
65
|
+
slope. For a final placement re-query, use the exact saved global pose; if the
|
|
66
|
+
post-alignment basis cannot be expressed confidently as global Euler degrees,
|
|
67
|
+
do not invent angles - use the snap receipt and an independent rendered or
|
|
68
|
+
physics check.
|
|
69
|
+
|
|
70
|
+
## Arrange groups
|
|
71
|
+
|
|
72
|
+
Pass subjects to `summer_align_distribute_3d` in intentional order. Choose a world axis explicitly.
|
|
73
|
+
|
|
74
|
+
- Use `align_min`, `align_center`, or `align_max` to share one projected anchor.
|
|
75
|
+
- Use `distribute_centers` when equal center spacing matters.
|
|
76
|
+
- Use `distribute_gaps` when visible edge clearance matters; endpoints remain fixed.
|
|
77
|
+
|
|
78
|
+
Inspect the result's residuals and `changedCount`; infer unchanged subjects only
|
|
79
|
+
as `subjectCount - changedCount`. Rerun placement checks for dense groups because
|
|
80
|
+
alignment solves one axis and does not prove full 3D clearance.
|
|
81
|
+
|
|
82
|
+
## Validate navigation placement
|
|
83
|
+
|
|
84
|
+
Use `summer_navigation_probe` before moving an NPC, pickup, portal, or encounter anchor whose route matters.
|
|
85
|
+
|
|
86
|
+
- `ready: false` means no trustworthy navigation evidence; wait or fix the navigation map.
|
|
87
|
+
- `reachable: false` is meaningful only when `ready: true`.
|
|
88
|
+
- Check requested-to-snapped endpoint distance. A route to a distant snapped point does not validate the requested placement.
|
|
89
|
+
- After moving the subject, probe the final authored position again.
|
|
90
|
+
|
|
91
|
+
Probe each destination separately from the intended player/start point. Use the
|
|
92
|
+
final inspected global origin and the scene's actual navigation-layer mask. Set
|
|
93
|
+
the acceptable snap distance from the navigation agent radius or the authored
|
|
94
|
+
placement tolerance; if neither is known, report the distance instead of
|
|
95
|
+
declaring it small. For iteration 0, allow one bounded navigation-sync wait and
|
|
96
|
+
retry once - never loop indefinitely.
|
|
97
|
+
|
|
98
|
+
## Fail closed
|
|
99
|
+
|
|
100
|
+
Do not work around world-mismatch failures such as `subject_world_mismatch` or
|
|
101
|
+
`subject_geometry_world_mismatch`, non-finite transforms, hierarchy limits,
|
|
102
|
+
unavailable physics, or missing bounds by guessing. Fix the scene structure or
|
|
103
|
+
choose a clearly labeled manual fallback, then verify it.
|
|
104
|
+
|
|
105
|
+
Do not retry a mutation after an oversized or ambiguous result unless the receipt explicitly says it is retry-safe; the first mutation may already have landed.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Spatial tool evidence contract
|
|
2
|
+
|
|
3
|
+
Load this reference before using Summer's 3D world-building tools.
|
|
4
|
+
|
|
5
|
+
## Shared rules
|
|
6
|
+
|
|
7
|
+
- Pass exact `scenePath` and exact scene-root-relative node paths. Do not rely on editor selection.
|
|
8
|
+
- Use one `World3D`. The tools fail closed across SubViewport-owned worlds.
|
|
9
|
+
- Keep subjects bounded: placement/snap one subject, alignment sixteen.
|
|
10
|
+
- Normal model-visible results stay below 5 KiB. Prefer targeted calls over collecting an entire scene.
|
|
11
|
+
- Read-only tools never save: placement test, navigation probe.
|
|
12
|
+
- Mutation tools register undo and save the exact target scene: snap, align/distribute.
|
|
13
|
+
|
|
14
|
+
## `summer_test_placement`
|
|
15
|
+
|
|
16
|
+
Input is a candidate global position and global Euler rotation. The subject's current global scale is preserved, and the scene is not mutated.
|
|
17
|
+
|
|
18
|
+
Interpretation:
|
|
19
|
+
|
|
20
|
+
- Physics overlap counts are lower bounds because Godot exposes no broadphase-completeness bit.
|
|
21
|
+
- Any known obstruction makes `fits: false`.
|
|
22
|
+
- Zero known physics overlaps can still yield `fits: null`; never coerce it to success.
|
|
23
|
+
- `grounded`, signed `floorGap`, and support evidence are independent of overlap certainty. Claim physics-grounded only when `floorEvidence` is `physics` and `supportQueryComplete` is true; otherwise label the evidence approximate or incomplete.
|
|
24
|
+
- `visual_aabb` includes visible mesh-only obstacles but is conservative.
|
|
25
|
+
|
|
26
|
+
## `summer_snap_to_surface`
|
|
27
|
+
|
|
28
|
+
The subject sweeps along a normalized world direction. Physics evidence uses enabled collider shapes; `visual_aabb` is a mesh-only fallback.
|
|
29
|
+
|
|
30
|
+
Use `alignUp` only when an exact collider support is intended. After the call,
|
|
31
|
+
require `evidence: physics`, resolved contact, the expected `supportPath`,
|
|
32
|
+
`alignApplied`, plausible `slopeDeg`, final gap/error bound, and the saved basis.
|
|
33
|
+
The result does not expose the raw support normal or a heading residual, so use
|
|
34
|
+
the saved basis plus an independent rendered/physics check. If overlap recovery
|
|
35
|
+
fails, do not teleport manually through the obstruction.
|
|
36
|
+
|
|
37
|
+
## `summer_align_distribute_3d`
|
|
38
|
+
|
|
39
|
+
Anchors and extents come from visible descendant world AABBs. The solver translates only along the requested axis and preserves basis/scale. Distribution preserves caller order and fixed endpoints.
|
|
40
|
+
|
|
41
|
+
This is one-dimensional arrangement evidence. It does not prove clearance on the other two axes.
|
|
42
|
+
|
|
43
|
+
## `summer_navigation_probe`
|
|
44
|
+
|
|
45
|
+
Iteration 0 is unready; iteration 1 and later can be queried. Layer-filtered snapped endpoints and the reported snap distances define what Godot actually tested. `ready: false` means unknown, not unreachable.
|
|
46
|
+
|
|
47
|
+
Require both a reachable path and a small endpoint snap distance appropriate to the authored target.
|
|
48
|
+
Probe every independent destination; one reachable subject does not validate the
|
|
49
|
+
others. Derive the snap-distance threshold from the navigation agent radius or
|
|
50
|
+
an explicit authored tolerance.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
id: skill/world-building-3d
|
|
2
|
+
kind: skill
|
|
3
|
+
version: 1.1.0
|
|
4
|
+
summary: Compose, ground, space, and validate 3D scenes with Summer's four bounded spatial tools — exact paths, one geometric decision at a time, verified.
|
|
5
|
+
use_when:
|
|
6
|
+
- placing or grounding props on floors, shelves, ramps, or tables without hand-tuning transforms
|
|
7
|
+
- aligning or evenly spacing a group of 3D objects along one world axis
|
|
8
|
+
- verifying an NPC, pickup, or portal position is reachable on the navigation map
|
|
9
|
+
do_not_use_when:
|
|
10
|
+
- the scene is 2D — these tools read Node3D transforms, world AABBs, 3D physics, and World3D navigation
|
|
11
|
+
- the change is a bulk procedural build with computed placement — skill/scene-scripting
|
|
12
|
+
facets:
|
|
13
|
+
lifecycle:
|
|
14
|
+
- build
|
|
15
|
+
domains:
|
|
16
|
+
- scenes
|
|
17
|
+
- 3d
|
|
18
|
+
- world-building
|
|
19
|
+
- level-design
|
|
20
|
+
- verification
|
|
21
|
+
modalities:
|
|
22
|
+
- scenes
|
|
23
|
+
compatibility:
|
|
24
|
+
engine: ">=4.6"
|
|
25
|
+
related:
|
|
26
|
+
tools:
|
|
27
|
+
- tool/test-placement
|
|
28
|
+
- tool/snap-to-surface
|
|
29
|
+
- tool/align-distribute-3d
|
|
30
|
+
- tool/navigation-probe
|
|
31
|
+
- tool/get-scene-tree
|
|
32
|
+
- tool/inspect-node
|
|
33
|
+
- tool/screenshot
|
|
34
|
+
skills:
|
|
35
|
+
- skill/scene-composition
|
|
36
|
+
- skill/verifying-scenes
|
|
37
|
+
- skill/scene-scripting
|
|
38
|
+
- skill/spatial-placement
|
|
39
|
+
source: official
|
|
40
|
+
license: MIT
|
|
41
|
+
status: preview
|
|
42
|
+
recommended: true
|
|
43
|
+
aliases:
|
|
44
|
+
- skills/scene-and-project/world-building-3d
|