Skip to content

Master plan, coin economy, daily goals, sound and weather - #37

Merged
Sagyam merged 8 commits into
mainfrom
claude/names
Nov 7, 2026
Merged

Sagyam merged 8 commits into
mainfrom
claude/names

Conversation

@Sagyam

@Sagyam Sagyam commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Works through the roadmap's Ideas, not designed, with the design answers given in the thread. Builds on the names work this PR started with.

Daemon

  • Names: one name pile per class of building (crates/daemon/names/), dealt when a lot gets its design; never two buildings with the same name. No cutover marker: cities can start fresh.
  • Master plan layout (layout.rs): blocks on a grid by district, named streets, and for each lot its slot, the street it fronts and a real address. The Hamlet strings along Main Street, the Town fills the far side, downtown grows south. Five parks open by level.
  • Economy (economy.rs, folded in world.rs):
    • Prices are list price plus 10% of the day's opening balance, so a pile of coins costs more to spend but saving always catches up.
    • Land: the first plot is free; every other one is bought by hand.
    • Paid repairs. Streets upgrade from lane to street, boulevard and avenue.
    • Decorations go on park spots.
    • Stakes: allowed on a countdown at least as long as your recent median session. Finishing doubles the stake; surrender loses it.
    • A finished street may be renamed by the mayor.
  • Daily goals (2 h of focus, one 90-minute session, three sessions) each pay one box a day. A box holds a repair kit, hired help or, rarely, a master crew, with a pity counter. Help adds build time but never focused time.
  • New requests: BuyLand, Repair, UpgradeStreet, RenameStreet, Decorate, UseItem, and stake on Start (deepwork start --stake N).
  • Fire spreads by distance on the ground; quakes hit the fullest block.

App

  • Lots, blocks and parks are placed from the daemon's layout. Unbought plots show a FOR SALE board, and street names are painted on the roads.
  • Roads are drawn by class: gravel lanes; tarmac, lines, crossings and lamps from a street up; trees from a boulevard up; edge lines on an avenue.
  • Parks have decoration spots: trees, benches, fountain, statue (bronze figure on a plinth) and bandstand.
  • Desk: a Buy plot button on needs, today's goals and items, and a Town hall sheet (street upgrades and renames, decorations). The deed has paid repair and repair kits. The start card has a stake field.
  • Sound: WebAudio cues synthesised at play time (no audio files), with a mute button.
  • Weather: clear, hazy, overcast or rain, picked per local day. Rain is one shader-animated draw.
  • The mock uses the daemon's layout (ui/src/layout.json, which a Rust test keeps current) and mirrors the new mechanics.

Not done (left in the roadmap)

Neighbourhood names and corner signs, junctions, traffic with trips, congestion (deferred as asked), seasons and quests, collection sets, residents, and land beyond the plan. Endowed progress is on hold.

Checks

  • cargo test: 149 pass. cargo clippy --all-targets and cargo fmt are clean.
  • bun test (45 pass) and tsc pass.
  • Headless screenshots of the Hamlet, the City and the City in rain. The City mock still draws about 40 fps on this machine, with or without rain.
  • Not yet run against the real daemon on the host. Prices and goal targets are first guesses.

🤖 Generated with Claude Code

Sagyam and others added 8 commits November 7, 2026 14:52
Buildings are named when their lot gets its design, from one pile per
class in crates/daemon/names/ (houses, apartments, offices, shops,
workshops, towers), loaded with include_str!. A design's own names come
first, so a diner gets a diner's name; a name already in the city is
skipped. Piles are append-only so names folded from the ledger never
change.

Existing buildings keep their names: the daemon writes a
names_by_design event once at startup, and lots whose design was set
before it keep the plan's names. Backups carry the event; the earliest
one counts.

In the app, NameSheet paints each building's name into a shared sign
sheet the first time it is asked for, so S1's fascia, the café, diner
and works friezes and O1/L1's name panels show the building's own name.
The mock deals names the same way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Layout (layout.rs): the plan's blocks on a grid, by district, with named
streets between them; every lot has a slot, the street it fronts and a
real address (odd numbers north, even south). The Hamlet strings along
Main Street, the Town fills the south side, downtown grows two rows
further south; five parks open by level.

Economy (economy.rs, folded in world.rs):
- Prices are list price plus 10% of the day's opening balance.
- Land: the first plot is free, every other one is bought deliberately;
  a site starts only on bought land, focus waits as crew hours.
- Paid repairs; streets upgrade lane > street > boulevard > avenue;
  decorations on park spots.
- Stakes: a countdown at least as long as the recent median session can
  carry a bet; finishing doubles it, surrender loses it.
- Daily goals (2 h of focus, a 90-minute session, three sessions) each
  open a box once a day: repair kit, hired help, or rarely a master
  crew, with a pity counter. Help adds build time, never focused time.

Requests BuyLand, Repair, UpgradeStreet, Decorate, UseItem, and a stake
on Start; `deepwork start --stake N`. Fire and quakes use the layout.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- plan.ts lays lots out from the daemon's layout; a block shows once
  land in it is bought, parks once their level opens. Unbought plots
  carry a FOR SALE board.
- Streets draw by class per block side: gravel lanes; tarmac, centre
  lines, crossings and lamps for a street; trees on a boulevard; edge
  lines on an avenue.
- Parks from the plan have five spots (none on the sports ground) for
  the mayor's trees, benches, fountain, statue or bandstand.
- Desk: Buy plot on needs, today's goals and items, a Town hall sheet
  for street upgrades and decorations; deed: paid repair and repair
  kits; start card: a stake on long enough countdowns.
- The mock uses the daemon's layout (ui/src/layout.json, kept current
  by a Rust test) and mirrors land, repairs, streets, decorations,
  goals, items and stakes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ather

Bells for a finished building and a repair, rubble for a collapse, a
rumble for a quake, a fanfare at level-up and a clink for purchases,
synthesised at play time (no audio files). A mute button sits by the
menu. Each local day is clear, hazy, overcast or rainy; clouds dim the
sun and thicken the haze, rain is one shader-animated draw.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Sagyam Sagyam changed the title Names by design: name piles per class, signs show the name Master plan, coin economy, daily goals, sound and weather Nov 7, 2026
@Sagyam
Sagyam merged commit eb210d7 into main Nov 7, 2026
6 checks passed
@Sagyam
Sagyam deleted the claude/names branch November 7, 2026 10:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant