summer-engine 2.7.0 → 2.8.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/.claude-plugin/plugin.json +2 -1
- package/.codex-plugin/plugin.json +3 -2
- package/.cursor-plugin/plugin.json +2 -1
- package/.opencode/INSTALL.md +1 -1
- package/.opencode/plugins/summer.js +1 -1
- package/AGENTS.md +4 -4
- package/CHANGELOG.md +28 -0
- package/GEMINI.md +5 -4
- package/README.md +58 -21
- package/assets/autopilot/README.md +51 -0
- package/assets/autopilot/autopilot.gd +222 -0
- package/assets/autopilot/probe_base.gd +262 -0
- package/assets/autopilot/run.sh +78 -0
- package/commands/gameskill.md +11 -2
- package/dist/bin/summer.js +8 -0
- package/dist/commands/config.d.ts +2 -0
- package/dist/commands/config.js +53 -0
- package/dist/commands/create.d.ts +1 -0
- package/dist/commands/create.js +38 -6
- package/dist/commands/list.js +1 -1
- package/dist/commands/login.d.ts +19 -0
- package/dist/commands/login.js +136 -37
- package/dist/commands/logout.js +3 -16
- package/dist/commands/logs.d.ts +2 -0
- package/dist/commands/logs.js +19 -0
- package/dist/commands/mcp.js +7 -2
- package/dist/commands/open.js +1 -1
- package/dist/commands/publish.d.ts +2 -0
- package/dist/commands/publish.js +20 -0
- package/dist/commands/releases.d.ts +2 -0
- package/dist/commands/releases.js +20 -0
- package/dist/commands/run.js +1 -1
- package/dist/lib/api-client.d.ts +27 -8
- package/dist/lib/api-client.js +65 -14
- package/dist/lib/auth.d.ts +40 -12
- package/dist/lib/auth.js +173 -37
- package/dist/lib/cloud/engine-bridge.d.ts +17 -4
- package/dist/lib/cloud/engine-bridge.js +32 -6
- package/dist/lib/config.d.ts +20 -0
- package/dist/lib/config.js +142 -0
- package/dist/lib/creator.d.ts +93 -0
- package/dist/lib/creator.js +393 -0
- package/dist/lib/engine.d.ts +35 -2
- package/dist/lib/engine.js +240 -6
- package/dist/lib/public-surface-paths.d.ts +13 -0
- package/dist/lib/public-surface-paths.js +42 -0
- package/dist/lib/skills-registry.d.ts +8 -0
- package/dist/lib/skills-registry.js +9 -0
- package/dist/lib/store.d.ts +14 -0
- package/dist/lib/store.js +145 -0
- package/dist/lib/summer-compatibility.d.ts +6 -0
- package/dist/lib/summer-compatibility.js +22 -0
- package/dist/mcp/server.d.ts +8 -1
- package/dist/mcp/server.js +25 -4
- package/dist/mcp/tools/creator-tools.d.ts +2 -0
- package/dist/mcp/tools/creator-tools.js +105 -0
- package/dist/mcp/tools/debug-tools.d.ts +12 -0
- package/dist/mcp/tools/debug-tools.js +100 -1
- package/dist/mcp/tools/generate-tools.js +16 -6
- package/dist/mcp/tools/project-tools.js +131 -16
- package/dist/mcp/tools/scene-tools.js +166 -66
- package/dist/mcp/tools/visual-tools.js +32 -8
- package/dist/mcp/tools/with-engine.js +51 -19
- package/hooks/pre-commit-doctor.sh +0 -0
- package/hooks/run-hook.cmd +0 -0
- package/hooks/session-start.sh +5 -5
- package/package.json +3 -1
- package/references/collaborative-protocol.md +50 -0
- package/references/gd-style.md +121 -0
- package/references/godot-version.md +51 -0
- package/references/mcp-tools-reference.md +199 -0
- package/references/public-surface-language.md +30 -0
- package/references/summer-folder.md +90 -0
- package/references/template-registry.md +73 -0
- package/skills/2d-assets/character-portrait/SKILL.md +17 -12
- package/skills/2d-assets/concept-art/SKILL.md +10 -9
- package/skills/2d-assets/pixel-art/SKILL.md +36 -20
- package/skills/2d-assets/skybox-panorama/SKILL.md +32 -37
- package/skills/2d-assets/sprite-sheet/SKILL.md +40 -35
- package/skills/2d-assets/tileable-texture/SKILL.md +28 -22
- package/skills/2d-assets/ui-graphics/SKILL.md +46 -32
- package/skills/2d-assets/use-widget-asset/SKILL.md +8 -6
- package/skills/3d-assets/character-model/SKILL.md +34 -19
- package/skills/3d-assets/environment-kit/SKILL.md +11 -5
- package/skills/3d-assets/organic-model/SKILL.md +8 -5
- package/skills/3d-assets/prop-model/SKILL.md +9 -3
- package/skills/3d-assets/vehicle-model/SKILL.md +32 -19
- package/skills/README.md +1 -1
- package/skills/ai-and-npcs/design-npc/SKILL.md +31 -13
- package/skills/animation/animation-tree/SKILL.md +39 -15
- package/skills/animation/facial-and-lipsync/SKILL.md +25 -8
- package/skills/animation/generate-motion/SKILL.md +47 -15
- package/skills/animation/procedural-animation/SKILL.md +31 -13
- package/skills/animation/retarget/SKILL.md +127 -79
- package/skills/audio/adaptive-music/SKILL.md +24 -20
- package/skills/audio/ambient-bed/SKILL.md +22 -16
- package/skills/audio/audio-direction/SKILL.md +15 -10
- package/skills/audio/music-track/SKILL.md +18 -12
- package/skills/audio/sound-effect/SKILL.md +17 -12
- package/skills/audio/voice-line/SKILL.md +42 -42
- package/skills/character-controllers/fps-controller/SKILL.md +26 -16
- package/skills/debugging/debug/SKILL.md +52 -20
- package/skills/deployment/export-and-ship/SKILL.md +105 -38
- package/skills/deployment/remote-deploy/SKILL.md +56 -23
- package/skills/gameplay-mechanics/auto-fire-targeting/SKILL.md +26 -1
- package/skills/gameplay-mechanics/design-mechanic/SKILL.md +23 -15
- package/skills/level-design/design-level/SKILL.md +22 -8
- package/skills/level-design/scene-to-level/SKILL.md +13 -7
- package/skills/multiplayer-and-networking/host-authoritative-state/SKILL.md +8 -8
- package/skills/multiplayer-and-networking/peer-to-peer-multiplayer/SKILL.md +2 -7
- package/skills/multiplayer-and-networking/setup-multiplayer/SKILL.md +26 -18
- package/skills/performance/tune-performance/SKILL.md +51 -32
- package/skills/rendering-and-lighting/3d-lighting/SKILL.md +34 -5
- package/skills/rendering-and-lighting/art-direction/SKILL.md +6 -8
- package/skills/scene-and-project/brainstorm-game/SKILL.md +3 -5
- package/skills/scene-and-project/make-game/SKILL.md +2 -1
- package/skills/scene-and-project/play/SKILL.md +10 -4
- package/skills/scene-and-project/scene-composition/SKILL.md +21 -8
- package/skills/scene-and-project/summer-cloud/SKILL.md +1 -1
- package/skills/ui-and-ux/ui-basics/SKILL.md +16 -7
- package/skills/video/animated-loop/SKILL.md +63 -39
- package/skills/video/cinematic-cutscene/SKILL.md +66 -30
- package/skills/video/trailer-shot/SKILL.md +30 -21
- package/skills/visual-effects/_building-blocks/additive-billboard-particles.md +25 -16
- package/skills/visual-effects/_building-blocks/trauma-shake-snippet.md +5 -3
- package/skills/visual-effects/game-feel/SKILL.md +51 -33
- package/skills/visual-effects/recipes/dissolve/SKILL.md +51 -9
- package/skills/visual-effects/recipes/fire/SKILL.md +136 -49
- package/skills/visual-effects/recipes/hit-spark/SKILL.md +45 -8
- package/skills/visual-effects/recipes/lightning/SKILL.md +59 -27
- package/skills/visual-effects/recipes/magic-glow/SKILL.md +59 -26
- package/skills/visual-effects/recipes/muzzle-flash/SKILL.md +68 -25
- package/skills/visual-effects/recipes/smoke/SKILL.md +89 -28
- package/skills/visual-effects/recipes/water-ripple/SKILL.md +83 -23
- package/skills/workflow/brainstorming/SKILL.md +1 -1
- package/skills/workflow/brainstorming/scripts/start-server.sh +0 -0
- package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -0
- package/skills/workflow/debugging-game-feel/SKILL.md +29 -9
- package/skills/workflow/diagnosing-perf-regressions/SKILL.md +46 -21
- package/skills/workflow/gameskill/SKILL.md +11 -2
- package/skills/workflow/headless-scripting/SKILL.md +407 -0
- package/skills/workflow/investigating-bugs/SKILL.md +4 -2
- package/skills/workflow/investigating-bugs/find-polluter.sh +0 -0
- package/skills/workflow/mcpupdate/SKILL.md +3 -3
- package/skills/workflow/playtesting-a-feature/SKILL.md +94 -21
- package/skills/workflow/skill-create/SKILL.md +7 -7
- package/skills/workflow/skill-test/SKILL.md +3 -3
- package/skills/workflow/using-summer/SKILL.md +12 -2
- package/skills/workflow/verification-before-completion/SKILL.md +2 -0
- package/skills/workflow/writing-plans/SKILL.md +7 -7
- package/skills/workflow/writing-skills/SKILL.md +7 -5
- package/skills/workflow/writing-skills/render-graphs.js +0 -0
- package/skills/workflow/writing-skills/testing-skills-with-subagents.md +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "summer",
|
|
4
4
|
"version": "2.5.1",
|
|
5
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
5
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 58-tool MCP bridge to the local desktop app.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Summer Engine",
|
|
8
8
|
"email": "founders@summerengine.com",
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"./skills/workflow/dispatching-parallel-agents/",
|
|
40
40
|
"./skills/workflow/writing-skills/",
|
|
41
41
|
"./skills/workflow/playtesting-a-feature/",
|
|
42
|
+
"./skills/workflow/headless-scripting/",
|
|
42
43
|
"./skills/workflow/debugging-game-feel/",
|
|
43
44
|
"./skills/workflow/diagnosing-perf-regressions/",
|
|
44
45
|
"./skills/scene-and-project/brainstorm-game/",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "summer",
|
|
3
3
|
"version": "2.5.1",
|
|
4
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
4
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 62-tool MCP bridge. Build games by talking.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Summer Engine",
|
|
7
7
|
"email": "founders@summerengine.com",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"./skills/workflow/dispatching-parallel-agents/",
|
|
29
29
|
"./skills/workflow/writing-skills/",
|
|
30
30
|
"./skills/workflow/playtesting-a-feature/",
|
|
31
|
+
"./skills/workflow/headless-scripting/",
|
|
31
32
|
"./skills/workflow/debugging-game-feel/",
|
|
32
33
|
"./skills/workflow/diagnosing-perf-regressions/",
|
|
33
34
|
"./skills/scene-and-project/brainstorm-game/",
|
|
@@ -95,7 +96,7 @@
|
|
|
95
96
|
"interface": {
|
|
96
97
|
"displayName": "Summer",
|
|
97
98
|
"shortDescription": "Superpowers for AI game dev. Build games by talking.",
|
|
98
|
-
"longDescription": "Summer turns Codex into a game-dev studio for Summer Engine
|
|
99
|
+
"longDescription": "Summer turns Codex into a game-dev studio for Summer Engine. Users make Summer games with the Summer SDK and GDScript. The plugin adds game-dev skills, lifecycle hooks, and a 62-tool MCP bridge for guarded project files, scene editing, asset import, play mode, diagnostics, generation, and creator workflows. Git, shell, and grep stay with the host agent. Summer follows its upstream technical base continuously; version-sensitive work uses the bundled compatibility reference instead of a fixed onboarding version. Session-start orients the session. Pre-commit doctor (opt-in) blocks bad commits.",
|
|
99
100
|
"developerName": "Summer Engine",
|
|
100
101
|
"category": "Coding",
|
|
101
102
|
"capabilities": ["Interactive", "Read", "Write"],
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "summer",
|
|
4
4
|
"displayName": "Summer",
|
|
5
5
|
"version": "2.5.1",
|
|
6
|
-
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a
|
|
6
|
+
"description": "Agent tooling for Summer Engine: game-dev skills, lifecycle hooks, and a 58-tool MCP bridge to the local desktop app.",
|
|
7
7
|
"author": { "name": "Summer Engine", "email": "founders@summerengine.com" },
|
|
8
8
|
"publisher": "summer-engine",
|
|
9
9
|
"homepage": "https://summerengine.com",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"./skills/workflow/dispatching-parallel-agents/",
|
|
31
31
|
"./skills/workflow/writing-skills/",
|
|
32
32
|
"./skills/workflow/playtesting-a-feature/",
|
|
33
|
+
"./skills/workflow/headless-scripting/",
|
|
33
34
|
"./skills/workflow/debugging-game-feel/",
|
|
34
35
|
"./skills/workflow/diagnosing-perf-regressions/",
|
|
35
36
|
"./skills/scene-and-project/brainstorm-game/",
|
package/.opencode/INSTALL.md
CHANGED
|
@@ -30,7 +30,7 @@ Restart OpenCode. The orientation banner ("Summer Engine is loaded. N skills ava
|
|
|
30
30
|
|
|
31
31
|
## What this gives you
|
|
32
32
|
|
|
33
|
-
- **
|
|
33
|
+
- **Summer skills** under the `summer:` namespace, including `using-summer`, `brainstorm-game`, `debug`, `play`, `fps-controller`, `gdscript-patterns`, `scene-composition`, `art-direction`, and more.
|
|
34
34
|
- **A `summer-engine` MCP server** — start it with `npx summer-engine mcp` and OpenCode will route scene/diagnostics/asset tools to your local Summer Engine running on `localhost:6550`.
|
|
35
35
|
- **Session-start orientation** — first user message of every session is prefixed with the using-summer primer so the model invokes skills before responding.
|
|
36
36
|
|
|
@@ -12,7 +12,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
|
12
12
|
const skillsDir = path.resolve(__dirname, '../../skills');
|
|
13
13
|
|
|
14
14
|
const ORIENTATION = `<EXTREMELY_IMPORTANT>
|
|
15
|
-
Summer is loaded.
|
|
15
|
+
Summer is loaded. Summer skills are available under the summer: namespace.
|
|
16
16
|
|
|
17
17
|
Activate summer:using-summer FIRST in any Summer Engine session — it sets workflow priority and the red-flag list.
|
|
18
18
|
|
package/AGENTS.md
CHANGED
|
@@ -4,7 +4,7 @@ This file is for any AI agent that loads context from `AGENTS.md` (Codex CLI, Fa
|
|
|
4
4
|
|
|
5
5
|
## What you're working with
|
|
6
6
|
|
|
7
|
-
**Summer Engine** is the AI-native game engine the user is building in.
|
|
7
|
+
**Summer Engine** is the AI-native game engine the user is building in. The user is making a **Summer game** with the **Summer SDK**, normally in GDScript. The editor, scene graph, asset pipeline, and runtime are instrumented for programmatic control through the `summer-engine` MCP server. Summer currently uses the 4.6.1 upstream technical base, plans to adopt 4.7.1 next, and follows upstream continuously. Those numbers are compatibility facts, not the product identity. Projects use GDScript (`.gd`), C# (`.cs`), scenes (`.tscn`/`.scn`), resources (`.tres`/`.res`), and the technical `project.godot` filename.
|
|
8
8
|
|
|
9
9
|
## Critical rules
|
|
10
10
|
|
|
@@ -23,9 +23,9 @@ This file is for any AI agent that loads context from `AGENTS.md` (Codex CLI, Fa
|
|
|
23
23
|
- **Discipline** (`gdscript-patterns`, `scene-composition`, `art-direction`) → how to shape it.
|
|
24
24
|
- **Build** (`fps-controller`, `design-mechanic`, `design-level`, `setup-multiplayer`, `vfx`, `tune-performance`, `export-and-ship`) → produce the artifact.
|
|
25
25
|
|
|
26
|
-
## MCP tool palette (
|
|
26
|
+
## MCP tool palette (project-matched local editor)
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
The current MCP registry is grouped into these categories:
|
|
29
29
|
|
|
30
30
|
- Scene: `summer_get_scene_tree`, `summer_open_scene`, `summer_create_scene`, `summer_add_node`, `summer_set_prop`, `summer_set_resource_property`, `summer_remove_node`, `summer_save_scene`, `summer_instantiate_scene`, `summer_replace_node`, `summer_select_node`, `summer_inspect_node`, `summer_inspect_resource`, `summer_connect_signal`, `summer_batch`.
|
|
31
31
|
- Diagnostics: `summer_create_debug_report`, `summer_get_script_errors`, `summer_get_diagnostics`, `summer_get_console`, `summer_clear_console`, `summer_get_debugger_errors`, `summer_get_debugger_warnings`.
|
|
@@ -41,7 +41,7 @@ Git, shell, and grep are not exposed. Project file reads and writes are exposed
|
|
|
41
41
|
|
|
42
42
|
## Type-system gotchas
|
|
43
43
|
|
|
44
|
-
`SetProp` values are
|
|
44
|
+
`SetProp` values are Summer Engine variant strings, not JSON objects:
|
|
45
45
|
- `"Vector3(0, 10, 0)"`
|
|
46
46
|
- `"Color(1, 0.5, 0, 1)"` (RGBA, 4 components)
|
|
47
47
|
- `"Transform3D(1,0,0, 0,1,0, 0,0,1, 0,5,0)"`
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to summer-engine will be documented here. Following [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and [Semantic Versioning](https://semver.org/).
|
|
4
4
|
|
|
5
|
+
## [2.8.1] — 2026-08-18 — "Scene mutations work again on engine 0.5.60+"
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- `summer_get_scene_tree` accepts optional `depth` and `limit` params (engine defaults: depth 2, limit 200 — a 102-node scene silently truncated to 61 nodes at the defaults). The engine only honors them on scene-targeted reads, so the tool resolves the current scene path first when needed and says so when it can't. `summer_get_project_context` accepts an optional `settingsPrefix` and, without one, trims `project.data.entries` to a curated prefix set (application/, display/, input/, physics/, rendering/) instead of returning the full ~188KB settings dump — the payload declares the trim via `settingsTruncated`/`totalSettings`/`settingsHint`.
|
|
9
|
+
- `summer_screenshot` scene captures accept `nodePath` (frame a specific node, honest `node_not_found` failure) and new framing directions `back`/`left`/`right`; captions report the resolved framing and any render retries. Requires engine 0.5.62+ to take effect — older engines silently ignore the new fields.
|
|
10
|
+
- `summer_get_diagnostics` returns a prioritized bounded view (errors first, then warnings, capped info tail) with honest suppression counters, plus `includeAll: true` for the untrimmed payload. Severity + recency + caps only — no noise-pattern matching.
|
|
11
|
+
- `scripts/compat-smoke.sh`: a latest-MCP × candidate-engine release gate that drives the real built MCP server against a live engine and fails loudly on batch-contract incompatibilities (the class of bug that broke 2.7.0–2.8.0 × engine 0.5.60+). Run it before every engine release and every npm publish.
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- `summer_create_scene` no longer uses the destructive temporary-template strategy (open current scene → delete its children → save-as → restore). It now writes a minimal `.tscn` through the identity-bound engine `WriteFile` with a create-only guard, never touches the open scene, verifies by reading the file back, and gained a `rootType` param (Node3D/Node2D/Control). `allow_temporary_scene_mutation` remains accepted as a deprecated no-op.
|
|
15
|
+
- **Scene mutations were completely broken against engine 0.5.60/0.5.61.** The engine now requires `SaveScene`, `InstantiateScene`, `ReplaceNode`, `SimulateInput`, and the `Run*`/`Import*`/`Git*` ops to travel as their own single-op request, and rejects any multi-op batch containing one of them wholesale (`failure_reason: "unsupported_transport"`). Since 2.7.0 appended `SaveScene` to every mutation batch, every `summer_add_node`/`summer_set_prop`/`summer_batch`/`summer_create_scene` call was rejected before anything executed. Mutation batches are now automatically split into sequential requests around single-only ops; all receipts are preserved and merged, and a mutation that applied followed by a save that failed is reported honestly (including which ops already applied and which were not sent).
|
|
16
|
+
- Engine failures no longer hide the precise rejection. `extractOpError` previously returned a generic `"Engine operation failed (terminalState: failed)"` without inspecting `results[]`; it now surfaces the failed op's own error and `failure_reason` (envelope or per-op, either spelling), rendered as JSON when a classifier is present so agents can key on `failure_reason` reliably.
|
|
17
|
+
- `save_frame` is documented with its required `name` argument everywhere (`save_frame()` with no args is a probe script error), plus the deferred scene-mount pattern that avoids black frames.
|
|
18
|
+
- SimulateInput guidance corrected: it IS reachable over MCP/CLI as a single op against the running game (`failure_reason: "not_running"`/`"unsupported"` are the real failure modes); `"unsupported_transport"` only means it was batched with other ops. The previous claim that it needs the in-editor bridge on every build was stale.
|
|
19
|
+
- The scene-preview synthetic-camera note no longer claims the scene has no camera — the engine always synthesizes the preview camera; `sceneHasCamera` is the authoritative signal and keeps its own warning.
|
|
20
|
+
- `summer login` waits 15 minutes on one session id (was 2) with periodic reminders, covering first-time account creation + email confirmation. The gateway never expires a pending session, so the single id stays valid the whole window.
|
|
21
|
+
- Removed the stale "Engine mirror only" banner from the README (it shipped to npm and the public repo, and its claims were wrong).
|
|
22
|
+
|
|
23
|
+
## [2.8.0] — 2026-08-17 — "Multi-editor MCP routing"
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- MCP discovers every live Summer editor through `~/.summer/instances/` and automatically binds local tools to the editor whose project contains the agent's current working directory.
|
|
27
|
+
- `summer mcp --project <path>` and `summer mcp --instance <id>` provide explicit selection for hosts that do not start the MCP server from a project directory.
|
|
28
|
+
|
|
29
|
+
### Changed
|
|
30
|
+
- Multiple live editors are now a fail-closed state when no project can be inferred. MCP lists the non-secret project/instance choices instead of following the machine-global last-opened editor pointer.
|
|
31
|
+
- Selected MCP sessions keep following the same project across editor restarts and validate registry identity against `/api/health` before connecting.
|
|
32
|
+
|
|
5
33
|
## [2.7.0] — 2026-07-24 — "Reliable project mutations"
|
|
6
34
|
|
|
7
35
|
### Added
|
package/GEMINI.md
CHANGED
|
@@ -4,7 +4,7 @@ Summer is the AI game-dev studio for **Summer Engine** — the AI-native game en
|
|
|
4
4
|
|
|
5
5
|
## What Summer Engine is
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Summer Engine is designed for AI-assisted creation. The user is making a **Summer game** with the **Summer SDK**, normally in GDScript. The editor, scene graph, asset pipeline, and runtime are instrumented for programmatic control via MCP. Summer currently uses the 4.6.1 upstream technical base, plans to adopt 4.7.1 next, and follows upstream continuously. Those numbers are compatibility facts, not the product identity. Projects use GDScript (`.gd`), C# (`.cs`), scenes (`.tscn`/`.scn`), resources (`.tres`/`.res`), and the technical `project.godot` filename.
|
|
8
8
|
|
|
9
9
|
## How to behave
|
|
10
10
|
|
|
@@ -18,9 +18,9 @@ The single most important skill to know is `summer:using-summer` — it explains
|
|
|
18
18
|
2. **Discipline skills second**: `gdscript-patterns`, `scene-composition`, `art-direction`, `audio-direction`. These shape content.
|
|
19
19
|
3. **Build skills third**: `fps-controller`, `design-mechanic`, `design-level`, `setup-multiplayer`, `vfx`, `tune-performance`, `export-and-ship`.
|
|
20
20
|
|
|
21
|
-
## MCP tools (when the
|
|
21
|
+
## MCP tools (when the project-matched local editor is running)
|
|
22
22
|
|
|
23
|
-
The `summer-engine` MCP server exposes
|
|
23
|
+
The `summer-engine` MCP server exposes a focused tool registry. The most important:
|
|
24
24
|
|
|
25
25
|
- **Scene mutation**: `summer_add_node`, `summer_set_prop`, `summer_set_resource_property`, `summer_remove_node`, `summer_save_scene`, `summer_replace_node`, `summer_batch`. Every scene mutation requires the exact `res://...tscn` `scenePath`; opening a scene is a user-visible UI action, not a mutation prerequisite. Mutation tools append one final `SaveScene`; raw engine batches must do the same.
|
|
26
26
|
- **Scene inspection**: `summer_get_scene_tree`, `summer_inspect_node`, `summer_inspect_resource`.
|
|
@@ -35,7 +35,8 @@ Git, shell, and grep remain host-native. Use the Summer file tools for project r
|
|
|
35
35
|
|
|
36
36
|
## Type-system traps
|
|
37
37
|
|
|
38
|
-
`SetProp` values are engine-formatted **strings**
|
|
38
|
+
`SetProp` values are engine-formatted **strings** compatible with the current
|
|
39
|
+
Summer Engine type system:
|
|
39
40
|
|
|
40
41
|
- `"Vector3(0, 10, 0)"` — NOT `{x: 0, y: 10, z: 0}`.
|
|
41
42
|
- `"Color(1, 0.5, 0, 1)"` — RGBA, 4 components.
|
package/README.md
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# Summer Engine: the AI game engine
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Build real 2D and 3D Summer games with Summer Engine, the Summer SDK, and
|
|
4
|
+
GDScript. The agent layer can help author code and scenes, but creators remain
|
|
5
|
+
in control of changes and release decisions. Local export support depends on
|
|
6
|
+
the templates present in the installed engine. The package does not silently
|
|
7
|
+
build, host, or submit games to stores; its explicit, confirmed creator command
|
|
8
|
+
can publish an already-exported Summer `.pck` to Summercraft for review.
|
|
6
9
|
|
|
7
10
|
**Summer** is the MIT open-source agent layer that connects your AI coding agent to Summer Engine. It is the **Summer CLI**, the **Summer MCP** server, and the **Summer agent** skills, hooks, and plugin manifests, all in one package. First-class setup works in Claude Code, Cursor, Codex, Devin Desktop (formerly Windsurf), Cline, Roo Code, Gemini CLI, GitHub Copilot CLI, GitHub Copilot in VS Code, and OpenCode. Factory Droid uses the plugin marketplace path.
|
|
8
11
|
|
|
@@ -11,7 +14,9 @@ Build real 2D and 3D games through conversation. No coding required. Export to S
|
|
|
11
14
|
- **MCP setup:** [www.summerengine.com/mcp](https://www.summerengine.com/mcp)
|
|
12
15
|
- **Docs:** [docs.summerengine.com](https://docs.summerengine.com)
|
|
13
16
|
|
|
14
|
-
|
|
17
|
+
Once setup checks pass, open your agent and say *"let's make an FPS in Summer
|
|
18
|
+
Engine."* The agent can then use the Summer SDK and local editor tools to build
|
|
19
|
+
and verify the project.
|
|
15
20
|
|
|
16
21
|
---
|
|
17
22
|
|
|
@@ -20,10 +25,11 @@ It just works. Open your agent, say *"let's make an FPS in Summer Engine,"* and
|
|
|
20
25
|
Three names, one npm package (`summer-engine`):
|
|
21
26
|
|
|
22
27
|
- **Summer CLI** (`npx -y summer-engine@latest`): installs the engine, signs you in, scaffolds and runs projects, and writes your agent's config. See [www.summerengine.com/cli](https://www.summerengine.com/cli).
|
|
23
|
-
- **Summer MCP**: the local MCP server that gives your agent
|
|
28
|
+
- **Summer MCP**: the local MCP server that gives your agent 58 engine tools to build, run, and debug a real game. See [www.summerengine.com/mcp](https://www.summerengine.com/mcp).
|
|
24
29
|
- **Summer agent layer**: the game-dev skills, hooks, and plugin manifests that give your AI agent judgment, not just a chat box.
|
|
25
30
|
|
|
26
|
-
|
|
31
|
+
The CLI, MCP bridge, and agent layer are MIT licensed. The Summer Engine app has
|
|
32
|
+
its own license. One setup flow wires the pieces together.
|
|
27
33
|
|
|
28
34
|
## Get started: one prompt
|
|
29
35
|
|
|
@@ -110,7 +116,7 @@ npx -y summer-engine@latest install
|
|
|
110
116
|
npx -y summer-engine@latest login
|
|
111
117
|
```
|
|
112
118
|
|
|
113
|
-
This opens the user's default browser. **Tell the user**: "Your browser is opening now. Click sign-in once and come back to this terminal." The CLI waits up to 120 seconds for the auth callback,
|
|
119
|
+
This opens the user's default browser. **Tell the user**: "Your browser is opening now. Click sign-in once and come back to this terminal." The CLI waits up to 120 seconds for the auth callback, validates that the returned identity matches the CLI token, writes the core-compatible session to the secured `~/.summer/` store, and returns. **If the user takes longer than 120 seconds, re-run `npx -y summer-engine@latest login` and tell them to come back to the terminal quickly.** Don't loop indefinitely. The same `auth-token` and `user.json` filenames remain shared with the engine; they sign in once, both surfaces accept it.
|
|
114
120
|
|
|
115
121
|
### Step 4: Re-run doctor to confirm
|
|
116
122
|
|
|
@@ -218,8 +224,9 @@ We tell you before we touch your disk.
|
|
|
218
224
|
| `summer-engine` npm package (CLI + plugin source) | ~3 MB | first `npx -y summer-engine@latest ...` call | [npmjs.com/package/summer-engine](https://www.npmjs.com/package/summer-engine) |
|
|
219
225
|
| Summer Engine app | ~1 GB (engine + bundled Git/runtime tools) | `npx -y summer-engine@latest install` | Summer's signed releases |
|
|
220
226
|
| Auth token | ~1 KB | `npx -y summer-engine@latest login` | Browser to `~/.summer/auth-token` |
|
|
227
|
+
| Creator token | ~50 bytes | only when you run `summer login --creator` and mint one | One-time browser value to `~/.summer/creator-token`; never replaces the auth token |
|
|
221
228
|
| Skill files | < 50 KB | bundled in the npm package | no extra network call |
|
|
222
|
-
| Generated assets (3D / image / audio / video) | varies | only on explicit `summer_generate_*` calls | Summer Engine Studio |
|
|
229
|
+
| Generated assets (3D / image / audio / video) | varies | only on explicit `summer_generate_*` calls when that provider route is enabled for the account | Summer Engine Studio |
|
|
223
230
|
| URL imports | varies | only on explicit `summer_import_from_url` calls | the URL you provide |
|
|
224
231
|
|
|
225
232
|
Not downloaded:
|
|
@@ -235,9 +242,14 @@ Not downloaded:
|
|
|
235
242
|
|---|---|---|
|
|
236
243
|
| **Summer** (this repo: CLI, MCP server, skills, hooks, plugin manifests) | **MIT** | [SummerEngine/summer-engine-agent](https://github.com/SummerEngine/summer-engine-agent) |
|
|
237
244
|
| **Summer Engine app** (the desktop editor and runtime) | free to download, closed source for now | [summerengine.com/download](https://summerengine.com/download) |
|
|
238
|
-
| **Hosted Summer
|
|
245
|
+
| **Hosted Summer integrations** | availability and terms vary by rollout; preview features are labeled in the CLI | [summerengine.com/pricing](https://summerengine.com/pricing) |
|
|
239
246
|
|
|
240
|
-
The desktop app is free to download. The AI-agent layer, meaning the CLI, MCP
|
|
247
|
+
The desktop app is free to download. The AI-agent layer, meaning the CLI, MCP
|
|
248
|
+
server, skills, and plugin manifests, is MIT open source. A command, tool
|
|
249
|
+
contract, or roadmap entry does not by itself mean a hosted service is
|
|
250
|
+
production-ready. Summer Cloud is explicitly a research preview, and managed
|
|
251
|
+
publishing, hosting, store submission, and matchmaking are not promised by this
|
|
252
|
+
package.
|
|
241
253
|
|
|
242
254
|
---
|
|
243
255
|
|
|
@@ -255,7 +267,7 @@ Two pieces, plus the glue.
|
|
|
255
267
|
|
|
256
268
|
Skills don't list steps. They encode the **order of operations**: diagnose before editing, scope before building, ask before guessing. [Agent Skills](https://agentskills.io) format, so any conformant tool picks them up.
|
|
257
269
|
|
|
258
|
-
**MCP bridge.** The `summer-engine` MCP server gives the agent
|
|
270
|
+
**MCP bridge.** The `summer-engine` MCP server gives the agent 62 tools. Local project tools connect to the matching live editor on its loopback port; cloud and creator tools use their documented remote or local configuration contracts without requiring the editor:
|
|
259
271
|
|
|
260
272
|
| | |
|
|
261
273
|
|---|---|
|
|
@@ -263,13 +275,21 @@ Skills don't list steps. They encode the **order of operations**: diagnose befor
|
|
|
263
275
|
| Diagnostics | `summer_create_debug_report`, `summer_get_script_errors`, `summer_get_diagnostics`, `summer_get_console`, `summer_clear_console`, `summer_get_debugger_errors`, `summer_get_debugger_warnings` |
|
|
264
276
|
| Runtime | `summer_play`, `summer_stop`, `summer_is_running` |
|
|
265
277
|
| Visual | `summer_screenshot` (see the editor viewport, an offscreen scene render, or the running game) |
|
|
266
|
-
| Interactive | `
|
|
278
|
+
| Interactive | `RunVerification` raw op via `summer_batch` — a hidden GDScript probe that presses real inputs, saves rendered frames, and asserts. `SimulateInput` is editor-bridge only and not reachable from MCP. |
|
|
267
279
|
| Project | `summer_get_project_context`, `summer_open_main_scene`, `summer_project_setting`, `summer_input_map_bind` |
|
|
268
280
|
| Files | `summer_read_file`, `summer_write_file`, `summer_replace_text` — identity-bound, create-only or sha256-guarded mutations |
|
|
269
281
|
| Assets | `summer_search_assets`, `summer_import_asset`, `summer_import_from_url`, `summer_generate_image`, `summer_generate_3d`, `summer_generate_audio`, `summer_generate_video` |
|
|
282
|
+
| Creator | `summer_creator_publish`, `summer_creator_releases`, `summer_creator_logs`, `summer_creator_config` — confirmed immutable publish and real release history through `summer.creator.v1`, explicit unsupported logs, and shared non-secret configuration. |
|
|
270
283
|
|
|
271
284
|
Git, shell, and grep remain host-native. Project file reads and writes use Summer's identity-bound tools so compatible engine builds can reject wrong-project and stale-content mutations. A host agent can still bypass these safeguards with its own file tools; the package cannot technically intercept that external process.
|
|
272
285
|
|
|
286
|
+
When several Summer editors are open, MCP automatically selects the one whose
|
|
287
|
+
project contains the agent's current working directory. Normal agent configs do
|
|
288
|
+
not need a path or one MCP entry per editor. Hosts that launch MCP outside a
|
|
289
|
+
project can use `summer mcp --project <path>`; `--instance <id>` is available
|
|
290
|
+
when two editors intentionally show the same project. An ambiguous unscoped
|
|
291
|
+
connection is rejected rather than routed to the last editor that opened.
|
|
292
|
+
|
|
273
293
|
**Lifecycle hooks.** A `session-start` hook detects whether you're in a Summer Engine project and feeds the agent a one-line orientation. An opt-in `pre-commit doctor` runs `summer doctor` before `git commit` and blocks when the setup needs attention.
|
|
274
294
|
|
|
275
295
|
For the full architecture, see [docs/OVERVIEW.md](docs/OVERVIEW.md).
|
|
@@ -292,13 +312,21 @@ summer_clear_console # clean slate
|
|
|
292
312
|
summer_play # boot the game (or a specific scene)
|
|
293
313
|
summer_get_debugger_errors # runtime errors: null refs, missing nodes, physics
|
|
294
314
|
summer_screenshot target:game # optional: look at the live frame
|
|
295
|
-
summer_stop #
|
|
315
|
+
summer_stop # stop when runtime checks are done
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
**4. Does the interaction work?** To prove input-driven behavior (jump/move/shoot), use `RunVerification` — a raw op through `summer_batch`. It spawns a hidden, disposable game instance that runs your GDScript probe, presses real inputs, reads state back across frames, saves rendered frames, and dies without ever touching the editor:
|
|
319
|
+
|
|
320
|
+
```
|
|
321
|
+
summer_batch ops:[{op:"RunVerification", probe_source:"…", max_seconds:20}]
|
|
322
|
+
→ {ok, results, frames, out_dir}
|
|
296
323
|
```
|
|
297
324
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
325
|
+
Unlike `--headless`, that instance has a real renderer, so `save_frame("name")` writes an actual image (the name argument is required). Probe API: `report(name, value)` / `save_frame(name)` / `dump_tree()` / `press(action)` / `key(keycode)` / `finish()`. **`press()` and `key()` are coroutines — `await` them.** Every project scaffolded by `summer create` ships a working example at `tests/autopilot/`.
|
|
326
|
+
|
|
327
|
+
`SimulateInput` is **not** reachable from MCP or the CLI, on any build. It needs the in-editor chat bridge's async reply channel; every queued caller is answered `{ok:false, failure_reason:"unsupported_transport"}`. Use the probe.
|
|
328
|
+
|
|
329
|
+
Ask the user to play only for what a probe cannot hold an opinion about: whether it *feels* right, whether it *looks* good, whether it is fun. "I can't simulate input" is not on that list.
|
|
302
330
|
|
|
303
331
|
**Honesty.** Never describe an image you didn't receive; a failed capture is a *result* — report it and climb down (`scene`→`viewport`) or ask the user. Pass structured failures (`failure_reason`, `terminalState`, `identity_mismatch`) through verbatim. `summer_get_project_context` binds the session to the open project; a `projectMismatch` warning on a screenshot means the engine switched projects and the frame may be from the wrong one — rebind before trusting it.
|
|
304
332
|
|
|
@@ -315,7 +343,9 @@ summer_stop # ALWAYS stop — scene edits are refused while
|
|
|
315
343
|
5. **gdscript-patterns** guides every `.gd` write.
|
|
316
344
|
6. **play** runs the game and reports clean or broken.
|
|
317
345
|
7. **debug** runs the cheapest diagnostic, forms one specific hypothesis, asks before editing, re-verifies after the fix.
|
|
318
|
-
8. **export-and-ship** runs
|
|
346
|
+
8. **export-and-ship** inventories installed export templates, runs pre-flight,
|
|
347
|
+
and produces only supported local builds after approval. It does not upload,
|
|
348
|
+
host, publish, or submit them.
|
|
319
349
|
|
|
320
350
|
The skill bundle replaces "agent flailing through tutorials" with measurable craft.
|
|
321
351
|
|
|
@@ -339,7 +369,9 @@ The skill bundle replaces "agent flailing through tutorials" with measurable cra
|
|
|
339
369
|
|
|
340
370
|
**Skill authoring**: `skill-create`, `skill-improve`, `skill-test`
|
|
341
371
|
|
|
342
|
-
C# is supported by the engine. A `summer:csharp-patterns` skill is on the
|
|
372
|
+
C# is supported by the engine. A `summer:csharp-patterns` skill is on the
|
|
373
|
+
roadmap; for now use the upstream C# API reference matching the current Summer
|
|
374
|
+
technical base.
|
|
343
375
|
|
|
344
376
|
Full list of shipping skills: the `skills:` array in [`.claude-plugin/plugin.json`](./.claude-plugin/plugin.json).
|
|
345
377
|
|
|
@@ -477,8 +509,13 @@ npx -y summer-engine@latest doctor
|
|
|
477
509
|
| Command | What it does |
|
|
478
510
|
|---|---|
|
|
479
511
|
| `summer install` | Download Summer Engine. Prints URL and size first. |
|
|
480
|
-
| `summer login` | Browser-based sign-in. |
|
|
512
|
+
| `summer login` | Browser-based core Summer sign-in. |
|
|
513
|
+
| `summer login --creator` | Open Summercraft token settings and securely connect a separate publish-scoped creator token. |
|
|
481
514
|
| `summer logout` | Clear auth tokens. |
|
|
515
|
+
| `summer config [get\|set\|unset]` | Read or update the shared non-secret `~/.summer/config.json`. |
|
|
516
|
+
| `summer publish [project] --artifact <game.pck> --version <value> [--confirm]` | Compute and show the exact immutable target; after approval, stream it through prepare → write-once PUT → finalize. |
|
|
517
|
+
| `summer releases [--cursor <value>]` | List real creator-owned release history. |
|
|
518
|
+
| `summer logs` | Read creator runtime logs. Fails closed while no durable runtime-log source exists. |
|
|
482
519
|
| `summer status` | Engine state, port, auth. |
|
|
483
520
|
| `summer doctor` | Diagnose Node, login, engine, project memory, MCP. |
|
|
484
521
|
| `summer plan <goal>` | Route a game-building goal into skills, MCP tools, gates, and verification. |
|
|
@@ -491,7 +528,7 @@ npx -y summer-engine@latest doctor
|
|
|
491
528
|
| `summer skills list` | Show all skills. |
|
|
492
529
|
| `summer skills install <name>` | Install one. |
|
|
493
530
|
| `summer skills install --recommended --agent <agent>` | Install the recommended set. |
|
|
494
|
-
| `summer mcp` | Start the
|
|
531
|
+
| `summer mcp [--project <path> \| --instance <id>]` | Start MCP; normally auto-binds from the agent's project directory. |
|
|
495
532
|
| `summer mcp setup <agent>` | Write MCP config for an agent. |
|
|
496
533
|
| `summer setup <agent> [--yes]` | One shot: MCP config + recommended skills + doctor. |
|
|
497
534
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# tests/autopilot
|
|
2
|
+
|
|
3
|
+
A starting point for proving your game actually works — not that it compiles, that it *works*.
|
|
4
|
+
|
|
5
|
+
`autopilot.gd` boots your game in an invisible instance, presses your real input actions to walk the player through a list of waypoints, saves a rendered frame at each one, records what it found, and exits. It is ordinary GDScript against your real running game. There is no test framework here to learn.
|
|
6
|
+
|
|
7
|
+
## Run it
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
bash tests/autopilot/run.sh
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
No editor needed. Exit code is 0 when the probe finished cleanly and the engine logged no errors.
|
|
14
|
+
|
|
15
|
+
Results land in `tests/autopilot/out/`:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
results.json reports, frame list, errors_seen, duration_ms, finished
|
|
19
|
+
00_start.jpg a real rendered frame, one per waypoint
|
|
20
|
+
engine.log full engine output if something went wrong
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
An agent can also run the same probe through MCP without touching your editor:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
summer_batch ops:[{"op": "RunVerification",
|
|
27
|
+
"probe_source": "<contents of autopilot.gd>",
|
|
28
|
+
"max_seconds": 40}]
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Make it yours
|
|
32
|
+
|
|
33
|
+
Open `autopilot.gd` and edit the `CONFIG` block at the top: the player's node path, your Input Map action names, and the waypoints to walk. Then put your real assertions in `_check_at_waypoint()` and `_check_at_end()` — the shipped version walks and looks, but asserts nothing about *your* game, and a test that asserts nothing always passes.
|
|
34
|
+
|
|
35
|
+
Leave `ACT_UP` / `ACT_DOWN` empty for a side-on platformer. The autopilot then measures arrival on X alone, because in a side-scroller Y is gravity, not a destination.
|
|
36
|
+
|
|
37
|
+
## Rules that will bite you otherwise
|
|
38
|
+
|
|
39
|
+
**Assert inequalities, not exact numbers.** `position.x > start.x + 50` is a real assertion. `position.x == 250.0` is a flaky test you wrote yourself — hold durations resolve on the wall clock, so the same walk lands a few pixels apart between runs.
|
|
40
|
+
|
|
41
|
+
**Wait on `physics_frame`, not timers.** `await get_tree().physics_frame` is reproducible; `await get_tree().create_timer(1.0).timeout` is not.
|
|
42
|
+
|
|
43
|
+
**The global RNG is not seeded.** Anything downstream of `randf()` differs every run. Assert ranges, or seed it yourself at the top of the probe.
|
|
44
|
+
|
|
45
|
+
**`finished: false` is a failure.** It means the probe hit `--summer-verify-max` before calling `finish()`. `run.sh` exits non-zero on it; do not read the partial reports as a pass.
|
|
46
|
+
|
|
47
|
+
**Never add `--headless` to this.** Headless has no renderer: `save_frame()` gets a null image, and `draw_calls` reads 0.0 forever. The verify instance is windowed but positioned off-screen, which is why it can produce real frames and stay invisible.
|
|
48
|
+
|
|
49
|
+
## Frames are the point
|
|
50
|
+
|
|
51
|
+
A saved frame sequence is a flipbook of your feature happening. It is the difference between "the code path executed" and "the thing the player was promised appeared on screen". Save one wherever you would otherwise have asked a human to look.
|