maniator / maniator/verticopolis
[Feature]: [P3] Gate the commercial demand pool by open hours (time-gated venues earn a diluted share)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 5
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
Deferred from the Nightclub review (v1.91.0, PR for the modern-nightclub branch).
computeDemandMap sums EVERY operational footfall venue's capacity into totalCap with no isOpenAt gate, and each venue earns min(1, pool / totalCap) of its daily figure. So a time-gated venue is diluted by venues that are closed at that hour, and it dilutes them when it is closed.
This is a pre-existing property of the demand model (a restaurant already dilutes fast food at breakfast), but the Nightclub is the extreme non-overlap case: at 1am it is often the only open venue, yet it still shares the pool with every closed daytime shop/food hall/boutique, so it captures only a capacity-proportional slice of its 10,000/day headline while paying a 40,000/month DJ booking plus overhead. It may be economically nonviable in exactly the retail-heavy towers where a player would build it, which undercuts the "night inversion" the GDD calls for.
Fix options:
- Gate
totalCap(and the per-unit share) onisOpenAt(kind, hour), so only venues open at that hour compete for that hour's pool. This is a demand-model change affecting ALL footfall venues, so it needs a golden-master re-pin and a determinism check. - Or interim: tune the Nightclub's
dailyTrafficIncomeup to compensate (a band-aid; the model limitation stays for every time-gated venue).
Source: Nightclub /gds-code-review defer (Edge Case Hunter). The Nightclub itself ships correct; this is a balance/model refinement for time-gated venues generally.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating computeDemandMap and the isOpenAt logic, then review the demand model's golden-master fixtures and determinism check. Confirm the intended model-level approach for all footfall venues; done means the hourly pool and per-unit share account for venues open at that hour, with the golden master re-pinned and determinism preserved.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- game-dev
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100