@playcraft/cli 0.0.39 → 0.0.41
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/README.md +66 -3
- package/dist/atom-plan/validate-atom-plan.js +298 -0
- package/dist/cli-root-help.js +1 -1
- package/dist/commands/3d.js +363 -0
- package/dist/commands/create.js +337 -0
- package/dist/commands/fix-ids.js +17 -3
- package/dist/commands/fix-ids.test.js +264 -0
- package/dist/commands/image.js +1337 -43
- package/dist/commands/login.js +60 -2
- package/dist/commands/recommend.js +1 -1
- package/dist/commands/remix.js +213 -0
- package/dist/commands/skills.js +1379 -0
- package/dist/commands/tools-3d.js +473 -0
- package/dist/commands/tools-generation.js +454 -0
- package/dist/commands/tools-project.js +400 -0
- package/dist/commands/tools-research.js +37 -0
- package/dist/commands/tools-research.test.js +216 -0
- package/dist/commands/tools-utils.js +164 -0
- package/dist/commands/tools.js +7 -616
- package/dist/config.js +2 -0
- package/dist/index.js +20 -2
- package/dist/utils/agent-api-client.js +52 -16
- package/package.json +9 -3
- package/project-template/.claude/agents/designer.md +116 -0
- package/project-template/.claude/agents/developer.md +133 -0
- package/project-template/.claude/agents/pm.md +164 -0
- package/project-template/.claude/agents/refs/README.md +67 -0
- package/project-template/.claude/agents/refs/designer-art-style-catalog.md +533 -0
- package/project-template/.claude/agents/refs/designer-color-audio-recipes.md +153 -0
- package/project-template/.claude/agents/refs/designer-deliverable-spec.md +167 -0
- package/project-template/.claude/agents/refs/designer-dimension-axis.md +27 -0
- package/project-template/.claude/agents/refs/designer-handoff-v2-checklist.md +68 -0
- package/project-template/.claude/agents/refs/designer-master-composite-recipes.md +216 -0
- package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +37 -0
- package/project-template/.claude/agents/refs/developer-dev-handoff.md +109 -0
- package/project-template/.claude/agents/refs/developer-impl-cookbook.md +134 -0
- package/project-template/.claude/agents/refs/developer-phase1-flow.md +211 -0
- package/project-template/.claude/agents/refs/pm-workflow-detail.md +545 -0
- package/project-template/.claude/agents/refs/reviewer-six-dimension-eval.md +286 -0
- package/project-template/.claude/agents/refs/ta-3d-flip-recipe.md +85 -0
- package/project-template/.claude/agents/refs/ta-atlas-deliverable-standard.md +46 -0
- package/project-template/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-template/.claude/agents/refs/ta-image-generation-detail.md +356 -0
- package/project-template/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-template/.claude/agents/refs/ta-pipeline-cookbook.md +699 -0
- package/project-template/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-template/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-template/.claude/agents/reviewer.md +103 -0
- package/project-template/.claude/agents/technical-artist.md +111 -0
- package/project-template/.claude/hooks/README.md +36 -0
- package/project-template/.claude/hooks/validate-atom-plan.mjs +224 -0
- package/project-template/.claude/hooks/validate-workflow-stop.mjs +258 -0
- package/project-template/.claude/settings.json +32 -0
- package/project-template/.claude/settings.local.json +4 -0
- package/project-template/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-template/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-template/.claude/skills/playcraft-asset-state-sheet/SKILL.md +141 -0
- package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-template/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-template/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +229 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +235 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-template/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-template/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-template/.claude/skills/playcraft-research/SKILL.md +212 -0
- package/project-template/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-template/.claude/skills/playcraft-storyboard/SKILL.md +148 -0
- package/project-template/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-template/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-template/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-template/.claude/skills/playcraft-workflow/SKILL.md +396 -0
- package/project-template/.cursor/hooks.json +17 -0
- package/project-template/.cursor/rules/playcraft-orchestrator.mdc +87 -0
- package/project-template/.cursor/rules/playcraft-subagent-boundary.mdc +18 -0
- package/project-template/CLAUDE.md +240 -0
- package/project-template/assets/audio/bgm/.gitkeep +0 -0
- package/project-template/assets/audio/sfx/.gitkeep +0 -0
- package/project-template/assets/bundles/.gitkeep +0 -0
- package/project-template/assets/images/bg/.gitkeep +0 -0
- package/project-template/assets/images/reference/.gitkeep +0 -0
- package/project-template/assets/images/storyboard/.gitkeep +0 -0
- package/project-template/assets/images/tiles/.gitkeep +0 -0
- package/project-template/assets/images/ui/.gitkeep +0 -0
- package/project-template/assets/images/vfx/.gitkeep +0 -0
- package/project-template/assets/models/.gitkeep +0 -0
- package/project-template/docs/team/agent-conduct.md +105 -0
- package/project-template/docs/team/agent-runtime-matrix.md +62 -0
- package/project-template/docs/team/atom-plan-format.md +74 -0
- package/project-template/docs/team/collaboration.md +288 -0
- package/project-template/docs/team/core-model.md +50 -0
- package/project-template/docs/team/platform-capabilities.md +15 -0
- package/project-template/docs/team/workflow-changelog.md +51 -0
- package/project-template/docs/team/workflow-consistency-checklist.md +128 -0
- package/project-template/game/config/.gitkeep +0 -0
- package/project-template/game/gameplay/.gitkeep +0 -0
- package/project-template/game/scenes/.gitkeep +0 -0
- package/project-template/logs/.gitkeep +0 -0
- package/project-template/ta-workspace/logs/.gitkeep +0 -0
- package/project-template/ta-workspace/scripts/.gitkeep +0 -0
- package/project-template/ta-workspace/tmp/.gitkeep +0 -0
- package/project-template/templates/atom-plan.template.json +26 -0
- package/project-template/templates/atom-plan.template.md +76 -0
- package/project-template/templates/design-brief.template.md +195 -0
- package/project-template/templates/design-lens-checklist.reference.md +117 -0
- package/project-template/templates/design-methodology.md +99 -0
- package/project-template/templates/designer-log.template.md +98 -0
- package/project-template/templates/developer-log.template.md +140 -0
- package/project-template/templates/five-axis-framework.md +186 -0
- package/project-template/templates/intent-clarifications.template.md +58 -0
- package/project-template/templates/layout-spec.template.md +132 -0
- package/project-template/templates/project-state.template.md +219 -0
- package/project-template/templates/review-report.template.md +166 -0
- package/project-template/templates/style-exploration.template.md +93 -0
- package/project-template/templates/ta-log.template.md +205 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Atom Plan — DAG Definition
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
**Canonical DAG**: `docs/atom-plan.json` — skillsMatch + atoms[] + dagRevisions.
|
|
5
|
+
**This Markdown (Gate #1)**: Acceptance Criteria only + empty Context placeholders + DAG Revisions.
|
|
6
|
+
Do NOT mirror atoms[] here at Gate #1 — no Atom List table, no DAG Order (dependsOn lives in JSON).
|
|
7
|
+
Format: docs/team/atom-plan-format.md | PM workflow: refs/pm-workflow-detail.md § Step 8
|
|
8
|
+
-->
|
|
9
|
+
|
|
10
|
+
> **Canonical**: [`docs/atom-plan.json`](atom-plan.json) — PM edits JSON; hook runs `validate-atom-plan` on STOP.
|
|
11
|
+
|
|
12
|
+
> **Living Document**: Designer / TA / Developer enrich **their** sections below without overwriting PM's JSON.
|
|
13
|
+
|
|
14
|
+
## JSON 主文件(PM Gate #1)
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
playcraft skills match --intent "<gameplayType>,<mechanic>,<keywords>" --json # → skillsMatch
|
|
18
|
+
playcraft skills validate-atom-plan
|
|
19
|
+
playcraft skills link --from-atom-plan --prune
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
- **Never** use `playcraft-*` in `skillRef`; values must come from `skillsMatch.items[].atomId` (or `null` + `dagRevisions` gap)
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## Acceptance Criteria
|
|
27
|
+
|
|
28
|
+
| atomId | Criteria |
|
|
29
|
+
| ----------- | -------------------------------------------------------------- |
|
|
30
|
+
| {{atom_id}} | {{one short line — reference other docs, do not repeat specs}} |
|
|
31
|
+
|
|
32
|
+
<!--
|
|
33
|
+
Gate #1 — one line per atom in atoms[]; point elsewhere for details:
|
|
34
|
+
✅ "tile_atlas: layout-spec § assetMapping tiles_atlas + frameId satisfied"
|
|
35
|
+
✅ "match3_gameplay: first level 100% clearable per design-brief § Level Configuration"
|
|
36
|
+
❌ WxH, hex, gradient prose, or paths already in layout-spec
|
|
37
|
+
-->
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Asset Skill Context
|
|
42
|
+
|
|
43
|
+
> **Designer fills** after Phase 1 Skill Discovery.
|
|
44
|
+
|
|
45
|
+
(Pending Designer Phase 1)
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## TA Skill Context
|
|
50
|
+
|
|
51
|
+
> **Technical Artist fills** during production Wave 2.
|
|
52
|
+
|
|
53
|
+
(Pending Technical Artist Phase 1)
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Impl Skill Context
|
|
58
|
+
|
|
59
|
+
> **Developer fills** during integration Skill Preflight.
|
|
60
|
+
|
|
61
|
+
(Pending Developer Phase 1)
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## DAG Revisions
|
|
66
|
+
|
|
67
|
+
> Record structural changes to `atom-plan.json` → `atoms[]`. Reviewer audits these.
|
|
68
|
+
|
|
69
|
+
<!--
|
|
70
|
+
### Revision {{N}} — {{Agent}} ({{add/remove/modify}})
|
|
71
|
+
- **atomId**: {{atom_id}}
|
|
72
|
+
- **reason**: {{why}}
|
|
73
|
+
- **change**: {{what changed in JSON}}
|
|
74
|
+
-->
|
|
75
|
+
|
|
76
|
+
(No revisions yet)
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Design Brief
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
PM only. CONTRACT doc — keep concise (see agent-conduct § PM four-doc discipline).
|
|
5
|
+
Put here: five-axis outcome, gameplay choice, Style Direction, experience-flow (mechanics only), level knobs.
|
|
6
|
+
Do NOT paste: hex colors / element ids (→ layout-spec § Color Palette + assetMapping);
|
|
7
|
+
per-stage emotions / audio-visual signals (→ Style Direction § Emotional Arc Intent only);
|
|
8
|
+
MC/ASR paths, prompts, research dumps (→ style-exploration + designer-log).
|
|
9
|
+
-->
|
|
10
|
+
|
|
11
|
+
## Intent Analysis
|
|
12
|
+
|
|
13
|
+
| Dimension | Tags | Classification |
|
|
14
|
+
| ----------------------- | ------------------------------------------------------------------- | ------------------------ |
|
|
15
|
+
| Visual Style | {{visual_style_tags}} | {{cared/uncared/locked}} |
|
|
16
|
+
| Core Gameplay | {{gameplay_type}} | {{cared/uncared/locked}} |
|
|
17
|
+
| Element Theme | {{element_theme}} | {{cared/uncared/locked}} |
|
|
18
|
+
| Pace/Feel | {{pace_tags}} | {{cared/uncared/locked}} |
|
|
19
|
+
| Color Mood | {{color_mood}} | {{cared/uncared/locked}} |
|
|
20
|
+
| Target Audience | {{audience_tags}} | {{cared/uncared/locked}} |
|
|
21
|
+
| Target Platform | {{platform}} | {{cared/uncared/locked}} |
|
|
22
|
+
| Promoted Product | {{product_type}} | {{cared/uncared/locked}} |
|
|
23
|
+
| **User Motivation Job** | {{stress-relief / challenge / collection / creativity / immersion}} | {{cared/uncared}} |
|
|
24
|
+
|
|
25
|
+
<!-- User Motivation Job: the psychological "job" the target user hires this ad/game to do (JTBD).
|
|
26
|
+
No signal → default "stress-relief"; strategy RPG → infer "challenge". -->
|
|
27
|
+
|
|
28
|
+
## Gameplay Selection
|
|
29
|
+
|
|
30
|
+
- **Selected gameplay**: {{gameplay_type}} ({{gameplay_subtype}})
|
|
31
|
+
- **Rationale**: {{selection_rationale}}
|
|
32
|
+
- **Risk level**: {{low/medium/high}} — {{risk_explanation}}
|
|
33
|
+
- **Alternative considered**: {{alternative}} — {{why_not_chosen}}
|
|
34
|
+
|
|
35
|
+
## Fusion Strategy
|
|
36
|
+
|
|
37
|
+
<!-- Only fill for fusion gameplay (Type A/B1/B2/C/D). Delete this section for single gameplay. -->
|
|
38
|
+
|
|
39
|
+
### Mechanic Fusion
|
|
40
|
+
|
|
41
|
+
- **Primary Mechanic**: {{primary_gameplay_type}}
|
|
42
|
+
- **Secondary Mechanic**: {{secondary_gameplay_type}}
|
|
43
|
+
- **Fusion Type**: {{A / B1 / B2 / C / D}} — {{one-line description of how mechanics fuse}}
|
|
44
|
+
- **Integration Point**: {{where the two systems connect, e.g., "elimination count drives monster HP bar"}}
|
|
45
|
+
- **Tutorial Approach**: {{how to teach both mechanics within the Tutorial phase}}
|
|
46
|
+
- **Fusion Depth Limit**: {{secondary mechanic ≤ Xs to learn / no more than N simultaneous hotspots}}
|
|
47
|
+
- **Mechanic Risk Level**: {{Low / Medium / High / Extreme}}
|
|
48
|
+
- **Downgrade Applied**: {{whether downgraded from user's original request; if so, explain why}}
|
|
49
|
+
|
|
50
|
+
<!-- Dimension / 2.5D / True 3D: declare once in Style Direction § Dimension — do NOT duplicate here. -->
|
|
51
|
+
|
|
52
|
+
## Style Direction
|
|
53
|
+
|
|
54
|
+
<!--
|
|
55
|
+
THIS IS THE MOST CRITICAL SECTION FOR DESIGNER.
|
|
56
|
+
Be specific, visual, and reference-based. NOT just adjectives.
|
|
57
|
+
The first four fields (Dimension / Interaction Modality / Emotional Arc / Emotional Arc Intent)
|
|
58
|
+
are mandatory explicit declarations — not implied within Art Style or Mood.
|
|
59
|
+
-->
|
|
60
|
+
|
|
61
|
+
### Dimension
|
|
62
|
+
|
|
63
|
+
{{Flat 2D / 2.5D Visual / Isometric / True 3D}}
|
|
64
|
+
|
|
65
|
+
<!-- Explain why this dimension was chosen, and its impact on Designer (asset types) and Developer (rendering pipeline).
|
|
66
|
+
Example: "Flat 2D — broadest audience, no extra Designer cost, existing PGS fully compatible."
|
|
67
|
+
Example: "2.5D Visual — stronger visual impact, Designer needs 3D-feel rendering assets (~3x cost), logic stays 2D grid." -->
|
|
68
|
+
|
|
69
|
+
### Interaction Modality
|
|
70
|
+
|
|
71
|
+
{{Tap Only / Tap + Swipe / Drag / Tap + Hold}}
|
|
72
|
+
|
|
73
|
+
<!-- Explain why this modality was chosen, estimated Tutorial time, and target audience width.
|
|
74
|
+
Example: "Tap Only — pure tap, Tutorial ~1s, broadest audience (includes elderly, children)."
|
|
75
|
+
Example: "Drag — draw-path interaction, Tutorial ~5s, more intuitive visually but narrower audience." -->
|
|
76
|
+
|
|
77
|
+
### Emotional Arc
|
|
78
|
+
|
|
79
|
+
{{Competence / Challenge / Curiosity / Relaxation / Urgency}}
|
|
80
|
+
|
|
81
|
+
<!-- Explain how this arc threads through Hook→Tutorial→Gameplay→EndCard. Gives Designer atmosphere reference.
|
|
82
|
+
Example: "Competence Arc — Hook shows 'looks hard but has a pattern' → Tutorial guarantees success → Gameplay generous flow → EndCard 'easy and fun, keep playing'"
|
|
83
|
+
This arc aligns with User Motivation Job 'stress-relief', broadest audience coverage path." -->
|
|
84
|
+
|
|
85
|
+
### Emotional Arc Intent
|
|
86
|
+
|
|
87
|
+
Per-stage emotional beats for Designer to design asset atmosphere:
|
|
88
|
+
|
|
89
|
+
| Stage | Emotional Beat | Visual Signal | Audio Signal |
|
|
90
|
+
| ----------------- | -------------------- | ------------------- | ------------------ |
|
|
91
|
+
| Hook | {{hook_emotion}} | {{hook_visual}} | {{hook_audio}} |
|
|
92
|
+
| Tutorial | {{tutorial_emotion}} | {{tutorial_visual}} | {{tutorial_audio}} |
|
|
93
|
+
| Gameplay Flow | {{flow_emotion}} | {{flow_visual}} | {{flow_audio}} |
|
|
94
|
+
| Gameplay Near-Win | {{nearwin_emotion}} | {{nearwin_visual}} | {{nearwin_audio}} |
|
|
95
|
+
| End Card | {{endcard_emotion}} | {{endcard_visual}} | {{endcard_audio}} |
|
|
96
|
+
|
|
97
|
+
<!-- Example rows:
|
|
98
|
+
| Hook | Curiosity + mild anxiety | Near-win board close-up, finger hesitation | Brief silence + suspense SFX |
|
|
99
|
+
| Tutorial | Low-pressure mastery | Soft-glow guide arrows | Light upbeat BGM |
|
|
100
|
+
| Gameplay Flow | Smooth satisfaction | Fluid elimination animation + particles | BGM tempo increases |
|
|
101
|
+
| Gameplay Near-Win | Tension + anticipation | Screen focus + subtle shake | Peak emotion SFX |
|
|
102
|
+
| End Card | Satisfaction + incompleteness | Reward display + CTA highlight | Completion chime + BGM fade |
|
|
103
|
+
-->
|
|
104
|
+
|
|
105
|
+
### Art Style
|
|
106
|
+
|
|
107
|
+
{{detailed_art_style_description}}
|
|
108
|
+
|
|
109
|
+
<!-- Example: "2D flat illustration with soft drop shadows. All elements have rounded
|
|
110
|
+
corners (8px radius feel). Slight 3D depth via subtle top-light gradient on interactive
|
|
111
|
+
elements. NOT glossy/realistic — closer to paper cutout aesthetic.
|
|
112
|
+
Reference: Candy Crush Saga's clean readability but with more illustration warmth." -->
|
|
113
|
+
|
|
114
|
+
### Color Strategy
|
|
115
|
+
|
|
116
|
+
{{detailed_color_strategy — strategy prose only; NO hex codes}}
|
|
117
|
+
|
|
118
|
+
<!-- Prose only: saturation, contrast, warm/cool, accent usage rules.
|
|
119
|
+
Canonical hex + element ids → layout-spec § Color Palette + assetMapping only.
|
|
120
|
+
Example: "High-sat warm palette; analogous green background gradient; primaries on tiles;
|
|
121
|
+
gold accent reserved for score moments — see layout-spec for hex." -->
|
|
122
|
+
|
|
123
|
+
### Element Design
|
|
124
|
+
|
|
125
|
+
{{detailed_element_design}}
|
|
126
|
+
|
|
127
|
+
<!-- Example: "Fruits rendered as cute characters: each has two dot-eyes and a tiny
|
|
128
|
+
curve smile. Body is 80% signature color with 15% lighter gradient and 5% white
|
|
129
|
+
highlight. Proportions: slightly wider than tall (aspect ~1.1:1 within tile).
|
|
130
|
+
Consistent shadow: 2px bottom offset, 20% opacity of fruit color.
|
|
131
|
+
Strawberry = red with green leaf crown. Blueberry = round, deep blue, cluster of 3.
|
|
132
|
+
Kiwi = brown fuzzy exterior, shown in cross-section (green center with black seeds)." -->
|
|
133
|
+
|
|
134
|
+
### Visual Hierarchy
|
|
135
|
+
|
|
136
|
+
{{visual_hierarchy_description}}
|
|
137
|
+
|
|
138
|
+
<!-- Example: "Board is the dominant visual focus (47% of screen area). Background
|
|
139
|
+
is atmospheric but LOW contrast/detail in board region — avoid competing with tiles.
|
|
140
|
+
HUD is minimal: score number + small progress bar, white on 60% opacity black strip.
|
|
141
|
+
CTA area: clean separation, dark gradient footer with centered bright button." -->
|
|
142
|
+
|
|
143
|
+
### Mood & Feeling
|
|
144
|
+
|
|
145
|
+
{{mood_description}}
|
|
146
|
+
|
|
147
|
+
<!-- Example: "Cheerful and rewarding. Every interaction should feel 'juicy' — elements
|
|
148
|
+
look like they want to be tapped. Relaxing tropical vacation vibe, not competitive stress.
|
|
149
|
+
Audio should reinforce: light ukulele/marimba BGM, satisfying pop/chime on match." -->
|
|
150
|
+
|
|
151
|
+
### Visual References
|
|
152
|
+
|
|
153
|
+
{{references}}
|
|
154
|
+
|
|
155
|
+
<!-- Example:
|
|
156
|
+
"LIKE: Tropicats (lush green mood), Royal Match (clean board readability),
|
|
157
|
+
Candy Crush (element clarity and juiciness)
|
|
158
|
+
NOT LIKE: Bejeweled (too glossy 3D), Tetris (too geometric/minimal),
|
|
159
|
+
Gardenscapes (too realistic/detailed)" -->
|
|
160
|
+
|
|
161
|
+
## Experience Flow Design
|
|
162
|
+
|
|
163
|
+
<!-- Mechanics + narrative tasks only. Per-stage emotions / visual-audio signals → Style Direction § Emotional Arc Intent (do NOT repeat here). -->
|
|
164
|
+
|
|
165
|
+
### Hook (0-3s)
|
|
166
|
+
|
|
167
|
+
- **Narrative Task**: {{narrative_task}}
|
|
168
|
+
- **Mechanic Expression**: {{mechanic_expression}}
|
|
169
|
+
- **Trigger Type**: {{trigger_type}}
|
|
170
|
+
<!-- Near-Win / Failure Display / Success Demo / Unexpected Conflict / Reward Reveal -->
|
|
171
|
+
|
|
172
|
+
### Tutorial (3-10s)
|
|
173
|
+
|
|
174
|
+
- **Narrative Task**: {{narrative_task}}
|
|
175
|
+
- **Mechanic Expression**: {{mechanic_expression}}
|
|
176
|
+
- **Success Guarantee**: ✅ First interaction must succeed at 100%
|
|
177
|
+
|
|
178
|
+
### Gameplay (10-25s)
|
|
179
|
+
|
|
180
|
+
- **Narrative Task**: {{narrative_task}}
|
|
181
|
+
- **Near-Win Design**: {{near_win_design}}
|
|
182
|
+
- **Mechanic Expression**: {{mechanic_expression}}
|
|
183
|
+
|
|
184
|
+
### End Card (25-30s)
|
|
185
|
+
|
|
186
|
+
- **Narrative Task**: {{narrative_task}}
|
|
187
|
+
- **CTA Emotion Logic**: {{cta_emotion_logic}}
|
|
188
|
+
<!-- Sequel feeling / reward inheritance — NOT "download now" -->
|
|
189
|
+
|
|
190
|
+
## Level Configuration
|
|
191
|
+
|
|
192
|
+
- Total levels: {{total_levels}}
|
|
193
|
+
- Difficulty progression: {{difficulty_curve_description}}
|
|
194
|
+
- First level guaranteed success: ✅
|
|
195
|
+
- Time constraint: {{time_constraint_if_any}}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Design Lens Checklist
|
|
2
|
+
|
|
3
|
+
> **Used by**: Reviewer Agent — after the five-dimension evaluation (mechanic / dimension / interaction / narrative / emotional arc),
|
|
4
|
+
> apply these 8 design lenses for a quality audit of the design-brief.
|
|
5
|
+
>
|
|
6
|
+
> **Source**: Jesse Schell's *The Art of Game Design* core lenses, streamlined and adapted for playable ads.
|
|
7
|
+
>
|
|
8
|
+
> Each lens is a set of concrete questions — not a score, but forced thinking.
|
|
9
|
+
> If 2+ lenses have "❌ No" answers, Reviewer should flag specific design-brief items for PM revision.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Lens 1 — The Essential Experience
|
|
14
|
+
|
|
15
|
+
> "Is every mechanic serving that one core feeling?"
|
|
16
|
+
|
|
17
|
+
- [ ] What feeling should the user carry away when the ad ends? (fill in: ___)
|
|
18
|
+
- [ ] Does the design-brief's Emotional Arc clearly describe this feeling?
|
|
19
|
+
- [ ] Is every design decision in Hook / Gameplay / EndCard reinforcing this core feeling?
|
|
20
|
+
- [ ] Is any design element "consuming time" without serving the core feeling?
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Lens 2 — The Toy
|
|
25
|
+
|
|
26
|
+
> "Is the basic interaction inherently satisfying, even without goals?"
|
|
27
|
+
|
|
28
|
+
- [ ] Does the base operation (eliminate/tap/drag) come with inherently pleasing instant feedback (visual + audio)?
|
|
29
|
+
- [ ] During the first interaction (Tutorial), does the user feel satisfied by the action itself, not just the goal?
|
|
30
|
+
- [ ] Does the element design (size, animation, sound) make users want to tap/interact more?
|
|
31
|
+
- [ ] If all game rules and win/lose conditions were removed, leaving only interaction feedback — is it still fun?
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Lens 3 — Curiosity
|
|
36
|
+
|
|
37
|
+
> "Is the user continuously drawn to find out what's next?"
|
|
38
|
+
|
|
39
|
+
- [ ] Does the Hook successfully open a cognitive gap ("What is this? What happens next?")?
|
|
40
|
+
- [ ] At Tutorial end, does the user want to know "what does it feel like one level harder?"
|
|
41
|
+
- [ ] During Gameplay, are there continuous small surprises (new mechanic / effects / near-win) to sustain curiosity?
|
|
42
|
+
- [ ] Does the EndCard leave "there's more to explore" suspense (cognitive gap NOT closed)?
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Lens 4 — The Hook
|
|
47
|
+
|
|
48
|
+
> "What makes the user start and stay for 30s? Is the reason consistent?"
|
|
49
|
+
|
|
50
|
+
- [ ] Do the first 3s have a strong enough stimulus to stop the user from scrolling?
|
|
51
|
+
- [ ] Is this stimulus related to the product/game's core value (not pure clickbait)?
|
|
52
|
+
- [ ] From Hook → Tutorial → Gameplay, is the main thread (core conflict or goal) consistent?
|
|
53
|
+
- [ ] After completing Tutorial, does the user understand "why do I want to win?"
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Lens 5 — Skill
|
|
58
|
+
|
|
59
|
+
> "Does a zero-skill user succeed on first try? Is the flow zone reasonable?"
|
|
60
|
+
|
|
61
|
+
- [ ] Does the Tutorial design guarantee zero-skill users succeed on the very first interaction?
|
|
62
|
+
- [ ] Is the difficulty of the first 3 interactions at the flow zone lower bound (success rate ≥ 95%)?
|
|
63
|
+
- [ ] Is the difficulty ramp reasonable (no more than 1 new challenge per 5s)?
|
|
64
|
+
- [ ] Is the Near-Win difficulty designed as "solvable, not unsolvable"? (avoid frustration)
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Lens 6 — The Near Win
|
|
69
|
+
|
|
70
|
+
> "Is a near-win moment deliberately designed? Does the scenario have a solution?"
|
|
71
|
+
|
|
72
|
+
- [ ] Does the design-brief's Gameplay stage explicitly describe the Near-Win design (which step / what scenario)?
|
|
73
|
+
- [ ] Does the Near-Win scenario have a clear solution (player can see the "just one more step" path)?
|
|
74
|
+
- [ ] Is the Near-Win duration appropriate (≤ 5s, to avoid turning into frustration)?
|
|
75
|
+
- [ ] After Near-Win resolution, is there sufficient emotional peak reinforcement (effects / audio / animation)?
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Lens 7 — Emotion
|
|
80
|
+
|
|
81
|
+
> "Does each mechanic trigger the intended emotion? Aligned with the overall arc?"
|
|
82
|
+
|
|
83
|
+
- [ ] Does the selected Emotional Arc (Competence / Challenge / Curiosity / Relaxation / Urgency) match the User Motivation Job (JTBD)?
|
|
84
|
+
- [ ] Is the emotion triggered by the Hook consistent with the arc's starting point?
|
|
85
|
+
- [ ] Do Gameplay emotions form a complete arc (starting point → peak → landing), not a flat line?
|
|
86
|
+
- [ ] Is the EndCard emotion a combination of "satisfaction + incompleteness", not an abrupt ending?
|
|
87
|
+
- [ ] Does any mechanic trigger unintended negative emotions (frustration / confusion / boredom)?
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Lens 8 — The Memorable Moment
|
|
92
|
+
|
|
93
|
+
> "What will the user remember 10 minutes later?"
|
|
94
|
+
|
|
95
|
+
- [ ] Is there 1 sufficiently unique visual/mechanic moment in the 30s experience that the user can describe 10 minutes later?
|
|
96
|
+
- [ ] Does this memorable moment occur at the emotional peak (typically Near-Win or EndCard)?
|
|
97
|
+
- [ ] Is this memorable moment related to the promoted product's core value (user can associate memory with install motivation)?
|
|
98
|
+
- [ ] Does the design avoid "too many highlights so nothing is remembered" (focus on 1-2 peak moments)?
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Summary
|
|
103
|
+
|
|
104
|
+
| Lens | Pass ✅ | Needs Work ❌ | Key Issue |
|
|
105
|
+
|------|--------|-------------|-----------|
|
|
106
|
+
| 1 Essential Experience | | | |
|
|
107
|
+
| 2 The Toy | | | |
|
|
108
|
+
| 3 Curiosity | | | |
|
|
109
|
+
| 4 The Hook | | | |
|
|
110
|
+
| 5 Skill | | | |
|
|
111
|
+
| 6 The Near Win | | | |
|
|
112
|
+
| 7 Emotion | | | |
|
|
113
|
+
| 8 Memorable Moment | | | |
|
|
114
|
+
|
|
115
|
+
**Reviewer Conclusion**: {{overall_assessment}}
|
|
116
|
+
|
|
117
|
+
<!-- If any ❌: list specific design-brief items that PM should revise -->
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Design Methodology Foundations
|
|
2
|
+
|
|
3
|
+
> **When to read**: PM reads this before Step 4 (Five-Axis Evaluation) to ground decisions in theory.
|
|
4
|
+
> Designer and Reviewer may also reference this for context on emotional intent.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## A. MDA Framework (Mechanics-Dynamics-Aesthetics)
|
|
9
|
+
|
|
10
|
+
Core insight: **designers build upward from mechanics; players experience downward from emotion** — opposite starting points.
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
Designer's perspective (build direction): Mechanics → Dynamics → Aesthetics
|
|
14
|
+
Player's perspective (experience direction): Aesthetics ← Dynamics ← Mechanics
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
8 Aesthetics emotion types (starred = most relevant to playable ads):
|
|
18
|
+
|
|
19
|
+
| Relevance | Aesthetic | Role in Playable Ads |
|
|
20
|
+
|-----------|----------|---------------------|
|
|
21
|
+
| ★★★★★ | **Sensation** | Visual juice + audio feedback — the baseline for every ad |
|
|
22
|
+
| ★★★★★ | **Challenge** | Theoretical basis for Near-Win design; drives "one more try" |
|
|
23
|
+
| ★★★★ | **Submission** | Healing/relaxing emotion in casual ads; low-pressure flow |
|
|
24
|
+
| ★★★ | **Discovery** | The "aha, that's how it works!" moment; core of the Curiosity Arc |
|
|
25
|
+
| ★★ | Fellowship | Social proof in ad context (rarely applicable in 30s) |
|
|
26
|
+
| ★★ | Fantasy | World-building for RPG/adventure ads (requires L2+ narrative) |
|
|
27
|
+
| ★ | Narrative | Story-driven ads — almost never fits in 30s |
|
|
28
|
+
| ★ | Expression | Dress-up/customization ads — niche |
|
|
29
|
+
|
|
30
|
+
**Key principle**: A tiny change in mechanics → amplified by dynamics → dramatic shift in aesthetics. Example: changing the match threshold from 3 to 2 completely transforms the rhythm and sense of achievement.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## B. JTBD — Jobs-to-be-Done (User Motivation Framework)
|
|
35
|
+
|
|
36
|
+
Users don't "play a game" — they **hire** the game to do a psychological job. The same game targeting different motivation types requires completely different Hook strategies:
|
|
37
|
+
|
|
38
|
+
| Motivation Type | Signal Words | Hook Emotion Strategy | Default Arc |
|
|
39
|
+
|----------------|-------------|----------------------|------------|
|
|
40
|
+
| **Stress Relief** | "casual", "relaxing", "zen", "mindless" | Show smooth, satisfying elimination flow | Relaxation Arc |
|
|
41
|
+
| **Challenge / Mastery** | "hard", "strategic", "brain teaser" | Show high-difficulty board + near-win tension | Challenge Arc |
|
|
42
|
+
| **Collection / Growth** | "collect", "upgrade", "rewards", "evolve" | Show reward cascade / evolution moment | Competence Arc |
|
|
43
|
+
| **Creativity / Expression** | "customize", "dress up", "design", "create" | Show rich personalization options + beautiful results | Curiosity Arc |
|
|
44
|
+
| **Immersion / Escape** | "story", "world", "RPG", "adventure" | Show grand scene entry + immersion hook | Curiosity Arc |
|
|
45
|
+
|
|
46
|
+
**Default rule**: If the prompt has no clear motivation signal → assume **Stress Relief** (broadest audience coverage).
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## C. Three Key Emotional Mechanisms
|
|
51
|
+
|
|
52
|
+
These are the non-negotiable tools in your emotional design toolkit:
|
|
53
|
+
|
|
54
|
+
### 1. Near-Win
|
|
55
|
+
|
|
56
|
+
Deliberately design a "one step away from success" situation — the peak emotion trigger.
|
|
57
|
+
|
|
58
|
+
**Critical constraint**: Near-Win **must have a solution**. A visible path to victory creates excitement; a dead end creates frustration. The difference between "thrilling" and "rage-quit" is whether the player can see the way out.
|
|
59
|
+
|
|
60
|
+
### 2. Emotional Breather
|
|
61
|
+
|
|
62
|
+
The Tutorial phase's low-pressure onboarding is a **mandatory buffer zone** — it cannot be compressed or skipped.
|
|
63
|
+
|
|
64
|
+
**Flow theory basis**: Place zero-skill new users at the bottom of the flow channel. The first interaction must succeed at 100% — no exceptions. This is the entry ramp to flow state; skip it and you lose the user.
|
|
65
|
+
|
|
66
|
+
### 3. Curiosity Gap Closure
|
|
67
|
+
|
|
68
|
+
The End Card **does not close the gap** — the user installs to "continue this story", not to "buy a product."
|
|
69
|
+
|
|
70
|
+
**CTA is a sequel entrance, not an ad cutoff.** "Continue playing" > "Download now". The cognitive gap opened in the Hook should remain partially open at the End Card — closure happens after install.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## D. Hook-Body-CTA Advertising Framework
|
|
75
|
+
|
|
76
|
+
Standard ad creative structure, mapped to playable ad stages:
|
|
77
|
+
|
|
78
|
+
| Ad Stage | Playable Ad Stage | Duration | Job |
|
|
79
|
+
|----------|------------------|----------|-----|
|
|
80
|
+
| **Hook** | Hook | 0-3s | Stop the scroll — create immediate emotional stimulus |
|
|
81
|
+
| **Body** | Tutorial + Gameplay | 3-25s | Deliver the core experience — build and peak the emotional arc |
|
|
82
|
+
| **CTA** | End Card | 25-30s | Convert emotion to action — sequel feeling, not sales pitch |
|
|
83
|
+
|
|
84
|
+
**Key insight**: The Hook's emotion must be **consistent** with the Body and CTA. If the Hook creates curiosity but the Body delivers relaxation, the experience fractures. The Emotional Arc must be a single throughline across all three stages.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## E. Design Lenses (Quick Reference)
|
|
89
|
+
|
|
90
|
+
Jesse Schell's 8 most relevant lenses for playable ads (full checklist in `templates/design-lens-checklist.reference.md`):
|
|
91
|
+
|
|
92
|
+
1. **Essential Experience** — Is every mechanic serving the core feeling?
|
|
93
|
+
2. **The Toy** — Is the basic interaction inherently satisfying, even without goals?
|
|
94
|
+
3. **Curiosity** — Is the user continuously drawn to find out what's next?
|
|
95
|
+
4. **The Hook** — Is the reason to start and stay consistent throughout?
|
|
96
|
+
5. **Skill** — Does a zero-skill user succeed on first try? Is the flow zone reasonable?
|
|
97
|
+
6. **Near-Win** — Is a near-win moment deliberately designed? Does it have a solution?
|
|
98
|
+
7. **Emotion** — Does each mechanic trigger the intended emotion? Aligned with the arc?
|
|
99
|
+
8. **Memorable Moment** — What will the user remember 10 minutes later?
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Designer Log
|
|
2
|
+
|
|
3
|
+
## Delivery Summary
|
|
4
|
+
|
|
5
|
+
- **Assigned**: {{total_assigned}}
|
|
6
|
+
- **Completed**: {{total_completed}}
|
|
7
|
+
- **Skipped**: {{total_skipped}}
|
|
8
|
+
- **Blocked**: {{total_blocked}}
|
|
9
|
+
|
|
10
|
+
## Per-Atom Delivery
|
|
11
|
+
|
|
12
|
+
### {{atom_id}} — {{slot_name}}
|
|
13
|
+
|
|
14
|
+
- **Status**: {{status}}
|
|
15
|
+
- **Method**: {{AI generation / existing asset / manual}}
|
|
16
|
+
- **Model**: {{model_name_if_generated}}
|
|
17
|
+
- **Prompt**: {{full_generation_prompt}}
|
|
18
|
+
- **Output path**: {{file_path}}
|
|
19
|
+
- **Dimensions/Size**: {{WxH, file_size}}
|
|
20
|
+
- **Post-processing**: {{resize/crop/compress steps if any}}
|
|
21
|
+
- **Recipe Record**:
|
|
22
|
+
| Field | Value |
|
|
23
|
+
|-------|-------|
|
|
24
|
+
| Prompt | {{full_generation_prompt}} |
|
|
25
|
+
| Model | {{model_name}} |
|
|
26
|
+
| Seed | {{seed_if_applicable}} |
|
|
27
|
+
| Reference Image | {{reference_image_path_or_none}} |
|
|
28
|
+
| Aspect Ratio | {{aspect_ratio}} |
|
|
29
|
+
| Style Constraint | {{style_keywords}} |
|
|
30
|
+
| Generation Time | {{seconds}} |
|
|
31
|
+
- **Consistency check**: {{how this relates to other atoms}}
|
|
32
|
+
- **Style Intent Notes** (供 TA 补全时参考):
|
|
33
|
+
- 主色调:{{dominant color and why}}
|
|
34
|
+
- 光影方向:{{light source direction and quality}}
|
|
35
|
+
- 边缘处理:{{hard/soft/outline style}}
|
|
36
|
+
- 质感特征:{{matte/glossy/textured}}
|
|
37
|
+
- 与整体概念图的关系:{{how this element fits the full mockup}}
|
|
38
|
+
- **Anti-Pattern Notes** (明确告诉 TA 不要做什么):
|
|
39
|
+
- 不要:{{specific style choice to avoid}}
|
|
40
|
+
- 不要:{{another anti-pattern}}
|
|
41
|
+
- **Reference Usage Guide** (告诉 TA 这个样本怎么用):
|
|
42
|
+
- 适用元素类型:{{which element types this sample can guide}}
|
|
43
|
+
- 不适用元素类型:{{which types should NOT use this reference}}
|
|
44
|
+
- 需要额外注意的属性:{{e.g., "UI 元素需要更高对比度,不能直接用 tile 的柔和处理"}}
|
|
45
|
+
|
|
46
|
+
<!--
|
|
47
|
+
Repeat this section for each atom.
|
|
48
|
+
Fill in details as you complete each one.
|
|
49
|
+
-->
|
|
50
|
+
|
|
51
|
+
## ASR Coverage Matrix (designer-handoff-v2 — 100% contract rows)
|
|
52
|
+
|
|
53
|
+
> UI: `assets/images/reference/ui_state_sheet_{{option}}.png`
|
|
54
|
+
> Element: `assets/images/reference/element_state_sheet_{{option}}.png`
|
|
55
|
+
|
|
56
|
+
| Contract id | Type | ASR sheet | Grid (row,col) | State(s) | TA extends? |
|
|
57
|
+
| -------------------------------- | ------ | ------------ | -------------- | ----------- | ----------- |
|
|
58
|
+
| {{element_id_from_assetMapping}} | visual | ui / element | {{1,1}} | {{default}} | {{yes/no}} |
|
|
59
|
+
| {{static_text_id}} | text | ui / MC-crop | — | baked | {{yes/no}} |
|
|
60
|
+
|
|
61
|
+
<!--
|
|
62
|
+
One row per layout-spec assetMapping elementId and per static text id.
|
|
63
|
+
TA crop index + Phase 2 VisualAtom actualOutput: ASR:sheet:R#C#
|
|
64
|
+
-->
|
|
65
|
+
|
|
66
|
+
## Palette Locked (from MC option {{option}})
|
|
67
|
+
|
|
68
|
+
| Role | Hex | Notes |
|
|
69
|
+
| ------------- | ----------- | ----- |
|
|
70
|
+
| bg_primary | {{#______}} | |
|
|
71
|
+
| accent | {{#______}} | |
|
|
72
|
+
| cta | {{#______}} | |
|
|
73
|
+
| {{element_1}} | {{#______}} | |
|
|
74
|
+
|
|
75
|
+
**Delta vs layout-spec Color Palette**: {{match | PM update: one line}}
|
|
76
|
+
|
|
77
|
+
## Style Consistency Self-Check
|
|
78
|
+
|
|
79
|
+
- [ ] All visual assets share the same art style?
|
|
80
|
+
- [ ] Color temperature consistent with layout-spec palette?
|
|
81
|
+
- [ ] Audio mood matches visual atmosphere?
|
|
82
|
+
- [ ] File naming matches asset-mapping exactly?
|
|
83
|
+
- [ ] All assets within size budget?
|
|
84
|
+
|
|
85
|
+
## Size Budget Tracking
|
|
86
|
+
|
|
87
|
+
| Asset | Budget | Actual | Status |
|
|
88
|
+
| -------------- | ------------ | --------------- | ----------- |
|
|
89
|
+
| {{asset_name}} | {{max_size}} | {{actual_size}} | {{ok/over}} |
|
|
90
|
+
|
|
91
|
+
<!--
|
|
92
|
+
Total project budget: <= 5MB
|
|
93
|
+
Individual budgets:
|
|
94
|
+
- Background: < 500KB
|
|
95
|
+
- Tile/icon: < 100KB
|
|
96
|
+
- BGM: < 300KB
|
|
97
|
+
- SFX: < 50KB
|
|
98
|
+
-->
|