Game
DifficultyDF
Every system's difficulty dials on one page. Presets plus Custom (Money, Machine, Mishaps), picked by the host at new game and locked; difficulty scales consequences, never the feel.
Consequences, not feel. The mower pushes, cuts and throws exactly the same on every preset, so the skill you learn is the same everywhere and in co-op. Difficulty only changes what things cost you: how fast parts wear, how often the machine lets you down, what an accident costs, and how tight money is. You pick it once, at the start.
The player's view
A new game. After naming the save, three preset cards each make a one-line promise, and a Custom button opens three dials: Money, Machine and Mishaps, each Relaxed, Normal or Hard on its own. A note says it can't be changed later. The save slot shows what you picked ("Custom: Money Hard · Machine Relaxed · Mishaps Normal"), and a friend joining your game sees your difficulty on the join screen and in the lobby.
On Relaxed. The bills are smaller and clients tip more; the blade stays sharp longer and the oil change comes round later; a healthy engine starts within a couple of pulls. The first window you break at each house is forgiven. The line assist and the gauges are on when you start, and you can switch them off.
On Hard. Bills bite, clients haggle and pay late, parts wear fast, and neglect makes the engine sulk on the cord. A stone through a window costs more and nobody forgives it. But the stone flies the same arc it would on Relaxed: only the bill is different.
Never stuck. On every preset, grandma's mower is still temperamental, your last working mower always gets a free patch-up, and a big bill can be paid in instalments or worked off.
Ideas
DF1: presets, Custom and a locked choice
One page for every system's difficulty dials. Each system's spec links here and adds its row here, so the numbers never scatter. The money dial moves here from economy.md; the mower (mowing.md) adds the Machine dial (DF2); later systems add theirs.
The choice
- Presets + Custom: Relaxed / Normal / Hard, plus Custom with three dials, Money, Machine and Mishaps, each set to Relaxed, Normal or Hard on its own.
- Locked at new game: chosen by the host when the save is created, shown on the save slot, never changed after. Co-op guests play on the host's.
- Preset names in the game's voice (a suggestion): Sunday Mower (Relaxed), Weekend Pro (Normal), Groundskeeper (Hard). The dials keep the plain names Money, Machine, Mishaps.
What never changes
- The mower's physicsEvery skill in mowing.md, the clean pace, tufts, load, the throw geometry, spring-back and the rest of the mower's behaviour are identical on every preset. Difficulty scales wear and upkeep, breakdowns, what accidents cost, and money.
- Never game over (economy.md): the free patch-up of your last working mower, instalments for big bills, the household bill ladder that ends in a power cut, not a loss.
- Assists are settings, not difficultyLine assist, the wheel-track highlight, the Gauges HUD and bar hold / toggle can be switched by any player at any time (accessibility). The preset only sets their defaults (DF4).
- Grandma's mower stays temperamentalOn every preset. It's character, not difficulty.
The Money dial
| Relaxed | Normal | Hard | |
|---|---|---|---|
| Household bills | −30% | as economy.md | +30% |
| Clients (haggling, tips) | +15% more generous | as written | stingier |
| Invoices | always on time | as written | more late payers |
| Tax | 20% | 20% | 25% |
The new-game screen
- After the save name (the main menu, MN5): three preset cards with a one-line promise each, and a Custom button that opens the three dials. A note: "This can't be changed later."
- The save slot shows the preset, or the mix ("Custom: Money Hard · Machine Relaxed · Mishaps Normal").
- Co-op: the join screen and the lobby show the host's difficulty.
Needs: EC1 · Done when: a new game made on Custom (Money Hard · Machine Relaxed · Mishaps Normal) shows that mix on its save slot and in a guest's lobby, its household bills are 30% above Normal's, and nothing in the game can change it afterwards.
DF2: the Machine dial
The mower's wear, upkeep and breakdowns (mowing.md, the care of MO5). The physics stay the same (DF1).
| Relaxed | Normal | Hard | |
|---|---|---|---|
| Part wear (blade, engine, wheels, bag, rope) | ×0.6 | ×1 | ×1.4 |
| Care intervals (oil ~25 engine hours, filter, plug, fuel staleness ~30 days) | ×1.5 longer | ×1 | ×0.75 shorter |
| Hard hits (slabs, roots, pebbles) | a bent blade needs a harder hit; no bent crankshaft | as written | bends sooner; crankshaft a little more likely |
| Starting | a healthy engine starts within 2 pulls | as written (3) | neglect counts double |
| Used mowers' hidden faults | milder | as written | harsher |
Needs: DF1, MO5 · Done when: the same mowing session wears the blade ×0.6 on Machine Relaxed and ×1.4 on Hard, and a Relaxed mower never bends its crankshaft.
DF3: the Mishaps dial
Accidents and their bills. The billing itself is in the job page (Jobs: from the phone call to the review).
The throws themselves don't change: the same stone, the same arc, the same window. Only the bill does.
| Relaxed | Normal | Hard | |
|---|---|---|---|
| Repair bills (windows, cars, hoses, sprinklers) | ×0.7 | at cost | ×1.3 |
| Forgiveness | the first mishap at each household | grandma's street forgives the first window, once | none |
| Service desk prices (paid care) | ×0.7 | as written | ×1.3 |
| Instalments / work it off | always | always | always |
| The ringing in your ears (SN3) | off | on | on |
| Muscle fades (SK1) | never | as written | ×1.5 faster |
Needs: DF1 · Done when: the same broken window costs ×0.7 on Mishaps Relaxed (and nothing the first time at that household) and ×1.3 on Hard, and the ears gauge never fills on Relaxed.
DF4: assist defaults
The preset sets which assists a new save starts with; any player can change them at any time (DF1).
| Relaxed | Normal | Hard | |
|---|---|---|---|
| Line assist, wheel-track highlight | on | off | off |
| Gauges HUD | on | off | off |
Needs: DF1, MO8 · Done when: a new Relaxed save starts with the line assist, the wheel-track highlight and the Gauges HUD on, a Normal one with them off, and switching them changes nothing else.
DF5: the Work row
How hard the competition and the market push, decided in work.md and jobs.md: rival aggression = the answer timer's half-life ×1.5 (Relaxed) / ×1 (Normal) / ×0.75 (Hard) (J20), and how fast demand grows (its numbers are work.md's to decide).
Tuning
| Name | Value | Idea | What it does / why |
|---|---|---|---|
| Household bills | −30% / as written / +30% | DF1 | Money dial |
| Clients' generosity | +15% / as written / stingier | DF1 | haggling and tips |
| Invoices | on time / as written / more late payers | DF1 | |
| Tax | 20% / 20% / 25% | DF1 | |
| Part wear | ×0.6 / ×1 / ×1.4 | DF2 | blade, engine, wheels, bag, rope |
| Care intervals | ×1.5 / ×1 / ×0.75 | DF2 | oil ~25 engine hours, filter, plug, fuel ~30 days |
| Starting | within 2 pulls / 3 / neglect counts double | DF2 | a healthy engine on Relaxed |
| Repair bills | ×0.7 / at cost / ×1.3 | DF3 | windows, cars, hoses, sprinklers |
| Service desk prices | ×0.7 / as written / ×1.3 | DF3 | paid care |
| Muscle fades | never / as written / ×1.5 | DF3 | SK1's fade without training |
| Rival aggression | answer half-life ×1.5 / ×1 / ×0.75 | DF5 | a longer half-life leaves you more time to answer |
| Preset day targets | Relaxed reaches the depot ~day 55, Hard ~day 90 | DF1 | checked by the EC5 simulator |
Co-op
- State:
SaveData.difficulty= three values (money, machine, mishaps), written once at creation, host-owned. - Ownership: the host's; guests play on it.
- Host-only: picking it, on the new-game screen.
- Randomness: none; the dials scale chances and costs that already use
SimRandom. - Channel: guests receive it with the company state; nothing to sync after.
- What each player sees: the join screen and the lobby show the host's difficulty; assists stay each player's own setting.
- Late joiners: get it with the company state.
Tech
Who owns what
Each system's spec owns its base numbers; this page owns the multipliers. economy.md owns bills, prices, tax and the never-game-over rules; mowing.md owns the mower and its care (MO5) and assists (MO8); the job page (Jobs: from the phone call to the review) owns damage billing and the answer timer; SN3 owns the ears gauge; SK1 owns the muscle fade; work.md owns demand. No row planned for the day (day.md).
Data and code
- The multipliers live in
GameDatabase(one table per axis), not in code, so EC5 tunes them. - Every system reads its axis through one helper (
Difficulty.Machine.wear, …): no preset names in game code. - There is no command that changes the difficulty after creation.
Tests
- The multipliers apply per axis; a Custom mix applies each axis independently; the value can't change after creation (no command exists).
- The EC5 simulator checks the three presets (Relaxed reaches the depot ~day 55, Hard ~day 90) and the Custom corners.
Open questions
- The preset names: Sunday Mower, Weekend Pro and Groundskeeper are a suggestion, open to veto.
- How fast demand grows on each preset (DF5): work.md hasn't set the numbers.
Rejected
- Difficulty that changes the feel (mower physics, clean pace, throws): the skill would differ between presets and between siblings in co-op.
- Changeable later (an early economy.md plan, also in its Rejected list): locked at new game instead (the user's pick).
- Difficulty living in economy.md: it gets its own page so every system's dials sit together.
- Assists as part of difficulty: they're accessibility settings any player can switch at any time.
- A weather row: the forecast stays honest on every preset (weather.md).