summer-engine 2.6.6 → 2.8.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.
Files changed (168) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +4 -1
  3. package/.codex-plugin/plugin.json +6 -2
  4. package/.cursor-plugin/plugin.json +5 -1
  5. package/.opencode/INSTALL.md +1 -1
  6. package/.opencode/plugins/summer.js +2 -2
  7. package/AGENTS.md +11 -7
  8. package/CHANGELOG.md +40 -0
  9. package/GEMINI.md +9 -7
  10. package/README.md +63 -21
  11. package/_persona/summer/SKILL.md +1 -0
  12. package/assets/autopilot/README.md +51 -0
  13. package/assets/autopilot/autopilot.gd +222 -0
  14. package/assets/autopilot/probe_base.gd +262 -0
  15. package/assets/autopilot/run.sh +78 -0
  16. package/commands/gameskill.md +11 -2
  17. package/commands/summer.md +13 -0
  18. package/dist/bin/summer.js +12 -0
  19. package/dist/commands/config.d.ts +2 -0
  20. package/dist/commands/config.js +53 -0
  21. package/dist/commands/create.d.ts +1 -0
  22. package/dist/commands/create.js +38 -6
  23. package/dist/commands/debug.d.ts +2 -0
  24. package/dist/commands/debug.js +44 -0
  25. package/dist/commands/doctor.js +112 -8
  26. package/dist/commands/list.js +1 -1
  27. package/dist/commands/login.d.ts +19 -0
  28. package/dist/commands/login.js +123 -36
  29. package/dist/commands/logout.js +3 -16
  30. package/dist/commands/logs.d.ts +2 -0
  31. package/dist/commands/logs.js +19 -0
  32. package/dist/commands/mcp.js +7 -2
  33. package/dist/commands/open.js +1 -1
  34. package/dist/commands/publish.d.ts +2 -0
  35. package/dist/commands/publish.js +20 -0
  36. package/dist/commands/releases.d.ts +2 -0
  37. package/dist/commands/releases.js +20 -0
  38. package/dist/commands/run.js +1 -1
  39. package/dist/commands/skills.js +1 -1
  40. package/dist/lib/api-client.d.ts +15 -4
  41. package/dist/lib/api-client.js +138 -13
  42. package/dist/lib/async-op-lifecycle.d.ts +7 -2
  43. package/dist/lib/async-op-lifecycle.js +32 -9
  44. package/dist/lib/auth.d.ts +40 -12
  45. package/dist/lib/auth.js +173 -37
  46. package/dist/lib/cloud/engine-bridge.d.ts +17 -4
  47. package/dist/lib/cloud/engine-bridge.js +32 -6
  48. package/dist/lib/config.d.ts +20 -0
  49. package/dist/lib/config.js +142 -0
  50. package/dist/lib/creator.d.ts +93 -0
  51. package/dist/lib/creator.js +393 -0
  52. package/dist/lib/debug-report.d.ts +50 -0
  53. package/dist/lib/debug-report.js +308 -0
  54. package/dist/lib/engine.d.ts +35 -2
  55. package/dist/lib/engine.js +240 -6
  56. package/dist/lib/game-task-plan.js +4 -4
  57. package/dist/lib/mcp-boot-notice.d.ts +3 -0
  58. package/dist/lib/mcp-boot-notice.js +7 -0
  59. package/dist/lib/mcp-log.d.ts +3 -0
  60. package/dist/lib/mcp-log.js +72 -0
  61. package/dist/lib/public-surface-paths.d.ts +13 -0
  62. package/dist/lib/public-surface-paths.js +42 -0
  63. package/dist/lib/skills-registry.d.ts +33 -1
  64. package/dist/lib/skills-registry.js +55 -0
  65. package/dist/lib/store.d.ts +14 -0
  66. package/dist/lib/store.js +145 -0
  67. package/dist/lib/summer-compatibility.d.ts +6 -0
  68. package/dist/lib/summer-compatibility.js +22 -0
  69. package/dist/mcp/server.d.ts +10 -3
  70. package/dist/mcp/server.js +104 -11
  71. package/dist/mcp/tools/asset-tools.js +33 -12
  72. package/dist/mcp/tools/cloud-tools.js +15 -15
  73. package/dist/mcp/tools/creator-tools.d.ts +2 -0
  74. package/dist/mcp/tools/creator-tools.js +105 -0
  75. package/dist/mcp/tools/debug-tools.js +44 -1
  76. package/dist/mcp/tools/file-tools.d.ts +2 -0
  77. package/dist/mcp/tools/file-tools.js +154 -0
  78. package/dist/mcp/tools/generate-tools.js +159 -11
  79. package/dist/mcp/tools/project-tools.js +37 -27
  80. package/dist/mcp/tools/scene-tools.js +106 -29
  81. package/dist/mcp/tools/visual-tools.js +4 -3
  82. package/dist/mcp/tools/with-engine.js +4 -4
  83. package/hooks/session-start.sh +5 -5
  84. package/package.json +3 -1
  85. package/references/collaborative-protocol.md +50 -0
  86. package/references/gd-style.md +121 -0
  87. package/references/godot-version.md +51 -0
  88. package/references/mcp-tools-reference.md +199 -0
  89. package/references/public-surface-language.md +30 -0
  90. package/references/summer-folder.md +90 -0
  91. package/references/template-registry.md +73 -0
  92. package/skills/2d-assets/character-portrait/SKILL.md +17 -12
  93. package/skills/2d-assets/concept-art/SKILL.md +10 -9
  94. package/skills/2d-assets/create-asset-sheet/SKILL.md +17 -15
  95. package/skills/2d-assets/pixel-art/SKILL.md +36 -20
  96. package/skills/2d-assets/skybox-panorama/SKILL.md +32 -37
  97. package/skills/2d-assets/sprite-sheet/SKILL.md +40 -35
  98. package/skills/2d-assets/tileable-texture/SKILL.md +28 -22
  99. package/skills/2d-assets/ui-graphics/SKILL.md +46 -32
  100. package/skills/2d-assets/use-widget-asset/SKILL.md +8 -6
  101. package/skills/3d-assets/character-model/SKILL.md +34 -19
  102. package/skills/3d-assets/environment-kit/SKILL.md +11 -5
  103. package/skills/3d-assets/organic-model/SKILL.md +8 -5
  104. package/skills/3d-assets/prop-model/SKILL.md +9 -3
  105. package/skills/3d-assets/vehicle-model/SKILL.md +32 -19
  106. package/skills/README.md +1 -1
  107. package/skills/ai-and-npcs/design-npc/SKILL.md +31 -13
  108. package/skills/animation/animation-tree/SKILL.md +39 -15
  109. package/skills/animation/facial-and-lipsync/SKILL.md +25 -8
  110. package/skills/animation/generate-motion/SKILL.md +47 -15
  111. package/skills/animation/procedural-animation/SKILL.md +31 -13
  112. package/skills/animation/retarget/SKILL.md +127 -79
  113. package/skills/audio/adaptive-music/SKILL.md +24 -20
  114. package/skills/audio/ambient-bed/SKILL.md +22 -16
  115. package/skills/audio/audio-direction/SKILL.md +15 -10
  116. package/skills/audio/music-track/SKILL.md +18 -12
  117. package/skills/audio/sound-effect/SKILL.md +17 -12
  118. package/skills/audio/voice-line/SKILL.md +42 -42
  119. package/skills/character-controllers/fps-controller/SKILL.md +26 -16
  120. package/skills/debugging/debug/SKILL.md +74 -20
  121. package/skills/deployment/export-and-ship/SKILL.md +105 -38
  122. package/skills/deployment/remote-deploy/SKILL.md +140 -0
  123. package/skills/gameplay-mechanics/auto-fire-targeting/SKILL.md +26 -1
  124. package/skills/gameplay-mechanics/design-mechanic/SKILL.md +23 -15
  125. package/skills/level-design/design-level/SKILL.md +22 -8
  126. package/skills/level-design/scene-to-level/SKILL.md +13 -7
  127. package/skills/multiplayer-and-networking/host-authoritative-state/SKILL.md +8 -8
  128. package/skills/multiplayer-and-networking/peer-to-peer-multiplayer/SKILL.md +2 -7
  129. package/skills/multiplayer-and-networking/setup-multiplayer/SKILL.md +26 -18
  130. package/skills/performance/tune-performance/SKILL.md +51 -32
  131. package/skills/rendering-and-lighting/3d-lighting/SKILL.md +34 -5
  132. package/skills/rendering-and-lighting/art-direction/SKILL.md +6 -8
  133. package/skills/scene-and-project/brainstorm-game/SKILL.md +7 -9
  134. package/skills/scene-and-project/make-game/SKILL.md +2 -1
  135. package/skills/scene-and-project/play/SKILL.md +10 -4
  136. package/skills/scene-and-project/scene-composition/SKILL.md +21 -8
  137. package/skills/scene-and-project/summer-cloud/SKILL.md +92 -0
  138. package/skills/scripting-patterns/gdscript-patterns/SKILL.md +1 -1
  139. package/skills/ui-and-ux/ui-basics/SKILL.md +16 -7
  140. package/skills/video/animated-loop/SKILL.md +63 -39
  141. package/skills/video/cinematic-cutscene/SKILL.md +66 -30
  142. package/skills/video/trailer-shot/SKILL.md +30 -21
  143. package/skills/visual-effects/_building-blocks/additive-billboard-particles.md +25 -16
  144. package/skills/visual-effects/_building-blocks/trauma-shake-snippet.md +5 -3
  145. package/skills/visual-effects/game-feel/SKILL.md +51 -33
  146. package/skills/visual-effects/recipes/dissolve/SKILL.md +51 -9
  147. package/skills/visual-effects/recipes/fire/SKILL.md +136 -49
  148. package/skills/visual-effects/recipes/hit-spark/SKILL.md +45 -8
  149. package/skills/visual-effects/recipes/lightning/SKILL.md +59 -27
  150. package/skills/visual-effects/recipes/magic-glow/SKILL.md +59 -26
  151. package/skills/visual-effects/recipes/muzzle-flash/SKILL.md +68 -25
  152. package/skills/visual-effects/recipes/smoke/SKILL.md +89 -28
  153. package/skills/visual-effects/recipes/water-ripple/SKILL.md +83 -23
  154. package/skills/workflow/brainstorming/SKILL.md +1 -1
  155. package/skills/workflow/debugging-game-feel/SKILL.md +29 -9
  156. package/skills/workflow/diagnosing-perf-regressions/SKILL.md +46 -21
  157. package/skills/workflow/gameskill/SKILL.md +11 -2
  158. package/skills/workflow/headless-scripting/SKILL.md +407 -0
  159. package/skills/workflow/investigating-bugs/SKILL.md +4 -2
  160. package/skills/workflow/mcpupdate/SKILL.md +9 -9
  161. package/skills/workflow/playtesting-a-feature/SKILL.md +94 -21
  162. package/skills/workflow/skill-create/SKILL.md +7 -7
  163. package/skills/workflow/skill-test/SKILL.md +3 -3
  164. package/skills/workflow/using-summer/SKILL.md +32 -3
  165. package/skills/workflow/verification-before-completion/SKILL.md +2 -0
  166. package/skills/workflow/writing-plans/SKILL.md +7 -7
  167. package/skills/workflow/writing-skills/SKILL.md +7 -5
  168. package/skills/workflow/writing-skills/testing-skills-with-subagents.md +1 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: export-and-ship
3
- description: Use when the user is ready to export a build for distribution to Steam, itch.io, web (HTML5), iOS, Android, or any combination. Validates icons, store banners, screenshots, build config, and runs a pre-flight checklist before producing a release build. Trigger on "export", "ship", "release", "build", "Steam", "itch", "HTML5", "iOS", "Android", "submit", "publish".
3
+ description: Use when the user wants to assess or prepare a Summer game export. Inventories the templates and targets actually available in the installed Summer Engine build, validates release assets and configuration, and produces only locally supported builds after approval. It does not publish, upload, host, or submit a game. Trigger on "export", "ship", "release", "build", "Steam", "itch", "HTML5", "iOS", "Android", "submit", "publish".
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: deployment
@@ -13,21 +13,54 @@ paths: ["**/*.gd", "**/*.tscn", "project.godot", "export_presets.cfg", "**/*.png
13
13
 
14
14
  ## Overview
15
15
 
16
- Shipping is a checklist, not a creative act. This skill walks the platform-specific asset and config requirements, runs a pre-flight check against the project, and produces a release build only after every blocker is green. Better to fail at this step than fail submission.
16
+ Shipping is a checklist, not a creative act. This skill first inventories the
17
+ export templates and targets actually present in the installed Summer Engine
18
+ build. It can then validate platform-specific assets and configuration and
19
+ produce a local build for an available target after approval. It does not
20
+ upload, host, submit, or promise a target that is absent from the installation.
17
21
 
18
- **Core principle:** every platform has a list. Read the list, satisfy the list, ship.
22
+ **Core principle:** prove the target is locally available, then read its list,
23
+ satisfy the list, and build. Treat store submission and hosting as separate
24
+ user-controlled workflows.
19
25
 
20
26
  ## Steps
21
27
 
22
- ### 1. Pick the destination(s)
28
+ ### 1. Prove local export capability
23
29
 
24
- Open with the question. Multi-select.
30
+ Do this before presenting destinations, writing presets, or constructing an
31
+ export command.
25
32
 
26
- > Where to? Pick all that apply: **Steam** / **itch.io** / **web (HTML5)** / **iOS App Store** / **Google Play** / **macOS DMG** / **Windows installer** / **other**.
33
+ 1. Read `engineBinaryPath` from `summer_get_project_context`.
34
+ 2. Resolve the matching export-template directory for that exact Summer
35
+ technical base.
36
+ 3. Inventory the installed templates and any `custom_template/release` paths
37
+ already configured in `export_presets.cfg`.
38
+ 4. Build a capability table with `available`, `missing prerequisite`, or
39
+ `impossible on this build` for every requested target.
40
+
41
+ A stock Summer 4.6.1 Mono install has only the macOS template. Web export is
42
+ incompatible with that Mono build. Windows, Linux, Android, and iOS require a
43
+ matching custom template or an external CI/build environment, plus their
44
+ platform toolchains where applicable.
45
+
46
+ **Hard gate:** an absent template or toolchain means the target is unavailable.
47
+ Do not create its preset, recommend it as a local option, or invoke an export
48
+ command. Route it to an explicitly configured external CI job or stop and tell
49
+ the user which prerequisite is missing. An export pack is not a runnable
50
+ platform build and must not be presented as one.
51
+
52
+ ### 2. Pick among proven destinations
53
+
54
+ Offer only targets marked `available` by step 1. Record other requested
55
+ destinations as blocked follow-ups with their exact prerequisite.
56
+
57
+ > Locally proven targets: **macOS**. Requested but blocked: **Windows**
58
+ > (matching template or external CI), **Web** (non-Mono build), **Android**
59
+ > (template + Android toolchain). Which proven target should I prepare?
27
60
 
28
61
  Each destination has a different list. Multiple destinations = multiple lists. Don't shortcut — the iOS list does not satisfy the Steam list.
29
62
 
30
- ### 2. Run the pre-flight checklist
63
+ ### 3. Run the pre-flight checklist
31
64
 
32
65
  Always do this first, regardless of destination.
33
66
 
@@ -39,7 +72,9 @@ summer_get_console # any "import failed" warnings?
39
72
  summer_get_scene_tree # is the main scene set?
40
73
  ```
41
74
 
42
- **Fallback (no MCP):** ask the user to confirm via the Godot editor: Project → Project Settings → Application → Run → Main Scene is set; no errors in Output panel.
75
+ **Fallback (no MCP):** ask the user to confirm in Summer Engine: Project →
76
+ Project Settings → Application → Run → Main Scene is set, and the Output panel
77
+ has no errors.
43
78
 
44
79
  #### Pre-flight blockers (any one = stop)
45
80
 
@@ -59,9 +94,11 @@ If any check fails, list them in one message and ask:
59
94
 
60
95
  > Pre-flight failed on N items: <list>. Fix these before exporting? I can take them one by one.
61
96
 
62
- ### 3. Per-platform asset requirements
97
+ ### 4. Per-platform distribution requirements
63
98
 
64
- Walk the list for each chosen destination. Each is non-negotiable.
99
+ These lists describe distribution requirements only. They do not establish
100
+ local export capability. Walk a list only after step 1 proves its target or
101
+ the user has selected an external build environment that does.
65
102
 
66
103
  #### a) Steam
67
104
 
@@ -81,7 +118,8 @@ Walk the list for each chosen destination. Each is non-negotiable.
81
118
 
82
119
  Build config for Steam:
83
120
 
84
- - Export preset: **Windows Desktop** (x86_64) + **Linux** (x86_64) + **macOS** (universal). Steam requires all three for max reach; 99% of Steam revenue is Windows but Linux/macOS doesn't hurt.
121
+ - Export only the platform builds proven in step 1. Additional Steam platforms
122
+ require their own matching template or external build job.
85
123
  - Export options: `Embed PCK = true` for single-EXE distribution.
86
124
  - Steam SDK integration: GodotSteam (`https://godotsteam.com`) is the standard. Add the GDExtension before exporting.
87
125
  - App ID must be set in the Steam SDK init code.
@@ -100,13 +138,16 @@ Lower bar than Steam. itch is forgiving.
100
138
  | Build files | ZIP per platform OR `butler` upload | Yes |
101
139
 
102
140
  Build config:
103
- - Export preset: Windows + macOS + Linux; package as ZIP.
141
+ - Package each proven platform build as a ZIP.
104
142
  - Or use `butler push` (itch's CLI) for atomic versioning and patches.
105
- - Web build (HTML5) is free real estate on itch — also do it.
143
+ - A browser build is optional and requires a separately proven non-Mono Web
144
+ export environment.
106
145
 
107
- #### c) Web (HTML5)
146
+ #### c) Web (HTML5) — unavailable on the stock Mono build
108
147
 
109
- Browser export. Constraints:
148
+ Do not recommend or attempt this target from the stock Summer installation.
149
+ Route it to a verified non-Mono Summer-compatible build environment first.
150
+ Once that prerequisite is proven, these browser constraints apply:
110
151
 
111
152
  - No threading without `cross-origin-isolated` headers (most hosts don't set them).
112
153
  - No ENet — use WebSocket / WebRTC if multiplayer.
@@ -173,7 +214,7 @@ Build config:
173
214
  - Code-signing certificate ($75–$300/year from a CA) — without it, SmartScreen flags the EXE.
174
215
  - Installer: NSIS or InnoSetup are the standards. Or just ship a ZIP.
175
216
 
176
- ### 4. Build config consistency check
217
+ ### 5. Build config consistency check
177
218
 
178
219
  Before producing builds, verify `export_presets.cfg` for each target:
179
220
 
@@ -186,34 +227,59 @@ For each preset:
186
227
  | Field | Production value | Why |
187
228
  |---|---|---|
188
229
  | `binary_format/embed_pck` | `true` | Single EXE per platform |
189
- | `debug` | `false` | Debug builds leak source paths and run slower |
190
230
  | `texture_format/etc2_astc` | `true` for mobile | Smaller texture compression |
191
231
  | `application/short_version` | matches `application/config/version` | Steam reads it |
192
- | `script/encryption_key` | set if you don't want PCK extracted | Optional but recommended for paid games |
232
+ | `script_encryption_key` in `export_credentials.cfg` | set only when the user explicitly chooses script encryption | The similarly named preset field does not exist |
193
233
  | `application/icon` | path to your `.ico` / `.icns` / `.png` | Otherwise generic Godot icon ships |
194
234
 
195
- ### 5. Propose the build sequence
235
+ ### 6. Propose the build sequence
196
236
 
197
- > Pre-flight: clean. Targets confirmed: Steam (Win + Mac + Linux) + itch (same builds) + web. Required assets: I see all icons + 5 screenshots in `marketing/`. Missing: trailer (Steam blocks Coming Soon → Released without one). May I produce the builds now and flag the trailer as a follow-up?
237
+ > Capability proof: macOS available locally; Windows and Linux require external
238
+ > CI; Web is unavailable on this Mono build. Pre-flight is clean for the macOS
239
+ > preset. May I produce that one proven build now?
198
240
 
199
- ### 6. Produce the builds
241
+ ### 7. Produce a proven build
200
242
 
201
- Godot's CLI export is the standard scripted path:
243
+ CLI export is the standard scripted path. **Get the binary from `summer_get_project_context` → `engineBinaryPath`.** Do not type an engine binary name from memory:
202
244
 
245
+ - There is no `godot` on a Summer user's machine.
246
+ - `summer` is the npm CLI, not the engine. It takes subcommands and would never accept `--export-release`.
247
+ - On macOS the engine is `/Applications/Summer.app/Contents/MacOS/Summer`; on Windows, `%LOCALAPPDATA%\Summer\current\Summer.exe`.
248
+
249
+ After step 1 has marked a preset `available`, substitute only that exact proven
250
+ preset and output:
251
+
252
+ ```bash
253
+ ENGINE=<engineBinaryPath>
254
+ PROJ=<absolute project dir>
255
+ PROVEN_PRESET=<exact available preset name>
256
+ PROVEN_OUTPUT=<output path valid for that target>
257
+
258
+ "$ENGINE" --headless --path "$PROJ" --export-release "$PROVEN_PRESET" "$PROVEN_OUTPUT"
203
259
  ```
204
- godot --headless --export-release "Windows Desktop" build/win/MyGame.exe
205
- godot --headless --export-release "Linux" build/linux/MyGame.x86_64
206
- godot --headless --export-release "macOS" build/mac/MyGame.app
207
- godot --headless --export-release "Web" build/web/index.html
208
- godot --headless --export-release "Android" build/android/MyGame.aab
209
- godot --headless --export-release "iOS" build/ios/MyGame.xcodeproj
210
- ```
211
260
 
212
- For Summer Engine: replace `godot` with `summer` (or the local binary path). Same flags.
261
+ `--path` is not optional in a script — without it the export targets the current working directory.
262
+
263
+ The quoted preset name must match a `name=` in `export_presets.cfg` exactly. That file is plain text you can write yourself if it is missing: a hand-written preset plus this command was measured producing a runnable 144 MB `.app`, exit code 0.
264
+
265
+ To enable another target, prove one of these before returning to step 2:
266
+
267
+ - a matching installed export template;
268
+ - a valid `custom_template/release="<path>"` for the current technical base;
269
+ - an external CI/build job with the matching template and platform toolchain.
270
+
271
+ ### Export-option cautions
272
+
273
+ - **`script/encryption_key` does not exist.** The real key is `script_encryption_key`, and it lives in a separate `export_credentials.cfg`, not `export_presets.cfg` (`editor/export/editor_export.cpp:101,372-373`). Writing the wrong name produces an **unencrypted build with no error at all**.
274
+ - **There is no `debug` field in a preset.** Debug versus release is chosen by `--export-debug` versus `--export-release`, nothing else.
275
+
276
+ On Apple Silicon, `binary_format/architecture="arm64"` is the natural guess, and it fails leaving a **0-byte `.app` that looks like success**. Only `"universal"` ships.
277
+
278
+ See `summer:headless-scripting` for the wider pattern this is one instance of.
213
279
 
214
280
  If the user is on a CI system (GitHub Actions etc), this is the right place to point them at a cross-compile workflow — Godot can export Windows + Linux from a Linux runner.
215
281
 
216
- ### 7. Verify each build
282
+ ### 8. Verify each build
217
283
 
218
284
  For each build:
219
285
  - Launch it. Confirm the title screen renders.
@@ -221,7 +287,7 @@ For each build:
221
287
  - Check the file size (anything over 500 MB needs justification — usually unstripped textures or unused assets).
222
288
  - For mobile: install on a real device, not just the emulator.
223
289
 
224
- ### 8. Submit / upload
290
+ ### 9. Hand off distribution
225
291
 
226
292
  Per platform, point the user at the correct upload path:
227
293
 
@@ -248,7 +314,7 @@ Use this as a one-shot grep before any export:
248
314
  | Icon assets present | Per-platform icon files exist at the paths referenced in `export_presets.cfg` |
249
315
  | LICENSE file | Exists at repo root |
250
316
  | Attribution file | Exists if any community assets used |
251
- | Export preset `debug = false` | For all release presets |
317
+ | Release mode selected | Build invocation uses `--export-release` |
252
318
  | Export preset `embed_pck = true` | For all desktop release presets |
253
319
  | `.gitignore` excludes build artifacts | `build/`, `.godot/`, `.import/`, `*.tmp` listed |
254
320
  | Screenshots ≥ minimum count for platform | 3 for itch, 5 for Steam, 2 for Play |
@@ -258,7 +324,7 @@ Use this as a one-shot grep before any export:
258
324
 
259
325
  | Don't | Do | Why |
260
326
  |---|---|---|
261
- | Ship debug builds to Steam | `debug = false` in release export preset | Slower, leaks paths, larger |
327
+ | Ship debug builds to Steam | Use `--export-release` after capability proof | Debug builds leak paths and run slower |
262
328
  | Use 256×256 icon for iOS | 1024×1024 (Apple downscales) | iOS rejects undersized icons |
263
329
  | Skip Steam trailer | Record at least 30 sec gameplay before launch | Steam blocks the release without it |
264
330
  | Ship APK to Play Store | Build AAB | Play requires AAB since 2021 |
@@ -280,7 +346,7 @@ Use this as a one-shot grep before any export:
280
346
 
281
347
  ## Collaborative protocol
282
348
 
283
- This skill produces release artifacts. Always ask before each build is invoked. Group platforms — "I'm about to build Windows + Mac + Linux release configs into `build/`. OK?". See `references/collaborative-protocol.md`.
349
+ This skill produces release artifacts. Always ask before each build is invoked. Group platforms — "I'm about to build Windows + Mac + Linux release configs into `build/`. OK?". See `../../../references/collaborative-protocol.md`.
284
350
 
285
351
  ## Want a working starter?
286
352
 
@@ -288,9 +354,10 @@ No template — this is a workflow. Each project's export config and store asset
288
354
 
289
355
  ## See also
290
356
 
291
- - `references/mcp-tools-reference.md` — full MCP tool list
292
- - `references/godot-version.md` — Godot 4.5 export-template versioning
293
- - `references/collaborative-protocol.md` — "May I write" pattern
357
+ - `../../../references/mcp-tools-reference.md` — full MCP tool list
358
+ - `../../../references/godot-version.md` — Summer compatibility and
359
+ export-template versioning
360
+ - `../../../references/collaborative-protocol.md` — "May I write" pattern
294
361
  - `deployment/export-presets/SKILL.md` — preset config deep dive
295
362
  - `deployment/web-html5-export/SKILL.md` — HTML5-specific traps
296
363
  - `deployment/steam-uploader/SKILL.md` — `steamcmd` + GodotSteam (when shipped)
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: remote-deploy
3
+ description: Use when the user wants to run or test the game on a real target instead of the editor — a phone, tablet, or another computer ("deploy to my phone", "run on device", "test on Android/iOS", "remote deploy", "one-click deploy", "play on hardware"). Covers the topnav Remote Deploy button, runnable export presets, export templates, and on-device remote debugging. Use when the Remote Deploy button is greyed out and the user wants to know why.
4
+ license: MIT
5
+ compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
+ category: deployment
7
+ user-invocable: true
8
+ allowed-tools: Read Grep Edit summer_project_setting summer_get_diagnostics summer_get_console summer_get_script_errors
9
+ paths: ["project.godot", "export_presets.cfg"]
10
+ ---
11
+
12
+ # /remote-deploy — Test the Game on a Real Device
13
+
14
+ ## Overview
15
+
16
+ Remote Deploy runs the game on an actual target device — a phone, tablet, or another machine — instead of inside the editor. It exports a **debug** build, installs and launches it on the device, and connects the running game back to the editor's debugger so the Output panel, errors, breakpoints, and profiler all work exactly like a local run.
17
+
18
+ **Core principle:** Remote Deploy is "Play, but on the hardware." Same debug loop, real device.
19
+
20
+ **Capability gate comes first:** before adding a Runnable preset or telling the
21
+ user to pick a device, inventory the exact Summer build's export templates and
22
+ the platform toolchain. A stock Summer 4.6.1 Mono install has only the macOS
23
+ template. It cannot export Web, and Android/iOS/Windows/Linux are unavailable
24
+ until a matching custom template or external build environment is configured.
25
+ Never recommend or attempt a Remote Deploy target that has not passed this
26
+ proof.
27
+
28
+ It is **not** the same as two neighbours:
29
+
30
+ | Action | What it does | Use it for |
31
+ |---|---|---|
32
+ | **Play** (▶) | Runs in the editor (embedded or windowed) | Fast iteration on the dev machine |
33
+ | **Remote Deploy** | Debug build → installs + runs on a device, remote-debugged | Testing real input/perf/screen on hardware |
34
+ | **export-and-ship** (`summer:export-and-ship`) | Supported local release builds | Preparing an artifact for a separate user-controlled distribution workflow |
35
+
36
+ If the user wants a release build for Steam / itch / the App Store, that is `summer:export-and-ship`, not this.
37
+
38
+ ## Where it is in the UI
39
+
40
+ - **Agent-layout topnav:** the button with the remote-play icon, immediately right of the **Play/Stop** button and the **`▾`** run-options dropdown. Hover tooltip reads **"Remote Deploy"**.
41
+ - Clicking it opens a **dropdown of detected targets**, grouped by platform (e.g. an `Android` header with each connected device under it). Picking a target deploys and runs there.
42
+ - It is **disabled (greyed out)** with the tooltip **"No Remote Deploy export presets configured."** until the prerequisites below are met. A greyed button is the #1 thing users ask about — it almost always means "no runnable preset or no device detected," not a bug.
43
+
44
+ ## Step 1 — prove the requested target is available
45
+
46
+ Use `summer_get_project_context` to identify the exact engine binary and
47
+ technical base, inspect its matching export-template directory, then check the
48
+ requested platform toolchain. Report one of:
49
+
50
+ - `available`: matching template and toolchain are present;
51
+ - `blocked`: name the missing template, toolchain, signing, or device
52
+ prerequisite;
53
+ - `impossible on this build`: Web on the stock Mono build.
54
+
55
+ Stop on `blocked` or `impossible`. Route the user to template installation,
56
+ custom-template setup, or an external CI/device workflow. Do not add a preset
57
+ as if that made the target runnable.
58
+
59
+ ## Step 2 — prerequisites for a proven target
60
+
61
+ The button auto-enables the moment a runnable preset **and** at least one detected target both exist for the same platform.
62
+
63
+ | Requirement | How to satisfy it | Why it matters |
64
+ |---|---|---|
65
+ | A **proven template and toolchain** | Complete step 1 | Without both, a visible target still fails at deploy time. |
66
+ | A **runnable export preset** for that proven platform | Project → Export → add the proven preset → toggle **Runnable** on | A preset that exists but isn't marked Runnable does **not** count. |
67
+ | A **detected target** | For example, an authorized Android device or a connected, trusted iOS device | The button enables only when at least one target is reported for a runnable platform. |
68
+
69
+ **Important nuance:** the button does **not** pre-check that templates/toolchain are installed. Enable state is gated only on *runnable preset + detected target*. If templates or the toolchain are missing, the deploy **fails at run time** and the errors appear in a result dialog. So:
70
+
71
+ > **Runnable preset + a detected device make the button appear/enable. Installed export templates make the deploy actually succeed.**
72
+
73
+ This matters when guiding a user mid-setup (e.g. building out a mobile flow): you can see the button enable as soon as a phone is plugged in and the preset is Runnable, even before templates finish downloading.
74
+
75
+ ## Step 3 — deploy after proof (the flow)
76
+
77
+ 1. The editor continuously polls the export platforms and rebuilds the dropdown: each runnable platform, with each of its detected devices listed underneath.
78
+ 2. The user picks a target. Summer Engine exports a **debug** build for that
79
+ preset when the matching template and toolchain are installed.
80
+ 3. The build is installed and launched on the device (e.g. `adb install` + launch for Android).
81
+ 4. The running game opens a **remote-debug** connection back to the editor — Output, the debugger, and the profiler reflect the on-device session. Stop it from the editor like any normal run.
82
+ 5. Any export/deploy error (missing template, no toolchain, unsigned build, device went away) is surfaced in a **result dialog**. Read it; it names the prerequisite to fix.
83
+
84
+ ## Mobile paths after capability proof
85
+
86
+ **Android**
87
+ 1. First prove a matching Android template, Android SDK, `adb`, and debug
88
+ signing are installed. Otherwise stop.
89
+ 2. Enable Developer Options → USB debugging on the phone; plug it in; accept the "Allow USB debugging?" prompt.
90
+ 3. Confirm `adb devices` lists it as `device` (not `unauthorized`).
91
+ 4. Project → Export → Android preset → **Runnable** on.
92
+ 5. The phone appears in the Remote Deploy dropdown → pick it.
93
+
94
+ **iOS**
95
+ 1. First prove a matching iOS template, Xcode toolchain, and signing identity
96
+ are installed. Otherwise stop.
97
+ 2. Connect and trust the device; ensure a valid signing team in the iOS preset.
98
+ 3. The device appears in the dropdown → pick it.
99
+
100
+ **Web**
101
+
102
+ Web is unavailable on the stock Summer Mono build. Do not add a Web Runnable
103
+ preset or direct the user to a browser target. Use ordinary local Play for a
104
+ sanity check, or first provision and verify a separate non-Mono-compatible
105
+ export environment.
106
+
107
+ ## Guiding the user (orchestrator playbook)
108
+
109
+ When a user says "deploy to my phone" / "run this on device" and the button is greyed:
110
+
111
+ 1. **Prove target capability first** — inspect the exact build's matching
112
+ template directory and platform toolchain. Stop or route externally if
113
+ either is absent; Web is impossible on the stock Mono build.
114
+ 2. **Check the build is healthy** — a project with script errors won't export.
115
+ - `summer_get_script_errors` and `summer_get_diagnostics` clean? If not, fix those before anything else.
116
+ - `summer_get_console` for "import failed" noise.
117
+ 3. **Confirm a runnable preset exists** for the proven target platform — Read/Grep `export_presets.cfg` for the platform and a `runnable=true` entry. If missing, walk them through Project → Export → add preset → mark Runnable.
118
+ 4. **Confirm the main scene is set** — `summer_project_setting` / `project.godot` `application/run/main_scene`. A deploy to a blank main scene launches to nothing.
119
+ 5. **Confirm a device is detected** — plugged in, debugging enabled, authorized.
120
+ 6. Then point them at the topnav **Remote Deploy** button → pick the device.
121
+
122
+ Order matters: capability proof → healthy project → preset → device. The
123
+ button can enable before the build is actually possible, so its visible state
124
+ never replaces the proof.
125
+
126
+ ## Common mistakes
127
+
128
+ - **Confusing it with shipping.** Remote Deploy makes *debug* builds for testing. Store/distribution builds are `summer:export-and-ship`.
129
+ - **Preset exists but isn't Runnable** → button stays greyed. The Runnable toggle is the gate, not the preset's existence.
130
+ - **Expecting it to work without export templates** → button may be enabled (device detected) but the deploy then fails in the result dialog. Install templates.
131
+ - **Android device `unauthorized`** in `adb devices` → the device won't show as a target. Re-accept the USB-debugging prompt on the phone.
132
+ - **Trying to script it via MCP** — there is no `summer_*` tool that triggers Remote Deploy; it is a UI action. The orchestrator's job is to get the prerequisites green and point the user at the button.
133
+
134
+ ## Quick reference
135
+
136
+ | Button state | Meaning | Fix |
137
+ |---|---|---|
138
+ | Greyed, "No Remote Deploy export presets configured." | No runnable preset **or** no detected device | Add a Runnable preset; connect/authorize a device |
139
+ | Enabled, dropdown lists devices | Ready to deploy | Pick a device to build + run |
140
+ | Deploy fails in result dialog | Templates/toolchain/signing/device issue | Read the dialog; install the named missing piece |
@@ -167,4 +167,29 @@ Test scenario: spawn a single weak enemy directly in front of the player at poin
167
167
  Before: 5-15 bullets continue past the corpse over the next ~0.5s.
168
168
  After: 1-2 bullets continue (the ones that were already past the half-flight point), the rest of the fire pool redirects to whatever target Targeting picks next, or stops if there's none in range.
169
169
 
170
- Use `summer_get_diagnostics` to confirm no new errors. Use `summer_inspect_node` on a sample enemy mid-fight to confirm `pending_damage` is being incremented and decremented as expected.
170
+ Use `summer_get_diagnostics` to confirm no new errors.
171
+
172
+ `summer_inspect_node` will **not** show you `pending_damage` mid-fight. It reads
173
+ the edited scene in the editor — the response even tags itself
174
+ `provenance: editor_scene` — so it reports the saved node, not the live
175
+ instance. Runtime values need a runtime probe.
176
+
177
+ The route that works from MCP is the `RunVerification` op, sent through
178
+ `summer_batch`. It spins up a hidden, disposable game instance that runs a
179
+ GDScript probe and exits; it never touches the editor:
180
+
181
+ ```
182
+ summer_batch(ops=[{
183
+ "op": "RunVerification",
184
+ "max_seconds": 20,
185
+ "probe_source": "extends SummerProbeBase\nfunc _ready():\n\tawait super._ready()\n\t# spawn one enemy, fire at it, then:\n\treport('pending_damage', enemy.pending_damage)\n\tfinish()"
186
+ }])
187
+ ```
188
+
189
+ Probe API: `report()`, `save_frame()`, `press()`, `key()`, `finish()`. Returns
190
+ `{ok, results, frames, out_dir}`.
191
+
192
+ Do **not** reach for `SimulateInput` here. It is only reachable from the
193
+ in-editor chat bridge; an MCP or CLI caller gets
194
+ `{ok: false, failure_reason: "unsupported_transport"}` back. Drive input from
195
+ inside the probe with `press()` / `key()` instead.
@@ -126,15 +126,27 @@ Show this to the user. Ask:
126
126
  **Preferred (Summer MCP):**
127
127
 
128
128
  ```
129
- summer_get_scene_tree # confirm Player exists where expected
130
- summer_add_node(parent="./World/Player", type="GPUParticles3D", name="DoubleJumpFX")
131
- summer_set_prop("./World/Player/DoubleJumpFX", "emitting", "false")
132
- summer_add_node(parent="./World/Player", type="AudioStreamPlayer3D", name="JumpAudio")
133
- summer_input_map_bind(name="jump", events=[{type:"key", key:"Space"}]) # idempotent
134
- summer_save_scene
135
- summer_get_script_errors
129
+ summer_get_scene_tree() # confirm Player exists where expected
130
+ summer_add_node(scenePath="res://main.tscn", parent="./World/Player", type="GPUParticles3D", name="DoubleJumpFX")
131
+ summer_set_prop(scenePath="res://main.tscn", path="./World/Player/DoubleJumpFX", key="emitting", value="false")
132
+ summer_add_node(scenePath="res://main.tscn", parent="./World/Player", type="AudioStreamPlayer3D", name="JumpAudio")
133
+ summer_input_map_bind(name="jump", events=[{"type": "key", "key": "Space"}]) # idempotent
134
+ summer_save_scene(scenePath="res://main.tscn")
135
+ summer_get_script_errors(path="res://scripts/player_controller.gd")
136
136
  ```
137
137
 
138
+ Argument notes, all of which the tool schema enforces:
139
+
140
+ - `scenePath` is required on `summer_add_node`, `summer_set_prop` and
141
+ `summer_save_scene`. It names the exact `res://` scene; there is no
142
+ "current scene" default.
143
+ - `summer_set_prop` takes named `path` / `key` / `value` — not positional.
144
+ - `summer_input_map_bind` events are dicts. `{"type": "key", "key": "Space"}`
145
+ works; key names go through Godot's keycode table, so `W`, `Space`, `Shift`,
146
+ `Escape` resolve and typos silently produce no event.
147
+ - `summer_get_script_errors` checks one file and requires `path`. Use
148
+ `summer_get_diagnostics()` (no args) for a project-wide check.
149
+
138
150
  **Fallback (no MCP):** Print the `.tscn` snippet for the user to paste:
139
151
 
140
152
  ```
@@ -148,7 +160,7 @@ lifetime = 0.4
148
160
 
149
161
  ### 7. Write the GDScript stub
150
162
 
151
- Stub only — implementation is the next session. Use `references/gd-style.md` conventions. For double-jump:
163
+ Stub only — implementation is the next session. Typed GDScript throughout (see `summer:scripting-patterns/gdscript-patterns`). For double-jump:
152
164
 
153
165
  ```gdscript
154
166
  class_name PlayerController
@@ -236,12 +248,12 @@ Ask:
236
248
  | Hand-wave depth | "Players will use it strategically" is not depth. Name the choice the player makes. |
237
249
  | Tunables hard-coded as `const` | Use `@export` so designers tune in the inspector. |
238
250
  | Adding the mechanic without the FX/audio nodes | Without nodes for feedback, the mechanic ships feeling cheap. Scaffold the nodes alongside the script. |
239
- | Setting `position` for movement instead of `velocity` | Physics objects use `velocity` in `_physics_process`. See `references/gd-style.md`. |
240
- | Calling SetResourceProperty on inline sub_resources | Silent fail. See `references/mcp-tools-reference.md` § Trap. |
251
+ | Setting `position` for movement instead of `velocity` | Physics objects use `velocity` in `_physics_process`. |
252
+ | Calling SetResourceProperty before the property holds a resource | Explicit `resource is null` error, not a silent drop. Assign the resource first (`summer_set_prop key="mesh" value="BoxMesh"`), then set its sub-properties. Scene-embedded sub_resources are fully supported targets. |
241
253
 
242
254
  ## Collaborative protocol
243
255
 
244
- This skill writes scene nodes and one or more files (`.gd`, `.summer/mechanics/<name>.md`). Group writes into one ask per phase. See `references/collaborative-protocol.md`.
256
+ This skill writes scene nodes and one or more files (`.gd`, `.summer/mechanics/<name>.md`). Group writes into one ask per phase.
245
257
 
246
258
  ## Want a working starter?
247
259
 
@@ -254,10 +266,6 @@ This skill is a workflow that designs and scaffolds — the templates are runnab
254
266
 
255
267
  ## See also
256
268
 
257
- - `references/collaborative-protocol.md`
258
- - `references/mcp-tools-reference.md`
259
- - `references/gd-style.md` — GDScript conventions
260
- - `references/godot-version.md` — Godot 4.5 API notes
261
269
  - `scene-and-project/brainstorm-game/SKILL.md` — produces `.summer/GameSoul.md` this skill reads
262
270
  - `level-design/design-level/SKILL.md` — design the levels that exercise the mechanic
263
271
  - `character-controllers/fps-controller/SKILL.md` — FPS movement scaffolding
@@ -150,9 +150,20 @@ Show the skeleton. Ask:
150
150
 
151
151
  **Preferred (Summer MCP):**
152
152
 
153
+ `summer_create_scene` takes `path`, `rootName`, and a mandatory safety gate.
154
+ There is no `root_type` or `root_name` argument. The tool refuses to run unless
155
+ `allow_temporary_scene_mutation` is explicitly true, because of how it works: it
156
+ opens the currently-open scene (or the project's main scene) as a template,
157
+ removes every child, renames the root, saves-as to the new path, then reopens
158
+ the original. Ask the user before setting the flag.
159
+
160
+ The consequence to plan around: **the new scene's root node type is copied from
161
+ the template's root**, not chosen by you. Create levels from a scene whose root
162
+ is already `Node3D`, or fix the root afterwards in the editor.
163
+
153
164
  ```
154
- summer_create_scene(path="res://levels/level_01.tscn", root_type="Node3D", root_name="World")
155
- summer_add_node(parent="./World", type="Node3D", name="Geometry")
165
+ summer_create_scene(path="res://levels/level_01.tscn", rootName="World", allow_temporary_scene_mutation=true)
166
+ summer_add_node(scenePath="res://levels/level_01.tscn", parent="./World", type="Node3D", name="Geometry")
156
167
  summer_add_node(parent="./World/Geometry", type="Node3D", name="IntroAtrium")
157
168
  summer_add_node(parent="./World/Geometry", type="Node3D", name="Corridor")
158
169
  summer_add_node(parent="./World/Geometry", type="Node3D", name="PeakArena")
@@ -167,9 +178,15 @@ summer_add_node(parent="./World/Triggers", type="Area3D", name="E2_GateTrigger")
167
178
  summer_add_node(parent="./World", type="Node3D", name="Lighting")
168
179
  summer_add_node(parent="./World/Lighting", type="WorldEnvironment", name="WorldEnvironment")
169
180
  summer_add_node(parent="./World/Lighting", type="DirectionalLight3D", name="Sun")
170
- summer_save_scene
181
+ summer_save_scene(scenePath="res://levels/level_01.tscn")
171
182
  ```
172
183
 
184
+ Every `summer_add_node` above takes the same required
185
+ `scenePath="res://levels/level_01.tscn"`; it is elided after the first line only
186
+ to keep the tree readable. A call without `scenePath` is rejected by the tool
187
+ schema. Better still, send the whole block as one `summer_batch(scenePath=...,
188
+ ops=[...])` so the user can undo the skeleton with a single Ctrl+Z.
189
+
173
190
  This is a **skeleton, not playable geometry**. Markers and Area3Ds, no meshes, no enemy scripts. Implementation in subsequent sessions / templates.
174
191
 
175
192
  **Fallback (no MCP):** Print the `.tscn` file contents for the user to save manually.
@@ -239,11 +256,11 @@ End with:
239
256
  | Reward gating too generous | Free heals before the peak deflate the peak. Gate them after the test. |
240
257
  | Blending level types | Stealth + puzzle + boss in one level = three half-baked levels. Pick one. |
241
258
  | Building geometry before the skeleton | Skeleton-first lets you iterate on layout cheaply. Geometry comes after the design is locked. |
242
- | Calling SetResourceProperty on inline sub_resources | Silent fail. See `references/mcp-tools-reference.md` § Trap. |
259
+ | Calling SetResourceProperty before the property holds a resource | Explicit `resource is null` error, not a silent drop. Assign the resource first (`summer_set_prop key="mesh" value="BoxMesh"`), then set its sub-properties. Scene-embedded sub_resources are fully supported targets. |
243
260
 
244
261
  ## Collaborative protocol
245
262
 
246
- This skill creates a new scene file (`.tscn`) and a design doc (`.md`). Group writes per phase. Always ask before `summer_create_scene`. See `references/collaborative-protocol.md`.
263
+ This skill creates a new scene file (`.tscn`) and a design doc (`.md`). Group writes per phase. Always ask before `summer_create_scene`.
247
264
 
248
265
  ## Want a working starter?
249
266
 
@@ -256,9 +273,6 @@ The skeleton this skill produces is meant to be filled in via `/summer:design-me
256
273
 
257
274
  ## See also
258
275
 
259
- - `references/collaborative-protocol.md`
260
- - `references/mcp-tools-reference.md`
261
- - `references/godot-version.md` — Godot 4.5 API notes
262
276
  - `scene-and-project/brainstorm-game/SKILL.md` — produces `.summer/GameSoul.md`
263
277
  - `gameplay-mechanics/design-mechanic/SKILL.md` — designs the verbs the level exercises
264
278
  - `ai-and-npcs/design-npc/SKILL.md` — designs the enemies the encounters reference
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: scene-to-level
3
- description: Use when the user wants to go from a single scene reference image (a screenshot or concept art of how the final game should look) all the way to a playable Godot scene populated with the right assets and terrain. Orchestrates concept → asset pack → terrain → composition → scene assembly. Trigger on "build this scene", "make this playable", "I want a level that looks like this", "from a screenshot to a game", "implement this concept".
3
+ description: Use when the user wants to go from a scene reference image or concept art to a playable Summer Engine scene populated with the right assets and terrain. Orchestrates concept, asset pack, terrain, composition, and scene assembly. Trigger on "build this scene", "make this playable", "I want a level that looks like this", "from a screenshot to a game", "implement this concept".
4
4
  license: MIT
5
5
  compatibility: [Cursor, Claude Code, Windsurf, Codex]
6
6
  category: level-design
@@ -11,7 +11,9 @@ paths: ["**/*.tscn", "**/*.gd", "assets/**", ".summer/**", "levels/**"]
11
11
 
12
12
  # scene-to-level — From a reference image to a playable scene
13
13
 
14
- This is the **orchestrator** skill. It doesn't generate art, doesn't slice sheets, doesn't write game code — it routes the user through the chain of skills that do, and stitches their outputs together into a placeable Godot scene.
14
+ This is the **orchestrator** skill. It does not generate art, slice sheets, or
15
+ write game code. It routes the user through the chain of skills that do and
16
+ stitches their outputs into a placeable Summer Engine scene.
15
17
 
16
18
  Use it when the user shows you a screenshot or concept image and says "build this." The output is a `.tscn` you can hit play on, populated with assets that match the reference's style.
17
19
 
@@ -53,16 +55,20 @@ Use it when the user shows you a screenshot or concept image and says "build thi
53
55
  / etc. (see summer:2d-assets/use-widget-asset)
54
56
 
55
57
  4. Compose the scene:
56
- - summer_create_scene with a Node2D / Control root depending on the
57
- scene type
58
- - Add a TileMap node for terrain; assign the generated tileset
59
- resource
58
+ - summer_create_scene(path=..., rootName=..., allow_temporary_scene_mutation=true).
59
+ It has no root-type argument: the new scene's root is copied from the
60
+ currently-open (or main) scene's root, children stripped and root renamed.
61
+ Start from a 2D scene if you want a Node2D root.
62
+ - Add a TileMapLayer node for terrain; assign the generated tileset
63
+ resource (`TileMap` is deprecated on the current Summer technical line)
60
64
  - Place props as Sprite2D / TextureRect children, positioned to
61
65
  match the reference's composition
62
66
  - Wire UI as Control nodes anchored to the viewport
67
+ - Every mutation tool here takes a required `scenePath`
63
68
 
64
69
  5. Validate:
65
- - summer_get_script_errors
70
+ - summer_get_diagnostics (no args, project-wide) — or
71
+ summer_get_script_errors(path="res://...gd") for one specific file
66
72
  - summer_play (the user takes over from here)
67
73
  ```
68
74