Dev
SandboxSB
A dev-only Unity scene to try any job, mower, day and hour in seconds, solo or in co-op, without touching the real save. Every spec adds its own pieces to it, and every Done when is checked here first.
Test anything in seconds. Pick a garden, a mower, the day and the hour, and try it right away, in solo or co-op, without playing the campaign or touching the real save. Every spec adds its pieces to the sandbox, and every "Done when" is checked here first, then on two instances.
The player's view
This is the developer's view: the sandbox never ships to players.
Without it, a job can only be tested by playing into it: the Garden scene needs a booked mission, the right tools in the van, the right day and the F9 money cheat. Testing a stone through a greenhouse, or a jungle with a dull blade, takes minutes of setup each time.
With it, you open the sandbox scene and press Play: you're on the first job's garden with grandma's mower. F1 opens the cheat panel and frees the cursor. You pick the villa's garden, a seed, the self-propelled mower, a day in late spring at noon, and build it: a fraction of a second later you're mowing it. You bend the blade, drop a hose at the crosshair, skip to next week and come back to a grown lawn.
In co-op, F10 hosts from the sandbox and a dev build joins; the guest follows every rebuild and gets the host's lawn each time. Finishing or abandoning the job builds the same garden again. Leaving for any other scene puts the real save back, untouched.
- Game Mower › Open Sandbox Scene, then Play. It starts on the first job's garden with grandma's mower.
- F1 opens the cheat panel (the cursor is freed while it is open). Set the garden, then Build this garden.
- Co-opF10 hosts from the sandbox. The guest is a player made with Game Mower › Build Dev Player (Mac), the only build that carries the sandbox (see Testing). Guests follow every rebuild.
- DoneFinishing or abandoning the job builds the same garden again. Leaving for any other scene puts the real save back.
Ideas
SB1: the sandbox
A generated scene with its own in-memory company, a client garden pad that builds any job, a proving lawn with every feature at once, and a cheat panel.
- Dev onlyNot in the player build's scene list (editor and development builds only).
- Never touches the real saveThe sandbox runs on its own in-memory company (or
-profile sandbox), so the user's progress is safe without a backup (Testing). - Real code, no copiesZones are built from the same generators and components as the Garden scene
(
GardenGenerator,LawnPlan,LawnGrid, the tools). A behaviour that only works in the sandbox is a bug. - Generated like the other scenesGame Mower › Rebuild Sandbox builds
Sandbox.unityfrom code (the same habit as Rebuild Generated Content), so it never drifts from the game's prefabs. - Every feature adds its pieces with itA new job adds its zone, a new behaviour its panel controls, in the same commit (the index is in Tech).
What it holds
- The client garden pad: any of the 15 jobs, with seed, quirk, size, grass height, requested height and thickness overrides, any mower, the day (season and weather) and the hour. Hedges, pools, wood and hard surfaces come with their jobs (m07, m08, m12-m14), so they are already in it.
- The proving lawn (the lawn strips): every
LawnPlanfeature at once (bumps, wet dips, clover and dry patches, weeds, molehills, island and border beds, a patio, hidden stones, debris), on any job's street. - The cheat panel: the garden; the mower live (each part's condition, fuel, bag, repair all, fill up, clog); game speed (solo); an overlay (load, speed against the clean speed, cut mass, bag, blade height, mowed and edges, humidity, stopwatch, fps, build time); co-op events per player.
- Two instances: host and guest both in the sandbox, events shown per player.
The scene, as planned
A flat plot with zones side by side, the van parked in the middle, a workbench and a store shelf. Each zone lands with the idea that brings its behaviour.
| Zone | For | Contents | With |
|---|---|---|---|
| Lawn strips | mowing, trimming, lawn craft | one strip per LawnPlan feature: flat, bumps, a bank, wet dips, clover / dry / weeds, molehills, stones, beds with flowers, a fence edge (fringes) | SB1, as the proving lawn |
| Surfaces | mowing | flush / raised / sunken slabs, pea gravel, chippings, pebbles, bark, stray gravel along a border, a tree with roots, edging strips, a drain cover, a long-grass strip (spring-back), dog poop (fresh / dry), a hose, sprinkler heads | MO2, GR1, MO6a |
| Client garden pad | any real job | generates any mission or household by id or seed (the same garden as in the game), with its client NPC for the walk-round | SB1 (the walk-round: J13) |
| Breakables wall | thrown stones | a house front with windows, a greenhouse, a shed, a parked car, gnomes, lights and pots, a neighbour's fence and window | MO3 |
| Hedges and trees | hedges, pruning, chainsaw | a hedge row, a tree with branches, fallen logs | their jobs, through the pad |
| Hard surfaces | pressure washing | patio, driveway, deck | their jobs, through the pad |
| Pool | pool cleaning | a dirty pool | its job, through the pad |
| Workbench | the exploded view, mower care | the Workshop station with every mower model on a rack | MO4 built Parts pickers instead; the rack waits for the exploded 3D view (MO14) |
| Later | windows, new lawns, beds, stumps | added with their job pages |
The cheat panel, as planned
Opened with a key in the sandbox only (a UI screen, not world text). Every change applies live.
- Garden: mission / household id, seed, quirk (Jungle, Moles, Swamp), size; regenerate. (SB1)
- Grass: height, thickness, requested height (SB1); growth days since the last visit, lawn memory save / load / clear and a forced fingerprint mismatch (MO1).
- Conditions: humidity, time of day, weather (SB1); wind and a weather independent of the day (WE1 and on); freezing the clock (SB4).
- Tools: any tool, part or upgrade (SB1's kit, MO4's parts); every part's condition and care state (sharpness, oil, plug, caking, rope, oil in the filter, bent blade, bent crank…) (MO5b); height levers and throttle (MO5a, MO5d); fill or empty fuel and bag (SB1), the charge (SB4); a used mower with rolled faults (MO10).
- Difficulty: switch Money / Machine / Mishaps freely (locked in real saves, never in the sandbox) (DF1).
- Manual: reset or unlock Harold's notes (MO9).
- Hazards: spawn stones, toys, a hose, sprinkler heads, dog poop, a phone at the crosshair (MO2); show hidden ones (SB4).
- Client: personality (fussy, normal, relaxed, DIY, show-off), chattiness; trigger the walk-round now (J13).
- Stones: force a throw at the next strike, draw the arcs, list the breakables in range (MO3).
- Overlay: load, speed against the clean speed, mass cut, bag, stopwatch, cells done (SB1); par (MO1); throw chance (MO3).
- Co-op: the dev keys (F10 host, F11 join, F12 leave) work here; the panel shows each player's events (SB1).
Needs: the Garden scene · Done when: any of the 15 missions' gardens loads in under ten seconds with any mower, and a guest sees the same lawn.
SB2: the store's test strip
A slice of the lawn strips becomes the strip outside the hardware store where players try a mower before buying it (the store's notes wait in Leftovers from the old plans). The one sandbox piece that would reach players.
SB3: PlayMode tests on sandbox zones
PlayMode tests run against the sandbox's zones: the lawn memory round trip and fingerprint, throw chances, clippings sums.
SB4: the panel's leftovers
Planned panel controls no other idea brings: freezing the clock (speeding it up exists, solo), the battery charge next to fuel and bag, and showing the hidden hazards.
Tuning
| Name | Value | Idea | What it does / why |
|---|---|---|---|
| Build budget | under 10 s | SB1 | any garden with any mower, from the panel |
| Long-grass strip | a 1.5 m band across the middle of the lawn, height in cm from the panel | GR1 | spring-back and trample tests |
Co-op
- State: the sandbox company is
SaveSystem.NewGamein memory on each machine (GameSession.Sandboxed:Persistnever writes). The guest builds the same garden on the host's company. - Channel:
NetWhere.sandboxcarries theSandboxSpecas JSON (part of the spec: overrides, parts, the long-grass strip), so a guest builds exactly the same garden. - Rebuilds:
NetPlayertreats a new lawn in the same scene as a fresh start, so the guest gets the host's lawn after each rebuild; guests follow every rebuild. - This machine only: some controls act locally and so are solo only (MO2's drops at the crosshair, GR1's wet lawn). A sandbox guest sends no wear.
- Randomness: the seed is in the spec; nothing new.
- Late joiners: they get the spec and build the same garden.
- Checks: two instances, events shown per player, guest mismatches 0; both saves untouched.
Tech
How it is built
Sandbox.unity= the Garden scene's pieces (GardenSceneContentin the setup: generator, lawn, mission, HUD) plusSandboxControllerand theSandboxUIdocument (SandboxPanel,UI/Styles/Sandbox.uss). It is made by Game Mower › Rebuild Sandbox (and by Rebuild Generated Content), and is not in the build list.SandboxSpec(Sim): the job id plus overrides (seed, quirk, size, grass, requested height, thickness, the proving lawn, mower, parts, day, hour).Build(db)returns an in-memory copy of the job; the database's job is never touched. A resized garden drops its planned-street lot and gets a generic street.SandboxKitCommand(Sim): on the sandbox company, the biggest van holding the chosen mower (equipped), one of every other tool and a pack of every supply, money and reputation topped up, the day and hour set.SandboxSession:Prepare/Load/Reload/Join; times every build (LastLoadSeconds).- From
eval:SandboxSession.Load(new SandboxSpec { mission = "m07_villa", proving = true, seed = 31, mower = "push", day = 50, minute = 720 }).
Pieces each spec adds
Each spec lists its own sandbox pieces, in full, in its Tech section ("Sandbox pieces"); this table is the index.
| Spec | Code | Its pieces, in one line |
|---|---|---|
| Mowing: the mower bible | MO1 | the Lawn memory section; par from the grid in the overlay |
| Mowing: the mower bible | MO2 | the proving lawn's surfaces and things; Surfaces and things (MO2) drops at the crosshair (solo) |
| Mowing: the mower bible | MO3 | the breakables wall, the stones panel, throw chance in the overlay |
| Mowing: the mower bible | MO4 | Parts (MO4) dropdowns under the mower picker (the workbench rack waits for MO14) |
| Mowing: the mower bible | MO5a | the engine line, a throttle dropdown, Cold / Warm / Start / Stall |
| Mowing: the mower bible | MO5b | the Care (MO5b) foldout |
| Mowing: the mower bible | MO5c | Bench (MO5c) in that foldout |
| Mowing: the mower bible | MO5d | Levers (MO5d) |
| Mowing: the mower bible | MO6a | a spring-back readout in "Grass that moves" |
| Mowing: the mower bible | MO6b | a clippings readout in "Grass that moves" |
| Mowing: the mower bible | MO6c | a habits readout in "Grass that moves" |
| Mowing: the mower bible | MO9 | reset or unlock Harold's notes |
| Mowing: the mower bible | MO10 | a used mower with rolled faults |
| Grass: the lawn itself | GR1 | Grass that moves: the long-grass strip, Wet lawn, the trample view |
| Grass: the lawn itself | GR2 | Grass condition (GR2) |
| Grass: the lawn itself | GR3 | the Grass gallery (GR3) button |
| Difficulty | DF1 | the difficulty dials, switchable freely (SB1's panel, above) |
| Weather: fronts and forecasts | WE1 and on | wind, a weather override independent of the day |
| Skills: your body and your knack | SK1 | muscle, fat and negotiation sliders per sibling |
| Sound: every sound comes from something | SN1 | the sound board and the sound view |
| Jobs: from the phone call to the review | J9, J13 | a "Jobs" tab; the client's personality, chattiness and the walk-round (SB1's panel, above) |
Tests and checks
- SB1 (4 EditMode tests,
SandboxTests): the spec's JSON round trip, overrides on a copy, the proving lawn's features, the kit. - Checked: all 15 jobs built, each with a different mower (all 8 used), plus a proving lawn: about 0.4 s each after the first (4.7 s including entering Play mode), against the 10 s budget. A solo abandon rebuilds the sandbox garden. The real save was byte-identical after 17 builds; so was the guest's save.
- Two instances: the guest followed the host into a seeded jungle (m09, seed 999), then into a rebuilt villa
proving lawn. It got the host's lawn each time, mowed, and kept
mismatches=0.
Open questions
- MO3's sandbox pieces: the breakables wall and the stones panel are planned with MO3; this page doesn't record which of them landed.
Rejected
- A player "Free mow" mode: considered and not picked; the sandbox stays dev only (SB2's test strip is the one piece that would reach players).
- A hand-made scene: it would drift from the game's prefabs; the scene is generated from code.
- Sandbox-only copies of game code: a behaviour that only works in the sandbox is a bug.