summer-engine 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +59 -0
- package/.codex-plugin/plugin.json +38 -0
- package/.cursor-plugin/plugin.json +42 -0
- package/.mcp.json +8 -0
- package/.opencode/plugins/summer.js +49 -0
- package/CHANGELOG.md +67 -0
- package/README.md +13 -0
- package/dist/lib/skills-registry.d.ts +80 -0
- package/dist/lib/skills-registry.js +172 -0
- package/gemini-extension.json +21 -0
- package/hooks/hooks-cursor.json +21 -0
- package/hooks/hooks.json +31 -0
- package/hooks/pre-commit-doctor.sh +123 -0
- package/hooks/run-hook.cmd +23 -0
- package/hooks/session-start.sh +120 -0
- package/marketplace.json +24 -0
- package/package.json +13 -3
- package/skills/_meta/skill-test/SKILL.md +1 -1
- package/skills/_shared/summer-folder.md +44 -0
- package/skills/_tests/specs/art-direction.md +115 -0
- package/skills/_tests/specs/audio-direction.md +123 -0
- package/skills/_tests/specs/brainstorm-game.md +99 -0
- package/skills/_tests/specs/design-level.md +113 -0
- package/skills/_tests/specs/design-mechanic.md +112 -0
- package/skills/_tests/specs/design-npc.md +112 -0
- package/skills/_tests/specs/export-and-ship.md +114 -0
- package/skills/_tests/specs/fps-controller.md +5 -5
- package/skills/_tests/specs/peer-to-peer-multiplayer.md +99 -0
- package/skills/_tests/specs/setup-multiplayer.md +106 -0
- package/skills/_tests/specs/tune-performance.md +104 -0
- package/skills/_tests/specs/vfx.md +98 -0
- package/skills/ai-and-npcs/design-npc/SKILL.md +343 -0
- package/skills/asset-pipeline/asset-strategy/SKILL.md +8 -0
- package/skills/audio/audio-direction/SKILL.md +258 -0
- package/skills/catalog.yaml +82 -0
- package/skills/character-controllers/fps-controller/SKILL.md +27 -0
- package/skills/deployment/export-and-ship/SKILL.md +300 -0
- package/skills/gameplay-mechanics/design-mechanic/SKILL.md +265 -0
- package/skills/level-design/design-level/SKILL.md +266 -0
- package/skills/multiplayer-and-networking/peer-to-peer-multiplayer/SKILL.md +378 -0
- package/skills/multiplayer-and-networking/setup-multiplayer/SKILL.md +328 -0
- package/skills/performance/tune-performance/SKILL.md +219 -0
- package/skills/rendering-and-lighting/3d-lighting/SKILL.md +20 -0
- package/skills/rendering-and-lighting/art-direction/SKILL.md +284 -0
- package/skills/scene-and-project/brainstorm-game/SKILL.md +210 -0
- package/skills/scene-and-project/make-game/SKILL.md +10 -0
- package/skills/scene-and-project/scene-composition/SKILL.md +8 -0
- package/skills/ui-and-ux/ui-basics/SKILL.md +28 -0
- package/skills/visual-effects/vfx/SKILL.md +280 -0
package/skills/catalog.yaml
CHANGED
|
@@ -48,6 +48,13 @@ skills:
|
|
|
48
48
|
public: true
|
|
49
49
|
|
|
50
50
|
# ── gameplay-mechanics ──
|
|
51
|
+
- name: design-mechanic
|
|
52
|
+
category: gameplay-mechanics
|
|
53
|
+
status: HAVE
|
|
54
|
+
public: true
|
|
55
|
+
recommended: true
|
|
56
|
+
user-invocable: true
|
|
57
|
+
last-tested: 2026-05-05
|
|
51
58
|
- name: melee-combat
|
|
52
59
|
category: gameplay-mechanics
|
|
53
60
|
status: NEXT
|
|
@@ -132,6 +139,13 @@ skills:
|
|
|
132
139
|
public: true
|
|
133
140
|
|
|
134
141
|
# ── scene-and-project ──
|
|
142
|
+
- name: brainstorm-game
|
|
143
|
+
category: scene-and-project
|
|
144
|
+
status: HAVE
|
|
145
|
+
public: true
|
|
146
|
+
recommended: true
|
|
147
|
+
user-invocable: true
|
|
148
|
+
last-tested: 2026-05-05
|
|
135
149
|
- name: scene-composition
|
|
136
150
|
category: scene-and-project
|
|
137
151
|
status: HAVE
|
|
@@ -177,6 +191,13 @@ skills:
|
|
|
177
191
|
public: true
|
|
178
192
|
|
|
179
193
|
# ── rendering-and-lighting ──
|
|
194
|
+
- name: art-direction
|
|
195
|
+
category: rendering-and-lighting
|
|
196
|
+
status: HAVE
|
|
197
|
+
public: true
|
|
198
|
+
recommended: true
|
|
199
|
+
user-invocable: true
|
|
200
|
+
last-tested: 2026-05-05
|
|
180
201
|
- name: 3d-lighting
|
|
181
202
|
category: rendering-and-lighting
|
|
182
203
|
status: HAVE
|
|
@@ -255,6 +276,13 @@ skills:
|
|
|
255
276
|
public: true
|
|
256
277
|
|
|
257
278
|
# ── visual-effects ──
|
|
279
|
+
- name: vfx
|
|
280
|
+
category: visual-effects
|
|
281
|
+
status: HAVE
|
|
282
|
+
public: true
|
|
283
|
+
recommended: true
|
|
284
|
+
user-invocable: true
|
|
285
|
+
last-tested: 2026-05-05
|
|
258
286
|
- name: gpuparticles-3d-basics
|
|
259
287
|
category: visual-effects
|
|
260
288
|
status: NEXT
|
|
@@ -333,6 +361,13 @@ skills:
|
|
|
333
361
|
public: true
|
|
334
362
|
|
|
335
363
|
# ── audio ──
|
|
364
|
+
- name: audio-direction
|
|
365
|
+
category: audio
|
|
366
|
+
status: HAVE
|
|
367
|
+
public: true
|
|
368
|
+
recommended: true
|
|
369
|
+
user-invocable: true
|
|
370
|
+
last-tested: 2026-05-05
|
|
336
371
|
- name: audio-bus-setup
|
|
337
372
|
category: audio
|
|
338
373
|
status: NEXT
|
|
@@ -393,6 +428,25 @@ skills:
|
|
|
393
428
|
public: true
|
|
394
429
|
|
|
395
430
|
# ── multiplayer-and-networking ──
|
|
431
|
+
- name: setup-multiplayer
|
|
432
|
+
category: multiplayer-and-networking
|
|
433
|
+
status: HAVE
|
|
434
|
+
public: true
|
|
435
|
+
recommended: true
|
|
436
|
+
user-invocable: true
|
|
437
|
+
last-tested: 2026-05-05
|
|
438
|
+
- name: peer-to-peer-multiplayer
|
|
439
|
+
category: multiplayer-and-networking
|
|
440
|
+
status: NEXT
|
|
441
|
+
public: true
|
|
442
|
+
recommended: true
|
|
443
|
+
user-invocable: true
|
|
444
|
+
- name: host-authoritative-state
|
|
445
|
+
category: multiplayer-and-networking
|
|
446
|
+
status: NEXT
|
|
447
|
+
public: true
|
|
448
|
+
recommended: true
|
|
449
|
+
user-invocable: true
|
|
396
450
|
- name: multiplayerapi-basics
|
|
397
451
|
category: multiplayer-and-networking
|
|
398
452
|
status: NEXT
|
|
@@ -423,6 +477,13 @@ skills:
|
|
|
423
477
|
public: true
|
|
424
478
|
|
|
425
479
|
# ── ai-and-npcs ──
|
|
480
|
+
- name: design-npc
|
|
481
|
+
category: ai-and-npcs
|
|
482
|
+
status: HAVE
|
|
483
|
+
public: true
|
|
484
|
+
recommended: true
|
|
485
|
+
user-invocable: true
|
|
486
|
+
last-tested: 2026-05-05
|
|
426
487
|
- name: navmesh-pathfinding
|
|
427
488
|
category: ai-and-npcs
|
|
428
489
|
status: NEXT
|
|
@@ -453,6 +514,13 @@ skills:
|
|
|
453
514
|
public: true
|
|
454
515
|
|
|
455
516
|
# ── level-design ──
|
|
517
|
+
- name: design-level
|
|
518
|
+
category: level-design
|
|
519
|
+
status: HAVE
|
|
520
|
+
public: true
|
|
521
|
+
recommended: true
|
|
522
|
+
user-invocable: true
|
|
523
|
+
last-tested: 2026-05-05
|
|
456
524
|
- name: gridmap-building
|
|
457
525
|
category: level-design
|
|
458
526
|
status: NEXT
|
|
@@ -479,6 +547,13 @@ skills:
|
|
|
479
547
|
public: true
|
|
480
548
|
|
|
481
549
|
# ── performance ──
|
|
550
|
+
- name: tune-performance
|
|
551
|
+
category: performance
|
|
552
|
+
status: HAVE
|
|
553
|
+
public: true
|
|
554
|
+
recommended: true
|
|
555
|
+
user-invocable: true
|
|
556
|
+
last-tested: 2026-05-05
|
|
482
557
|
- name: profiling-godot
|
|
483
558
|
category: performance
|
|
484
559
|
status: NEXT
|
|
@@ -624,6 +699,13 @@ skills:
|
|
|
624
699
|
public: true
|
|
625
700
|
|
|
626
701
|
# ── deployment ──
|
|
702
|
+
- name: export-and-ship
|
|
703
|
+
category: deployment
|
|
704
|
+
status: HAVE
|
|
705
|
+
public: true
|
|
706
|
+
recommended: true
|
|
707
|
+
user-invocable: true
|
|
708
|
+
last-tested: 2026-05-05
|
|
627
709
|
- name: export-presets
|
|
628
710
|
category: deployment
|
|
629
711
|
status: NEXT
|
|
@@ -131,3 +131,30 @@ For `summer_set_resource_property` on CapsuleShape3D:
|
|
|
131
131
|
- **Falling through floor:** Ensure the floor has a StaticBody3D or similar with a CollisionShape3D
|
|
132
132
|
- **Camera clipping:** If the camera goes inside geometry, enable `near` on the Camera3D or add collision exception
|
|
133
133
|
- **Mouse capture:** For FPS, you typically need `Input.mouse_mode = Input.MOUSE_MODE_CAPTURED` in `_ready()` and a way to release (e.g., Escape)
|
|
134
|
+
|
|
135
|
+
## Fallback (no MCP — edit `.tscn` directly)
|
|
136
|
+
|
|
137
|
+
If Summer MCP isn't connected, write the scene by hand. Save as `res://player.tscn`:
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
[gd_scene load_steps=2 format=3]
|
|
141
|
+
|
|
142
|
+
[sub_resource type="CapsuleShape3D" id="1"]
|
|
143
|
+
radius = 0.4
|
|
144
|
+
height = 1.6
|
|
145
|
+
|
|
146
|
+
[node name="Player" type="CharacterBody3D"]
|
|
147
|
+
position = Vector3(0, 1, 0)
|
|
148
|
+
|
|
149
|
+
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
|
150
|
+
shape = SubResource("1")
|
|
151
|
+
|
|
152
|
+
[node name="Camera3D" type="Camera3D" parent="."]
|
|
153
|
+
position = Vector3(0, 1.6, 0)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Then attach `player.gd` (script body above) via the inspector.
|
|
157
|
+
|
|
158
|
+
## Collaborative protocol
|
|
159
|
+
|
|
160
|
+
This skill writes scene nodes and a `.gd` script. Always ask before applying. Group writes per phase: "May I add the Player + CollisionShape3D + Camera3D, bind WASD/jump InputMap actions, and attach `player.gd`?" See `../../_shared/collaborative-protocol.md`.
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
---
|
|
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".
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: deployment
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools: Read Grep Glob Edit Write summer_get_scene_tree summer_inspect_node summer_project_setting summer_get_console summer_get_diagnostics
|
|
9
|
+
paths: ["**/*.gd", "**/*.tscn", "project.godot", "export_presets.cfg", "**/*.png", "**/*.svg", "**/*.icns", "**/*.ico"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /export-and-ship — Export and Prep Distribution
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
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.
|
|
17
|
+
|
|
18
|
+
**Core principle:** every platform has a list. Read the list, satisfy the list, ship.
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
### 1. Pick the destination(s)
|
|
23
|
+
|
|
24
|
+
Open with the question. Multi-select.
|
|
25
|
+
|
|
26
|
+
> Where to? Pick all that apply: **Steam** / **itch.io** / **web (HTML5)** / **iOS App Store** / **Google Play** / **macOS DMG** / **Windows installer** / **other**.
|
|
27
|
+
|
|
28
|
+
Each destination has a different list. Multiple destinations = multiple lists. Don't shortcut — the iOS list does not satisfy the Steam list.
|
|
29
|
+
|
|
30
|
+
### 2. Run the pre-flight checklist
|
|
31
|
+
|
|
32
|
+
Always do this first, regardless of destination.
|
|
33
|
+
|
|
34
|
+
**Preferred (Summer MCP):**
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
summer_get_diagnostics # any errors? if yes, abort.
|
|
38
|
+
summer_get_console # any "import failed" warnings?
|
|
39
|
+
summer_get_scene_tree # is the main scene set?
|
|
40
|
+
```
|
|
41
|
+
|
|
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.
|
|
43
|
+
|
|
44
|
+
#### Pre-flight blockers (any one = stop)
|
|
45
|
+
|
|
46
|
+
| Check | How | Blocker because |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| Main scene is set | `project.godot` has `application/run/main_scene` | Game launches to nothing without it |
|
|
49
|
+
| No script errors | `summer_get_script_errors` clean | Won't compile in export |
|
|
50
|
+
| No `print()` debug spam in hot loops | `Grep "print(" -- "**/*.gd"` | Spammy console for users |
|
|
51
|
+
| No hardcoded debug paths | `Grep "user://debug" or "/Users/" or "C:\\\\"` | Breaks on user machines |
|
|
52
|
+
| `.gitignore` excludes `.godot/`, `.import/`, `*.tmp` | Read `.gitignore` | Build artifacts in repo |
|
|
53
|
+
| LICENSE file present | Read `LICENSE` at repo root | Steam + itch require licensing clarity |
|
|
54
|
+
| `attribution.md` for community assets | Read `attribution.md` or equivalent | CC-BY assets need credit; missing = takedown risk |
|
|
55
|
+
| Version number set | `application/config/version` in `project.godot` | Required by Steam, useful everywhere |
|
|
56
|
+
| Game name set | `application/config/name` | Window title, build artifact name |
|
|
57
|
+
|
|
58
|
+
If any check fails, list them in one message and ask:
|
|
59
|
+
|
|
60
|
+
> Pre-flight failed on N items: <list>. Fix these before exporting? I can take them one by one.
|
|
61
|
+
|
|
62
|
+
### 3. Per-platform asset requirements
|
|
63
|
+
|
|
64
|
+
Walk the list for each chosen destination. Each is non-negotiable.
|
|
65
|
+
|
|
66
|
+
#### a) Steam
|
|
67
|
+
|
|
68
|
+
| Asset | Resolution | Format | Path / use |
|
|
69
|
+
|---|---|---|---|
|
|
70
|
+
| Game icon | 256×256 | PNG, transparent | Used in Steam library, taskbar |
|
|
71
|
+
| Library capsule | 600×900 | PNG | "Box art" in library grid |
|
|
72
|
+
| Library hero | 3840×1240 | PNG | Wide banner at top of game's library page |
|
|
73
|
+
| Library logo | 1280×720, transparent BG | PNG | Title overlay on hero |
|
|
74
|
+
| Header capsule | 460×215 | PNG | Store search results, friend activity |
|
|
75
|
+
| Main capsule | 616×353 | PNG | Front-page features |
|
|
76
|
+
| Small capsule | 231×87 | PNG | Sidebar |
|
|
77
|
+
| Page background | 1438×810 | JPG | Behind store page content |
|
|
78
|
+
| Screenshots | ≥ 1280×720, 16:9 | PNG/JPG | At least 5 |
|
|
79
|
+
| Trailer | 1080p, MP4, ≤ 2 min | MP4 | Required for Coming Soon → Released |
|
|
80
|
+
| Steam page text | English required + any localized | Markdown / plaintext | Short description (300 chars), full description, controls |
|
|
81
|
+
|
|
82
|
+
Build config for Steam:
|
|
83
|
+
|
|
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.
|
|
85
|
+
- Export options: `Embed PCK = true` for single-EXE distribution.
|
|
86
|
+
- Steam SDK integration: GodotSteam (`https://godotsteam.com`) is the standard. Add the GDExtension before exporting.
|
|
87
|
+
- App ID must be set in the Steam SDK init code.
|
|
88
|
+
- Build separately for each platform; Steam Pipe uploads handle distribution.
|
|
89
|
+
|
|
90
|
+
#### b) itch.io
|
|
91
|
+
|
|
92
|
+
Lower bar than Steam. itch is forgiving.
|
|
93
|
+
|
|
94
|
+
| Asset | Resolution | Required? |
|
|
95
|
+
|---|---|---|
|
|
96
|
+
| Cover image | 630×500 | Yes |
|
|
97
|
+
| Screenshots | Any 16:9 | At least 3 |
|
|
98
|
+
| Game title + tagline | text | Yes |
|
|
99
|
+
| Description | Markdown | Yes |
|
|
100
|
+
| Build files | ZIP per platform OR `butler` upload | Yes |
|
|
101
|
+
|
|
102
|
+
Build config:
|
|
103
|
+
- Export preset: Windows + macOS + Linux; package as ZIP.
|
|
104
|
+
- 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.
|
|
106
|
+
|
|
107
|
+
#### c) Web (HTML5)
|
|
108
|
+
|
|
109
|
+
Browser export. Constraints:
|
|
110
|
+
|
|
111
|
+
- No threading without `cross-origin-isolated` headers (most hosts don't set them).
|
|
112
|
+
- No ENet — use WebSocket / WebRTC if multiplayer.
|
|
113
|
+
- Long initial load — first-paint is critical. Add a loading screen.
|
|
114
|
+
- File size matters — strip unused features in export preset (no encryption, no debugging, no JavaScript eval if not needed).
|
|
115
|
+
|
|
116
|
+
Build config:
|
|
117
|
+
- Export preset: **Web**.
|
|
118
|
+
- Output `.html` + `.wasm` + `.pck` + `.js`.
|
|
119
|
+
- Disable: "Variant: Editor support", "Encryption". Keep: "GLES3 Fallback to GLES2" if targeting old browsers.
|
|
120
|
+
|
|
121
|
+
Known traps:
|
|
122
|
+
- Audio: Chrome blocks autoplay. First user click must trigger audio context resume.
|
|
123
|
+
- Local saves: use `user://` (maps to IndexedDB on web). Test that saves persist across reload.
|
|
124
|
+
|
|
125
|
+
#### d) iOS App Store
|
|
126
|
+
|
|
127
|
+
| Asset | Resolution / Format |
|
|
128
|
+
|---|---|
|
|
129
|
+
| App icon | 1024×1024 PNG (Apple generates the rest) |
|
|
130
|
+
| Launch screen | Storyboard (Godot generates) |
|
|
131
|
+
| Screenshots | 6.5" iPhone: 1242×2688 / 2688×1242 (≥ 3); 12.9" iPad if iPad-eligible |
|
|
132
|
+
| App Store description | text per locale, ≤ 4000 chars |
|
|
133
|
+
| Keywords | ≤ 100 chars, comma-separated |
|
|
134
|
+
| Support URL | required |
|
|
135
|
+
| Privacy policy URL | required (any data collection) |
|
|
136
|
+
|
|
137
|
+
Build config:
|
|
138
|
+
- Export preset: **iOS**.
|
|
139
|
+
- Bundle ID: `com.<your-org>.<game-name>`. Must match Apple Developer portal.
|
|
140
|
+
- Apple Developer account required ($99/year).
|
|
141
|
+
- Code signing: distribution certificate + provisioning profile.
|
|
142
|
+
- Build via macOS only (Xcode toolchain).
|
|
143
|
+
- TestFlight first (always). Don't go straight to App Store review.
|
|
144
|
+
|
|
145
|
+
#### e) Google Play (Android)
|
|
146
|
+
|
|
147
|
+
| Asset | Resolution / Format |
|
|
148
|
+
|---|---|
|
|
149
|
+
| App icon | 512×512 PNG (32-bit, transparent) |
|
|
150
|
+
| Feature graphic | 1024×500 PNG |
|
|
151
|
+
| Phone screenshots | 16:9 or 9:16, ≥ 1080p, ≥ 2 |
|
|
152
|
+
| Tablet screenshots | optional but boosts visibility |
|
|
153
|
+
| App description | text per locale, ≤ 4000 chars |
|
|
154
|
+
| Short description | ≤ 80 chars |
|
|
155
|
+
|
|
156
|
+
Build config:
|
|
157
|
+
- Export preset: **Android**.
|
|
158
|
+
- Build as **AAB** (Android App Bundle), NOT APK — Play Store requires AAB since 2021.
|
|
159
|
+
- Signing: Play App Signing (Google holds the key) + an upload key.
|
|
160
|
+
- Target API level: latest required by Play Store policy (typically the previous year's API level).
|
|
161
|
+
- Test on real device + emulator before submission.
|
|
162
|
+
|
|
163
|
+
#### f) macOS DMG (outside Steam)
|
|
164
|
+
|
|
165
|
+
- Export preset: **macOS** (universal binary).
|
|
166
|
+
- Codesign + notarize via Apple — unsigned builds get a Gatekeeper warning users can't easily bypass.
|
|
167
|
+
- Notarization requires Apple Developer account ($99/year).
|
|
168
|
+
- DMG packaging: `create-dmg` CLI or `hdiutil`.
|
|
169
|
+
|
|
170
|
+
#### g) Windows installer (outside Steam)
|
|
171
|
+
|
|
172
|
+
- Export preset: **Windows Desktop** (x86_64).
|
|
173
|
+
- Code-signing certificate ($75–$300/year from a CA) — without it, SmartScreen flags the EXE.
|
|
174
|
+
- Installer: NSIS or InnoSetup are the standards. Or just ship a ZIP.
|
|
175
|
+
|
|
176
|
+
### 4. Build config consistency check
|
|
177
|
+
|
|
178
|
+
Before producing builds, verify `export_presets.cfg` for each target:
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
Read export_presets.cfg
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
For each preset:
|
|
185
|
+
|
|
186
|
+
| Field | Production value | Why |
|
|
187
|
+
|---|---|---|
|
|
188
|
+
| `binary_format/embed_pck` | `true` | Single EXE per platform |
|
|
189
|
+
| `debug` | `false` | Debug builds leak source paths and run slower |
|
|
190
|
+
| `texture_format/etc2_astc` | `true` for mobile | Smaller texture compression |
|
|
191
|
+
| `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 |
|
|
193
|
+
| `application/icon` | path to your `.ico` / `.icns` / `.png` | Otherwise generic Godot icon ships |
|
|
194
|
+
|
|
195
|
+
### 5. Propose the build sequence
|
|
196
|
+
|
|
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?
|
|
198
|
+
|
|
199
|
+
### 6. Produce the builds
|
|
200
|
+
|
|
201
|
+
Godot's CLI export is the standard scripted path:
|
|
202
|
+
|
|
203
|
+
```
|
|
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
|
+
|
|
212
|
+
For Summer Engine: replace `godot` with `summer` (or the local binary path). Same flags.
|
|
213
|
+
|
|
214
|
+
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
|
+
|
|
216
|
+
### 7. Verify each build
|
|
217
|
+
|
|
218
|
+
For each build:
|
|
219
|
+
- Launch it. Confirm the title screen renders.
|
|
220
|
+
- Run for 30 seconds. Confirm no console errors.
|
|
221
|
+
- Check the file size (anything over 500 MB needs justification — usually unstripped textures or unused assets).
|
|
222
|
+
- For mobile: install on a real device, not just the emulator.
|
|
223
|
+
|
|
224
|
+
### 8. Submit / upload
|
|
225
|
+
|
|
226
|
+
Per platform, point the user at the correct upload path:
|
|
227
|
+
|
|
228
|
+
- **Steam:** `steamcmd` + Steam Pipe (`builder_app_xxx.vdf`). Set up depots first in Steamworks.
|
|
229
|
+
- **itch.io:** `butler push <path> <user>/<game>:<channel>` (e.g. `butler push build/win <user>/mygame:windows`).
|
|
230
|
+
- **Web (itch hosted):** zip + drop into itch upload UI as "playable in browser".
|
|
231
|
+
- **iOS:** Archive in Xcode → upload via Xcode Organizer → TestFlight → App Store.
|
|
232
|
+
- **Android:** Play Console → Internal testing → Closed → Open → Production.
|
|
233
|
+
|
|
234
|
+
Skill does NOT execute these uploads itself. It produces the builds and points at the right command.
|
|
235
|
+
|
|
236
|
+
## Pre-flight checklist (master)
|
|
237
|
+
|
|
238
|
+
Use this as a one-shot grep before any export:
|
|
239
|
+
|
|
240
|
+
| Check | Pass condition |
|
|
241
|
+
|---|---|
|
|
242
|
+
| Main scene set | `project.godot` has `application/run/main_scene = "res://..."` |
|
|
243
|
+
| No script errors | `summer_get_script_errors` empty |
|
|
244
|
+
| No debug `print()` spam | Grep returns < 20 hits across project (or each is intentional) |
|
|
245
|
+
| No hardcoded user paths | Grep for `/Users/`, `C:\\`, `/home/` returns 0 hits |
|
|
246
|
+
| Version number set | `application/config/version = "1.0.0"` (or higher) |
|
|
247
|
+
| Game name set | `application/config/name = "<actual name>"` |
|
|
248
|
+
| Icon assets present | Per-platform icon files exist at the paths referenced in `export_presets.cfg` |
|
|
249
|
+
| LICENSE file | Exists at repo root |
|
|
250
|
+
| Attribution file | Exists if any community assets used |
|
|
251
|
+
| Export preset `debug = false` | For all release presets |
|
|
252
|
+
| Export preset `embed_pck = true` | For all desktop release presets |
|
|
253
|
+
| `.gitignore` excludes build artifacts | `build/`, `.godot/`, `.import/`, `*.tmp` listed |
|
|
254
|
+
| Screenshots ≥ minimum count for platform | 3 for itch, 5 for Steam, 2 for Play |
|
|
255
|
+
| No leftover dev assets in `res://` | No `_test_`, `_old_`, `_temp_` files in the export paths |
|
|
256
|
+
|
|
257
|
+
## Common mistakes
|
|
258
|
+
|
|
259
|
+
| Don't | Do | Why |
|
|
260
|
+
|---|---|---|
|
|
261
|
+
| Ship debug builds to Steam | `debug = false` in release export preset | Slower, leaks paths, larger |
|
|
262
|
+
| Use 256×256 icon for iOS | 1024×1024 (Apple downscales) | iOS rejects undersized icons |
|
|
263
|
+
| Skip Steam trailer | Record at least 30 sec gameplay before launch | Steam blocks the release without it |
|
|
264
|
+
| Ship APK to Play Store | Build AAB | Play requires AAB since 2021 |
|
|
265
|
+
| Skip code-signing on macOS / Windows | Get a cert; without it, users can't run the build | Gatekeeper / SmartScreen blocks unsigned binaries |
|
|
266
|
+
| Skip notarization on macOS | Notarize after signing | Quarantined apps can't run on most modern macOS |
|
|
267
|
+
| Ship without `LICENSE` | Add MIT or commercial license to repo root | Steam + itch + most platforms require it |
|
|
268
|
+
| Forget attribution for CC-BY assets | `attribution.md` listing each asset's source + license | Otherwise = takedown notice + ban |
|
|
269
|
+
| Auto-upload via skill | Produce builds; user uploads | Uploads have side effects (versioning, refunds, metadata changes) |
|
|
270
|
+
| Push 1.0.0 first | Push 0.9.0 internal first, then 1.0.0 to public | Internal testing catches the embarrassing-launch-day bugs |
|
|
271
|
+
| Same build for all stores | Per-store metadata + separate upload | Steam wants `.exe`, Play wants `.aab`, web wants `.html` |
|
|
272
|
+
|
|
273
|
+
## Anti-patterns
|
|
274
|
+
|
|
275
|
+
- **"Just enable all export options."** Encryption + JS eval + edit-time features bloat the binary. Disable what you don't use.
|
|
276
|
+
- **"I'll fix the icon later."** Apple and Google reject submissions with placeholder icons. They'll take a week to re-review.
|
|
277
|
+
- **Unsigned macOS builds outside Steam.** Apple Gatekeeper is strict. The user-facing workaround ("right-click → Open → confirm") is bad UX.
|
|
278
|
+
- **Embed PCK = false on desktop.** Splits the binary into multiple files; users delete the PCK by accident; bad first-run experience.
|
|
279
|
+
- **Trailer is a slideshow.** Steam's algorithm down-weights gameplay-less trailers. Show actual gameplay in the first 5 seconds.
|
|
280
|
+
|
|
281
|
+
## Collaborative protocol
|
|
282
|
+
|
|
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 `_shared/collaborative-protocol.md`.
|
|
284
|
+
|
|
285
|
+
## Want a working starter?
|
|
286
|
+
|
|
287
|
+
No template — this is a workflow. Each project's export config and store assets are project-specific. For the Steam-specific GodotSteam GDExtension setup, see `deployment/steam-uploader/SKILL.md` (when shipped).
|
|
288
|
+
|
|
289
|
+
## See also
|
|
290
|
+
|
|
291
|
+
- `_shared/mcp-tools-reference.md` — full MCP tool list
|
|
292
|
+
- `_shared/godot-version.md` — Godot 4.5 export-template versioning
|
|
293
|
+
- `_shared/collaborative-protocol.md` — "May I write" pattern
|
|
294
|
+
- `deployment/export-presets/SKILL.md` — preset config deep dive
|
|
295
|
+
- `deployment/web-html5-export/SKILL.md` — HTML5-specific traps
|
|
296
|
+
- `deployment/steam-uploader/SKILL.md` — `steamcmd` + GodotSteam (when shipped)
|
|
297
|
+
- `deployment/itch-uploader/SKILL.md` — `butler` workflow (when shipped)
|
|
298
|
+
- `deployment/mobile-export/SKILL.md` — iOS / Android specifics (when shipped)
|
|
299
|
+
- `asset-pipeline/attribution-and-licensing/SKILL.md` — community asset attribution
|
|
300
|
+
- `performance/tune-performance/SKILL.md` — pre-ship performance pass
|