Skip to content

Expose more generation parameters (watabou village/city parity) #5

Description

@barrulus

Wanted

Expose more generation parameters, taking watabou's two generators as the parity target.

Watabou village generator (Map parameters panel): size W×H plus a tag set — dense, grove, isolated, organic, river, uncultivated, coast, confluence, crossroads, dead end, district, estuary, farmland, highway, island, no orchards, no square, palisade, pond, sparse.

Watabou city generator (Generate panel): a Features tab with tri-state toggles (random / forced on / forced off) for citadel, inner castle, walls, river, greens, temple, plaza, shanty town, coast; a separate Roads tab; and size presets Small / Medium / Large / custom Size.

Current state

GenerationParams (src/generator/generation-params.ts) exposes: plazaNeeded, citadelNeeded, wallsNeeded, templeNeeded, shantyNeeded, capitalNeeded (plain booleans — no tri-state "let the generator decide"), plus seed, population/nPatches/nCore, road entries, ocean/coastline, harbourSize, urbanDensity, biome. Everything is currently derived from Azgaar flags via mapToGenerationParams / buildWardDistribution.

Missing relative to watabou (rough audit):

  • tri-state semantics — today absent = false; watabou's "Random" state (generator decides) has no equivalent
  • greens / parks toggle, inner castle (distinct from citadel)
  • palisade (village-scale wall), pond, island, grove, farmland / uncultivated / no orchards (field & vegetation density)
  • dense / sparse / organic texture overrides
  • no square (villages currently always eligible for a plaza?)
  • crossroads / dead end / highway / district road-topology hints (partially covered by roadEntryPoints + through, but not user-steerable as a single tag)
  • river / coast / confluence / estuary — tracked separately in the rivers-and-bridges issue

Notes

  • The library stays zero-dep and headless: this issue is about the params surface, not UI. The panels live in settlemaker-web; FMG consumers keep deriving params from burg data, and new params must all be optional with unchanged defaults (byte-stable output for existing inputs).
  • Suggest tackling as: (1) audit table watabou-tag → current-behaviour → gap, (2) agree the param names/shape, (3) implement in slices, render-gated per texture change.

Pointers

  • src/generator/generation-params.tsGenerationParams
  • src/input/azgaar-input.tsmapToGenerationParams
  • src/wards/ward-distribution.tsbuildWardDistribution (where several flags actually take effect)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions