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
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: art-direction
|
|
3
|
+
description: Use when defining the visual style of the game — references, palette, mood, lighting plan, post-processing, do/don't list. Outputs an art bible at `.summer/art-bible.md`. Trigger on "art direction", "art bible", "visual style", "color palette", "what should it look like", "the look".
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: rendering-and-lighting
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools: Read Grep Glob Write Edit summer_get_project_context summer_project_setting summer_inspect_node summer_set_prop
|
|
9
|
+
paths: [".summer/**", "project.godot", "**/*.tscn"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /art-direction — Define the Visual Style
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
A consistent art direction is what makes a low-budget game *look* like a finished game. Most solo devs lose this fight by mixing styles — a toon-shaded character on a photoreal terrain, a pixel UI over a smooth 3D world. This skill builds an art bible the rest of the project obeys: references, palette, mood, lighting plan, post-processing, and a do/don't list. It writes to `.summer/art-bible.md` — the file every rendering / shader / lighting / VFX skill reads later.
|
|
17
|
+
|
|
18
|
+
**Core principle:** Constraint produces style. A game with **15 colors total** looks more intentional than a game with infinite-color textures. Pick the constraint, then defend it.
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
### 1. Open with references
|
|
23
|
+
|
|
24
|
+
Ask exactly this:
|
|
25
|
+
|
|
26
|
+
> Two or three references — games, films, art books, anything visual. What's the vibe?
|
|
27
|
+
|
|
28
|
+
Don't suggest. Listen. References are the single most reliable signal of what they actually want. If they say one game, ask for one more — single-reference art bibles converge into a clone of that game.
|
|
29
|
+
|
|
30
|
+
If they freeze, offer 4 axes (not games):
|
|
31
|
+
|
|
32
|
+
> Pick the one that feels right: a) painterly + warm + handcrafted (Sable, Tunic), b) crisp + saturated + toon (Hi-Fi Rush, Splatoon), c) dark + moody + grounded (Dishonored, Inside), d) lo-fi + nostalgic + crunchy (Dusk, Faith).
|
|
33
|
+
|
|
34
|
+
### 2. Read the brief if it exists
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Read .summer/GameSoul.md
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Brief might say "horror" — that constrains palette and lighting. Brief might say "cozy" — that *forbids* harsh contrast. Quote it back:
|
|
41
|
+
|
|
42
|
+
> Brief is "cozy farming sim". That rules out harsh shadows and saturated reds. Confirming.
|
|
43
|
+
|
|
44
|
+
### 3. Pin the rendering technique
|
|
45
|
+
|
|
46
|
+
This is the technique question, not the mood question. Force a choice:
|
|
47
|
+
|
|
48
|
+
| Technique | When | Pro | Con |
|
|
49
|
+
|---|---|---|---|
|
|
50
|
+
| Toon / cel-shaded | Stylized 3D, expressive characters | Forgiving on textures, ages well | Can feel generic without strong palette |
|
|
51
|
+
| PBR realistic | Grounded sim, horror, military | Lighting does the work | Asset cost is brutal solo |
|
|
52
|
+
| Lo-fi PS1 | Nostalgia, horror, indie cred | Tiny assets, fast iteration | Niche audience appeal |
|
|
53
|
+
| Flat / matte | Minimalist puzzle, casual | Cheapest to author | Limited mood range |
|
|
54
|
+
| Painterly (textured-shaded) | Story-led, fantasy | Distinctive | Requires consistent texture authoring |
|
|
55
|
+
| 2D pixel | Retro, platformer, RPG | Mature pipeline | Animation cost scales fast |
|
|
56
|
+
| 2D hand-drawn | Narrative, indie | Distinctive, expressive | Animation cost extreme |
|
|
57
|
+
|
|
58
|
+
Ask:
|
|
59
|
+
|
|
60
|
+
> One technique. Which is it?
|
|
61
|
+
|
|
62
|
+
If they pick more than one ("PBR characters in a toon world"), name the conflict and force a hierarchy:
|
|
63
|
+
|
|
64
|
+
> Mixed techniques rarely cohere. If you mean "stylized PBR with toon outlines" — that's one technique (PBR + post-process outline). If you mean "toon characters in a PBR world" — that's two, and they'll fight. Pick one as primary.
|
|
65
|
+
|
|
66
|
+
### 4. Build the palette
|
|
67
|
+
|
|
68
|
+
A palette is **6-15 colors** total. Not a vibe, not "warm tones" — actual hex codes. Force it.
|
|
69
|
+
|
|
70
|
+
Walk:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
Primary background — what color does the screen mostly read as?
|
|
74
|
+
Secondary background — second most common?
|
|
75
|
+
Accent — what does the player's eye go to?
|
|
76
|
+
Warning / damage — what reads as bad?
|
|
77
|
+
Reward / pickup — what reads as good?
|
|
78
|
+
UI base — text, frames
|
|
79
|
+
UI emphasis — buttons, callouts
|
|
80
|
+
Skin / character — if applicable
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
State candidates as hex. For a "cozy farming" game:
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
#3a4a3a primary BG (deep moss green)
|
|
87
|
+
#5e6f4f secondary BG (sage)
|
|
88
|
+
#e6c068 accent (golden wheat)
|
|
89
|
+
#a83e3e warning (warm red, not pure red)
|
|
90
|
+
#c8a268 reward (warm tan)
|
|
91
|
+
#1f1a16 UI base (warm near-black, NOT pure black)
|
|
92
|
+
#f4ecdf UI text (cream, NOT pure white)
|
|
93
|
+
#e3b08a skin warm
|
|
94
|
+
#a8784f skin cool
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Pure white (#ffffff) and pure black (#000000) are almost always wrong — they break the palette. Flag it if the user pitches them.
|
|
98
|
+
|
|
99
|
+
Ask:
|
|
100
|
+
|
|
101
|
+
> Palette above. Adjust any, or lock it?
|
|
102
|
+
|
|
103
|
+
### 5. Define the mood adjectives
|
|
104
|
+
|
|
105
|
+
Three to five adjectives. Concrete, not vague.
|
|
106
|
+
|
|
107
|
+
Bad: "cool, atmospheric, immersive."
|
|
108
|
+
Good: "soft, hand-warmed, slightly melancholic, golden-hour."
|
|
109
|
+
|
|
110
|
+
Ask:
|
|
111
|
+
|
|
112
|
+
> Three to five adjectives that aren't 'cool' or 'atmospheric'. Pick from concrete sensory words.
|
|
113
|
+
|
|
114
|
+
### 6. Write the lighting plan
|
|
115
|
+
|
|
116
|
+
State the plan in one block. For Godot 4.5:
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
Sun: DirectionalLight3D, color #fff2d9, energy 0.9, angle ~30° (warm low-angle)
|
|
120
|
+
Sky: ProceduralSkyMaterial, sky_top_color #6b88a3, sky_horizon_color #d8b88e
|
|
121
|
+
Ambient: AmbientLight #4a5570, energy 0.15
|
|
122
|
+
Indoor fills: OmniLight3D color #ffd9a8, energy 0.6, range 4m
|
|
123
|
+
NEVER: pure-white DirectionalLight, no ambient, hard cube shadows
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
For 2D:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Base: CanvasModulate #f4ecdf, gentle warm wash
|
|
130
|
+
Accent: PointLight2D for fireflies / lanterns, color from accent palette
|
|
131
|
+
NEVER: full-bright modulation, no soft falloff
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 7. Define post-processing rules
|
|
135
|
+
|
|
136
|
+
Godot 4.5 post stack: Glow, SDFGI, SSAO, SSR, Adjustments, Color Correction (LUT). State opinions, not options.
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
Glow: ON, threshold 0.9, intensity 0.5 (soft bloom on highlights only)
|
|
140
|
+
SDFGI: OFF for vertical-slice scope (perf cost; bake light probes later)
|
|
141
|
+
SSAO: ON, light_affect 0.3 (just enough for grounding)
|
|
142
|
+
SSR: OFF unless we have wet/glass surfaces
|
|
143
|
+
Color correction: Filmic tonemap, slight S-curve LUT toward warm
|
|
144
|
+
Vignette (custom shader): ON, subtle, 0.15 strength
|
|
145
|
+
Chromatic aberration: OFF (overused, looks cheap)
|
|
146
|
+
Film grain: ON only if mood adjective is "lo-fi" or "vintage"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Make these calls. Don't enumerate options.
|
|
150
|
+
|
|
151
|
+
### 8. Build the do / don't list
|
|
152
|
+
|
|
153
|
+
This is the contract. Five do's, five don'ts. Specific, enforceable.
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
## DO
|
|
157
|
+
- All colors come from the palette. New asset? Pick the closest existing color, don't invent.
|
|
158
|
+
- Outline shader on character + interactable props (no outline on environment).
|
|
159
|
+
- Soft shadows (DirectionalLight3D shadow_blur 1.5).
|
|
160
|
+
- Warm key + cool fill — never both warm or both cool.
|
|
161
|
+
- Texture filter: Linear with mipmaps OFF for crunchy near-pixel feel.
|
|
162
|
+
|
|
163
|
+
## DON'T
|
|
164
|
+
- No pure white (#ffffff). Use #f4ecdf.
|
|
165
|
+
- No pure black (#000000). Use #1f1a16.
|
|
166
|
+
- No realistic photo-textures. All textures must read as "painted" at 1m distance.
|
|
167
|
+
- No procedural sky shaders mid-day with full sun — too generic. Always angle the sun.
|
|
168
|
+
- No chromatic aberration / lens flare / motion blur — they're cheap and date-fast.
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
### 9. Apply Godot project-level settings
|
|
172
|
+
|
|
173
|
+
Some art-direction calls translate to `project.godot` settings. Apply them.
|
|
174
|
+
|
|
175
|
+
**Preferred (Summer MCP):**
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
summer_project_setting(key="rendering/textures/canvas_textures/default_texture_filter", value="2") # Linear no mipmaps if pixel-art-ish
|
|
179
|
+
summer_project_setting(key="rendering/environment/defaults/default_clear_color", value="Color(0.227, 0.290, 0.227)") # palette primary
|
|
180
|
+
summer_project_setting(key="rendering/anti_aliasing/quality/msaa_3d", value="2") # MSAA 2x for clean edges
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
If a `WorldEnvironment` node is in the main scene, set its environment defaults to match the lighting plan:
|
|
184
|
+
|
|
185
|
+
```
|
|
186
|
+
summer_inspect_node(path="./World/WorldEnvironment")
|
|
187
|
+
summer_set_prop(path="./World/WorldEnvironment/...", key="...", value="...")
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Ask before each:
|
|
191
|
+
|
|
192
|
+
> May I update `project.godot`'s default clear color to the palette primary, and enable MSAA 2x?
|
|
193
|
+
|
|
194
|
+
**Fallback (no MCP):** print the `project.godot` snippet for the user to paste.
|
|
195
|
+
|
|
196
|
+
### 10. Save the art bible
|
|
197
|
+
|
|
198
|
+
Always write the bible. Path: `.summer/art-bible.md`.
|
|
199
|
+
|
|
200
|
+
```markdown
|
|
201
|
+
# Art Bible — <Game Name>
|
|
202
|
+
|
|
203
|
+
**References:** <2-3 specific games / films>
|
|
204
|
+
**Technique:** <one of the 7 above>
|
|
205
|
+
**Mood:** <3-5 concrete adjectives>
|
|
206
|
+
|
|
207
|
+
## Palette
|
|
208
|
+
| Hex | Role |
|
|
209
|
+
|---|---|
|
|
210
|
+
| #3a4a3a | Primary BG |
|
|
211
|
+
| #5e6f4f | Secondary BG |
|
|
212
|
+
| ... | ... |
|
|
213
|
+
|
|
214
|
+
## Lighting plan
|
|
215
|
+
- Sun: DirectionalLight3D, color #fff2d9, energy 0.9
|
|
216
|
+
- Sky: ProceduralSkyMaterial top #6b88a3, horizon #d8b88e
|
|
217
|
+
- Ambient: #4a5570 energy 0.15
|
|
218
|
+
- Indoor fills: OmniLight3D color #ffd9a8 range 4m
|
|
219
|
+
- NEVER: pure-white sun, no ambient
|
|
220
|
+
|
|
221
|
+
## Post-processing
|
|
222
|
+
- Glow: ON, threshold 0.9
|
|
223
|
+
- SDFGI: OFF (vertical-slice scope)
|
|
224
|
+
- SSAO: ON, 0.3
|
|
225
|
+
- SSR: OFF
|
|
226
|
+
- Tonemap: Filmic
|
|
227
|
+
- Vignette: subtle 0.15
|
|
228
|
+
- Chromatic aberration: OFF
|
|
229
|
+
|
|
230
|
+
## DO
|
|
231
|
+
- ...
|
|
232
|
+
|
|
233
|
+
## DON'T
|
|
234
|
+
- ...
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Ask:
|
|
238
|
+
|
|
239
|
+
> May I create `.summer/art-bible.md` with this bible?
|
|
240
|
+
|
|
241
|
+
### 11. Route to the next step
|
|
242
|
+
|
|
243
|
+
End with:
|
|
244
|
+
|
|
245
|
+
> Bible saved. Next:
|
|
246
|
+
> - `/summer:audio-direction` to define the sonic identity that pairs with this look.
|
|
247
|
+
> - `/summer:vfx` to design particle / hit-feedback styles within the palette.
|
|
248
|
+
> - Open the project's `WorldEnvironment` node and dial in the lighting plan.
|
|
249
|
+
> - Or generate first-pass concept assets via `summer_generate_image` using the palette + mood as the prompt prefix.
|
|
250
|
+
|
|
251
|
+
## Common mistakes
|
|
252
|
+
|
|
253
|
+
| Mistake | Fix |
|
|
254
|
+
|---|---|
|
|
255
|
+
| Vague palette ("warm tones") | Hex codes only. 6-15 of them. Locked. |
|
|
256
|
+
| Pure white / pure black | Off-white (#f4ecdf) and off-black (#1f1a16). Pure values blow out the palette. |
|
|
257
|
+
| Single reference | At least two references. Single = clone. |
|
|
258
|
+
| Mixing techniques | Toon characters in a PBR world fight. Pick one technique, stick to it. |
|
|
259
|
+
| No "DON'T" list | The DON'T list is the actual contract. The DO is aspirational. |
|
|
260
|
+
| Chromatic aberration / motion blur | Cheap, overused, date-fast. Off by default. |
|
|
261
|
+
| Procedural skybox without angle | Mid-day sun + uniform fog reads generic. Always angle the sun. |
|
|
262
|
+
| Skipping the lighting plan | Lighting *is* art direction in 3D. Without a plan, every level looks different. |
|
|
263
|
+
| Adopting "AAA realism" at vertical-slice scope | Asset cost is brutal solo. Stylized always wins. |
|
|
264
|
+
| Calling SetResourceProperty on inline sub_resources | Silent fail. See `_shared/mcp-tools-reference.md` § Trap. |
|
|
265
|
+
|
|
266
|
+
## Collaborative protocol
|
|
267
|
+
|
|
268
|
+
This skill writes one design doc (`.summer/art-bible.md`) and may modify `project.godot` settings + the main scene's `WorldEnvironment`. Always ask. See `_shared/collaborative-protocol.md`.
|
|
269
|
+
|
|
270
|
+
## Want a working starter?
|
|
271
|
+
|
|
272
|
+
No template — this is a workflow that produces the bible the rest of the project obeys. After the bible exists, every `summer:` rendering / lighting / shader / VFX skill reads it.
|
|
273
|
+
|
|
274
|
+
## See also
|
|
275
|
+
|
|
276
|
+
- `_shared/collaborative-protocol.md`
|
|
277
|
+
- `_shared/godot-version.md` — Godot 4.5 rendering API notes (Compositor moved in 4.4 / 4.5)
|
|
278
|
+
- `_shared/mcp-tools-reference.md`
|
|
279
|
+
- `scene-and-project/brainstorm-game/SKILL.md` — produces the brief that anchors the bible
|
|
280
|
+
- `audio/audio-direction/SKILL.md` — the sonic counterpart
|
|
281
|
+
- `rendering-and-lighting/3d-lighting/SKILL.md` — implements the lighting plan
|
|
282
|
+
- `shaders/shader-basics/SKILL.md` — for outline / toon shaders
|
|
283
|
+
- `post-processing/bloom-and-glow/SKILL.md` — implements the glow rule
|
|
284
|
+
- `post-processing/color-grading/SKILL.md` — implements the LUT and tonemap call
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: brainstorm-game
|
|
3
|
+
description: Use when the user wants help deciding what game to make, scoping a new project, or turning a vague idea into a buildable plan. Walks through genre, scope, core loop, mechanics, and art direction, then writes a 1-page brief to `.summer/GameSoul.md`. Trigger on "brainstorm a game", "what should I make", "I want to make a game", "help me scope", "new game idea".
|
|
4
|
+
license: MIT
|
|
5
|
+
compatibility: [Cursor, Claude Code, Windsurf, Codex]
|
|
6
|
+
category: scene-and-project
|
|
7
|
+
user-invocable: true
|
|
8
|
+
allowed-tools: Read Grep Glob Write Edit summer_get_project_context summer_get_scene_tree
|
|
9
|
+
paths: [".summer/**", "project.godot", "**/*.md"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# /brainstorm-game — Decide What Game to Build
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
Most game projects fail because they were never scoped. This skill turns "I want to make a game" into a 1-page brief that names the pitch, the core loop, three mechanics max, the art direction, and the scope (jam / vertical slice / full game). The brief lands at `.summer/GameSoul.md` — the file Summer's onboarding pipeline and every future `summer:` skill reads on first turn.
|
|
17
|
+
|
|
18
|
+
**Core principle:** Constrain ruthlessly. A buildable bad idea beats an un-buildable great idea. Three mechanics, one art direction, one scope. Anything else gets parked in a "Later" list.
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
### 1. Open with the one question
|
|
23
|
+
|
|
24
|
+
Ask exactly this and wait:
|
|
25
|
+
|
|
26
|
+
> One sentence — what kind of game do you want to make?
|
|
27
|
+
|
|
28
|
+
Don't pre-pitch genres. Don't list options. Read what they say. The first sentence is signal.
|
|
29
|
+
|
|
30
|
+
If they freeze ("I don't know"), offer 4 reference points only:
|
|
31
|
+
|
|
32
|
+
> No worries. Pick the one that pulls you most: a) something cozy and exploratory (Stardew, A Short Hike), b) something tight and skill-based (Celeste, Hades), c) something story-led (Disco Elysium, Citizen Sleeper), d) something silly and short (Goat Sim, Untitled Goose). Or describe a different vibe.
|
|
33
|
+
|
|
34
|
+
### 2. Branch on genre signal
|
|
35
|
+
|
|
36
|
+
Read their answer for a genre anchor and pick **one** branch. Don't ask multiple questions in parallel.
|
|
37
|
+
|
|
38
|
+
| Anchor word(s) | Branch |
|
|
39
|
+
|---|---|
|
|
40
|
+
| "shooter", "FPS", "TPS", "combat" | Action-Combat branch |
|
|
41
|
+
| "platformer", "metroidvania", "souls-like" | Skill-Platforming branch |
|
|
42
|
+
| "RPG", "story", "narrative", "dialogue" | Narrative branch |
|
|
43
|
+
| "roguelike", "deckbuilder", "auto-battler" | Run-Based branch |
|
|
44
|
+
| "sim", "cozy", "farming", "city-builder" | Sim branch |
|
|
45
|
+
| "puzzle", "physics", "sandbox" | Puzzle branch |
|
|
46
|
+
| "horror", "atmospheric" | Horror branch |
|
|
47
|
+
| "multiplayer", "PvP", "co-op" | Multiplayer branch (forces the multiplayer-or-not call before scope) |
|
|
48
|
+
|
|
49
|
+
If unclear, ask the smallest disambiguating question:
|
|
50
|
+
|
|
51
|
+
> Tighter on this — is it more "tense and dangerous" or "calm and exploratory"?
|
|
52
|
+
|
|
53
|
+
### 3. Pin the core loop
|
|
54
|
+
|
|
55
|
+
A core loop is what the player does for 30 seconds, repeated. State a candidate and ask them to refine. Examples per branch:
|
|
56
|
+
|
|
57
|
+
| Branch | Candidate core loop |
|
|
58
|
+
|---|---|
|
|
59
|
+
| Action-Combat | "Enter room, read enemy patterns, kill, loot, advance." |
|
|
60
|
+
| Skill-Platforming | "See obstacle, attempt, fail, learn, retry, clear, next." |
|
|
61
|
+
| Narrative | "Walk to character, choose dialogue, see consequence, walk to next." |
|
|
62
|
+
| Run-Based | "Pick a card/weapon/build, fight, die, unlock, repeat with edge." |
|
|
63
|
+
| Sim | "Plan day, execute, harvest reward, plan next day." |
|
|
64
|
+
| Puzzle | "See state, form theory, test, observe, solve or rethink." |
|
|
65
|
+
| Horror | "Hear cue, locate threat, hide or flee, advance space." |
|
|
66
|
+
|
|
67
|
+
State your candidate. Ask:
|
|
68
|
+
|
|
69
|
+
> The 30-second loop I'm hearing: <candidate>. Does that match what you have in your head, or is the actual moment-to-moment different?
|
|
70
|
+
|
|
71
|
+
### 4. Constrain to three mechanics maximum
|
|
72
|
+
|
|
73
|
+
Force the trade. State the rule:
|
|
74
|
+
|
|
75
|
+
> Three mechanics, no more. What are the three things this game has that other games in this genre don't?
|
|
76
|
+
|
|
77
|
+
If they pitch five, push back. Not "we'll add it later" — actually cut. Two examples for them to react to:
|
|
78
|
+
|
|
79
|
+
> Hades has three: dash-attack-cast, room reward choice, and run-end conversation. Everything else (mirror upgrades, weapon variants, bosses) is content built on those three. What are yours?
|
|
80
|
+
|
|
81
|
+
Common new-dev mistake: listing features ("inventory, crafting, quests") instead of mechanics ("a single resource that's both currency and ammo"). Push them toward verbs and decisions, not nouns and systems.
|
|
82
|
+
|
|
83
|
+
### 5. Pick an art direction in one phrase
|
|
84
|
+
|
|
85
|
+
Not a paragraph. Examples to anchor:
|
|
86
|
+
|
|
87
|
+
- "Lo-fi PS1 polygons + dithered shader"
|
|
88
|
+
- "Hand-drawn 2D, single bold outline, 4-color palette"
|
|
89
|
+
- "Toon-shaded Nintendo-bright, no realistic lighting"
|
|
90
|
+
- "Pixel art, 16x16 tiles, GameBoy 4-shade green"
|
|
91
|
+
|
|
92
|
+
Ask:
|
|
93
|
+
|
|
94
|
+
> One phrase for the look. If a stranger asked your screenshot's style in 6 words, what do you say?
|
|
95
|
+
|
|
96
|
+
Don't go deeper here — `/summer:art-direction` is where the bible gets built. This is one phrase to seed it.
|
|
97
|
+
|
|
98
|
+
### 6. Pin the scope
|
|
99
|
+
|
|
100
|
+
State the choices flat:
|
|
101
|
+
|
|
102
|
+
> Scope. Pick one: (a) a 4-hour jam-sized prototype — one mechanic, one level, one art direction, ships in a weekend. (b) a vertical slice — 30-60 minutes of polished play that proves the core loop, ships in 2-4 weeks. (c) a full game — 4-20 hours of content, ships in 6+ months.
|
|
103
|
+
|
|
104
|
+
If they flinch at (c), recommend (b). New devs almost always overestimate scope. Default recommendation if they're unsure: **vertical slice**.
|
|
105
|
+
|
|
106
|
+
### 7. Sanity-check the combination
|
|
107
|
+
|
|
108
|
+
Do this in your head, not out loud unless something fails:
|
|
109
|
+
|
|
110
|
+
- Is the core loop achievable with the three mechanics + the chosen art direction in the chosen scope? If not, name what has to flex (usually scope down or merge two mechanics into one).
|
|
111
|
+
- Is there a hidden multiplayer requirement? ("4-player" or "co-op" anywhere = stop, multiplayer is its own scope explosion.)
|
|
112
|
+
- Is the art direction generatable / sourceable for a solo dev? (Photoreal 3D for a 4-week vertical slice is a red flag.)
|
|
113
|
+
|
|
114
|
+
If you spot a problem, raise it once, plainly:
|
|
115
|
+
|
|
116
|
+
> One concern: <X>. Suggest <flex Y>. OK or do you want to push through anyway?
|
|
117
|
+
|
|
118
|
+
### 8. Draft the brief
|
|
119
|
+
|
|
120
|
+
Compose the 1-page brief. Format:
|
|
121
|
+
|
|
122
|
+
```markdown
|
|
123
|
+
# <Game Name or "Untitled">
|
|
124
|
+
|
|
125
|
+
**Pitch:** <One sentence the player would tell a friend.>
|
|
126
|
+
|
|
127
|
+
**Core loop (30s):** <What the player does, repeated.>
|
|
128
|
+
|
|
129
|
+
**Three mechanics:**
|
|
130
|
+
1. <Verb-led: "Parry to convert damage into mana" not "Combat system">
|
|
131
|
+
2. <…>
|
|
132
|
+
3. <…>
|
|
133
|
+
|
|
134
|
+
**Art direction (one phrase):** <…>
|
|
135
|
+
|
|
136
|
+
**Scope:** <Jam | Vertical slice | Full game>
|
|
137
|
+
|
|
138
|
+
**Win condition:** <How the player knows they succeeded — ending? Score? Unlock?>
|
|
139
|
+
|
|
140
|
+
**One thing this is NOT:** <Define by negation. Cuts scope creep later.>
|
|
141
|
+
|
|
142
|
+
**Inspirations:** <2-4 specific games, films, or images.>
|
|
143
|
+
|
|
144
|
+
**Parked for later:** <Things they pitched that didn't make the three.>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 9. Ask permission and write
|
|
148
|
+
|
|
149
|
+
**Preferred (Summer MCP + host file write):**
|
|
150
|
+
|
|
151
|
+
> May I create `.summer/GameSoul.md` with this brief?
|
|
152
|
+
|
|
153
|
+
On yes, use `Write` (host file tool) — `.summer/GameSoul.md` is plain markdown, no engine import needed:
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
Write .summer/GameSoul.md
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
If `.summer/GameSoul.md` already exists, read it first, show what would change, ask:
|
|
160
|
+
|
|
161
|
+
> `.summer/GameSoul.md` already exists. May I overwrite it, or merge into a "Revision 2" section below the existing brief?
|
|
162
|
+
|
|
163
|
+
**Fallback (no host write tool — agent is read-only):**
|
|
164
|
+
|
|
165
|
+
Print the full brief to the user with the explicit instruction:
|
|
166
|
+
|
|
167
|
+
> Save this as `.summer/GameSoul.md` in your project root. Every Summer skill reads it.
|
|
168
|
+
|
|
169
|
+
### 10. Route to the next step
|
|
170
|
+
|
|
171
|
+
End every successful brainstorm with a routing question:
|
|
172
|
+
|
|
173
|
+
> Brief saved. Next step:
|
|
174
|
+
> - `/summer:design-mechanic` — design the core loop in detail (recommended for vertical slice).
|
|
175
|
+
> - `/summer:design-level` — sketch level 1 / the tutorial.
|
|
176
|
+
> - `/summer:art-direction` — turn the one-phrase look into an art bible.
|
|
177
|
+
> - Or pick up `/summer:make-game` to start scaffolding the project.
|
|
178
|
+
|
|
179
|
+
Don't auto-pick. Let them decide.
|
|
180
|
+
|
|
181
|
+
## Anti-patterns (don't do these)
|
|
182
|
+
|
|
183
|
+
| Anti-pattern | Why it fails |
|
|
184
|
+
|---|---|
|
|
185
|
+
| Asking 6 questions in a row before any branching | User feels interviewed, not collaborated with. Branch after each answer. |
|
|
186
|
+
| Letting them list 5+ mechanics | Three is the constraint. Without the constraint, the brief is useless. |
|
|
187
|
+
| Skipping the "one thing this is NOT" line | This is the single best scope-protection in the brief. Future "let's add X" gets compared against it. |
|
|
188
|
+
| Writing the brief without showing it first | They have to react to it. They'll catch their own bad fits when they read it back. |
|
|
189
|
+
| Defaulting to "full game" scope | New devs overestimate. Default to vertical slice; let them upgrade if they push. |
|
|
190
|
+
| Pitching a genre they didn't ask for | The first sentence they typed is signal. Don't override it. |
|
|
191
|
+
| Including art direction details | One phrase. Bible-building is `/summer:art-direction`. |
|
|
192
|
+
| Saving without asking | Always ask "May I create `.summer/GameSoul.md`?" — see collaborative-protocol. |
|
|
193
|
+
|
|
194
|
+
## Collaborative protocol
|
|
195
|
+
|
|
196
|
+
This skill writes one file (`.summer/GameSoul.md`). Always ask before writing. Always show the brief inline before saving so the user can react. See `_shared/collaborative-protocol.md`.
|
|
197
|
+
|
|
198
|
+
## Want a working starter?
|
|
199
|
+
|
|
200
|
+
No template — this is a workflow that produces the brief that drives template selection later. Once `.summer/GameSoul.md` exists, `/summer:make-game` can match it against `_shared/template-registry.md`.
|
|
201
|
+
|
|
202
|
+
## See also
|
|
203
|
+
|
|
204
|
+
- `_shared/collaborative-protocol.md` — "May I write?" pattern
|
|
205
|
+
- `_shared/template-registry.md` — templates the brief will be matched against later
|
|
206
|
+
- `gameplay-mechanics/design-mechanic/SKILL.md` — design the core loop in detail
|
|
207
|
+
- `level-design/design-level/SKILL.md` — sketch level 1
|
|
208
|
+
- `rendering-and-lighting/art-direction/SKILL.md` — turn the one-phrase look into a full bible
|
|
209
|
+
- `audio/audio-direction/SKILL.md` — sonic identity
|
|
210
|
+
- `scene-and-project/make-game/SKILL.md` — scaffold the project once the brief is locked
|
|
@@ -440,3 +440,13 @@ After first playable, ask the user what to improve. Common next steps:
|
|
|
440
440
|
| Debug | `summer_get_console` | Read output |
|
|
441
441
|
| Debug | `summer_get_script_errors` | Check .gd compile |
|
|
442
442
|
| Debug | `summer_clear_console` | Clear output |
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## Collaborative protocol
|
|
447
|
+
|
|
448
|
+
This skill orchestrates a full game build — many writes across scenes, scripts, and project settings. Always ask before each phase: "May I bootstrap the project (scenes, project.godot, folders)?", "May I generate the assets (image + 3D) for X, Y, Z?", "May I scaffold the player scene + attach `player.gd`?". Group related writes into one ask per phase, never bulk-write across phases. See `../../_shared/collaborative-protocol.md`.
|
|
449
|
+
|
|
450
|
+
## Fallback
|
|
451
|
+
|
|
452
|
+
No fallback for this — Summer MCP required. The whole point of `make-game` is the orchestration layer over `summer_*` tools. If MCP isn't connected, fall back to running the individual sub-skills (`fps-controller`, `3d-lighting`, etc.) which each document their own MCP-or-`.tscn` fallback paths.
|
|
@@ -107,3 +107,11 @@ Use `./` for paths relative to the scene root:
|
|
|
107
107
|
2. **Unnamed scene:** Saving without a path fails if the scene was never saved. Use `path` for new scenes.
|
|
108
108
|
3. **Duplicate names:** Godot auto-renames (Node, Node2, etc.). Use descriptive unique names.
|
|
109
109
|
4. **Mixing 2D and 3D:** Don't put Node2D under Node3D or vice versa in the same hierarchy.
|
|
110
|
+
|
|
111
|
+
## Fallback
|
|
112
|
+
|
|
113
|
+
No fallback for this — Summer MCP required. Handwriting `.tscn` files for hierarchy mutations is error-prone (UID collisions, wrong format version, broken sub_resource refs). If MCP isn't connected, open the scene in the Godot editor and use the SceneTree dock.
|
|
114
|
+
|
|
115
|
+
## Collaborative protocol
|
|
116
|
+
|
|
117
|
+
This skill creates and mutates scene files. Always ask before applying: "May I create `res://scenes/player.tscn` and instantiate it under `./World`?". See `../../_shared/collaborative-protocol.md`.
|
|
@@ -120,3 +120,31 @@ For UI that scales with window size:
|
|
|
120
120
|
3. MarginContainer with percentage-based margins (may need theme or script)
|
|
121
121
|
|
|
122
122
|
For simple cases, CenterContainer + fixed-size children works. For complex layouts, a Theme resource or script may be needed.
|
|
123
|
+
|
|
124
|
+
## Fallback (no MCP — edit `.tscn` directly)
|
|
125
|
+
|
|
126
|
+
If Summer MCP isn't connected, write the menu hierarchy by hand:
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
[node name="MainMenu" type="Control" parent="."]
|
|
130
|
+
anchors_preset = 15
|
|
131
|
+
|
|
132
|
+
[node name="Margin" type="MarginContainer" parent="MainMenu"]
|
|
133
|
+
anchors_preset = 15
|
|
134
|
+
theme_override_constants/margin_left = 50
|
|
135
|
+
theme_override_constants/margin_right = 50
|
|
136
|
+
theme_override_constants/margin_top = 50
|
|
137
|
+
theme_override_constants/margin_bottom = 50
|
|
138
|
+
|
|
139
|
+
[node name="VBox" type="VBoxContainer" parent="MainMenu/Margin"]
|
|
140
|
+
|
|
141
|
+
[node name="Title" type="Label" parent="MainMenu/Margin/VBox"]
|
|
142
|
+
text = "My Game"
|
|
143
|
+
|
|
144
|
+
[node name="StartButton" type="Button" parent="MainMenu/Margin/VBox"]
|
|
145
|
+
text = "Start Game"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Collaborative protocol
|
|
149
|
+
|
|
150
|
+
This skill writes UI scene nodes and wires button signals. Always ask before applying: "May I add the MainMenu (Control + Margin + VBox + Title + Start/Quit buttons) and connect Start.pressed to `_on_start_pressed`?". See `../../_shared/collaborative-protocol.md`.
|