Game Mower wiki

Game

Mowing: the mower bibleMO

The walk-behind mower in depth. The bar in your hands, what the blade reaches and throws, the surfaces it rolls over, the lawn that remembers it, the parts you build it from, the care it needs and the craft of using it well.

Get the mowing perfect and the jobs are endless. The mower is a real machine: a bar you squeeze, a cord you pull, a blade that spins clockwise and throws stones out of the deck's openings, parts you bolt on at the bench and oil that turns black. Every 0.3 m of lawn remembers how you mowed it, so a good gardener's habits show week after week.

The player's view

Grandma's old mower. It's cold and it's temperamental. You set the lever to choke, pull the cord, pull again, and on the third try it coughs and catches. Lever to fast, squeeze the bar, and the blade spins up under the deck. You walk a couple of laps round the edge first, then lines, lining each pass up on the pale wheel track the last one left.

The gravel path. You let go of the bar before you roll onto it: the engine dies, the blade runs down, and on the other side you pull the cord again. The new pro mower at the store has a blade brake, so letting go only stops the blade and the engine keeps running. Forget, and the blade sucks up a stream of stones and machine-guns them out of the deck.

The greenhouse. The blade throws to the right. Mow along the house with the house on your left and the windows are safe; pivot the mower up near the glass and the whole front of the deck opens. A stone arcs, KSSHH, and the pane is on your bill. The client's dog ducks with a "Hey!" (nobody ever gets hurt).

Things in the grass. A raised slab you forgot screeches and bends the blade, and now the handle shakes. A hose wraps the spindle and kills the engine. A fresh dog poop sprays brown, smears the deck, and your wheels print it all the way across the patio.

The lawn remembers. Next week the strip you missed is a shaggy band, the scalp is a brown scar, and the fence line you never trimmed is a little shaggier. Mow the same way three weeks running and the stripes go dull and the wheels wear ruts; turn it round and they heal.

The bench. In the evening you tip the mower filter side up, file the blade on both ends, balance it on the cone, change the black oil and brush the fouled plug. Tomorrow it starts on the first pull. Or you pay the service desk and get it back the next morning.

One pass, from your hands:

  1. Check itFuel, oil, the blade. Refuel on the drive, not the lawn: a spill kills a patch.
  2. Set the heightAt each wheel on a cheap mower (forget one and the cut is lopsided), one lever on a better one. High first on long grass.
  3. Start itLever to choke when cold, pull the cord, lever to fast. How many pulls depends on care. The Volt has a button.
  4. Squeeze the bar and goLaps round the edge for the headland, then lines overlapping on the wheel track, a different direction from last time, the glass on your left.
  5. Cross the gravelLet go of the bar first. A cheap mower stops its engine; a blade brake only stops the blade.
  6. TurnTip it onto the rear wheels to pivot. That opens the front of the deck, so not near glass.
  7. Empty, unclogWet grass fills the bag and clogs faster.
  8. DoneThin fringes along fences and slabs remain, the trimmer's optional polish.

Ideas

MO1: lawn memory and the deck's real reach

The mower alone finishes a lawn, and the lawn remembers it.

The deck's real reach

The old trimmer-only band along every edge (0.45 m) goes. The deck's real shape decides what the blade reaches:

  • The blade tip sits a few cm inside the deck (skirtMargin: ~3 cm at the sides, ~6 cm at the front). The deck collides with walls, fences, posts, raised slabs and bed edges; it can't go under a hedge.
  • Edge cells (next to anything blocked, or the border) keep which of their 8×8 sample points the blade passed over: their coverage. Points under a fence or a wall aren't lawn. A cell along a fence is cut up to where the blade reaches; the rest is a fringe, a thin uncut strip drawn on the obstacle side of the cell.
  • A cell counts as done at 70% coverage. Fringes are finish quality: a fussy client notices them, the trimmer takes them off (its own page, later), and they grow in lawn memory (a fence line never trimmed turns shaggy over weeks).
  • Progress counts the whole mowable lawn (no excluded band). TrimEdges = edge cells with no fringe.
  • Par from the grid, with a stock Classic 46 as the reference: shown in the sandbox only. Jobs keep their own par until the jobs spec decides (Jobs: from the phone call to the review).
The deck against a fence: the trimmer-only band from before MO1 against a 3 cm fringe

What the lawn remembers

Every visit is built from the seed, then the remembered lawn, then the growth since. Missed strips, fringes, scars, scuffs, torn tips, stripes, feed and bare patches carry over.

  • Exact, per 0.3 m cell: extra height (missed strips, tufts, fringes), scalp / scuff (brown, heals ~7 days, faster with feed (GA2); turn scuffs ~4 days), stripe (16 directions × 8 strengths) and the direction streak (0-3), torn tips (0-3, from a dull blade, gone in ~3 days), scorch, days fully brown and the usual height (GR2), smothered (clumps left, MO6b), ruts and stress days (MO6c), the edge coverage, and the lawn-health cells LawnGridCare has (feed, sown, bare; a fuel spill counts as bare) plus weeds (GA2). Laid grass (MO6a) lives only during a visit.
  • Stored compressed: quantized, deflated, one small file per lawn (lawns/<save's lawnId>/), never plain JSON arrays (the pretty-printed JsonUtility save would grow to 15-50 MB). The planes and their bits are in Tech.
LawnCellsRawStored (quantized + deflate)As plain JSON
200 m², the street2,20013 KB0.7-1.0 KB47 KB
400 m², the suburbs4,40026 KB1.3-1.8 KB94 KB
1,500 m², leafy avenues16,600100 KB4.7-5.8 KB360 KB
4,000 m², an estate44,000265 KB12-15 KB950 KB
  • A whole playthrough stays under ~2 MB. Decompress + apply: under a millisecond. Saved only for lawns you touched, written when the host leaves the lawn.
  • Layout fingerprint: a hash of the LawnPlan output + grid size. On a mismatch the memory is dropped and the lawn starts fresh (no garbage beds after a generator change).
  • On the next visit: a missed strip is a shaggy band, a scalp a brown scar, a fence line you never trimmed a little shaggier each week. LawnGrid.Grow builds the growth since.
  • Stripes: per-cell lean angle and strength; fresh tips fade in 45 s. Between visits they fade with the regrowth: rotary stripes after ~1.5 cm (a day), roller stripes after ~4 cm (three days). How they're drawn: GR1.
  • Co-op: the host sends the blob to guests when the lawn loads (1-15 KB).
Days after a visit: the stripes fade with regrowth, the missed strip stays long, the scalp heals

Needs: SB1 · Done when: a lawn can be finished with only the mower, and next week the missed strip and the fence fringe are taller, on both instances.

MO2: surfaces and things in the grass

What the mower rolls over, and what it does about it.

Surfaces

Each cell gets a surface (GardenSurface): lawn, slab (flush / raised / sunken), gravel (pea / chippings / pebbles), bark mulch, bed soil. Surfaces come from each garden's own beds, patio and stepping stones and its seed (no job data; lawn memory fingerprints unchanged), and every garden gets some. Grass grows only on lawn and in slab joints.

SurfaceWheelsBlade spinning over itNotes
Lawn×1cuts
Flush slabsmooth, faster (×1.08)no contact; cuts the grass in the jointsstepping stones set right
Raised slab (3.5-5 cm proud)a bump uphits if the blade is set lower than the slab: damage by speed (below); no throwsstepping stones, made harsher
Sunken slaba dipno contact; grass overhangs the edge (a fringe)trimmer / edging work
Pea gravelcrunch, heavier push, rolls (×0.8)suction lifts stones into the blade: a stream of throws, the most dangerousround, flies far
Chippingscrunch, heavier (×0.85)lifted less, wear the blade fast, fly shorterangular
Pebbleslumpy (×0.85)rarely lifted, but hit like a raised slabbig decorative stones
Bark mulchsoft (×0.9)chips fly everywhere: harmless, a mess on the lawn (a fussy client notices)beds
Bed soilsinks a little (×0.85)dust, scalps nothing, kills plants (flowers as before)
Tree roots (2-5 cm above the soil, radiating from trunks)bumpsa hard hit if the blade is set low, and a scalp along the root's ridgehalf hidden under thin grass
Lawn edging strip (metal or plastic, along beds)-flush: nothing; 1-2 cm proud: a hard hit (metal: SCREECH and sparks; plastic: chewed bits)edging strips are trimmer territory
Drain / manhole covera metal clankflush: nothing; raised: a hard hit
  • Around a tree trunk the deck can't reach the bark: a ring of fringe is left (the trimmer's), and the roots around it are the hard-hit zone.
  • Stray gravel creeps ~1 m into the lawn from a gravel border or drive, thinning out (seeded). Those cells stay lawn (grass, progress). Mowing the edge by the gravel is the real danger zone: raise the blade, go slow, or leave it to the trimmer.
  • Gravel lift = surface lift (pea 1.0, chippings 0.6, pebbles 0.15) × the blade's suction (standard 1.0, high-lift 1.6, mulching 0.8) × lerp(1.6, 0.4, blade height 3→10 cm). Throws per second over gravel ≈ 6 × lift. A high-lift blade set low over pea gravel is a machine gun. Each gravel strike is a TINK and a blade nick; MO3 throws them.
  • Stepping stones and hidden stones: stepping stones (3.5 cm) and hidden flat stones (4-6.5 cm) wear the blade (0.05/s, ×3 when set low) while the blade is at or below them. Rocks and toy balls are debris hits (blade wear, +0.4 load); molehills add load and wear a low blade.

Hard hits

Raised slabs, pebbles, roots, proud edging, a raised drain, a rock set proud. The damage grows with blade speed (engine power, not yet bogged) and how far the blade is below the top (GardenSurfaces.Severity / Resolve, seeded rolls Salts.HardHit*):

  1. a nick on every hit: blunting (sharpness −);
  2. a bent blade (PartState.bent, integrity −): the mower shakes until the blade is replaced or repaired, wobbly lines, engine wear up to ×1.5. The bend stays after the job;
  3. a stall: the engine dies until you pull the cord again (MO5a); with a brake clutch the clutch slips, the blade stops and the engine runs on (MO4);
  4. rarely, a bent crankshaft on a full-speed hit with a heavy blade: an expensive engine repair, the mower shakes until it's fixed (a blade swap doesn't help).

No throws from a slab: a horrible SCREECH and sparks (slabs, drains, rocks, metal edging), wood chips (roots), chewed bits (plastic edging), and a jolt through the handle (rumble, the camera's kick). Roots scalp the turf along their ridge when the blade is set low.

Things in the grass

How the mower reacts to what it rolls over (which household leaves what is a jobs matter).

ThingThe mowerCost to you
Loose stone, rocka strike: thrown (MO3) or a CLANK insideblade wear
Hidden flat stonea strike only when the blade is set low (MO13)blade wear, maybe a throw
Toy (ball, dinosaur, frisbee)BLORP, plastic confetti, a jolt, +loada blade nick; the job's debris penalty
Garden hosewraps the blade spindle: instant stall (cheap) or clutch slip (pro); unwrap with a hold of E 2.5× as long as unclogging, or at the benchthe job's debris penalty
Pop-up sprinkler headsnaps: a water geyser for 25 s; a blade nickthe job's debris penalty
A phonea crunchthe job's debris penalty
Sticks, twigssplinters fly (harmless), +load-
Molehill+load, blade wear when set low-
Dog poop, fresha brown splat spray; it smears under the deck (a green stink haze; the bag fills ×0.85; it counts as deck caking until scraped or hosed, MO5b); the wheels and your shoes pick it up and print brown for 6 m / 10 steps (MudPrints), on the lawn or across the pationone in money; a mess (and the client's face)
Dog poop, dry (a few days old)crumbles into a dust puff, harmless but gross-
  • Poop prints on grass fade in a day (rain washes them); on paving they stay until cleaned.
  • The poop on grandma's lawn is the neighbour's dog's.

Needs: MO1 · Done when: a raised slab bends a low blade at full speed, and a fresh poop leaves prints across the patio.

MO3: what the blade throws

Throws come from geometry. The blade spins clockwise seen from above on every mower, so the skill transfers.

  1. A strikeThe blade meets a stone at angle φ on the blade circle (clockwise from straight ahead). A stone met walking forward is struck on the front half; gravel the suction lifts can be struck anywhere.
  2. A tangent exitThe stone leaves at θ = φ + 90°. Struck at the front, it flies right; at the right side, back; at the back, left; at the left side, forward.
  3. The deck holds most inThe skirt is closed except where the chassis has openings (data per set-up). A stone that meets closed skirt stays in: a CLANK (or a thud into the bag), a little blade wear.
  4. Ricochets10% of the stones held in bounce out of any opening, in a random direction.

What strikes: every gravel strike (MO2's lift), a loose rock under the deck (the rock flies), and a stone set proud that the blade chips. How the chance of a strike grows with a low blade and speed is MO13.

OpeningWhere (φ)ExitRangeNotes
Front gap (the front skirt rides higher to let grass in)−50° … +50°at the tangent: front-right to back-right, low~6 mthe main exit on every mower; hits cars, low glass, gnomes, shins
Rear discharge, bag fitted150° … 210°into the bag: 90% caught~4 mthe rest goes out behind, low
Rear discharge, no bag150° … 210°straight back through the tunnel~12 ma rear flap part stops 60% and shortens it
Side chute (right side)60° … 120°the chute's direction, right and a bit back~18 mfast, far: the most dangerous set-up
Mulch plug-rear closed: stones recirculate-fewer throws, more blade wear
Tipped up (pivoting)front gap widens to −110° … +110°, highat the tangent, up to window height~10 mthe dangerous habit near the house
Deck guard partfront gap narrows to −35° … +35°throws ×~0.7

The set-up comes from the mower (DeckSetup.Of(sim)): the bag, the mulch plug and tipping from the mower itself, the chute, the flap and the guard from its parts (MO4). The blade's blow leaves through the same openings (GR1): the front-right gap with a bag, the rear without, the front when tipped.

  • The throw rose: each set-up throws mostly to the right, front-right to back-right, low; behind only without a bag; the left side only by ricochet. The skill: keep the glass on your left, don't pivot near windows, raise the blade over stones, and never spin the blade over gravel.
  • First-pass shape (the figure's model, to tune in the sandbox): a stone struck at φ meets the rim about 32° further round; through the front gap only ~30% fit under the raised skirt (75% tipped up).
  • The flight: every machine flies the same stone (ThrownStone): a real arc (seeded speed and elevation by opening), a tink and a spark off what it hits, a bounce or two. Damage only if something breakable is in the path; only the thrower's copy reports a Breakage (first hit wins). Never people or animals: they duck with a "Hey!".
  • Breakables (Breakable): house windows (found once in the editor from each house model's glass faces, stored on House.windows: 7-16 panes a house, the town's houses too), greenhouse panes, gnomes, the client's car (its alarm). KSSHH / CRUNCH / WHOOP WHOOP, shards, a dark crack left in the pane.
  • The bill: at cost on the job's result ("Broken by thrown stones": window $180, car $250, greenhouse pane $90, gnome $25), and a broken thing spoils a flawless job. These costs stand until the jobs spec; insurance comes later (IN1).
  • The show: comic words ("TINK!", "KSSHH!", "WHOOP WHOOP" for a car alarm), sounds, and a slow-motion moment in solo when a stone heads for something breakable. The co-op replay inset and the ego quip are MO12.
  • Co-op: strikes are seeded by (job, strike count, player) with Salts.Throw* (SD2); a throw is one Throw garden event (start, arc seed, outcome; first hit wins), so both machines see the same pane break.
The throw rose: pick a set-up, the blade, the surface and the height, and see where escaping stones go

Needs: MO2 · Done when: a bagged Classic mowing with the greenhouse on its right breaks it now and then, and never with the greenhouse on its left except by ricochet.

MO4: the workbench: a chassis with part slots

The model is the chassis: what no part changes (deck width, weight and turning, petrol / battery, push / self-propelled, discharge, roller mount, bar type, noise class, van footprint, deck openings). The slots hold parts you buy, fit, swap, wear out and look after. Models stay trade-offs because the chassis decides which parts fit.

The lineup

Mower$DeckStart / barGood atBad at
Grandma's (Classic 46)-46cord, temperamental / engine-stopfree; every slotold: hard starts
Budget Buddy 389538cord / engine-stoplight, quick turns, 2×2small bag, wears fast, few slots
Classic 4618046cord / engine-stop (clutch part)all-rounder, every slot; the par referencenothing special
Hover 33 (MO7)14033cord / engine-stopbanks, slopes, glides sidewaysno bag, no stripes, small
MulchMaster 4636046cord / engine-stopno clippings at allclogs sooner, bad when wet
Trekker 46 SP42046cord / brake clutchdrives at the clean pace, XL bagheavy to turn, thirsty
Volt 3848038button / motor stopquiet, free crossings, little carepacks, weak in tall grass
Regent 53 Pro Striper95053cord / brake clutchwide, heavy roller: stripes last 3 daysheavy, 2×4, pricey parts

Ride-ons, the zero-turn, the cylinder and gang mowers belong to GA6 and GA7 (their controls are J36).

The chassis

ChassisDeckPower / drive / bar / heightSlotsCan't take
Budget Buddy 3838 plasticpetrol, push, engine-stop bar, per wheelblade, engine (tune I), wheels (plastic, bearing), bag (S, M), handleroller, plug, chute, brake clutch
Classic 46 (grandma's too)46 steelpetrol, push, engine-stop bar, per axle (grandma's: per wheel)every slot, brake clutch partnothing: the all-rounder
MulchMaster 4646 domepetrol, push, engine-stop bar, per axleblade (mulching built in), engine, wheels, deck, handlebag, chute (no rear opening)
Trekker 46 SP46 steelpetrol, self-propelled, brake clutch, central+ drive belt; bag up to XLroller (driven rear wheels)
Volt 3838 compositebattery, push, motor stop + button, centralblade, battery pack (MO15), wheels, bag, plug, handleengine parts, chute
Regent 53 Pro Striper53 steelpetrol, push, brake clutch, centralblade, engine (up to race), bag (up to XL), deck, handlerear wheels (a heavy full-width roller, its own stock roller)
Hover 33 (MO7)33 plasticpetrol, hover, engine-stop bar, spacersblade, engine, handlewheels, bag, roller; banks are its job

The parts

SlotPartsEffectPrice
Bladestandard / high-lift / mulching / pro hardenedhigh-lift: more suction (fills the bag, stands grass up), more load, lifts gravel ×1.6; mulching: finer cut, needed for the plug, lifts ×0.8; pro: holds its edge twice as long$18 / $35 / $30 / $60
Engine (petrol)stock / tune I / tune II / race kitpower and torque +8 / +16 / +24%; race: louder, thirstier, harder hits$90 / $200 / $380
Battery pack (Volt, MO15)4 Ah (35 min) / 6 Ah / 8 Ah52 / 70 min a charge; a spare is a field swap$140 / $230
Wheelsplastic / ball-bearing / big rear / pneumaticeasier push, quieter / rough lawns, bumps, gravel, fewer ruts / smooth, no ruts, needs air$45 / $70 / $110
Roller kit46 / 53 rear-wheel chassisstriper stripes (~4 cm of regrowth); heavier, turns slower$160
Collectionbag S (40 units) / M (60, stock) / L ×1.5 / XL ×2, no bag, mulch plug, side chutesee MO3 and MO6b; a full L or XL is heavy to push$120 / $250, -, $20, $40
Decknon-stick coating, deck guard, rear flapcaking ×0.5 / narrows the front gap / stops 60% of rear throws$60 / $35 / $15
Barblade brake clutch (Classic 46)let go: the blade stops, the engine runs$180
Handleanti-vibration grips, scraper & gloves kithalf the shake, steadier lines / unclog ×0.7$30 / $60
Lookspaint, stickers, decalspersonal money; grandma's flower sticker can't come off$5-25

Example builds:

  • Rough-lawn beastGrandma's Classic + high-lift + big rear wheels (and a gravel machine gun).
  • Poor man's striperClassic + roller kit + bag L.
  • No tip runsClassic + mulching blade + plug: no bags at all.
  • Careful near glassClassic + brake clutch + deck guard, the careful pro.
  • Silent roundVolt + 8 Ah + bearing wheels, for early mornings.

What the parts do

  • The catalogue (Sim/Tools/MowerParts.cs): the slots (PartSlot), the parts above and the chassis rules (Fits, Stock; the brake clutch is built into the Trekker and the Regent). PartEffects adds up what a mower's fitted parts do: suction, load, edge, power, push, bag, caking, unclog, stripe lay, openings.
  • They change the mower: MowerStats.Compute(def, tool) (push, load ÷ power, bag size or none, unclog), MowerSim.Kit (suction for gravel lift, mulching, the roller's stripe lay, wet caking, a blade that holds its edge), the deck's openings for throws (MO3), the brake clutch (a hard hit slips it: the blade stops, the engine runs on), the grips (half the shake).
  • The model shows them (MowerVisual.ApplyParts): engine tune / race kit, a sharp blade, bag L / XL, deck guard, scraper kit; stand-ins for the roller kit, the side chute and the rear flap. Everywhere a mower is shown: in hand, at the bench, in the garage, in the van, and the other player's.

At the bench

  • Where: the Workshop station in grandma's garage; later the workshop tier's bench with a grinder (MO16).
  • The bench cards: the Workshop station's "Parts" cards and the tool screen (UI/PartCards.cs): per slot what's fitted, the spares and the store's parts that fit (Fit / Buy / Take off, a tooltip each), and what the set-up adds up to (push, load, bag, suction, where it throws). Parts are ordered at the bench, not from the store's shelves: the store's spares wall keeps the other tools' spares and consumables (trimmer heads, line, hedge blades), and mower parts leave it. The 3D exploded view is MO14.
  • Parts are physical, one set per mower (ToolInstance.fitted, one per slot; nothing = the chassis' stock part). Commands: BuyPartCommand (order and fit), FitPartCommand (a spare or a stock part back on), RemovePartCommand; the old part comes off and is kept (stock parts just go back). Spares are the company's (SaveData.looseParts); move parts between mowers at the bench.
  • Labels are UI callouts on screen, never text in the 3D world.
  • Migration from the old upgrades (which were bought once per deck size): engine levels → tune I / tune II / race kit, the blade upgrade → pro hardened blade, bag levels → bag L (XL from level 3), the tools upgrade → scraper kit, each fitted to every owned mower of that deck size (copied when several mowers share it; a part with no mower of its size waits as a spare). Deck radius levels are refunded in cash: deck width is the chassis now.
  • Ride-ons take blades, engines and bag sizes only.
The exploded view: pick a chassis and a slot, try the parts, and compare builds

Needs: MO3 · Done when: grandma's Classic gets a high-lift blade, big rear wheels and a brake clutch at the bench, and mows (and throws) differently.

MO5: mower care, the bar and the levers

The machine you handle: the bar and the cord (MO5a), what goes wrong with it (MO5b), fixing it by hand (MO5c), and the height levers and transport (MO5d).

Care is hands-on, short (10-40 s), satisfying and optional: every task can be paid at the store's service desk (the mower is back the next morning). Crews' mowers are serviced at the depot. Neglect degrades gently and never strands you: the free patch-up of your last working mower stays. A part's condition stays its integrity (bent, cracked: money or a new part); care states are what you fix by hand.

Needs: MO4 · Done when: a mower neglected for ten jobs needs five pulls at every gravel crossing, and one evening at the bench fixes it.

MO5a: the bar, the cord and the throttle

The control real walk-behinds have: the bail bar you hold against the handle (MowerSim.Bar). Click squeezes it and lets it go (a toggle; hold is an option in MO8a). What letting go does depends on the chassis, which makes crossing a gravel path a small decision and makes engine care matter.

  • Engine-stop bar (Budget, Classic, grandma's, MulchMaster, Hover): the blade is bolted to the crankshaft, so it spins whenever the engine runs. Letting go stops the engine (the flywheel brake); the blade runs down for 2.5 s, still cutting and throwing. To cross gravel, let go and pull the cord again on the other side.
  • Blade brake clutch (built into the Trekker and the Regent; a part for the Classic 46, MO4; the ride-on's PTO acts as one): the bar engages the blade through a clutch. Letting go stops the blade in 1.5 s and the engine runs on. R stops the engine.
  • Battery (Volt): the bar runs the motor; squeeze again and it restarts at once, no cord. Free crossings are a selling point.
  • Self-propelled (Trekker): a second bar engages the drive.
  • The pull cord on every petrol mower: click or R when stopped (the bar is held to pull). A mower starts each job stopped and cold: choke it cold; on choke once warm it floods and runs rough. Pulls come from the engine model (cold, choke, a worn engine) and its care (MO5b); three good pulls always start a healthy engine. Grandma's mower is temperamental: the first pull never catches, a start takes 2-5 pulls and ends in a cough, even when it's looked after. A hard hit, a hose, a clog (a stall too) or the choke left on kill the engine until you pull it again. The ride-on keys its start.
  • The blade's spin (BladeSpin): it spins up in 0.5 s and runs down on its own; the model's blade follows it. A slower blade cuts slower (clean speed), lifts less gravel and throws shorter.
  • The throttle lever (petrol, one lever as on real cheap mowers; C / B): choke → fast → slow. Choke to start cold, then fast; left on choke once warm it runs rough (a weak blade) and stalls. Slow: tip speed ×0.75, so a lower clean speed, suction and throw carry ×0.7 (fewer and shorter throws), −30% fuel, lower revs and quieter (early mornings). The lever starts on fast every job (the cold start teaches the choke).
  • The primer bulb on the pro chassis (Trekker, Regent) instead of a choke: C presses it while stopped (three presses start it cold; six or more flood it, and each failed pull clears one), and toggles fast / slow while running. The Volt has no lever.
  • Parking the mower lets go of the bar (a cheap engine stops). The autopilot, the dev tools and the tests start it with SetBlades(true) (no cord).
  • Feedback: the HUD's mower line (engine off and the lever, primer count, idling, running rough, the blade running down), banner hints after failed pulls (cold: choke it; flooding: off the choke; the primer; grandma's), the engine sound's revs and volume on slow, a cough on each failed pull, the control hints.
  • Co-op: the pose's "blades on" is the blade driven (the others' model runs it down on its own), plus two flags: throttle on slow (their engine sounds lower and quieter) and a pull of the cord (a cough by their mower).

MO5b: care states, the service card and the desk

Each mower's care states live on ToolInstance.care (Sim/Tools/MowerCare.cs). A job works on a copy (MowerSim.Care) that goes back with the wear record. The blade's condition stays its edge (sharpening restores it); a part's bend stays its integrity.

Care stateGets worse withNeglectedBy hand (MO5c)Desk
Blade sharpnessmass cut, strikes, gravel, chippingstorn tips (a brown haze next day), more load, lower clean speedsharpen$12 (with balancing)
Blade balance / benduneven sharpening, hard hitsvibration, wobbly lines, engine wear ×1.5balance on the cone; a bent blade is replacedwith sharpening
Crankshaftfull-speed hard hits (rare)the mower shakes, even with a new bladeengine repair (money)$90-160
Oilengine hours (~25 game hours ≈ 10-15 jobs)old: engine wear up to ×3, knockingdrain, fill to the line (overfill: white smoke)$20
Air filterdust (dry days, dusty grass, scalping, gravel)black smoke, less power, the plug fouls fastertap clean, or new ($8)$15
Spark plughours, faster with a dirty filter, ×10 running rough on the choke, a little each flooding pullmore pulls, misfiresbrush and gap, or new ($5)$10
Fuel freshnessa day each morning in the tank (~30 days goes stale); a refill mixes in fresh fuelhard starts, sputteringdrain, fresh fuel-
Starter ropeevery pull (more pulls on a badly kept engine)frays (visible threads), then snaps mid-pullrewind the recoil spring + a new rope ($6)$15
Oil in the filtertipped on the wrong side (sharpening, transport)white smoke, a hard starta new filter, after the oil drains back$15
Deck cakingwet clippings, dog poopthe bag holds less, clogs sooner, rust, stinkstip and scrape, or hose$15
Wheel bearingshours, faster in the wet, gravelsqueaks, heavier pushgrease-
Drive belt (Trekker) / brake clutch cablehours (they stretch)the drive slips (pulls less) / the blade stops slowlya new belt ($25) / adjust the cable$40
Battery health (Volt)charge cycles (one each overnight charge)as new for 100 cycles, 70% charge at 300, ~500 for a pack's lifea new pack$120
  • What neglect does to starting: a fouled plug the most, a dirty or oil-soaked filter, stale fuel. A neglected engine also loses "three good pulls always start it", up to four more pulls. The engine-stop bar makes this matter: every gravel crossing is a restart. The rates are tuned for ten jobs ≈ 25 engine hours ≈ five pulls a start.
  • A snapped rope never strands you: each pull then winds the bare cord round the pulley (2.5 s a pull) until a new rope.
  • The service card (UI/ServiceCard.cs), at the bench (the Workshop station) and on the mower's tool screen: each item with a bar, OK / Due (amber) / Urgent (red), what it's like ("31 h since the change", "fouled: misfires, many pulls", "7 sharpenings left"), and the desk's price.
  • The service desk (ServiceDeskCommand), ordered from the service card (there's no desk to walk up to in the store): the prices above, or a full service of everything due. Paid at once; the mower is away until the next morning (taken out of the van, can't be loaded) and comes back by itself. It won't sharpen a bent blade or one sharpened ten times (a new blade, the existing repair, resets the count). Fuel and bearings are bench jobs only.
  • The morning reminder: the service desk mails the mowers that newly need care, once each until they're looked after, and only once you've been to the store (grandma's mower starts with a dull blade on purpose).
  • Old saves' mowers start fully looked after.
  • Co-op: the host's state carries the care states to guests. A guest's mower wear reaches the host (ReportToolWearCommand, sent when the guest leaves the garden). The desk goes through the host like every command.
Jobs since the last service: how the care states slide, and what the mower is like

MO5c: hands-on care at the bench

A bench job (Sim/Tools/BenchJobs.cs) is a sequence of UI steps of four kinds: choice (the right way or a mistake), repeat (file strokes, taps, scrapes, turns, pumps; the last button finishes), hold (a meter fills while held, let go between the marks), wait (draining). Ten jobs: sharpen, a new blade, oil, the air filter (also the oil-in-the-filter line), the plug, stale fuel, the rope, the deck, the bearings, the belt / clutch cable. Each takes 10-40 s, in real time only (the running clock, DY1: a 30 s job is a quarter hour). Nothing happens to the mower until the job is finished. A 3D version is MO11.

Sharpening the blade:

  1. Pull the plug lead. Forget it: an ego quip and grandma's note "Harold lost a fingernail that way". No injury.
  2. Tip it on its side, air filter up. The filter box sits on one side of the engine, fixed per model (a stable hash of its id) and said in the step. Filter side down floods it with oil: white smoke and a hard start.
  3. Undo the blade bolt with a block of wood against the blade (without it, the blade just turns).
  4. File each end: strokes per end, as many as the dullness needs, keeping the ~30° bevel. Uneven strokes leave one end heavy. A file in grandma's garage; the grinder is MO16.
  5. Balance it on the cone ("End A dips"): a stroke off the heavy end until it sits level, or bolt it back lopsided (engine wear ×(1 + imbalance / 2)).
  6. Bolt it back and put the lead back on. ~10 sharpenings, then a new blade. A bent blade can't be sharpened straight: a bent blade or one sharpened ten times opens a new blade instead (the blade part's price).

The other jobs:

  • Oil ($6 a bottle): the pan (or old oil on grandma's floor), tip it the right way, drain, then hold to pour to between the dipstick's marks. Over the top mark: tip a little back out, or leave it and it pushes oil into the filter.
  • Air filterTap it clean (each tap gets some dust out, never the last 40%) or a new one ($8). A soaked filter can't be tapped, and a new one fitted before the oil drains back soaks it up again.
  • Spark plugBrush it (70% better) or a new one ($5), then the gap (.020 / .030 / .040 in; the wrong one: it starts grudgingly). The gap is "stamped on the engine" (.030 in) until Harold's manual (MO9) teaches the rest.
  • FuelSiphon the stale fuel, fill from the garage's fuel.
  • Starter rope ($6): the housing off, wind the recoil spring (under three turns: too slack; over seven: TWANG, start again), thread the new rope.
  • DeckThe lead, tip it, scrape until bare metal.
  • BearingsA pump or two of grease in each wheel (a dry wheel stays dry).
  • Belt ($25, self-propelled) and the clutch cable: hold the adjuster into the zone; too tight and the blade drags, back it off.
  • "By hand" sits next to "Desk $" on every service card line that needs it (the Workshop bench and the mower's tool screen in the hub), disabled with the reason (no money for the spares, no fuel in the garage). The panel (UI/BenchPanel.cs) sits over the screen: the step, a live line (strokes per end, the cone, turns), the meter with its marks, what went wrong. "Put it down" or Esc stops, and everything is undone, mistakes included (forgiving: care is optional). The last screen says what it did and what the spares cost.
  • BenchCareCommand: the finished job's result (the level left, the edge and the balance, mistakes, spares, the refuel) goes to the company as one command. In co-op a bench job runs locally and only its result is sent; the host books it and charges the spares. A mower at the desk can't be worked on.
  • The Volt's pack stays a desk or store purchase.

MO5d: height levers and transport

Height levers (MowerParts.Levers), saved on the mower (ToolInstance.levers) and back with its wear, so whoever pushes it next finds them as left:

  • Per wheel (the Budget, grandma's Classic): four levers. Let go of the mower (pick up another tool), stand by a wheel and scroll (wheel / [ ] / D-pad). The scroll goes to the lever, not to the trimmer head or the washer nozzle in your hands.
  • Per axle (a new Classic 46, the MulchMaster): two levers, front and back.
  • Central lever (the Trekker, the Volt, the Regent, ride-ons): one lever moves the whole deck, set from the handle while you push. A real reason to upgrade.
  • Spacers (the Hover, MO7): the height is set at the bench with blade spacers.
  • Levers click in 1 cm steps, 3-10 cm. A small lean of the deck front-to-back is normal (it helps the cut). Scrolling at the handle of a per-wheel or per-axle mower says where the levers are. The HUD shows "Front-left lever 4 cm · deck 5 cm left / 6 cm right (TILTED)".
  • The tilted deck: each side of the blade cuts at the average of its front and back levers. Forget one lever and the deck tilts: LawnGrid.Cut takes a slope across the deck, so the low side cuts lower (a scalped strip, uneven stripes) and the high side leaves it long (a tufty strip). Per axle only rakes the deck; central moves it all. Stones, roots and slabs meet the lowest point. The HUD's blade line turns red, a banner warns when the low side scalps, the model leans to the low side, and the service card shows it.
  • Folding the handle (FoldToolCommand), at the hub's tool screen or the van tab. Folded, a push mower takes a row less of the van (Classic 2×3 → 2×2, Regent 2×4 → 2×3; ride-ons don't fold); it unfolds in the van only if the full footprint fits where it lies. It comes out at the job as it went in: folded, the bar is out of reach and the push is half speed until you hold E for 2 s to unfold it (which doesn't change its van footprint). The model's handle folds over the deck.
  • On its side in the van: a petrol push mower turned to fit (rotated in the grid) rides on its side, air filter down until you turn it over (TurnInVanCommand; the van tab lists them in red). Every drive with the van (a job, the store and back; jobs on foot don't count) seeps oil into a filter-down mower's air filter: white smoke and hard starts until a new filter (MO5c), and a warning when you take it out at the job.
  • Lifting into grandma's hatchback (Lifting): a mower over 20 kg is a hold on the tool screen, not a click: 1.6 s alone for a Classic, 6.4 s for a Regent, half that with a sibling holding the same mower on their screen (the hub pose's Lifting flag carries which mower; whoever finishes loads it, through the host). The van tab's list won't load a heavy mower into the car. Vans have a ramp: no lift.

MO6: lawn craft

How a good gardener mows. Each habit is rewarded by the lawn, and lawn memory makes the reward last.

  • Change direction every visitThe same axis three visits running lays a grain and wears ruts (MO6c).
  • Overlap on the wheel trackBy a wheel, 10-15% of the deck; a gap leaves a mohawk (MO6c).
  • The headlandLaps round the edge first give room to turn and crisp stripe ends; don't turn on the spot with the deck down (MO6c).
  • Keep the glass on your leftThe blade throws right (MO3).
  • Aim the dischargeNo bag or a side chute, at the lawn, away from beds, paths, the pool and the house (MO6b).
  • GravelLet go of the bar before you roll onto it; mow the lawn edge by the gravel high and slow (MO2, MO5a).
  • Refuel on the driveA spill on the lawn kills a patch (MO6c).
  • Never too much off at onceA high pass first on long grass (MO6a, MO6c).
  • Slopes and wet groundPush mowers go across a slope (MO7); a heavy mower on soft wet ground ruts it (MO6c).
  • SpeedToo fast leaves tufts and bogs the engine (the clean pace, in Tech).

Needs: MO1 · Done when: three weeks mowed the same way leave ruts, and rotating clears them.

MO6a: grass spring-back

Long grass is laid flat by the deck before the blade reaches it. That's why long grass always needs two passes.

  • Who lays it: the deck's front lip rides 7 cm above the cut height. Grass taller than the lip (and than 12 cm) goes over: a chance that grows from 0 at the lip to certain 5 cm above it. So 16 cm cut at 5 cm is mostly laid, and cut at 9 cm it isn't laid at all: "a high first pass avoids it", worked out rather than a flat rule. A high-lift blade stands the grass up: ×0.4 (MowerSim.LayFlat, from the blade's suction).
  • What it does: like rain-lodged grass (GR2), 40-60% of what should come off stays. The cell lies flat the way the mower went and isn't done, so progress stays honest. It stands back up after 2-5 minutes (by the cell), with a small spring overshoot in the renderer, as a tall tuft that cuts normally.
  • Back over it: along the lay (within ~70°) it is still lying and the blade passes over it again (another 40-60%). Against the lay, the blade takes it all. Rain-lodged grass (GR2) met against its lay lies towards the deck, so the deck lifts it and nothing goes over.
  • Dandelions: a standing stalk bends half the time whatever the height (85-95% of it stays) and pops back up in 5-20 s, right behind you.
  • Drawn in the renderer: a laid tuft is drawn lying flat (74°).
  • Co-op: CellSync.laid (seconds left, in 2 s steps): a copy that takes a shorter cell lies the way the cutter's copy does, and a cell cut through against the lay stands nobody's tuft back up. Never remembered.
  • Feedback: a flattened sheen in the wheel lines, tufts popping up minutes later, and one line the first time a job's deck lays grass ("It's laying the long grass flat...").

MO6b: the clippings

Where the clippings go, and what they do to the lawn.

  • The collection (MO4): a bag catches them; no bag (rear discharge) leaves them on the lawn behind you; a mulch plug and mulching blade leave none at all (more load, more blade wear, bad when wet); a side chute is fast with no bag, throwing clippings (and stones) right.
  • Where they land: a mower with no bag (or a full one) moves each cell's clippings out by the discharge to one spot, so a light cut stays light, with a little scatter. Rear discharge lands just behind the deck (2 × deck radius
    • 0.3 m back); the side chute 1.4 m past the deck on the right (±0.35 m). A bag mower that is full spills where it stands.
  • Wet grass is heavier, fills the bag faster, clumps and cakes the deck (MO5b).
  • Clumps: 0.05 of grass mass on a cell (a long cut, a full bag, a cleared clog's wad), or 0.015 if they landed wet (wetness ≥ 0.5: dew, rain, a wet dip). Drawn as a taller wad.
  • Clumps smother: a clump left at the end of the visit yellows the grass under it for 7 days (drawn with the dry-grass tint at 70-100%: visible but subtle), and that grass grows at half pace, like a scar. Stored in the lawn memory's spare bits (thirds of a week), so no new memory format.
  • Grasscycling: thin dry clippings on lawn cells, and a mulcher's chopped mass (mulched, tracked during the visit), add feed at the end of the visit: 3 doses per unit of mass, at most 0.12 a visit. It fades over the month like any feed and stays below the feed task's band (so it never counts as a feed job done for free). So: no bag on a dry weekly cut is free feed; no bag on a wet, long cut means yellow patches.
  • What counts as a mess (the result's "clippings left on the lawn"): clumps, and any clippings on a non-lawn surface (slabs, gravel, bark, soil). Thin clippings on the lawn don't count. Clippings thrown off the lawn altogether (a blocked cell or past the grid: beds, the house, the fence) are a ClippingsOut garden event every 2 s while it lasts (both machines see the spray); each counts as 3 littered cells, with one line on the first one ("The chute's throwing grass off the lawn...").
  • The blower (LawnClippingsWork, next to the leaves): its jet moves 3×/s of a cell's clippings 0.6-1.5 m downwind over three cells, dry. A clump breaks up into thin clippings that feed instead of smothering, and slabs are blown clear. There's no rake (no such tool).
  • Co-op: CellSync carries the wetness of the clippings, the mulched mass (the larger copy wins) and the smother days (from the host's memory). Off-lawn throws are garden events.

MO6c: the habits

Direction, overlap, turning, the one-third rule, refuelling and wet ground.

  • Grain: the streak counts the axis, not the direction (back and forth along the same lines is the same habit; within 22.5° counts as the same). Mown along the same axis three visits in a row, a cell has a grain: its new stripe is laid at 70% (duller), and a pass along the grain leaves a tuft 8% of the time. Across it, nothing; the next visit across resets the streak. Rotate through four directions.
  • Ruts: per cell, 0-3. A visit that keeps the grain (third time or more) grows a level on the cells the wheels rolled; a visit mown across lets them recover a level, and they grow out a level every 14 days on their own. A rut is a very faint brown (3% a level), grows 5% a level slower and pushes 4% a level slower. With 0.3 m cells and a wheel line every ~0.4 m, most cells of a lane carry a wheel line, so ruts show as broad faint bands (thin lines: MO18). Wheels: big rear wheels press half as hard (a light mower on them makes none), air tyres none (MowerPartDef.ruts).
Six weeks of the same direction against rotating: the grain and the ruts
  • Wet ruts: a mower pressing 25 kg+ (the push and starter mowers and up) on soaked soil (soil moisture ≥ 0.75, rain or a wet dip; dew alone doesn't soften the ground) sinks a rut level where its wheels roll, once a cell a visit, with one warning line. Wait for the ground to dry, or use a light mower.
  • Mohawks: the deck's outer 5 cm (across the direction of travel) only half cut a cell (55-75% of what should come off stays, so it isn't done), the same edge falloff as fringes. Met by an edge band again from another pass, it's cut. Overlapping by 5 cm+ never leaves one; a gap does. Only on real passes (the mower's frames), not single cuts.
  • The wheel track guide: while mowing, the wheels leave pale 5 cm lines on cut lawn for 60 s (narrowing away over the last 20). Overlap by a wheel (10-15% of the deck). Cosmetic, drawn on every machine from the mowers it sees (WheelTracks).
No overlap leaves mohawks; lining up on the wheel track doesn't
  • The headland and turn scuffs: laps round the edge first give room to turn and crisp stripe ends. Turning on the spot (90°/s+, under 0.35 m/s) with the deck down scuffs under all four wheels (heals ~4 days); tipped back onto the rear wheels (right click) it pivots clean, unless the soil is soaked (then the rear wheels scuff), but tipping opens the front of the deck (MO3). One line the first time. Scuffs only mark lawn cells.
  • The one-third rule, at game scale: real lawn lore says never take more than a third of the height in one cut, or the lawn yellows. The game's grass grows about three times faster than in life (~8 cm a week), so a literal third would fire on every weekly visit. The line is two thirds of the height in one cut (2 days of yellow; over 80%: 4 days). A weekly cut at 5 cm (13 → 5) is fine; a fortnight's growth or an overgrown lawn isn't, unless a high pass comes first (one brutal cut, a high pass then the real height, or two visits). Stressed grass is drawn with the dry tint (55-85%) and grows ×0.75 while it lasts. Stored per cell in lawn memory; GA2 folds it into lawn health. One line after 6 such cells.
  • The fuel can: refuelling by pushing the mower to the van stays (the drive: safe). With the mower parked in the garden, take the can from the van (E), hold E at the mower and let go when it's full: it pours at 0.5 L/s (the tank gauge is the hold bar); holding on overflows, and a slope (over ~6°) dribbles 0.08 L from the start. Spilt fuel on the lawn marks the cells dark and they come back bare (dead) next visit; on paving inside the garden it's a stain (an incident); off the garden's grid (the drive, the road) nothing. The van's fuel is booked once, on letting go. Petrol only (packs: MO15). The can shows as a red box in your hand.
  • Results: dead lawn cells cost $3 each, a stain $8; both are rows on the results and both break "flawless".
  • Speed: too fast leaves tufts and bogs the engine (the clean pace, in Tech).
  • Lawn memory format 4: a habits plane (rut 2 bits, stress days 3 bits, 3 spare); spilt fuel writes the bare bit.
  • Co-op: CellSync carries rut, stress, the heaviest wheel (kg), the edge band mark (with the cut that made it) and the spilt fuel; the spill is a FuelSpill garden event (both see it; the stain is recorded once). Grain comes from the lawn memory both machines load.

MO7: banks and the hover mower

LawnPlan banks (15-25°). Wheeled mowers slide on them; push mowers go across a slope, not up and down (ride-ons go up and down). The Hover 33 ($140 at Barrow & Bolt) is the banks mower: a 33 cm plastic deck, petrol, an engine-stop bar, height set at the bench with blade spacers; slots for the blade, the engine and the handle only (no wheels, bag or roller). It glides sideways, takes banks and slopes, but has no bag, makes no stripes and is small.

MO8: feel, controls and assists

Perfect mowing is mostly feel. Every state reaches the player through the mower first; the HUD keeps only what you can't sense. Each earlier idea ships its own feedback row; MO8 is the pass that trims the HUD once they exist.

MO8a: feel and controls

The feedback map, diegetic first. A Gauges setting brings back the full HUD (accessibility, or players who prefer it).

StateSoundSightHands (rumble, camera)HUD (default)
Loadthe engine bogs, pitch dropssmoke above 80%rumble growsoff (Gauges: LOAD)
Speed vs cleanthe bog, the cut sound thinstufts behind you-off (Gauges: speed)
Bag fillsuction note weakensthe bag's fill flap closes as it fills; clippings start droppingheavier pushoff (Gauges: BAG)
Blade heightlever clicksthe levers, the deck's lean-a small label while changing it
Fuel / chargesputter when lowthe tank's sight window-a small icon when low
Sharpnessa duller, ripping cutwhite torn tips right behind you-service card
Bent blade / cranka rhythmic wobblethe handle shakessteady vibrationservice card
Oil lowknocking--service card
Air filter / plugmisfire popsblack smoke (white: oil in the filter)stuttersservice card
Throttle / chokeengine notethe lever--
Caking / poopmuffled suctiona stink haze (poop), flies-service card
Laid grass (MO6a)-a flattened sheen in the wheel lines; tufts popping up minutes later--
Trampled grass, dew (GR1)a rustle in tall grasstufts bent by feet and wheels, standing back up; dark dew trails--
Wet grasssquelchdark shoes, clumpsslips on turns"wet %" by the clock
Dry, dusty grass (GR2)-a dust haze behind the deck--
Scorched grass (GR2)a dry cracklestraw to brown cells where the sun hits; dust--
Frost (seasons)a cruncha white sheen; black prints where crushed--
Strikes, throwsCLANK, TINK, whistle, crashsparks, the stone in the aira jolt-
Progressthe 25/50/75% chimesmissed cells shimmer gold-progress bar (kept)

The load sound, smoke and rumble, the chimes, the gold shimmer and the wet % already exist. New indicators: the bag's fill flap, the tank window, lever positions, smoke colours, the stink haze, vibration.

Controls, built on the existing bindings (Core/GameInput.cs); new actions in bold:

ActionMouse & keyboardGamepad
Push and steermouse; WASD steady paceleft stick
Squeeze the barleft click: toggle by default, hold as an optionright trigger (hold)
Pull the cordR (or click when stopped)A
Engine stop (pro chassis)hold Rhold A
Throttle lever (choke / fast / slow)C cycles (the hand tools' choke key)B cycles
Blade height (central lever, or the wheel you stand by)wheel / [ ]D-pad up / down
Tip to pivotright clickright shoulder
Unclog, empty, fold the handle, lift togetherhold Ehold X
Look aroundAltright stick press
Slow walkCtrlleft shoulder

Needs: MO5, MO6 · Done when: with the default HUD, a player can tell the load, the bag filling, a dull blade, low oil and a bent blade from the mower alone, every action in the table works on both mouse and keyboard and gamepad, and the Gauges setting brings the full HUD back.

MO8b: assists

Player settings, off by default; the Relaxed difficulty preset turns them on by default (DF4).

  • Line assist: a gentle pull towards the nearest wheel track or stripe line while you push straight.
  • Wheel-track highlight: the last pass's wheel track drawn brighter.
  • Gauges and bar hold / toggle (MO8a) are the other two settings Relaxed sets.

Needs: MO8a · Done when: with the line assist on, pushing roughly straight follows the last wheel track, and a new Relaxed game starts with the assists and Gauges on.

MO9: Harold's manual

The dog-eared owner's manual of grandma's mower, found in a drawer at the garage workbench, annotated by Harold, grandma's late husband and dad's father (CH1; grandma's lines elsewhere on this page name him too). The printed text is dry and official; Harold's handwriting in the margins is the useful part.

  • How it teaches: every page is readable from the start, but Harold's note on a page appears the first time you meet the thing (a stall, a bent blade, gravel, a hose, a clump patch, a lopsided cut…), with a small toast "Harold wrote something about this". No tutorial pop-ups.
  • Pages (one per topic of this spec): starting, the bar, the throttle lever, height levers, the headland, stripes and direction, stones and the glass, gravel, slabs and roots, the bag and clumps, sharpening, oil, filter and plug (the plug's gap: MO5c), the starter rope, transport, wet grass, the one-third rule. Every idea that adds something to meet adds its page.
  • Three notes so far:
    • p. 12, Crossing paved or gravel areas: "Release the operator presence control before crossing." Harold: "Never over the drive with the blade going. Ask me how I know. — H."
    • p. 7, Cutting height adjustment: "Set all four adjusters to the same position." Harold: "ALL FOUR. Every time. — H."
    • p. 19, Blade maintenance: "Tilt the mower with the air filter facing up." Harold: "Up. UP. The smoke took a week to clear. — H."
  • Opened from the bench or the pause menu (a UI screen, not world text). Shared by the siblings: a note one finds, everyone can read.
  • Pro chassis come with their own glossy manuals (no notes); Harold's stays the good one.
Three of the manual's pages, with Harold's notes in the margins

MO10: used mowers

  • Where: garage sales on grandma's street (weekends, seeded), the paper's classifieds, the store's "pre-loved" shelf (trade-ins), and the scrap pile at the green waste site (a free, broken mower to restore).
  • Hidden faults: a used mower's part conditions and care states are hidden until you look. A quick look on site shows the obvious (rust, a frayed rope, a cracked bag); the bench shows everything (a bent crankshaft, a bent blade, oil in the filter, a caked deck).
  • Price: 25-60% of new, set by the seller's honesty (seeded): "Runs like new!" may or may not be true.
  • Restore and flip (optional): fix one up at the bench and sell it on (the classifieds or the store's trade-in). A small side hustle that rewards knowing the machine.
  • Chassis and parts are the same data as new mowers; a used one is a ToolInstance with rolled conditions. The listings are seeded by the host.

MO11: the 3D bench (care mini-games)

MO5c's text steps are hard to follow: care becomes a hands-on 3D mini-game, with the exploded view (MO14) and the bench props.

  • The scene: E on the bench: the camera moves in on the mower on the bench (the vice, the cone, the oil pan, the grinder at the workshop tier). Mouse / gamepad drives the hands; no text steps, a short Harold line at most.
  • Same logic, new skin: each mini-game drives the existing BenchJob (pick / press / hold / wait), so results, mistakes, the command and the tests stay. The MO5c panel stays as the fallback (accessibility, no gamepad).
  • The gestures: pull the plug lead off (drag); tip the mower onto a side (drag it over: the filter box is visible, so the wrong side is a visible mistake, oil runs); a block of wood, then turn the spanner (circular drag); file strokes along the edge at the bevel (drag; sparks and a heat tint on the grinder, blue if too long); the blade on the cone tips towards the heavy end; pour oil (tilt the bottle, the dipstick shows the level); tap the filter (clicks, dust puffs); slide the feeler gauge into the gap; wind the recoil spring (circular drag, it fights back, TWANG); scrape the deck (paint-to-clean the cake); grease nipples (clicks, a blob if overdone).
  • Assets: the bench props (file, vice, grinder, cone, oil pan, dipstick, plug gauge, recoil spring), a blade that comes off, the filter box, the plug, the starter housing; sounds (file rasp, grinder, spanner, glug, TWANG).
  • Co-op: one sibling at the bench, the others can watch (the bench lock, MO14).
  • Knowledge tiers (SK7): basic care open to all; rope, belt, wheels and part swaps need the Mechanic tier, the engine the Engine tier; locked = book it at the service desk.

Needs: MO5c, MO14 · Done when: a new player sharpens grandma's blade without reading a line of text, and sees why the filter side goes up.

MO12: the throw show in co-op

The rest of MO3's show: in co-op, a replay inset for the culprit instead of the solo slow-motion (no slow-motion in co-op), and an ego quip from your character when a stone breaks something.

MO13: strikes by blade height and speed

A strike's chance grows as the blade goes down (hidden flat stones only reach a low blade) and with speed (more ground covered). The old flat numbers (~15% at 3 cm and full speed, ~2% high and slow) become the expected escape rate of a typical bagged Classic on a stony lawn: a calibration target. MO3's strikes come from gravel lift, rocks and proud stones; this adds the rest.

MO14: the exploded view at the bench

The bench as a 3D scene. E on the bench with a mower on it: the camera moves in, the parts slide out along their mount axes (bolts spinning out, a ratchet) and hang around the chassis. Mouse orbits; gamepad bumpers cycle parts. Click a part: its condition, care state and stats, and the parts that fit (owned first, then the store's to order). Swap: the old part slides out, the new one bolts in, and the stat panel shows the deltas (push, clean speed, load, bag, stripes, throws, gravel lift, noise, fuel). Labels stay UI callouts. It needs the missing part meshes in models_mowers.py (roller kit, side chute, mulch plug, rear flap, brake-clutch bar, wheel variants, battery packs) and an exploded offset per part, and brings the sandbox's workbench rack (every mower on a rack) and the bench lock in co-op (one sibling works on a mower at a time; the others can watch).

Needs: MO4 · Done when: E on the bench with grandma's mower slides its parts out, a click on the blade shows its condition and the blades that fit, and a swap bolts the new one in with the stat deltas shown, on both instances.

MO15: battery packs

The Volt's pack becomes a part (MO4): 4 Ah stock (35 min a charge), 6 Ah ($140, 52 min) and 8 Ah ($230, 70 min, a little heavier). A spare pack is a field swap: carry it from the van to the mower, the way the fuel can works for petrol (MO6c). Packs ride separately in the van; hot vans don't hurt them (no heat model).

MO16: the bench grinder

The workshop tier's bench gets a grinder: sharpening is fast, with sparks, but held too long the edge turns blue and soft (the blade holds its edge worse). Until then, sharpening is with the file (MO5c).

MO17: the other sibling's mower, as it is

The other players see your mower's tilt (MO5d), its folded handle (MO5d) and the fuel can in your hand (MO6c). Without it these are local only: the levers reach the host through the wear record, so nothing is wrong, only unseen. Looks only: the cut a tilted deck leaves already reaches everyone through CellSync, since each sibling's mower is client-authoritative.

  • The tilt: the mower's pose carries its four lever heights (3-10 cm in 1 cm steps: 3 bits each, 12 bits), sent when one changes. Every machine leans the deck model from them exactly as the owner's does, so a forgotten lever is visible from across the lawn.
  • The folded handle: one bit in the mower's pose. Folded, the handle lies over the deck on every screen; the 2 s unfold hold plays it unfolding for everyone.
  • The fuel can: a NetPose flag, holding the can. The red can shows in the sibling's hand; while they pour, it tips over the mower's tank. A spill is already a FuelSpill garden event (MO6c). Other things in your hands are PL4's.
  • Late joiners get the current levers, fold and can with the pose they already receive.

Needs: MO5d, MO6c · Done when: on two instances, a guest lowers one lever by 3 cm and the host sees the deck lean to that side within a second; the guest folds the handle and the host sees it folded, then unfolding on the hold; the guest takes the can and pours, and the host sees the red can in their hand, tipped at the tank; guest logs show mismatches=0.

MO18: thin rut lines

Ruts drawn as thin wheel lines instead of broad bands, on a layer finer than the 0.3 m cells (MO6c).

MO19: low branches

Ducking under trees: low branches you push the mower under, bending or ducking past them.

MO20: the living garden

Life in the garden while you mow: a hedgehog in long grass, the client's dog, garden furniture to move out of the way.

MO21: special client requests

Clients asking for something particular about the mowing (a pattern, a height, a strip left long). Probably moves to the jobs spec (Jobs: from the phone call to the review).

MO22: windfall apples and pine cones

More things in the grass (MO2): windfall apples turn to mush and clog fast; pine cones.

Tuning

Starting numbers, tuned in the sandbox. Part prices are in MO4's tables, care prices and rates in MO5b's, the openings in MO3's, the feedback in MO8a's.

NameValueIdeaWhat it does / why
skirtMargin~3 cm sides, ~6 cm frontMO1how far inside the deck the blade tip sits
Edge cell samples8×8 pointsMO1coverage of cells next to anything blocked
Edge cell done70% coverageMO1the rest is a fringe
Memory size budget4,000 m² sloppy < 20 KBMO116 KB until format 4 (MO6c)
Fresh stripe tipsfade in 45 sMO1
Stripe life~1.5 cm regrowth rotary, ~4 cm rollerMO1a day, three days
Scalp / scuff heal~7 days / ~4 daysMO1
Torn tips0-3, gone in ~3 daysMO1
Raised slab3.5-5 cm proudMO2lower can't reach a blade at its 3 cm minimum
Wheel factorslab ×1.08, gravel ×0.8, chippings and pebbles ×0.85, bark ×0.9, soil ×0.85MO2push speed per surface
Surface liftpea 1.0, chippings 0.6, pebbles 0.15MO2how easily the suction lifts stones
Blade suctionstandard 1.0, high-lift 1.6, mulching 0.8MO2
Height factorlerp(1.6, 0.4, blade 3 → 10 cm)MO2a low blade lifts more
Throws over gravel≈ 6 × lift per secondMO2
Stray gravel~1 m into the lawnMO2
Stone wear0.05/s, ×3 set lowMO2stepping stones 3.5 cm, hidden stones 4-6.5 cm
Debris hit+0.4 loadMO2rocks, toy balls
Bent blade engine wearup to ×1.5MO2
Hose unwrap2.5× the unclog holdMO2
Sprinkler geyser25 sMO2
Poopbag ×0.85; prints 6 m / 10 stepsMO2
Tangent exitθ = φ + 90°MO3
Ricochet10% of held stonesMO3
Rim offset~32°MO3first pass, from the figure's model
Front gap pass~30%, 75% tippedMO3first pass
Bag catch90%MO3
Rear flapstops 60%MO3
Deck guardthrows ×~0.7MO3
Breakage billwindow $180, car $250, greenhouse pane $90, gnome $25MO3until the jobs spec
Engine tunes+8 / +16 / +24%MO4
Bag sizesS 40, M 60 units, L ×1.5, XL ×2MO4
Run-down (engine-stop bar)2.5 sMO5athe blade still cuts and throws
Brake clutch stop1.5 sMO5a
Blade spin-up0.5 sMO5a
Grandma's start2-5 pulls, the first never catchesMO5atemperamental
Slow throttletip ×0.75, suction and carry ×0.7, −30% fuelMO5a
Primer3 presses start cold, 6+ floodMO5a
Care rate targetten jobs ≈ 25 engine hours ≈ five pullsMO5b
Oil~25 engine hours (10-15 jobs); old oil ×3 engine wearMO5b
Fuel stale~30 daysMO5b
Neglected startup to 4 more pullsMO5b
Snapped rope2.5 s a pullMO5b
Volt packas new 100 cycles, 70% at 300, ~500 lifeMO5b
Sharpenings~10, then a new bladeMO5c
Bevel~30°MO5c
Imbalance wear×(1 + imbalance / 2)MO5c
Filter tapsnever the last 40%MO5c
Plug brush / gap70% better / .030 inMO5c
Recoil spring3-7 turnsMO5c
Bench sparesoil $6, filter $8, plug $5, rope $6, belt $25MO5c
Lever steps1 cm, 3-10 cmMO5d
Unfold hold2 sMO5dfolded push: half speed
Folded footprintClassic 2×3 → 2×2, Regent 2×4 → 2×3MO5d
Heavy liftover 20 kg: Classic 1.6 s, Regent 6.4 s, half togetherMO5d
Front lip7 cm above the cut, grass over 12 cmMO6a
Lay chance0 at the lip to certain 5 cm aboveMO6a
High-lift lay×0.4MO6a
Laid grass left40-60% per pass along the layMO6a
Stand-up2-5 min; dandelions 5-20 sMO6a
Along the laywithin ~70°MO6a
Laid tuft angle74°MO6a
Rear landing2 × deck radius + 0.3 m backMO6b
Chute landing1.4 m past the deck (±0.35 m)MO6b
Clump0.05 mass, 0.015 wet (wetness ≥ 0.5)MO6b
Smother7 days yellow, half growth, tint 70-100%MO6b
Grasscycling feed3 doses per unit of mass, max 0.12 a visitMO6b
Blower3×/s, 0.6-1.5 m downwind over three cellsMO6b
Off-lawn throw1 event / 2 s, 3 littered cellsMO6b
Same axiswithin 22.5°MO6c
Grain3 visits; stripe at 70%; tuft 8% alongMO6c
Ruts0-3; 3% brown, −5% growth, −4% push a level; grow out a level / 14 daysMO6c
Wet ruts25 kg+, soil moisture ≥ 0.75MO6c
Mohawkouter 5 cm, 55-75% leftMO6c
Wheel track5 cm, 60 s (fading over the last 20)MO6c
Overlapa wheel, 10-15% of the deckMO6c
Turn scuff90°/s+ under 0.35 m/sMO6c
Too much offtwo thirds: 2 days yellow; 80%: 4 days; growth ×0.75; tint 55-85%MO6c
Fuel can0.5 L/s; slope over ~6° dribbles 0.08 LMO6c
Spill costsdead cell $3, stain $8MO6c
Banks15-25°MO7
Used price25-60% of newMO10

Co-op

  1. State: lawn memory blobs (the host's save); parts, spares and care states per ToolInstance; surfaces from the garden's layout (seeded, nothing to sync); poop, hose and sprinkler states as garden events. The trample field is local and cosmetic: each machine stamps from the positions it already has (players, mowers, animals), nothing sent.
  2. Ownership: each sibling's mower is client-authoritative, merged by MergeCell (the shortest grass wins; coverage merges as the max). Lever settings (height per wheel, throttle) live on the mower's ToolInstance, so whoever pushes it next finds them as left. Lifting together: the sibling's help is read from their hub pose; whoever finishes loads it, through the host.
  3. Host-only: the memory write when the lawn is left, part swaps, bench and desk results (commands), a guest's wear (ReportToolWearCommand).
  4. Randomness: strikes, throws, ricochets, stalls, crank bends → SimRandom with named salts (Salts.HardHit*, Salts.Throw*, SD2).
  5. Channel: lawn cells (CellSync, every 0.1 s, plus coverage, laid, clippings wetness, mulched, smother, rut, stress, wheel weight, edge band, spilt fuel); throws, breakages, geysers, splats, ClippingsOut, FuelSpill as garden events; the mower pose (blade driven, slow throttle, a pull, Lifting) and its model plus fitted parts (MowerParts.Tag).
  6. Packets: the memory blob once when the lawn loads (1-15 KB); one event per throw.
  7. Late joiners: the lawn snapshot, plus broken things, geysers running, poop smears.
  8. Secrets: none. Harold's notes found are shared (company state); used-mower listings are seeded by the host; the difficulty comes from the host's save.
  9. Cinematics: no slow-motion in co-op (a replay inset instead, MO12).
  10. Save versions: MO1 (memory + fingerprint + coverage), GR1 (memory format 2), GR2 (format 3), MO4 (parts per mower + migration, save 13), MO5b (care states, save 14), MO5d (levers), MO6c (memory format 4), MO9 (notes found), MO10 (used-mower listings).
  11. Voices: ego quips (gravel, poop, a stall, a bent crank, the wrong side up), grandma's mower's cough, grandma's note about Harold.
  12. Checks: each idea in the sandbox, then two instances: a guest's stone breaks the greenhouse and both see the same pane; a guest stalls on a slab and the host sees the mower stop. Guest logs show mismatches=0.

Tech

Who owns what

  • This page owns the mower and what it does to a lawn: cutting, surfaces, what it throws, the parts, its care and the craft of using it.
  • Grass (Grass: the lawn itself) owns what the grass does: the mower stamps the trample field (GR1: the deck's bow wave, the wheel lines, and the blade's blow out of its openings at (blade speed)², dying away with the run-down when you let go of the bar) and reads each cell's combined response (GR2: mass, bag fill, clog, dust, grip, deck bob, what a dull blade leaves, scalp harm), never the weather. Wet mornings, dry patches, weeds, scorch and frost all reach the mower that way.
  • Jobs (Jobs: from the phone call to the review): clients, the walk-round, bins and sacks, the quote, par per job, who pays for breakages and debris, which household leaves what in the grass, the job sheet showing last visit's direction (a DIY client points out a streak), clippings on the patio or in the pool as walk-round points.
  • Garden (GA2 lawn health and treatments, GA6 patterns and the big walk-behinds, GA7 ride-ons): the ride-ons, the zero-turn, the cylinder and gang mowers.
  • Difficulty (DF1): picked once on the new-game screen and locked. The physics never change: everything here behaves the same on every preset. The Machine dial (DF2) scales part wear, care intervals, hard-hit harshness (no bent crankshaft on Relaxed), starting and used mowers' hidden faults; the Mishaps dial (DF3) scales repair bills, desk prices and forgiveness. Assists stay player settings (Relaxed only turns them on by default).
  • Weather and day (WE3, DY3): dew until ~11:00, longer in shade (wet load, clumps, slower clean speed, deck caking, ruts, dark dew trails); rain (clumps, a caked deck, turf scuffs); dry spells (dust clogs filters faster, sun-exposed cells scorch: raise the blade). Battery mowers can work in quiet hours (exempt from 21-8, DY4).
  • Sound (SN1, SN4): every sound placed on what makes it, a loudness in the sound list, hybrid engines (recorded loops by RPM + synthesized state layers).
  • Skills (SK7): the knowledge tiers that gate bench tasks.

The mower before the codes

What the game already did before MO1, and still does:

  • The grid (Sim/Mowing/LawnGrid*.cs): 0.3 m cells (Blocked / Uncut / CutA / CutB), grass height per cell. A cell is done when cut and at most 1 cm above the requested height. Scalping = the blade set more than 1.5 cm below the request. Mass removed comes from height × thickness. Clean lines (MowJuice).
  • Cut quality vs speed: one try per cell per pass; a clean cut if overspeed × sqrt(mass) ≤ 1, else a 1/d² chance; a failed try leaves a tuft. The optimal (clean) speed drops with a dull blade, wet grass and a worn engine; too fast also bogs the engine.
  • The mower (MowerSim): load and clog (hold E 3 s to unclog), a bag (units = mass × 0.8; full = clippings drop; worn bags hold less; overfilling wears it; empties into the client's compost bin), mulching (no bag, clogs sooner), self-propelled drive, blade height 3-10 cm (wheel / D-pad), fuel or battery.
  • Parts and condition: ToolDefinition.parts (Engine, Blade, Wheels, Bag), each with a condition 0-1, worn below 0.35. The old upgrades (UpgradeDefinition, per id and deck size) became parts in MO4.
  • The model: ArtSource/scripts/models_mowers.py builds each mower from named parts (Wheel_FL…, Upg_*).
  • Co-op: each sibling sends changed cells (CellSync, every 0.1 s); MergeCell keeps the shortest grass.

Where the code lives

  • MO1: LawnGridMemory.cs (memory, fingerprint), the deck collision and skirtMargin, edge coverage and fringes in LawnGrid.
  • MO2: LawnGridSurfaces.cs, GardenSurface, GardenGenerator.PlaceSurfaces / ApplySurfaces (GardenSurfacesPlan.cs), GardenSurfaces.WheelFactor / Severity / Resolve, PartState.bent, Debris.kind, MudPrints.
  • MO3: Sim/Mowing/Throws.cs, DeckSetup, ThrownStone, Breakable, House.windows.
  • MO4: Sim/Tools/MowerParts.cs (PartSlot, PartEffects, MowerParts.Tag), ToolInstance.fitted, SaveData.looseParts, BuyPartCommand, FitPartCommand, RemovePartCommand, MowerStats.Compute, MowerSim.Kit, UI/PartCards.cs, MowerVisual.ApplyParts.
  • MO5: MowerSim.Bar, BladeSpin; Sim/Tools/MowerCare.cs, ToolInstance.care, UI/ServiceCard.cs, ServiceDeskCommand, ReportToolWearCommand; Sim/Tools/BenchJobs.cs, UI/BenchPanel.cs, BenchCareCommand; MowerParts.Levers, ToolInstance.levers, FoldToolCommand, TurnInVanCommand, Lifting.
  • MO6: MowerSim.LayFlat, CellSync.laid; LawnClippingsWork, ClippingsOut; WheelTracks, MowerPartDef.ruts, FuelSpill.
  • Controls: Core/GameInput.cs.

Lawn memory

One file per lawn in lawns/<save's lawnId>/, written by LawnGridMemory.cs: one byte plane per field over the lawn cells, each deflated on its own, small values bit-packed. The planes and formats 1-3 are in Grass: the lawn itself › lawn-memory-what-grass-adds. Format 4 (MO6c) appends a habits plane: rut 2 bits · stress days 3 bits · 3 spare; spilt fuel writes the misc plane's bare bit; smothered days use spare bits (no new format, MO6b). Older formats load (missing bits read as 0); newer ones are refused. The layout fingerprint uses a fixed LayoutVersion, not the format number.

Save

  • Save version 13 (MO4): parts per mower and the migration from upgrades.
  • Save version 14 (MO5b): care states on ToolInstance.care; old saves' mowers start looked after.
  • Levers on ToolInstance.levers (MO5d).

Sandbox pieces (docs/dev/sandbox.md)

  • MO1: a "Lawn memory" section: what this visit's lawn came from (the seed, a memory and its day, or a dropped memory) and what is stored; Remember now, Forget, Break fingerprint (the next build must drop it) and Next visit in N days (remembers, then builds the same garden N days later, grown). The sandbox keeps its memories in memory only and remembers only when asked; a real job remembers its lawn whenever the host leaves it. Overlay: par from the grid with a stock Classic 46 against the job's own par, fringes standing, edges clean.
  • MO2: the proving lawn builds every surface and thing: raised slabs, a pea-gravel border with proud metal edging, bark beds, roots, a raised drain cover, toys, a hose, sprinkler heads, fresh and dry poop, a phone, sticks. A "Surfaces and things (MO2)" section drops a toy, hose, sprinkler head, poop (fresh, dry), phone, stick or rock at the crosshair (this machine only, so solo only), bends or straightens the blade, and shows a line with the surface under the mower, hard hits, the blade and crank bend, gravel strikes, smeared / hose wrapped, poop prints.
  • MO3: the breakables wall; a stones panel (force a throw at the next strike, draw the arcs, list the breakables in range); throw chance in the overlay.
  • MO4: "Parts (MO4)" under the mower picker, one dropdown per slot, carried in the spec (guests build the same mower); the live mower box shows the set-up summary. The workbench rack waits for MO14.
  • MO5a: the live mower box shows the engine (running / stalled, the bar, blade spin, tip speed, temperature, start chance, failed pulls, pulls the last start took, primer, temperamental) with a throttle dropdown and Cold engine, Warm engine, Start (no cord) and Stall; the overlay adds an engine line.
  • MO5b: a "Care (MO5b)" foldout: a slider per state, Oil in the filter, Neglect 10 jobs, Full service, and the effects (start ×, extra pulls, power, engine wear, misfire, bag, load, push, the rope).
  • MO5c: "Bench (MO5c)" in the Care foldout: pick a job, By hand plays it on the live mower, Done right (instant) plays it carefully at once (the console logs the result).
  • MO5d: "Levers (MO5d)": a slider per wheel, Handle folded, Forget one and All even; the engine readout shows the four levers, each side's cut and TILTED / FOLDED.
  • MO6a: in "Grass that moves", with the long-grass strip: a spring-back readout (the laid cells, the blade's lay factor) and "stand the laid grass up now".
  • MO6b: in "Grass that moves": the clippings readout (clumps, litter, throws off the lawn, smothered), "drop a clump", "next visit, 3 days on"; the discharge from the Parts pickers (No bag / Side chute / Mulch plug).
  • MO6c: in "Grass that moves": the habits readout (grain, ruts, yellow from too much off, mohawks, fuel-killed cells, stains, wheel tracks), "three weeks the same way", "a week on, mown across", "spill fuel here".
  • MO9: reset or unlock Harold's notes. MO10: a used mower with rolled faults.

Tests and checks

  • MO1: memory round trip, fingerprint mismatch, size budget (4,000 m² sloppy < 16 KB, 20 KB since MO6c: that lawn sits on the two-thirds line, 14 cm cut to 5, so ~9% of its cells carry stress days and the rows beside its missed strips are mohawks: 19.3 KB); a fence-side pass leaves a fringe of the right width.
  • MO2 (SurfaceTests): a raised slab bends a low blade at full speed, flush never; wheel factors and gravel lift; stray gravel thins out; a root scalps along its ridge and the guest gets the scalps; a hard hit bends, stalls, and the bend survives the job until a new blade; a hose wraps until unwrapped, poop cakes the bag. Checked in the sandbox: raised slab + low blade at full speed = a bent blade (0.51); the hose wraps; the sprinkler geyser; poop smears the deck and the wheels print brown along the lawn. Not yet checked in play: prints across paving (the patio's furniture stopped the mower; same code, placed on the paving's top).
  • MO3 (ThrowTests): a bagged Classic throws right, left only by ricochet; behind only bagless, the bag catches most, a mulch plug closes the rear, a chute throws most; tipped up throws more and higher, a guard fewer; the arc reaches its range; the same roll on both machines. Checked: tipped up 3 m from the house, 40 strikes broke two front windows (billed); in co-op the guest applied the host's 40 throws and 2 breakages (0 mismatches), the host the guest's gravel throws.
  • MO4 (PartTests): what each chassis takes; grandma's Classic with high-lift, big rear wheels and a brake clutch (suction ×1.6, more load, rough lawns, a hard hit slips the clutch); a chute changes the throws; swaps keep the old part; old upgrades become parts; the sandbox kit; the co-op tag. Checked: grandma's mower with high-lift + big rear wheels + brake clutch + guard + flap (suction ×1.6, push 1.43 m/s, a stall became a clutch slip); the Classic with chute + roller + race kit (no bag, lay 1.0, the stand-ins on the model); in co-op each saw the other's push|side_chute,roller_kit,engine_race, 0 mismatches.
  • MO5a (EngineTests, 10): the engine-stop bar and its run-down; the brake clutch (and the clutch part on grandma's mower); the Volt; choke cold and the stall left on warm; grandma's 2-5 pulls; the primer and flooding; slow throttle (cut, suction, carry, fuel); clogs and hard hits need the cord; out of fuel runs down. Checked: grandma's mower cold on fast won't catch (hint), choked it starts on the 2nd pull, letting go stops the engine and the blade runs down; the Regent's primer, the bar engaging only the blade; the Volt; in co-op the host saw the guest's engine and blade, 0 mismatches.
  • MO5b (MowerCareTests, 11): ten jobs of neglect → about five pulls per crossing, a service → one; old oil ×3 engine wear; the care goes back with the wear and comes out next job; the desk (prices, fixes, back tomorrow, not a bench job); ten sharpenings then a new blade, never a bent one; stale fuel and mixing; the rope snaps mid-pull; caking, bearings, belt, clutch; the Volt's cycles; the reminder (not before the store, once); a guest's wear over the wire. Checked: a Classic needs 1.1 pulls per crossing looked after and 4.8 after "Neglect 10 jobs"; oil in the filter puffs white smoke; the service card's amber and red lines.
  • MO5c (BenchJobTests, 12): careful sharpening (sharp, balanced, free); the mistakes (Harold's note, the wrong side, one end filed); the cone; oil (spares, under the mark, overfill); the filter (taps, a soaked one, waiting for the oil); the plug's gap; the rope's spring; stale fuel from the garage; a bent blade replaced; deck, bearings and the cable; a job put down changes nothing, a mower at the desk can't be worked on; ten jobs of neglect then one evening at the bench: no extra pulls, spares only. Checked: uneven filing → "End B dips", fixed on the cone; the hub's service card shows "By hand"; in co-op the host booked a plug job ($5 of spares) and the guest saw it.
  • MO5d (LeverTests, 8): levers per chassis; one forgotten tilts the deck (per axle only rakes it, central moves it all); a tilted cut lower on one side, higher on the other, and scalping; the levers come back after a job (over the wire); folded footprint, the bar out of reach, the slow push; no room to unfold in a full van; filter down seeps on the drive, filter up doesn't; a heavy lift into the car, twice as quick together, none into a van. Checked: three levers at 3 cm and one at 9 cut a strip 3 cm / 6 cm, scalped on the low side, the model leaning 7°.

Assets to make

For the art and audio passes (sound follows SN1).

  • Meshes (models_mowers.py): roller kit, side chute, mulch plug, rear flap, brake-clutch bar, wheel variants (bearing, big rear, pneumatic), battery packs, per-wheel / per-axle / central height levers, the bag's fill flap, the tank window, the throttle lever, the Hover 33; exploded offsets per part (MO14). Garden props (MO2): raised / flush / sunken slabs, gravel and bark textures, tree roots, edging strips, drain covers, pop-up sprinklers, a hose. Bench props (MO11, MO16): file, vice, bench grinder, balancing cone, oil pan, dipstick, plug gauge, recoil spring; Harold's manual (MO9).
  • Sounds: pull cord (good / weak / snapped rope), choke and primer, engine knocking, misfire pops, bogging, blade run-down, brake clutch clunk; CLANK (contained stone), TINK, ricochet whistle, glass crash, car alarm, SCREECH (slab / edging), root thud, gravel stream, poop splat, sprinkler geyser, hose wrap; lever clicks; squeaky bearings; the grinder; Harold's page turn; the tall-grass rustle (GR1).
  • VFX: thrown stones and sparks, gravel spray, bark chips, toy confetti, poop splat and prints, stink haze and flies, the geyser, black / white / blue smoke, torn-tip haze, clumps, spring-back tufts popping, the wheel track, the seed puff from tall grass (GR1).
  • Voice: ego quips (gravel, poop, a stall, a bent crank, the wrong side up), grandma's note about Harold.

Open questions

  • Numbers to tune in the sandbox: skirt margins, opening angles, the ricochet share, gravel lift, hit thresholds, care intervals, part prices; the ~15% escape calibration (MO13).
  • Spares in the van? The first idea had spares riding in the van; they're the company's for now. Revisit with the van grid.
  • The slow-motion and pause: the throw's slow-motion sets the time scale back to 1 when done, so a pause during it would be undone.
  • Prints across paving aren't checked in play yet (MO2).
  • The Trekker's drive bar: the second bar that engages the self-propelled drive isn't in MO5a's tests; check it's there.
  • Special client requests (MO21): this spec or the jobs spec?

Rejected

  • The trimmer-only band (0.45 m along every edge): the deck's real reach and fringes replace it; the mower alone finishes a lawn (MO1).
  • Plain JSON for lawn memory: the pretty-printed save would grow to 15-50 MB; quantized and deflated instead.
  • Raised slabs 1-4 cm proud: anything lower than 3.5 cm can't reach a blade at its 3 cm minimum.
  • The 1.6 s stall cut-out (the engine catching again by itself): a stall needs the pull cord since MO5a.
  • Click-to-toggle blades with no engine stop: the bail bar replaces it (MO5a).
  • Upgrades per deck size and deck radius upgrades: parts are physical, one set per mower, and deck width is the chassis (MO4).
  • A side cutting at its lower lever: forgetting one lever while lowering never tilted the deck; each side cuts at the average of its two levers.
  • Folding the handle in the garden (hold E on the handle): folding happens at the hub; the garden only unfolds.
  • The end-of-day report listing mowers that need care: the service desk's morning mail does it (MO5b).
  • Modelling the fuel a full tank leaks on its side: it would only ever be a smell in the van.
  • Spring-back drawn through the trample field: the field's pushes recover in seconds and are local to each machine, so a 2-5 minute hold would mean re-stamping hundreds of cells every frame. Drawn in the renderer instead.
  • The direction streak counting directions: back and forth along the same lines is the same habit, so it counts the axis.
  • A tuft 30% of the time along the grain: it left a quarter of the lawn standing in the sandbox; 8%.
  • Ruts at 10% brown a level: most cells carry one, so it turned the whole lawn yellow; 3%.
  • Turn scuffs from a tipped pivot: the wrong way round; scuffs come from turning on the spot with the deck down.
  • A literal one-third rule: the game's grass grows about three times faster than in life, so it would fire on every weekly visit; two thirds.
  • "Procedural first" mower sounds: replaced by SN4's recorded loops plus synthesized state layers.
  • Data-model notes for the build sessions (round 4): process, not part of the game.
Source docs/game/mowing.mdEdited 2026-10-03