sprout-garden-level-design
Sprout Garden: Level Design
Progression, phases, UI components, and puzzle philosophy.
Design Philosophy
The Golden Rule
Build a cool machine β Take pieces out β "Can you figure it out?"
Levels should feel like discovery, not instruction. The player figures out the rules by experimenting, not by reading.
Constraint as Teacher
Each phase introduces new plots by creating puzzles that CAN'T be solved without them. The player hits a wall, gets a new tool, has an "aha" moment.
Professor Hoot π¦
The hint system. Not a tutorial. Not an instructor. Just an owl perched in the corner.
Philosophy:
- He's there, not intrusive
- Tap him if you want a hint
- He doesn't explain rules - he gives nudges
- Progressive hints: vague first, more specific if you're really stuck
Example Hints:
- "Hoo! This one might need something to change the shape..."
- "Hoo hoo! Tap a vine to see what happens..."
- "Hoo! What if the path went down instead of right?"
Visual:
- Small owl icon in corner (top-right)
- Subtle animation when hint available (head tilt? blink?)
- Speech bubble appears on tap
- Goes back to watching silently after
When Professor Hoot Appears:
- Always present but quiet on early levels
- More active (slight bounce) when player is stuck (no moves for X seconds)
- Never interrupts - always player-initiated
Progressive Disclosure:
- First hint: Very general ("This garden needs a color change...")
- Second hint: More specific ("The paint machine blooms colors...")
- Third hint: Almost direct ("Try putting a paint machine between B2 and B3")
Professor Hoot watches. Professor Hoot waits. Professor Hoot helps if you ask.
Freeform Canvas
Springs and harvests are placeable. The puzzle is defined by:
- Input: What sprouts you start with
- Output: What sprouts you need to produce
- Palette: What plots you can use
- Constraints: Limits (max plots, forbidden plots, etc.)
NOT by fixed edge positions.
Phase 1: Foundation
Learn flow and basic transformation.
Unlocked Plots
- Vine (β β β β)
- Form Grower (βοΈ)
- Color Bloomer (π¨)
- Spring (π±) - pre-placed or placeable
- Harvest (π―) - pre-placed or placeable
- Weeder (β)
UI Components
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π± SPROUT GARDEN Level 3 of 10 π¦ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β GOAL: Turn β red into β red β
β β
β βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ β
β β β β β β β β A β
β βββββΌββββΌββββΌββββΌββββΌββββ€ β
β β β β β β β β B β
β βββββΌββββΌββββΌββββΌββββΌββββ€ β
β β β β β β β β C β
β βββββΌββββΌββββΌββββΌββββΌββββ€ β
β β β β β β β β D β
β βββββΌββββΌββββΌββββΌββββΌββββ€ β
β β β β β β β β E β
β βββββ΄ββββ΄ββββ΄ββββ΄ββββ΄ββββ β
β 1 2 3 4 5 6 β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β PLOTS: [π±] [π―] [β] [βοΈ] [π¨] [β] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [πΏ TEND] [β©οΈ RESET] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββComponents:
- Header: Level name/number
- Professor Hoot: π¦ in top-right corner (tap for hints)
- Goal display: Visual showing input β output
- Grid: 6x5 for early levels
- Plot palette: Available plots for this level
- Action buttons: Tend (run), Reset
- (No separate HINT button - that's what Professor Hoot is for)
Level Progression (Phase 1)
| Level | Goal | Teaching |
|---|---|---|
| 1 | Connect spring to harvest | Flow, vines |
| 2 | Connect with a turn | Vine rotation |
| 3 | β β β (one form change) | Form Grower |
| 4 | π΄ β π’ (one color change) | Color Bloomer |
| 5 | β β β² (two form changes) | Sequential transformation |
| 6 | π΄ β π΅ (two color changes) | Same concept, different property |
| 7 | β red β β green | Combining transformations |
| 8 | β β β (three form changes) | Longer paths |
| 9 | β β β (cycle wrapping) | Modular arithmetic |
| 10 | Challenge: β red β β blue, max 8 plots | Optimization |
Sample Level File (Phase 1)
level:
id: "p1-03"
name: "First Growth"
phase: 1
grid: [6, 5]
goal:
description: "Turn the circle into a square"
input: { shape: circle, color: red, count: 1 }
output: { shape: square, color: red, count: 1 }
palette:
- spring
- harvest
- vine
- form-grower
- weeder
pre_placed: [] # empty - player places everything
constraints:
max_plots: null # no limit
hints:
- "The gear (βοΈ) changes shapes"
- "Circle becomes square when it goes through the gear"
par:
plots: 4 # spring, vine, grower, harvestPhase 2: Imprinting
Learn direct assignment vs cycling.
Unlocked Plots
- Form Imprinter (β β β² β )
- Color Imprinter (π΄ π’ π΅ π‘)
UI Changes
- Palette expands with new section: "Imprinters"
- Maybe a "toolbox" that opens to show categories
Level Progression (Phase 2)
| Level | Goal | Teaching |
|---|---|---|
| 11 | Any shape β β specifically | Imprinter vs Grower |
| 12 | β green β β green (reset shape only) | Selective transformation |
| 13 | Mix: use grower AND imprinter in same puzzle | When to use which |
| 14 | Efficiency puzzle: grower path vs imprinter path | Trade-offs |
| 15 | Challenge level | Mastery check |
New Puzzle Types
- "Make it a circle, no matter what arrives"
- "The short path or the long path?"
Phase 3: Gates
Learn conditionals and filtering.
Unlocked Plots
- Gate (π§) with variants
UI Changes
- Gate configuration: tap gate to set condition
- Visual feedback when sprout is blocked (wilt animation)
Level Progression (Phase 3)
| Level | Goal | Teaching |
|---|---|---|
| 16 | Let only stars through | Basic gate |
| 17 | Two paths, gate on one | Selective routing |
| 18 | Multiple gates in sequence | AND logic (implicit) |
| 19 | Gate + transform after | Conditional transformation |
| 20 | Challenge: Sort red from blue | Pre-fork thinking |
New Puzzle Types
- "Only ripe fruit can pass"
- "Filter out the wrong colors"
Phase 4: Forking
Learn branching and routing.
Unlocked Plots
- Fork (β)
- Splitter (β‘)
- Grafter (β)
UI Changes
- Fork configuration: set routing rules
- Multiple sprouts visible simultaneously
- Grafter shows "waiting" state
Level Progression (Phase 4)
| Level | Goal | Teaching |
|---|---|---|
| 21 | Split one into two | Splitter basics |
| 22 | Route red left, blue right | Fork routing |
| 23 | 1 β 4 (double split) | Compound splitting |
| 24 | Two paths merge | Grafter basics |
| 25 | Fork then graft | Branch and merge |
| 26-30 | Increasing complexity | Mastery |
New Puzzle Types
- "Turn 1 red circle into 4 blue squares"
- "Sort by color, transform, recombine"
Phase 5: Timing
Learn synchronization.
Unlocked Plots
- Delay (β±οΈΒΉ, β±οΈΒ², β±οΈΒ³)
UI Changes
- Tick counter visible during tend
- Path length visualization (optional)
Level Progression (Phase 5)
| Level | Goal | Teaching |
|---|---|---|
| 31 | Two paths, must arrive same tick | Sync basics |
| 32 | Long path + delay = short path | Compensation |
| 33 | Three-way sync | Complex timing |
| 34 | Grafter that needs sync | Practical application |
| 35 | Challenge: No delays allowed | Pure path planning |
New Puzzle Types
- "Both sprouts must arrive together"
- "The grafter needs both at the same time"
Phase 6: Logic
Learn boolean operations.
Unlocked Plots
- AND Trellis (β§)
- OR Trellis (β¨)
- NOT Trellis (Β¬)
- XOR Trellis (β)
Level Progression (Phase 6)
| Level | Goal | Teaching |
|---|---|---|
| 36-40 | Boolean puzzles | Digital logic basics |
New Puzzle Types
- "Output only if both inputs arrive"
- "Invert the color"
Phase 7: Loops
Learn iteration.
Unlocked Plots
- Merge (β)
- Check (β)
- Counter (+1)
UI Changes
- Loop detection in debugger
- Iteration counter display
Level Progression (Phase 7)
| Level | Goal | Teaching |
|---|---|---|
| 41 | Go around twice | Basic loop |
| 42 | Exit when star | Conditional exit |
| 43 | Count to 4 | Counter usage |
| 44 | Infinite loop (intentional failure) | What NOT to do |
| 45 | Complex loop with transforms | Mastery |
New Puzzle Types
- "Keep going until it's a star"
- "Go around exactly 3 times"
Phase 8: Abstraction
Learn functions and composition.
Unlocked Plots
- Rabbit Hole (π)
UI Changes
- Zoom into sub-garden
- Function library panel
- Save/name functions
Level Progression (Phase 8)
| Level | Goal | Teaching |
|---|---|---|
| 46 | Use a pre-made function | Function calling |
| 47 | Create your own function | Abstraction |
| 48 | Function that uses a function | Composition |
| 49 | Recursive function (careful!) | Recursion |
| 50 | Grand challenge | Everything together |
UI Component Specifications
Grid
βββββ¬ββββ¬ββββ¬ββββ¬ββββ¬ββββ
β β β β β β β A
βββββΌββββΌββββΌββββΌββββΌββββ€
β β β β β β β B
...- Cell size: 60x60px minimum (touch-friendly)
- Grid size: 6x5 (Phase 1) up to 12x10 (advanced)
- Row labels: A, B, C, D, E...
- Column labels: 1, 2, 3, 4, 5, 6...
- Cell states: empty, plot, highlighted (cursor), active (tending)
Plot Palette
βββββββββββββββββββββββββββββββββββββββββββββββ
β [π±] [π―] [β] [βοΈ] [π¨] [β] β β Phase 1
βββββββββββββββββββββββββββββββββββββββββββββββ€
β [β] [β ] [β²] [β
] [π΄] [π’] [π΅] [π‘] β β Phase 2 (when unlocked)
βββββββββββββββββββββββββββββββββββββββββββββββ€
β [π§] β β Phase 3
...- Horizontal scroll if too many
- Categories collapse/expand in advanced phases
- Selected plot highlighted
- Tap to select, then tap grid to place
Goal Display
GOAL: β π΄ Γ 1 β β
π΅ Γ 4
(input) (output)- Visual representation of input/output
- Count if multiple
- Checkmarks as goals are met
Action Bar
[πΏ TEND] [π‘ HINT] [β©οΈ RESET]- Tend: Run the garden (big, primary button)
- Hint: Progressive hints (costs nothing, just for learning)
- Reset: Clear player-placed plots
During Tend (Animation Mode)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β TENDING... Tick: 3/12 β
β β
β [Grid with animated sprout movement] β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β red at B2 β enters Form Grower β β red emerges β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [βΈοΈ PAUSE] [βοΈ SKIP] Speed: [π’] [π] [π] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ- Tick counter: Current tick / estimated total
- Step narration: What's happening
- Speed controls: Slow, normal, fast
- Pause/Skip: Control playback
Level Complete
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π GARDEN COMPLETE! π β
β β
β β
β
β
(3 stars) β
β β
β Plots used: 7 (par: 8) β Under par! β
β Ticks: 12 (par: 15) β Under par! β
β No sprouts lost β Perfect! β
β β
β [βΆοΈ NEXT LEVEL] [β©οΈ TRY AGAIN] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββLevel File Format
level:
# Metadata
id: "p4-23"
name: "The Great Split"
phase: 4
author: "Dad"
# Grid setup
grid: [8, 6]
# Goal definition
goal:
description: "Turn 1 red circle into 4 blue squares"
input:
- { shape: circle, color: red, count: 1 }
output:
- { shape: square, color: blue, count: 4 }
sync: false # true = all must arrive same tick
# Available plots
palette:
- spring
- harvest
- vine
- form-grower
- color-bloomer
- splitter
# gates NOT available - forces use of splitters
# Pre-placed plots (optional)
pre_placed:
- { position: [0, 2], type: spring, config: { emits: { shape: circle, color: red } } }
# Locked cells (optional)
locked: []
# Constraints
constraints:
max_plots: 15
max_of_type:
splitter: 2
forbidden: []
# Hints (progressive)
hints:
- "You'll need to split the path twice"
- "A splitter makes copies - one becomes two"
- "Two splitters: 1 β 2 β 4"
# Par scores
par:
plots: 12
ticks: 20
# Scoring
scoring:
completion: 100
under_par_plots: 50
under_par_ticks: 50
no_deaths: 25Puzzle Design Patterns
The Wall Pattern
Create a puzzle that ALMOST works with current tools, but requires the new tool.
The Aha Pattern
Player struggles, gets hint, new plot appears, instant understanding.
The Efficiency Pattern
Solution exists, but can you do it in fewer plots/ticks?
The Remix Pattern
Same goal, different constraints. "Now do it without delays."
The Sandbox Level
No goal. Just play. Build whatever. Often at end of phase.
Challenge Modes (Post-Campaign)
| Mode | Description |
|---|---|
| Speed Garden | Solve in under N ticks |
| Minimalist | Fewest plots possible |
| No Deaths | No sprouts can fall off |
| Sync Master | All sprouts arrive same tick |
| Blind Tend | Can't see animation, only result |
| Daily Garden | New puzzle every day |
Free Grow Mode
After completing Phase 1, unlock Free Grow:
- Any grid size
- All unlocked plots
- No goals
- Save and share gardens
- Export as level file
Tags
sprout-garden, level-design, game-design, progression, puzzles, ui-spec
Slots
North
slots:
- sprout-gardenSouth
slots: []East
slots: []West
slots: []