Civics & Politics
A political layer between the surveyor's commit and the
city actually building the plat. Councils, votes, mayors, and the
occasional development hell.
This doc has ballooned past a plan review pipeline into many semi-independent systems, all sharing one page: player hats, mayoral succession, an authoritarian endgame, election types, a subsidy taxonomy —
Split it up:Player hats are now in their own Player Stories doc. Elections and subsidies are still on this page; the same split applies to them when they're ready. Trim the Questions list to what's actually blocking implementation next, and park the rest as speculative.
Use the "Civics" and/or "Politics" tags from the design map's Subject list, so future splits (Elections, Subsidies, etc.) have a home in the index.
Overview
Committing a plat (see 3D & Grids) doesn't build it. It submits it. From there, a plat moves through a political review pipeline that decides whether and when it actually gets built: a city council weighs it, a mayor can lean on it, a general election can put it on the ballot, and a few plans get stuck in development hell along the way. The review pipeline is the bridge between the surveyor's planning-mode optimism and the macro sim's land-value / RCI reality.
The political layer is deliberately not a binary approve/deny: the player is meant to feel the gears of approval — who is in office, who is up for re-election, what the current controversy is — the same way they feel the gears of zoning. A plat sitting in a review queue for six in-game months is a real outcome, and a plat that goes to a vote is a real event.
Legislative Pipeline
Every committed plat lands on a single linear pipeline, with three exit points:
- Submitted. The plat enters the city clerk's queue. The city clerk is procedural: it stamps a submission date, attaches a cost estimate from the plat's roads + parcels, and assigns a controversy score (see below).
- Council review. The city council weighs the plat. Most plats exit here — either approved (the plat goes to construction) or denied (the plat is shelved, the player can revise and re-submit).
- Vote. Plans the council refuses to decide on its own go on the ballot at the next general election. The vote decides.
A plan can also be stuck in development hell: neither approved, denied, nor on a ballot, but bogged down by cost overruns, environmental review, litigation, or a funding gap. The player can choose how to deal with stuck plans: Revive, Withdraw, or left to rot. (Old rotten plans get their own visual indicator, be it a future filter type icon, e.g. stinky rotting garbage, or a tag used in a list of plans.)
Approval Tiers
Not every plat needs the full pipeline. The city clerk routes plats by tier:
| Tier | Trigger | Path |
|---|---|---|
| Minor | Small footprint, low controversy, low cost | Approved by city staff on a fast track. Days, not months. |
| Standard | Typical plat | City council review. Outcomes: approved, denied, or kicked to the next election. |
| Major | High cost, large footprint, or controversy above a threshold | City council review with a mandatory public-comment period, then either decided or put on the next election's ballot. |
| Contested | Controversy above a higher threshold, or a council deadlock | Ballot at the next general election. The council cannot decide this on its own. |
The thresholds (cost, footprint, controversy) are tuning constants, not part of the player-facing UI: the player sees the tier their plat lands in, the cost estimate, and the controversy score, then watches the pipeline.
Controversy
Every plat gets a controversy score computed from a few signals on the plat and in the city:
- Cost magnitude — large plats are more controversial than small ones.
- Displacement — plats that demolish existing buildings (e.g. replacing a settled neighborhood with a wider highway) spike controversy.
- Zone mix — industrial or high-density residential plats are more controversial than low-density ones, especially near existing residential areas.
- Existing land value — a plat that wipes out a high-value district is more controversial than one that fills in a slum.
- Public sentiment — the citizenry's mood (see Citizen Sim) at submission time.
Controversy drives the approval tier (above) and, in the council, how a contested plat is framed in the public-comment period. A high-controversy plat can be approved on a fast track by a popular mayor, or stalled indefinitely by an unpopular one.
Development Hell
Some plans get stuck. The development-hell state is not a single failure mode — it's a portfolio of them, each surfacing in the city UI as a different kind of delay:
- Cost overrun. The plat's actual cost (final engineering, utility relocations, contractor bids) comes in over the estimate. The plat is paused until the city finds the extra money — either a budget surplus (see Economy) or a bond issue (future macro sim).
- Environmental review. The plat triggers an environmental review: endangered species, contaminated brownfields, a wetland, a watershed. The review takes time and may require a redesign. Some redesigns force the player back to the surveyor; others resolve automatically.
- Litigation. A party (a neighborhood association, a competing developer, an environmental group) sues to block the plat. The suit runs through the courts in the background; the plat resumes if the suit is dismissed or settled.
- Funding gap. The city can't afford the plat at all right now, even without overruns. The plat sits in the queue until the city's ledger (Economy doc) can absorb it.
- Political opposition. A vocal faction on the council actively opposes the plat, and the council can't reach a majority. The plat sits until the next council election shifts the balance, or the player withdraws and resubmits with a redesign.
Each kind of hell is visible to the player in the city's review queue, with a clear "what's blocking this" tooltip. A plat can be in multiple hells at once (a cost overrun on a litigated plat), and the hell-state of a plan can be the lever the player uses to time the rest of their program (above).
Development Subsidies
This section is primarily research. Let's iterate and narrow the scope here. This is a game, after all.
Not every plat is paid for out of general fund cash. A city can lean on a handful of financing tools to make a plat happen sooner, or at all — each with a different risk/reward shape the player learns to read:
- General obligation bonds. The mechanism behind the "continually flowing but not bottomless" well above: the city borrows against future tax revenue and repays over years. Bonds are typically earmarked by sector (Education, Parks, Transit) and require voter approval — a bond measure is its own ballot item, separate from a plat's yes/no vote, and the city's total bonding capacity is capped by outstanding debt and assessed value.
- Tax increment financing (TIF). The city draws a district around the plat, freezes the property-tax baseline at current value, and borrows against the future increment — the growth in tax revenue the plat itself is expected to generate — to pay for the plat's infrastructure up front. No voter approval needed, but it's a bet: if the plat underperforms, the increment never materializes and the district's other taxing bodies (the school district, the county) eat the shortfall.
- Tax abatement. The city doesn't spend money, it forgoes it — a developer gets a multi-year property-tax discount or exemption in exchange for building. Cheap for the city's cash position, but it hollows out future revenue instead of current spend, and an abated plat still costs the city services (roads, schools, utilities) without paying full freight for them.
- Public-private partnership (P3). Private capital funds construction (a stadium, a toll road, a utility) in exchange for a long-term concession — operating rights, toll revenue, or a revenue-share. The city gets the plat built without touching its own bonding capacity, but locks in a multi-decade obligation to the private partner that a future council can't easily unwind.
- Impact fee waiver / reduction. Normally a developer pays impact fees (utility hookups, road widening, parkland dedication) as part of a plat's cost estimate. The city can waive or discount these for a plat it wants to encourage — affordable housing, an anchor employer — shifting that cost onto the general fund instead.
- Land write-down / donation. The city already owns the parcel (surplus land, a former public building) and sells or leases it to the developer below market value, or donates it outright. Lowers a plat's cost estimate directly without any ongoing city obligation.
- Grants. One-time money from a higher level of government (state, federal) or a philanthropic source, tied to a specific plat or plat type (transit-oriented development, brownfield remediation). Grants show up as a lump reduction to cost estimate and, unlike bonds, don't touch the city's own ledger at all.
Which of these are worth modeling — and how they'd hook into a plat's cost estimate, funding-gap risk, and the Economy & Zoning ledger — is still open.
Election Day
Contested plats — the ones the council won't or can't decide — go on the ballot at the next general election, alongside any other contested matters the council has accumulated. A general-election ballot looks like:
- Mayoral race (see Mayors).
- Council seats up for re-election this cycle.
- One or more ballot measures, each one a contested plat (or, in a future expansion, a ballot-initiative tax measure, a charter amendment, etc.).
Each ballot measure is yes/no: "Should the <PlatName> plat be approved and built?" A "yes" vote means the plat goes to construction at the start of the next term. A "no" vote means the plat is shelved, and the player has to redesign or abandon it.
The ballot question's framing is a real signal: a high-controversy plat with a popular mayor's endorsement lands on the ballot with the mayor's "yes" recommendation attached, and a low-controversy plat with an unpopular mayor lands with a "no" recommendation. The recommendation is a UI element, not a numerical bonus, but the citizenry reads it.
The player enters the city wearing a hat — a private citizen, a developer/speculator flipping plats for profit, a lobbyist working the council from outside, a city planner — and the hat is what most of this doc has assumed by default. See Player Role for how hats work and how a hat-wearing player can run for mayor.
Elections
Elections are a fixed-cadence macro event. They:
- Fire every N years (default 4, a tuning constant).
- Resolve a mayoral race, the council seats up for re-election, and any ballot measures that have accumulated since the last election.
- Are visible to the player in advance: an "election in 18 months" banner, then a "ballot is set" event when the queue is locked, then the election night and the results.
The results are not fully under the player's control, and they shouldn't be: a player who could perfectly predict and steer every election would game the system. The mayoral race's outcome is a function of favorability, with a small random factor. A mayor with very low favorability loses even with a controversial plat on the ballot; a mayor with very high favorability wins despite one. The interesting range — favorability around 0.4-0.6 — is where elections feel alive.
Types
General elections are the standard election type, resolving a mayoral race and any ballot measures accumulated since the last election.
Special elections are one-off elections that occur when the council presents "Major" or "Contested" (See Approval Tiers) plans to the electorate in lieu of a council decision or waiting for a general election. These are for plans that are too controversial to wait, or for plans that are unfavorable to the council.
Effects
A change in mayor or council composition is a real change in the city: a new mayor can re-tier the approval queue (faster tracks for low-controversy plats, slower tracks for high-controversy ones), and a new council can be more or less friendly to the player's planning style.
Mayors
A mayor is the city's elected executive. Normally an NPC — but see Player Role for when the player runs for and holds the office themselves. NPC or player, the mayor is a real game character with:
- Favorability, a derived score in [0, 1] from a few signals: macro economy (RCI balance, land value, unemployment), public sentiment, recent controversy, and a flat "personality" jitter the player can read in the mayor's portrait.
- Term, with elections on a fixed cadence (see Elections). A mayor's term is 4 in-game years by default; tuning constant, not a player-facing setting.
- Endorsements on ballot measures — the mayor publicly backs a "yes" or "no" recommendation on each contested plat. A popular mayor's endorsement swings the citizenry; an unpopular mayor's endorsement is ignored or backfires.
When the mayor is an NPC, they're not a Sim: the player doesn't run their personal life. The favorability bar is a single read on the mayoral portrait in the city UI, and a tooltip explains what moved it last.
Player Role
The full roster of hats — developer, civic authority, private equity flipper, and the rest — lives in the Player Stories doc, along with each hat's goal, verb set, and position relative to the city. This section is the short version: how a hat-wearing player interacts with the pipeline above.
The player picks a hat at campaign start — a private citizen, a developer/speculator flipping plats for profit, a lobbyist working the council from outside, a city planner/manager — and the hat sets their verb list and their relationship to the pipeline above. A speculator submits plats to flip for profit and reads the queue for arbitrage timing; a lobbyist doesn't submit plats at all, but spends influence nudging council votes and mayoral endorsements; a planner (the default framing used elsewhere in this doc) submits, reads, withdraws, and waits:
- Submit. Commit a plat (Plat Subdivision plan, Phase 6).
- Read. Open the city's review queue and see each pending plat's tier, cost estimate, controversy score, and current state. A plat in hell shows what's blocking it.
- Withdraw or revise. Pull a plat out of the queue (it's shelved), or revise the plat in the surveyor and re-submit (the new version re-enters at the top of the queue).
- Wait. Let the queue drain. A high-favorability mayor's queue drains fast; a low-favorability mayor's queue is a slog.
Whatever hat the player wears, they can run for mayor. Winning the race hands them the office for a term (see Mayors and Elections) — they campaign, endorse or oppose ballot measures, and hold favorability, on top of (or instead of) their hat's usual verbs. When the term ends, the player reverts to their original hat; a mayoral term is a detour, not a permanent class change.
One exception, and a fun end-game "evil" goal: an authoritarian mayor can move to abolish elections — theirs, the council's, or both — and never revert. That's a distinct, highly controversial decision rather than a normal mayoral term, and it's the kind of run that turns "city planner" into "The Sims"-style villainy for players who make that choice.
A choice to make when the mayor's term ends:
- 👌 Concede
- 👎 Contest the Election
- 💥 Overthrow the Government!
Conceding is the low-drama happy path. Power changes hands cleanly, with little to no hit to the outgoing mayor's favorability, since there's nothing for the citizenry to react to.
Contesting is the drama-queen path. There's no coup — just the region's recount-and-lawsuit process playing out as a time delay — but political careers are made and broken on drama like this, so it swings favorability harder in both directions, good or bad, depending on how the city's factions line up behind the contest.
Data Model
| Entity | Fields |
|---|---|
Plat (existing) |
id, roads, blocks, parcels, zoneIntent, grid tuning |
Submission |
platId, submittedAt, costEstimate, controversyScore, tier, status, currentHell?: Hell |
Status |
submitted | council-review |
approved | denied |
ballot | development-hell |
shelved
|
Hell |
kind: cost-overrun | environmental |
litigation | funding |
opposition, startedAt, resolvedAt?, notes
|
BallotMeasure |
submissionId, ballotId, recommendation, framing |
Mayor |
id, portrait, favorability, termStartedAt, termLengthYears,
status: incumbent | candidate |
former
|
Election |
date, mayorCandidates, councilSeats[], ballotMeasures[] |
The plat from the surveyor is immutable after submission — the city
holds a copy, not a reference. The player can revise the plat in the
surveyor and re-submit, but the new submission is a new
Submission pointing at a new (or modified) plat; the old
submission is shelved.
Questions
- Term length and election cadence — 4-year terms are a starting point; civic-gameplay tuning may want shorter (more drama) or longer (less interruption) cycles.
- The full roster of hats and each one's verb set — a speculator's flip loop and a lobbyist's influence-spend are sketched above but unbuilt.
- What "running for mayor" actually costs a non-planner hat — does a speculator campaigning create a conflict-of-interest signal the citizenry reacts to?
- The authoritarian end-game: what abolishing elections actually changes mechanically (does the pipeline above still run without a ballot exit? does the game end, or keep going under one-man rule?), and whether it's reversible by anything short of a new game.
- In multiplayer, how the mayoral seat is contested and handed off between human players — one seat per city, or per-district mayors in a larger map.
- Whether council seats are individually named (a roster) or aggregated as a single "council favorability" score.
- Who actually calls a special election — is it an automatic consequence of a plan landing in the Major/Contested tier, or a council decision the player can see coming (and lobby against)? And does calling one cost the council anything politically, or is it free relative to waiting for the next general election?
- The exact visual language for a rotting/stuck plan — a filter icon, a list tag, or something louder — and whether "rotten" is just a display state or eventually decays the plan itself (auto- withdrawal after N stuck years, say).
- How withdrawal interacts with sunk cost — does a shelved plat refund any construction already done, or is it written off?
- Whether ballot measures can be citizen-initiated (a future expansion) or only council-referred.