Economy & Zoning

Zoning is the player’s macro lever; RCI-style supply/demand drives growth.

Macroscopic SimulationEconomy

Zoning

Residential/Commercial/Industrial zones are painted onto parcels (see 3D & Grids doc), with a density level set per block. Zoning is the primary player input into the macro simulation.

Prior Art

SimCity 4's RCI indicator is the reference point for our own zone color coding: green for Residential, blue for Commercial, yellow/orange for Industrial.

SimCity 4 screenshot of a coastal city, with the RCI demand indicator visible in the bottom-left corner of the game's GUI
Maxis, SimCity 4 (2004)

Color

The RCI colors above are player-feedback signals, used in the HUD's RCI demand meter, the zone overlay, and other data views — they do not color the generated building facades themselves. Buildings are colored by material family (per the 10-value, land-value-tiered enum) per the art-lighting policy; the zone signal travels separately, on the overlay.

Macro Loop

Supply/demand curves per zone type (jobs vs. workers, goods vs. demand) drive growth or decline — surfaced to the player as legible RCI-style demand meters, in the spirit of SimCity 4.

Land Value

A derived function of transport access, utility coverage (power/water), and amenities (parks, education) minus pollution/noise. Land value feeds back into growth rate and desirability.

landValue is computed per parcel using a multiplicative factor model, then clamped and rescaled to a [0, 1] fraction:

rawValue = baseValue * (1 + transportBonus + utilityBonus + amenityBonus - pollutionPenalty - noisePenalty)

landValue = clamp(rawValue / baseValueMax, 0, 1), where baseValueMax is a documented per-zone-type constant representing rawValue at all bonuses maxed (1.0) and no penalties. This keeps landValue a true 0–1 fraction regardless of how baseValue is tuned.

Each factor is a 0–1 value derived from the parcel's proximity to roads, utilities, parks, and pollution/noise sources. baseValue is a tunable constant per zone type.

landValueTier is bucketed from the landValue fraction:

landValue and landValueTier are not stored fields on Parcel — downstream systems (procedural buildings, growth simulation) compute them on demand from this formula, using the parcel's current zone type, density, and location.

Transport access is covered in Arc-Spline Transport.

Tax & Budget

Per-zone-type tax rate sliders feed a city ledger; the ledger funds utility and service upkeep, closing the budget loop.

Currency

The game uses a custom currency in place of dollars to match the warm, toylike feel of the naming brief.

Currency Options:

  • Lots (Ⱡ) — Direct pun on parcel lots, ties the currency to the zoning mechanic. Risk: overlaps with "lots of" in ordinary sentences.
  • Acres (₳) — Land-area pun, grounded and concrete without being too serious.
  • Doubloons (đ) — Pirate/toylike, winking, excellent mouthfeel, but flavor-specific.

Current Selection: Acres (₳) — Fits the naming brief (warm, concrete, modern) while staying grounded in the game's land-management core.

Data Model

This doc owns the ZoneType enum — the set of zones players can paint onto a parcel:

enum ZoneType {
  Residential = "residential",
  Commercial  = "commercial",
  Industrial  = "industrial",
  Civic       = "civic",
  MixedUse    = "mixed-use",
}

These are the same five values as Procedural Buildings' Building Classes table columns (R/C/I/Civic/Mixed-Use); that doc consumes this enum, it doesn't define it.

Entity Fields
Parcel zoneType: ZoneType, density, landValue (derived)
City ledger, taxRates[]

Open Questions

Future Work