Game Mower wiki

Game

Player: you, in first personPL

You, on foot, in first person. Walking, the camera, looking at a thing and pressing E, what's in your hands, the control map and the player settings, the same in the hub, the store and every garden.

You're there in your own body. First person, with your own arms on the mower bar and your sneakers in the grass when you look down. You walk up to a thing, look at it, and E does the obvious thing; holding E does the thing that takes a while. It works the same at grandma's, at the store and in every garden, and with a mouse or a gamepad.

The player's view

Walking. You walk at an easy stroll and jog with Shift; Ctrl slows you to a careful creep between the flower beds. Walking backwards is slower than walking forwards, and knee-high grass drags at your legs. Holding the hedge trimmer you walk a little slower, and slower again while it's buzzing. There's no jump: a garden's fence is the edge of the job.

Looking. You look through your sibling's eyes. Look down and there's your body: your legs walking, your hands on whatever you hold, your shadow on the lawn with your head on it. The view bobs gently as you walk, shakes with the engine and kicks when the blade hits a stone. On the mower, Alt lets you look over your shoulder while the mower keeps going straight. When you open the computer, sit at grandma's table or lie down in bed, the camera glides to a fixed spot and back again when you leave. At the end of a job it lifts off and flies over the lawn you just cut. When grandma's drop-off plays through your own eyes, your head turns to whoever's talking, but nothing stops you from looking at the dumpster while dad gives his speech.

Using things. You look at the compost bin and it gets a soft warm outline; a small prompt by the dot in the middle of the screen says "Hold E Empty the bag". You look at Mrs. Higgins: "E Talk". Two things side by side? The one you look at is the one you get. Something you can't do right now still shows its prompt, greyed, with the reason ("The bag's empty"). The props never carry text; E opens a screen that does.

Your hands. You hold one thing at a time: a tool, the mower's bar, the fuel can, a junk bag, the paint roller. You put a thing back where it lives with E on its home (the van, the skip, the paint tray), or put it down where you stand by holding E with nothing in front of you. Your sibling can pick it up.

Controls. One map for the whole game, every action on keyboard and mouse and on gamepad. The prompts show the keys of whichever device you touched last. In the settings: look speed for the mouse and the stick, invert Y, the field of view, head bob, camera shake, rumble, and whether sprint is held or toggled.

With your sibling. You can't walk through each other anymore: you bump shoulders and slide past. Your brother's head tilts down when he looks at the lawn and up when he looks at you, and turns when he looks over his shoulder while mowing, so you can always tell what he's looking at. In the drop-off you catch him staring at the garage while mom talks. If he's already emptying the bag, your prompt says so instead of fighting him for it.

Ideas

PL1: on foot

Built. A CharacterController (height 1.8, radius 0.3, 45° slopes, 0.3 m steps), no Rigidbody, no jump, no crouch, no stamina.

  • Speeds: hands free walkSpeed; holding a hand tool, the tool's own walkSpeed (1.5 for the spreader to 1.8 for the trimmer). Multipliers stack: sprint sprintMul (only while walking forward, never while a tool's engine runs), slow slowMul, tool in use toolUseMul, strafing strafeMul, walking backwards backMul.
  • Tall grass slows you down to ×0.75 at 35 cm (GR1's grass motion).
  • Feel: speed eases in at accel; turning follows the look with no turn rate; gravity gravity.
  • On the mower the controls belong to the mower (MO8a): the mouse pushes and steers, the mower's own speeds apply.
  • Who you collide with: walls, props and client NPCs; other siblings with PL7.
  • Footsteps: SN16a (grass and hard ground).

Needs: - · Done when: built.

PL2: the first-person view

Built. The camera is your head: eyeHeight above the feet, fov, a 0.05 m near plane. The rigged body stands just behind it with its head folded away; a shadow-only copy keeps the head, so your shadow has one.

  • Look: mouse mouseLook, stick stickLook, both times the look-speed setting (PL6). Pitch from pitchDown to pitchUp; while pushing the mower the pitch settles to look at the deck.
  • Free look (Alt / R3): while pushing the mower or using the trimmer, the head turns up to freeLookYaw either way while your hands keep going. Sounds follow the head (SN1).
  • Feel: head bob (bobHz, bobAmp), engine shake (stronger near a clog), a kick on hard hits (up to 3.5°), the trimmer's swing turning the view a little. PL6 scales or turns each off.
  • Shots: indoors, the camera blends (shotBlend) to fixed shots for the menus, the computer, the bed (0.8 s); your body is hidden there. Cinematics (the intro, ST1-ST4) and the end-of-job fly-over borrow the camera and give it back; any key skips the fly-over.

Needs: - · Done when: built.

PL3: one way to use things

Today the hub and the store pick what you look at (GarageWalker) and mostly act on a press, while gardens pick the nearest thing from a fixed priority list (PlayerInteraction) and everything is a hold, each with its own prompt. PL3 makes it one system, everywhere.

What E acts on, in this order:

  1. What's in your hands: the mower you're pushing (unclog, empty the bag, fold), the fuel can at a tank (pour).
  2. What you look at: every usable thing has a focus point and a reach (reach by default; the client 2.6 m, the mower 2.4 m, a stone 1.9 m, a pour 1.6 m). It's a candidate when the focus point is within lookCone of the view and within reach, less than 2.4 m above or below you, with nothing solid between your head and it. The candidate closest to the centre of the view wins, not the nearest one and not a fixed priority.
  3. Nothing: holding E puts down what you carry (PL4).

Press or hold, one rule for every action:

  • Press when the action is instant: open a screen, talk, take, put back, pick a tool, start.
  • Hold when the action takes time (pouring, unclogging, emptying, scrubbing: it lasts while you hold, as long as it needs) or when it ends something (end the day, sleep: holdEnd). A ring fills around the dot. Letting go of a timed action keeps its progress, draining at holdDrain; letting go of an ending does nothing.
  • Holds as presses (PL6): with the setting on, a timed hold becomes press to start, press again (or walk away) to stop; an ending becomes press, then press again within confirmWindow to confirm.
  • A second action on the same thing is the hold (the bench: press opens the skills screen, hold trains, SK1).

What you see:

  • The dot: a small dot in the middle of the screen, always there, faint. The hold ring grows from it.
  • The outline: the target gets a soft warm outline (in the How to Fish palette, never pure white).
  • The prompt: next to the dot, the key and a verb ("E Talk", "Hold E Empty the bag"), in the device's glyph (PL5). Its look belongs to the HUD & UI spec.
  • Never a silent no: a thing you can't use right now stays the target, its prompt greyed with the reason ("The bag's empty", "Turn the engine off first"). Nothing just ignores E.

Code: one Interactable component (focus point, reach, press and hold verbs, Why not? for the greyed reason) replaces GarageStation's targeting and PlayerInteraction's priority list; the stations keep their kinds and screens. Both scenes use the same picker and the same prompt.

Needs: - · Done when: in the hub, the house, the store and a garden, every usable thing is picked by looking at it, with the outline, the dot and the same prompt; every action follows the press/hold rule; the compost bin next to the van is picked by looking at one or the other; a blocked action shows its reason; in 2-player co-op, one player can't empty the bag the other is emptying, and sees why.

PL4: what's in your hands

One thing in your hands at a time, the same rules for all of them.

  • The belt and the hands: tools you own sit on the belt (1-6, PL5); the one you hold is out. The mower's bar counts as holding (taking the mower parks the hand tool, picking a hand tool parks the mower: built).
  • What's on the belt: in a job, the tools loaded for it (in grandma's car, later the van), the same list in the same order for every sibling, so "slot 2" means the same tool to everyone. Away from a job (the hub, the house, the store) the belt is empty: tools live on the garage shelf, and your hands only take carried things.
  • One tool, one sibling: a tool is a real thing, so only one sibling holds it at a time. Its slot shows who has it, and picking it says so ("Sam has the trimmer") instead of handing you a copy. It's free again when they pick something else or put it down. The mower is the open question below.
  • Carried things: the fuel can, a junk bag, the paint roller. Each is a real model in your hands (hand IK, like the tools), not a prop stuck to the camera. Taking one when your hands are full first puts the tool back on the belt; a carried thing has to be put down first ("Hands full").
  • Putting it down: E on its home puts it back (the can at the van, the bag at the skip, the roller at the tray). Hold E with nothing targeted puts it down where you stand, on the ground; any sibling can pick it up. A thing put down outside the walk area, or left behind when the scene ends, goes back to its home: never lost, never stuck.
  • Weight: a junk bag or a full can slows you to carryMul (SK2's carrying bonus applies at full strength).
  • Seen by the others: what you hold shows on your avatar for everyone (MO17 covers the can; PL4 adds the bags and the roller).

Needs: PL3 · Done when: the fuel can, a junk bag and the roller are held in both hands as real models; in 2-player co-op both belts list the same tools in the same order, and a hand tool one sibling holds can't be taken by the other, who sees who has it; each goes back with E on its home and down with a hold of E on nothing; a can left in the garden is back at the van next job; in 2-player co-op one sibling puts a bag down and the other picks it up.

PL5: one control map

Every binding lives in GameInput; no key is read anywhere else (the dev keys F1, F9-F12 excepted, dev builds only).

ActionMouse & keyboardGamepad
MoveWASD / arrowsleft stick
Lookmouseright stick
SprintShift (hold, or toggle: PL6)left stick press / LT
Slow walkCtrlLB
Use (blades, the tool)left clickRT
Second use (tip the mower)right clickRB
Interact (press, hold)EX
Pull the cord, engine offRA
Throttle, chokeCB
Blade heightwheel / [ ]D-pad up / down
Tool slots1-6-
Next / previous toolTab / QD-pad right / left
Free lookAltright stick press
Finish the jobFY
Pause menu (the only menu, UI15)EscStart

The mower's own actions are MO8a's table; they use these same keys.

  • Every action on both: nothing exists only on one device.
  • One meaning per key: Tab is the next tool in a garden and does nothing elsewhere: the house has no menu of its own, its things are the way in, and Esc is the only menu (UI15). The gamepad's B is choke everywhere and View is free.
  • New: Q for the previous tool (it had no key); the hub menu's Tab and B leave GarageWalker (UI15).
  • Prompts follow the device: every prompt and hint shows the glyph of the device you touched last, and every hint names every key that works (the blade height hint says the wheel and [ ]; the mower's start hint says R).

Needs: - · Done when: every row of the table works on both devices in a garden and in the hub; no key is read outside GameInput; a prompt switches its glyph as soon as you touch the other device.

PL6: player settings

Per machine (each player's own, never in the company save), in the settings screen (the menus spec).

SettingRangeDefault
Mouse look speed0.2-31
Stick look speed0.2-31
Invert Ymouse, stick, separatelyoff
Field of viewfovMin-fovMaxfov
Head bobon / offon
Camera shake (engine, kicks)0-100%100%
Rumbleon / offon
Sprinthold / togglehold
Holds (PL3)hold / press to start and stophold

The built "Look speed" becomes the mouse look speed; the stick gets its own. Bar hold/toggle and Gauges stay with the mower (MO8a).

Needs: - · Done when: each setting changes the game at once, survives a restart, and a guest's settings never touch the host's; with holds as presses, every hold in the game (unclog, pour, empty, scrub, end the day, sleep) works with presses alone.

PL7: siblings you can bump into

Today other siblings are ghosts: you walk through them, their heads only turn with their bodies, and free look doesn't show at all.

  • Bodies: each remote sibling gets a kinematic capsule (the player's size) on a Sibling layer. Your own controller collides with it, so you stop at their shoulder and slide past. Nobody pushes anybody (each player owns their own movement); a shove is PL10.
  • The mower too: the deck's sweep treats a sibling like a wall: you can't mow your brother's feet.
  • Heads: the pose carries where the head looks: its pitch, and its turn away from the body (free look, PL2; a scene's look, PL14), one byte each. The other sibling's head, and their googly pupils, follow it, eased like the rest of the pose. Pushing the mower while looking over your shoulder shows as exactly that on the other screen.
  • Spawns: siblings spawn side by side, never inside each other.

Needs: - · Done when: on two instances, walking into the other stops you at their shoulder and you slide past; pushing the mower into them stops the deck; looking down at the lawn tilts your head on the other screen; free look while pushing turns your head, not your body, on the other screen.

PL8: rebinding

Any action to any key or button, per device, with a reset to defaults; a key already taken asks to swap. Prompts follow the new bindings. Belongs with the Steam layer's controller and settings work.

PL9: the full gamepad

Glyphs per pad family (Xbox, PlayStation, Steam Deck), every menu and screen driven by the pad (today the menus are mouse and keyboard; pad focus is untested), Steam Input's configurations, and the Steam Deck's screen size.

PL10: gestures

A gesture wheel: wave, point (your arm points and the other sibling sees where), thumbs up, a high five that needs two, and a shove that pushes the other sibling a step (the one push that crosses ownership, run as a command the host sends). Pointing makes co-op work without voice chat.

PL11: carry anything

Pick up loose things (a garden gnome, a hose, a bucket), carry and throw them; heavy things need two siblings lifting together (a sofa, a fridge: the odd jobs in Economy: prices, costs, wallets and the long game; turf rolls and chipper branches in Garden trade: from grandma's street to the stadium). Grows PL4's rules to physics props.

PL12: slips and falls

Wet grass on a slope, dog poop, a hose across the path: you slip and land on your back, googly eyes spinning, and get up a second later. Rare, never on a straight walk, a bit more on the Mishaps dial (Difficulty).

PL13: sitting down

One seat state for the car (DY2's ride), grandma's kitchen chairs, the porch swing and the bench: the camera at the seat, free look, E or a step gets you up. The bed is built this way already (a camera in bed, the InBed pose flag).

PL14: looking away in scenes

When a scene is seen through your own eyes (the drop-off at grandma's, ST3; later Chad's scene, ST9), the script points your head at whoever talks, but the mouse or the stick can turn it away: up to sceneLookYaw either side and sceneLookPitch up and down, from where the script looks. Let go for sceneLookIdle and the head eases back to the script. The scene never waits for you: the lines play on, so staring at the dumpster while dad talks is your choice.

  • Seen by the others: in co-op, every sibling's head follows its own player (PL7's head byte), so while dad gives his speech your sister can watch you gaze at the garage, or at her.
  • What's left alone: shots that aren't your eyes (ST1's montage, the end-of-job fly-over, the computer, the bed) stay fixed; the ride has its own free look (DY2, PL13).
  • Code: the scene's CinematicShot gives the scripted direction; PL14 adds the player's offset on top, clamped, and the head bone follows it on the avatar.

Needs: PL7 · Done when: during the drop-off, solo and on two instances, you can look away from dad, your head eases back when you let go, the lines play on regardless, and the other player sees your head turned.

PL15: the cast notices

In a scene, look away long enough and someone reacts: dad's "Eyes up here, kiddo", mom's sigh, Chad snapping his fingers at you. One or two lines per scene, said at most once, and only between lines (never cutting one off). Needs new voice clips per sibling voice where a sibling answers (SI2).

PL16: never stuck

Whatever happens to the geometry, you're never trapped. Two ways out, both free, both your own (no host needed: you own your movement).

  • Falling out: below the scene's lowest ground by fallDepth, or outside its bounds, the screen dips to black and you're back at your last safe spot: the last place you stood on walkable ground for safeDwell, at least 1 m from anything solid. If you were pushing the mower it comes back with you, beside you.
  • Wedged: "I'm stuck" in the Esc menu, always there and never greyed, puts you (and the mower you push) at the nearest safe spot, or at the scene's arrival point (the curb, the gate, the front door) if there's none.
  • What comes along: what's in your hands and on the belt; nothing is lost, nothing costs anything.
  • Telling us: in dev builds each rescue logs the scene and position, so the hole gets fixed.

Needs: - · Done when: in the sandbox, solo and as a guest, falling through a gap in the ground puts you back on safe ground within 2 s, and "I'm stuck" frees you from inside a wall and from between the van and a fence, mower included.

Tuning

NameValueIdeaWhat it does / why
walkSpeed1.9 m/sPL1Hands free. One constant (it's written in three places today).
sprintMul×1.55PL1A jog, about 3 m/s: crossing the street, not racing.
slowMul×0.55PL1Between flower beds, around the client's cat.
toolUseMul×0.7PL1While a hand tool works.
strafeMul / backMul×0.9 / ×0.75PL1Forward is the natural way to walk.
accel7 /sPL1Eases in and out without feeling floaty.
gravity−20 m/s²PL1Steps down curbs without floating.
eyeHeight1.55 mPL2The head of an average sibling; the body scales to it.
fov72°PL2, PL6The default field of view.
fovMin / fovMax60° / 100°PL6The usual comfort range.
mouseLook / stickLook0.09°/count / 150°/sPL2Times the look speed settings.
pitchDown / pitchUp−70° / +60°PL2Look at your feet, look at the treetops.
freeLookYaw±110°PL2Over your shoulder while the mower goes straight.
bobHz / bobAmp1.7 Hz / 0.03 mPL2A gentle step, never seasick.
shotBlend0.55 sPL2The glide to a fixed shot and back.
reach2.3 mPL3Default reach; some things set their own.
lookCone32°PL3How far off the centre a thing can be and still be picked.
holdEnd1.0 sPL3Ending the day, sleeping: long enough not to do it by accident.
holdDrain3 /sPL3A timed hold's progress fades back when you let go.
carryMul×0.85PL4A full can or a junk bag; SK2's bonus brings it back up.
confirmWindow2 sPL3Holds as presses: time to press again to end the day or sleep.
fallDepth5 mPL16Below the lowest ground by this much, you're rescued.
safeDwell1 sPL16Standing this long on walkable ground makes it your safe spot.
poseRate20 /sPL7How often each player sends their pose (built).
sceneLookYaw±70°PL14Far enough to look at the dumpster or your sibling, not behind you.
sceneLookPitch±35°PL14Down at the lawn, up at the gutters.
sceneLookIdle1.5 sPL14Hands off this long, the head eases back to the script (over ~0.8 s).

Co-op

  • Who owns what: each player owns their own movement and look (owner-authoritative, NetPose at poseRate, relayed by the host, no prediction). The host owns everything a use changes: interactions still end as commands (ICompanyCommand through GameSession.Execute), garden events or lawn cells, as today.
  • What syncs: the pose (feet, yaw, PL7's head pitch and turn, so free look and scene looks show), what's in your hands (PL4), the flags already in NetPose (pushing, blades, bag, engine, in bed...). Settings (PL6) and the prompt never sync.
  • Two players, one thing: the host decides; the first request wins. The other player's prompt greys with the reason ("Sam's emptying it") instead of fighting.
  • What each player sees: their own dot, outline and prompt; the others' bodies, heads and what they hold.
  • Joining mid-way: the guest spawns beside the host, never inside anyone (PL7); things put down on the ground (PL4) are in the scene state the guest receives.
  • Solo is the same code with one sibling.

Tech

  • Code: walking and look in Mower/PlayerController.cs; the body in Characters/PlayerBody.cs; the hub, house and store's targeting and shots in Garage/GarageWalker.cs and GarageStation.cs; the garden's in Mower/PlayerInteraction.cs; bindings in Core/GameInput.cs (no .inputactions asset); the look speed in Sim/Company/MenuRules.cs and UI/SettingsPanel.cs; the pose in Net/NetPlayer.cs and Net/NetAvatar.cs.
  • PL3's picker is a pure function (candidates with focus point, reach and height; the head's position and view → the target), so it gets edit-mode tests: the centre wins over the nearest, walls block, out-of-reach things don't count, the hands come first.
  • PL6's settings clamp in MenuRules (edit-mode tests, like the look speed today) and save with the machine's settings, not the company.
  • Clean-ups with PL3 and PL5: one walkSpeed constant, the blades/cord/choke handled once (in ToolBelt, not also in PlayerController), the hub menu's keys gone (UI15), the fuel can's placeholder cube replaced by the model (PL4).
  • Testing: the sandbox's proving lawn for the garden things, the hub for the stations, then two instances for PL3's busy prompt, PL4's put-down and PL7.

Open questions

  • Sprint's default: hold (built) or toggle?
  • Two siblings, one mower: today each sibling pushes their own copy of the job's mower. With one tool, one sibling (PL4), the second sibling in the MVP needs something else to do on grandma's lawn. Options: the mower stays the one exception (each sibling gets a copy, as built); a second tool for the MVP (grandma's shears for the edges, a rake for the clippings); or taking turns (one mows, one empties the bag and moves things out of the way).

Rejected

  • A third-person camera: the game is first person with a whole body; you see your sibling's face in the mirror, the closet, the intro and the fly-over, and your friends' faces all day.
  • A stamina bar for sprinting: a HUD meter for nothing; tiredness over a long day is SK14.
  • Picking the nearest thing in a fixed order (the garden's way today): with the van, the bin and the mower close together you can't tell what E will do.
  • Text on props as labels: E opens a screen that shows it instead.
  • Jumping: a fence is the edge of the job, and nobody climbs onto the client's shed. Not even a small hop.
  • Crouching: nothing in the game is under anything; Ctrl's slow walk covers the careful steps.
Source docs/game/player.mdEdited 2026-10-03