maniator / maniator/verticopolis

[Feature]: [P3] Demand-pools calibration pass (Modern perCapita/floor, unmet-demand erosion, coverage reachability)

Open
#548 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
5
Forks
1
PR merge metrics
No merged PRs in 30d

Description

Bundles the recurring "fold into the demand-pools calibration pass" deferrals from the commercial-demand-pools (#393), leave-tower-unmet-demand (#395), and attendance-venue-demand (#424) reviews, folded here from the deferral inbox by #545. All are PROVISIONAL magnitudes deliberately left conservative for v1; no calibration row existed.

  • Modern perCapita retune. Phase C shipped only the floor divergence; both modes still return perCapita: 30. The larger-tower Modern viability retune (GDD §7/§10) is deferred to a reference-tower tuning pass.
  • Unmet-demand eviction region. Modern erosion nets negative only below coverage ~0.023, so "tenants leave for unmet demand" effectively fires only for a fully-stranded (coverage-0) tenant; a genuinely under-provisioned (partial-coverage) tower merely caps. Raise unmetDemandErosion / lower UNMET_DEMAND_EVICT_FLOOR, or rename the constant to reflect it is a cap threshold.
  • Coverage reachability (pairwise). Coverage and the income loop both use lobby-anchored reachability, so a cross-bank tenant can read met demand it cannot actually reach. The pairwise-floor-reachability refinement reshapes income too and needs its own golden re-pin.
  • Demand bonus census-purity. Coverage share is weakly crowd-dependent through towerDemandBonus's recycling multiplier (totalPopulation() includes live customersIn); bounded to [1.0, 1.1], only when a recycling center exists. Reconsider the bonus form (multiplier vs flat floor, population source) here.
  • Attendance coverage decision. reachableVenuesByOrigin counts retail only, so an attendance-only tower reads 0 coverage; decide whether attending a cinema counts as somewhere residents spend time.

Gameplay/economy tuning with a golden-master re-pin (/gds-code-review). P3: deliberately deferred until a playtest wants the Modern demand model retuned against a reference tower.

Tracked as backlog row demand-pools-calibration; folded from the deferral inbox by #545.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the deferred reviews #393, #395, and #424, then review the demand-pools calibration notes and the GDD sections 7 and 10. The work is done when the Modern demand model is retuned against a reference tower, the coverage and attendance decisions are resolved, and the golden master is re-pinned through /gds-code-review.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.