Skip to content

Map and Regions

Deep dive on the world representation: how the map looks, how regions are classified, and how the rail network is structured underneath the visuals.

→ Parent: GDD.md


Visual Style

The map evokes a vintage hand-drawn railroad map — the kind of artifact a player would expect to see framed in a 19th- or early 20th-century railroad office. Reference: the campaign map style of Grand Tactician: The Civil War.

In Manifest Rail the player works primarily through menus and data (see UIArchitecture.md); the map is a view called up on demand to read the network's shape — ownership, throughput, commodity flows — not the screen the player lives in. It keeps the full hand-drawn artifact treatment (ink, wobble, paper grain, cartographic furniture) precisely because it is a place the player visits deliberately rather than a backdrop dense data must sit on. Everything below describes how that view looks and the graph beneath it.

Visual qualities to target:

  • Aged paper or parchment background.
  • Hand-inked region borders, coastlines, and rivers.
  • Period-appropriate typography for region and city labels.
  • Rail lines drawn with the look of inked or engraved track.
  • Restraint: the map should feel like a static artifact that the simulation animates on top of, not a busy modern UI.

The map is rendered as vectors, not raster art. This keeps the linework crisp at any zoom level, makes regions and edges easy to hit-test for selection, and allows player-built rail to be drawn in the same visual language as the base map.


Map Architecture: Two Persisted Shapes

The map persists in two complementary forms:

  1. The graph layer — the canonical data model. A node-and-edge graph where nodes are settlements (each sited in a county that supplies its area data — terrain, rural population, classification) and edges are rail lines between settlements (plus county adjacency, used for information lag and freight aggregation). All systems read from and write to this layer. Detailed in The Settlement Graph below.
  2. The vector map — the visual rendering layer. A vector definition of how the map looks, derived from the graph's starting state. Region polygons, borders, label placements, illustrative terrain marks, and the antique-map styling that gives Manifest Rail its visual identity. The vector map is drawable on demand — re-rendered for zoom, pan, or view changes without re-deriving from the graph each frame.

Authoring workflow. Both shapes — graph and vector map — are persisted as part of the scenario, alongside other scenario content (commodities, industries, populations, scripted events, initial-state config). A scenario is a bundle that the game engine loads and uses as-is.

The two shapes can be authored two ways:

  • Hand-drawn alongside — for historical scenarios that need specific cartographic accuracy (the Erie War, Trans-Siberian, etc.). The author draws the vector map manually and authors the graph data to match.
  • Procedurally generated — for Free Scenario or quickly-iterated scenarios. A separate authoring-time tool generates both shapes from a seed configuration. The procedural engine is not part of the shipped game runtime — it runs once at authoring time and emits persisted scenario data. After that, the persisted graph and vector map are canonical.

Either way, the persisted forms are what the game engine reads. The graph is canonical for state; the vector map is presentation. Modders can edit either layer directly without re-running any generator. To modify a procedurally-generated map, the author edits the persisted version rather than regenerating — this is a one-shot generation model, not a continuous re-roll.


Regions

The world is partitioned into regions — the area layer: contiguous pieces of the map that contain settlements but are not themselves nodes in the rail graph (rail connects settlements; see The Settlement Graph). "Region" is the neutral mechanical term, and regions nest up to three levels (e.g. State → County): each scenario authors the real-world division(s) it scopes to for its country and era — a US county under a state, a French département, a Russian uyezd, and so on — so the player can roll their standings up to whichever scope they care about (see Region Scope Across Settings below). Each region carries:

  • A name and a label.
  • A classification: rural or industrial (the old urban/rural binary, sharpened) — which shapes what its settlements extract and produce.
  • A set of settlements — the named population centers inside the county (city, town, village, fort, camp…), each with its own settlement population and map position. The largest is the county seat. A frontier county may start with few settlements or none; the railroad can create new ones by building stops in open country. See Settlement.
  • A rural (regional) population — the people living in the countryside around the settlements, distinct from any town's own population. This pool staffs frontier businesses and supplies construction/maintenance/station labor within the county — see Populations.md.
  • A terrain classification (plains, hills, mountains, forest, swamp, desert, etc.). Terrain is marked simply on the map and materially affects construction — a rail route through mountainous county terrain costs far more, and grades worse, than one across plains.
  • A commodity profile — drawn from its settlements: what the county's places produce, consume, and which industries operate there. Prices are tracked per settlement market. See Economy.md.
  • An optional list of tags (Port, Frontier, Capital, IndustrialHub, Mining, Agricultural, TradeHub, Resort, Border, etc.) that add modifiers, events, and commodity behaviors. See Region Tags below. Note: the Capital tag means "national/state political capital" — a county containing the seat of government — distinct from a county's own seat settlement.

Region Scope Across Settings

Regions nest, and they all sit inside a country. Country is a given, not a region level: the game always defines the country — and a scenario may span several (a North-America map with the United States, Canada, and Mexico). Regions are the sub-national divisions within a country, nesting up to three levels, from a broad top scope down to the fine level that directly holds the settlements (the graph nodes). A multi-country map repeats the hierarchy under each country.

The levels above the settlement-holder are roll-up scopes: the player reads standings, market share, network presence, and reputation aggregated at any level within its country"Am I the dominant operator in the state? What about this specific county?" (The country itself is the natural top-of-stack view — "across the whole country" — but it is the container, not one of the three authored levels.) Small maps use a single level; large ones use all three. The settlement always sits within the finest authored level.

Like a company's leader title, the levels' labels and real-world scope are authored per scenario to fit setting and era — mechanically they are all just nested "regions." This table gives the most important sub-national levels for the common railroad settings, broadest first; the bold level is the typical settlement-holder. Authors confirm and extend it (the finest levels especially vary by source and date).

Setting (country · era) Level 1 (broadest) Level 2 Level 3 (finest — holds settlements)
United States · 19th–20th c. State County (LA → parish; AK → borough) Township *
Great Britain · Victorian–Edwardian County (shire; Yorks. → ridings) Rural / Municipal District Civil Parish
Ireland · 19th–20th c. County Barony Civil Parish
France · post-1790 Département Arrondissement Canton (→ commune)
German states / Empire · 19th–20th c. Province / Land (e.g. Prussia) Regierungsbezirk Kreis (Landkreis)
Austria-Hungary Crownland · vármegye (county) Bezirk · járás Gemeinde / község
Russian Empire · pre-1917 Guberniya (governorate) Uyezd Volost **
Spain · 19th–20th c. Provincia Partido judicial Municipio
Italy · post-unification Provincia Circondario Comune
Canada · Confederation era Province County / District Township ***
Mexico · Porfiriato Estado (state) Distrito Municipio
Japan · Meiji onward Ken (prefecture) Gun (district) Machi / mura (town / village)
British India · Raj Province / Presidency Division District (zila)
Australia · colonial Colony / State † County (cadastral) Parish
China · Qing / Republic Sheng (province) Fu (prefecture) Xian (county)
Generic / undefined Region Sub-region Locale

* US: most scenarios use State → County (settlements in counties); township is the optional finest grain. (1920s Michigan: State → County.) ** Soviet era: Oblast → Raion. *** Prairie provinces: rural municipality. † Pre-federation (before 1901) the colony itself is the country; post-federation it becomes a state.

Where the finest level is itself a single-town unit (a Japanese mura, a Spanish/Mexican municipio), it effectively coincides with the settlement, so the meaningful roll-up scopes are the levels above. The same per-scenario authoring names the settlement types within (city / town / village / fort / camp, or national equivalents).

Weather and seasonal effects are not simulated dynamically in the current design — there is no in-game weather, no winter shutdowns, no rain delays. The geographic friction that history would have produced through such effects is rolled into the terrain modifier on edge construction.

Urban Regions

  • Higher passenger volume.
  • Industry profile leans toward refinery / processing: factories, mills, refineries, manufacturing.
  • Tend to be the destinations and hubs of the network.
  • Connections between urban regions are typically the longer, more capital-intensive trunk lines a mature company aspires to build.

Rural Regions

  • Lower passenger volume.
  • Industry profile leans toward raw output: farms, ranches, mines, lumber, primary extraction.
  • Tend to be the origins of freight that flows toward urban centers.
  • Connecting nearby rural regions to a single urban hub is the natural early-game growth pattern.

The urban/rural split is intentionally a coarse binary. It makes the strategic shape of the map readable at a glance and lets scenarios mix in finer-grained flavor through specific industries placed in each region and through optional region tags described below.

Region Tags

In addition to the urban/rural binary, regions can carry tags that add specific flavor and mechanical effects without inventing new top-level classifications. Tags compound freely — a single region can carry several at once (New York: Urban + Port + Capital + IndustrialHub).

Tags drive three kinds of effects:

  • Modifiers — adjustments to industry rates, contract availability, construction costs, population dynamics, etc.
  • Events — tag-keyed scripted and emergent events. A Frontier tag enables expansion-era event types (gold rushes, range wars, lawlessness); a Port tag enables maritime-trade events; a Border tag enables customs and diplomatic events.
  • Commodity production / refinement — tags shape which commodities a region produces or refines. A Mining tag focuses extraction on specific commodities (iron, copper, gold, coal, etc.); an Agricultural tag specifies cattle / cotton / wheat / etc.; a Port tag enables import/export flows that wouldn't otherwise be available.

Canonical tag set (scenario-extensible):

Tag Effects
Port Coastal or river commerce; shipping/maritime contract interface; import/export commodity flows.
Frontier Sparse population; difficult terrain default; raised construction risk; triggers expansion-era event types (gold rushes, range wars).
Capital Concentrates government-contract availability (mail, freight, regulatory); political-event hub.
IndustrialHub Concentrated heavy industry; labor-heavy population; high inbound raw-material demand and outbound finished-goods supply.
Mining Extraction-dominant; specific commodity-output focus (iron, copper, gold, coal, etc.).
Agricultural Extraction-dominant for crops or livestock; specific commodity profile (cattle country, cotton belt, wheat plains).
TradeHub Major commerce junction; high contract density; multiple competing networks likely; Chicago-style.
Resort Passenger-heavy, often seasonal; luxury-oriented commodity demand; tourism-sensitive event triggers.
Border Adjacent to a different polity; customs delays; political/diplomatic event triggers.

Scenarios can introduce new tags. The canonical set covers common patterns; a scenario about a specific historical situation may add domain-specific tags (e.g., a Civil War scenario might add Confederate and Union tags carrying their own political and supply-chain implications; a colonial scenario might add Garrison or TradingPost tags). Tags follow the same authoring pattern as commodities, industries, and population templates — extensible in the scenario script.


Stations and Infrastructure

A station / stop is rail infrastructure that lives on a settlement (see The Settlement Graph). A settlement either has a station — at some capacity tier — or it doesn't; a settlement without one exists as data (population, demand) but is off the rail network until a station connects it. Building a station is the act that puts a settlement on the graph: either connecting an existing town at its position, or creating a new settlement from open country (a stop that may grow a town around it). The rendered station marker sits at the settlement's map position.

This is intentionally coarser than a per-warehouse graph. The strategic decisions that matter are which settlements are connected and at what capacity grade; the engineering detail of how many specific buildings a station needs is abstracted into the tier.

Station Capacity Tiers

A station has a capacity tier — a property of the settlement's facility (platforms, freight handling, yard size, services). The tier controls how much volume the settlement can move and what kinds of services it can offer.

Dimension Halt Depot Terminal
Capacity A few wagons per day, hand-loaded Steady inter-regional volume; bulk handling Heavy daily volume; mainline freight + premium passenger simultaneously
Services Freight pickup/drop, water for engines. No passenger amenities, no repair, no mail sorting. Passenger waiting room, freight buildings, basic mail, refueling, light repair. Full service: through tracks, large yards, mail-sorting hub, repair facility, often a hotel/lobby for travelers.
Construction $ Cheap Mid Expensive (often bond-financed).
Maintenance $/period Low Mid (you're paying for a building, a staff, daily operations) High (24/7 staff, large facilities, utilities, services).
Population pull Negligible Modest growth pressure (the region stays attractive) Strong growth pressure — Terminals attract migrants and industry per Economy.md.
Real-world parallel (1920s US) A flag-stop on a country branch — a single platform, a board for the agent's name, no permanent staff some weeks. Saginaw, MI ca. 1920 — proper waiting rooms, a freight house, an agent staffed daily. Detroit Michigan Central, Grand Central, Union Stations — multi-track, multi-platform, the city's commercial front door.

Per-tier gameplay

  • Halt — how you bring a region onto the rail network at minimum cost. Sufficient for a small farm or a single mine to ship at the standard rate. Not sufficient for any contract that needs predictable daily volume or passenger service. Most of the rural feeder regions in any scenario live and die at Halt — that's the normal state for a region that ships modest freight to the nearest urban hub. Don't upgrade rural Halts unless something specific (a discovered ore vein, a population boom, a new contract opportunity) creates the demand.
  • Depot — the upgrade that makes a region a real station. Ordinary passenger service, mid-volume industrial customers, regular mail. Most urban regions start at Depot. Most "interesting" rural regions reach Depot. Depot is also where the player starts to feel the ongoing maintenance cost — Halt is cheap to keep operational; Depot is meaningfully more expensive every period.
  • Terminal — the move that says "this region is a hub." Attracts premium passenger service, the largest industrial customers (a Ford-tier daily freight contract), mainline government contracts, and exerts real pull on population dynamics — well-served Terminals attract migrants, which feeds back into the regional economy. Expensive to build, expensive to run; the ROI is only there if the region has the customer base to justify it.

The strategic question Terminal creates: which regions deserve it? In a 1920s Michigan run: Detroit, almost always. Lansing or Grand Rapids, probably. Cadillac (Northern Lower's capital), almost never — not enough customer base. Building a Terminal in a small region is a vanity project that bleeds maintenance.

Higher tiers don't replace lower-tier capability — a Terminal handles small-farm freight too. But low-tier infrastructure caps out: a Halt cannot serve a major manufacturer's daily shipment volume no matter how many trains the player throws at it.

A region with no infrastructure at all is not on the rail network — no contracts, no trains can serve it. Building the first Halt is what brings the region online; subsequent upgrades raise the ceiling.

Line Capacity Tiers

Each rail line has its own capacity tier — a property of the track itself: gauge, weight rating, the physical configuration of the trackwork (single vs double track, sidings), signalling, grade-handling. The tier controls throughput on that corridor and the speeds the player's fleet can run.

The tier IS the physical configuration. There is no separate "track count" field; each tier encodes a fixed trackwork shape:

  • Branch — single track, no passing sidings (or only at endpoints).
  • Standard — single track with regularly-spaced passing sidings.
  • Trunk — double track throughout.

This keeps authoring simple — a scenario lists a Branch / Standard / Trunk for each line and the physical reality follows from the tier name.

Dimension Branch Standard Trunk
Physical config Single track, no sidings Single track + passing sidings Double track
Capacity Low — a few trains per day Medium — adequate inter-regional traffic High — sustained heavy traffic.
Speed cap Slow (passenger speed-limited; freight slower still) Mid Fast — premium passenger reaches its full equipment-tier speed.
Construction $ Cheap Mid Expensive (often bond-financed).
Maintenance $/period Low Mid High (premium-grade everything: heavier ties, more frequent inspection, signal maintenance).
Construction time Short Mid Long.
Real-world parallel (1920s US) A 19th-c. branch line into a small town — a single light rail laid on light ties, ends at a flag stop. The era's standard inter-city main — single track with sidings every few miles. Pennsylvania Mainline, NYC's Water Level Route — heavy rail, full double track, modern signalling.

Per-tier gameplay

  • Branch — the right answer when connecting a low-volume rural region. Cheap to build, cheap to maintain. The freight it carries is small-farm grain, individual mine output, the post — none of which moves enough volume to justify heavier track. Every 1920s railroad had a long tail of branch lines that individually lost money but collectively were the company. Build Branches early, build them often, accept they won't carry premium contracts.
  • Standard — the workhorse. Most inter-regional freight runs on Standard track. Ordinary inter-city contracts, regular passenger service, mid-volume industrial customers. When connecting two Depot-tier urban regions, Standard is the floor.
  • Trunk — a strategic asset. Heavy main line, fast, expensive, slow to build, expensive to maintain — but the only kind of track that physically allows premium passenger express, mainline government contracts, and the daily-volume industrial freight from a market leader. Don't build Trunk for the cheap contracts that already work on Standard; build Trunk because there's a contract waiting that requires it. A Trunk corridor without the contracts to justify it is dead capital.

The strategic question Trunk creates: build ahead of demand, or wait for the contract? Build first — the upgraded corridor makes the contract available, but you carry the maintenance cost until the volume materialises. Wait — you can't sign the contract until the track exists, and a competitor with deeper pockets can pre-build and lock you out.

Per-Segment Composition: Parallel Lines

A "segment" (the region-pair between two adjacent capitals) is not limited to a single line. The network stores an integer count per tier per segment — (branchCount, standardCount, trunkCount). A player can have, for example, 2 branches + 1 standard on the same Detroit ↔ Toledo segment.

This lets the player respond to saturation without forcing a single all-or-nothing upgrade:

  • Build a parallel line of the same tier — cheaper than upgrading, faster to commission, doubles capacity at that tier. Useful when an existing Trunk is saturated but a second Trunk is still affordable.
  • Build a parallel line of a different tier — e.g. a Branch alongside an existing Trunk to add a small amount of extra capacity for low-volume feeder traffic.
  • Upgrade an existing line in place — convert a Branch to Standard (= add passing sidings) or Standard to Trunk (= go double-track). Increments the higher-tier counter and decrements the lower. Cheaper than building parallel — cost is the tier delta plus a small conversion premium (~20%) for the trackwork — and faster (~60% of fresh-build time) because the grade and right-of-way are reused. The line operates at its old-tier capacity throughout construction, then jumps to the new tier at completion. Any applied signaling tech license stays installed through the upgrade.

Total segment throughput capacity is computed from the composition: 25 × branchCount + 100 × standardCount + 400 × trunkCount units/day at the default Michigan tunables. Per-tier capacity numbers are scenario-tunable.

Visual representation. When a segment carries multiple tiers, the base-map rail rendering shows the highest tier in the stack (a 2-branches-plus-1-trunk segment renders as the trunk visual). Player drilldown via tooltip or the line's profile surfaces the full composition. This keeps the map legible at a glance while preserving the full information one click away.

The visual rules per tier (M13 Phase 7, refined through two polish rounds to Tier 3 shipping-grade per Claude Design review):

  • Branch → single ink line, ~5px stroke at world scale.
  • Standard → single ink line with short perpendicular passing-siding ticks at regular intervals along the route.
  • Trunk → two parallel ink lines offset ~10px world-units perpendicular to the corridor, with a doubled buffer-stop cap at each endpoint so the rails read as physically terminating at the station throat rather than disappearing into the capital marker.

Every rail also draws with a subtle midpoint deflection (~1.5% of segment length, sign hashed off the region-pair) so each corridor curves consistently in one direction rather than rendering as a straight CAD chord. The doubled trunk rails curve in unison so the parallel pair stays parallel through the arc. This is what gives the map its hand-drawn-not-vector reading at default zoom.

Tier glyphs in the same visual vocabulary (single line / single + sidings / doubled line) appear in the Network panel and serve as a future map-legend primitive. See Procurement — Signaling Tech Licenses for how those tier visuals interact with applied signaling — the multiplier is per-line, so the rendered visual style doesn't change but the effective throughput does.

How the Two Ladders Interact

Both station and line tier must support a contract for it to be eligible — and the lower one is the actual ceiling.

Configuration What it actually does
Halt — Branch — Halt Cheap rural network. Small-farm freight, post, low-volume contracts. The right answer for most of the rural map.
Depot — Standard — Depot Workhorse mid-game configuration. Ordinary inter-regional freight, regular passenger, mid-volume industrial.
Terminal — Trunk — Terminal Premium tier. Express passenger, mainline freight, market-leader contracts, government mainline.
Terminal — Branch — Terminal Bottlenecked. The terminals can serve premium customers; the line can't move that volume. Marginal terminal capacity is unused. Money wasted on station tier.
Halt — Trunk — Halt Wasted. The track can move heavy traffic; the halts can't load or unload it. Money wasted on line tier.
Depot — Trunk — Depot Upper-end traffic the depots can support; the trunk's premium-passenger capacity is unused but the line is still earning on heavy freight. Buildable as a deliberate move when a Terminal upgrade is planned soon.

This is why the player can't just upgrade one dimension and expect contracts to follow. A coherent network upgrades stations and the lines connecting them in tandem — a Detroit Terminal isn't useful until at least the Detroit ↔ nearest-major-city line is Trunk. The dual-ladder system is what makes infrastructure a strategic surface rather than a single dial.

Endpoints vs interior on multi-segment routes. The table above shows a single segment with both endpoints. On a longer multi-segment route (e.g. a rural farm → branch feeder → trunk junction → urban Terminal), eligibility uses a refined rule:

  • Station tier is checked at the contract's two endpoints only (pickup + delivery). Intermediate transit regions don't need to match the commodity's tier requirement — a train can pass through a Halt-tier region on its way to a Terminal without that Halt blocking the contract.
  • Line tier is checked on the interior of the route (the mainline haul). Lower-tier line segments are allowed at the start and end of the path — that's the branch feeder. The required line tier only has to hold on the trunk portion in the middle.

This is what allows the canonical "vegetables from a Halt-tier farm, hauled to a Terminal-tier city via a Branch feeder and a Trunk mainline" pattern. The cheap rural infrastructure connects the farm; the heavy trunk infrastructure moves the volume; both contribute to making the contract physically possible.

See Contracts for how both tier dimensions gate eligibility.

Building Order and Progression

The economic and design incentives push the player along a tier-coordinated arc. The shapes below describe a typical scenario; specific scenarios may invert (e.g. a "managed decline" scenario starts with a sprawling Trunk-Terminal network and asks the player to prune).

  1. Early game — Halt-Branch-Halt feeders. Bring nearby rural regions onto the network at Halt with Branch lines into the urban hub the player starts at. Cheap to build, cheap to run. The long tail of rural revenue pays the bills while bigger moves are planned.
  2. Mid game — selective upgrades. Upgrade the hub region to Depot, then to Terminal as urban contracts demand it. Standard track on the inter-regional links between major cities. Most rural feeders remain Halt-Branch — upgrading them is rarely worth the maintenance.
  3. Late game — Trunk + Terminal hubs. Trunk corridors between Terminal-tier hubs. Premium passenger, the Ford-tier mainline freight contract, the government mail mainline — these are what the Trunk-Terminal-Trunk-Terminal infrastructure exists to serve. Significant bond capacity is typically committed by this stage; the contracts have to materialise to justify the maintenance.

Failure modes the dual-ladder system makes visible

  • Speculative over-building. Trunk-tier infrastructure laid ahead of the contracts to fill it. The maintenance bleeds the treasury while the player waits for demand that may never arrive.
  • Under-building. Never moving above Standard or above Depot. The player hits a contract ceiling that no amount of rate negotiation or relationship-building can break through, while a deeper-pocketed competitor outbids them for the prize contracts.
  • Single-dimension upgrades. Terminal stations connected by Branch lines, or Trunk lines into Halt regions. The wasted dimension shows up as a maintenance cost without any revenue uplift, because the contracts the player upgraded for are still gated by the un-upgraded dimension.
  • Over-converged stations. Multiple high-tier lines converging on an under-tier station — for example, three Trunks meeting at a single Depot. The lines can deliver, but the station can't absorb at that scale. The game surfaces this as a station under-capacity warning when sum-of-connecting-line-capacity > 2 × station tier baseline. Default baselines (scenario-tunable): Halt = 25 units/day, Depot = 200, Terminal = 800 — so a Depot can comfortably absorb one Trunk (400 ≤ 400), starts to warn at two Trunks (800 > 400), and clearly needs upgrade at three (1200 > 400). The warning is soft, not a hard gate; the fix is the standard tier-mismatch remedy — upgrade the station to match, or split traffic across multiple adjacent stations.

These failure modes are intended to be legible in the project sheet, contract list, and throughput map mode — the player should be able to read them off the data, not just feel them in cash flow.

What a Station's Profile Surfaces

A region's station — opened as a profile page from any table or link, or by selecting its marker in the map view — surfaces:

  • The capital's name and the region it belongs to.
  • The current capacity tier and operational status (planned / under_construction / operational).
  • Available services at the current tier (passenger, freight, mail, refueling, repair…).
  • Cargo currently produced and consumed in the region.
  • Pending and active contracts that originate or terminate here.
  • Project work currently happening on the region's infrastructure.

The Settlement Graph

The map's data layer is one routing graph whose nodes are settlements, laid over a county area layer that gives those settlements their geographic context. This is a three-tier world — county → settlement → station — but only one tier (settlements) is the graph the rails connect to.

County — the area layer

A county (the "region": county in the US, or the national equivalent — parish, riding, borough, district) is an area on the map, not a routing node. Each county carries:

  • A rural / regional population — the people living in the countryside around the towns (distinct from any town's own population). This pool staffs frontier businesses (lumber camps, ranches, mines) and supplies labor for track-laying, maintenance, and station operations within the county.
  • A terrain profile and a rural / industrial classification that shape what its settlements can extract and produce.
  • The geographic substrate for base distances and information lag, and adjacency for cross-county events.

Counties contextualize; they never appear as nodes in the routing graph.

Settlement — the graph node

A settlement is a node in the single routing graph. Each settlement:

  • Sits inside exactly one county, from which it draws rural labor, terrain difficulty, and classification.
  • Has its own settlement population — the townspeople (a city, town, village, fort, camp…). This is the base for that node's passenger demand, market demand, and local labor.
  • A commodity profile (produces / consumes), shaped by its county's classification and its own size and type.
  • Optionally, a station (rail infrastructure — see below). A settlement without a station exists as data — population, demand, a potential target — but is off the rail network; trains cannot serve it until a station connects it.

A settlement either already exists (a real, authored town) or is created empty by the player building a stop in open country: a new settlement node at population 0, holding only the station and its operating labor, which then grows as freight and passengers flow through it (the historical cattle-town / lumber-stop dynamic — the railroad makes the place).

Station — infrastructure on a settlement

A station / stop is the rail infrastructure that lives on a settlement node, carrying the station capacity tier (Halt / Depot / Terminal — see Station Capacity Tiers) and operational status. Building a station is the act that puts a settlement on the rail graph — either connecting an existing town or creating a new settlement from nothing. The rendered station marker sits at the settlement's position on the map.

Rail lines — the edges

A rail line is an edge connecting two settlement nodes: physical track the player or a rival commissions, carrying ownership, capacity tier (Branch / Standard / Trunk — see Line Capacity Tiers), condition, the county terrain its corridor crosses (which drives construction cost — see Rail line cost model), and status (planned / under_construction / operational). A given settlement-pair can carry multiple lines (the per-segment composition in Per-Segment Composition: Parallel Lines); each is its own edge and contributes to the segment's total throughput capacity.

Routing freight, evaluating contracts, computing throughput — all of it operates on this settlement graph. The county layer underneath supplies geography and population; it is not itself traversed.

The rail graph may be multiply-connected, joined only by ferry interchanges. A scenario's rail edges need not form a single connected component. Where geography separates two rail networks that no fixed link bridges in the era — the Michigan seed's Lower- and Upper-Peninsula networks have no Straits rail crossing until the 1957 Mackinac Bridge — they stand as separate rail components, joined only by car-ferry interchanges: a distinct, non-rail edge kind that carries freight between two railheads across water (Pillar 4, era-fidelity). Routing must tolerate a multi-component rail graph; an unreachable-by-rail region is a correct period outcome, not a data error. A rail-isolated settlement with no ferry tie either (e.g. an island that never had rail) is likewise valid. Some edges are also decline candidates — period lines operating at the scenario start date but historically abandoned soon after (cut-over lumber roads); they are present at start and are material for the decay mechanic, not omissions.

Spatial Model and Surveyed Routes

The graph is geometric, not merely topological. Every settlement carries a real map position (coordinates) that lies inside exactly one county's polygon; its station sits at that position. An open-country stop is simply a new settlement placed at the surveyed coordinates. Because nodes have true positions, the real-world implications of geography fall out directly rather than being hand-authored:

  • A rail line's length is the actual distance of its path between two settlement positions.
  • The terrain and grade a line crosses are determined by which county polygons its path runs through — easy plains vs. mountainous grade is read from the geometry.
  • Routing, bypasses, and information lag are computed on real distances, not hop counts.

A rail line stores its surveyed route, and that route is an output of the project's planning phase. A line is not just "endpoints + tier" — it carries the path a surveyor laid out: its length and its grade profile. The same two settlements can be connected by very different routes depending on who planned it: a strong, honest Surveyor-in-Chief returns a tight, well-graded line; a weak or self-dealing one returns a longer, serpentine route over steeper grades (historically, planners paid a flat fee per mile padded routes for billable miles). Route length drives construction cost and ongoing maintenance; route grade drives locomotive speed and fuel burn. The geometry the player ends up with is therefore a direct consequence of the staff they hire to plan it — see Construction — Planning Phase and Feasibility Studies.

Rail Line Cost Model

A rail line connects two settlements along its surveyed route (above). The corridor crosses county terrain between them (and may pass other settlements' counties); cost scales with the route's length and the grade/terrain it traverses. A long-haul line between distant cities is many settlement-to-settlement segments in series.

Bypass routes. When a direct corridor saturates, the player's relief options include building a new line on a longer path through alternate settlements (Detroit→Toledo→Chicago bypassing a saturated Detroit→Chicago direct line). The routing engine prefers a built bypass automatically once the direct corridor's load passes a moderate threshold — there's no separate "Bypass" project type, just BuildLine plus load-aware path-finding. A bypass earns its keep when the direct corridor enters the yellow zone of the throughput view.

Cost formula:

line_cost = base_cost
          + length_cost(surveyed route length)
          + Σ grade/terrain_cost(county polygons the route crosses)
          + land_acquisition(route's right-of-way through each county)

A short, well-graded line between two nearby settlements in easy terrain is the cheap baseline. A line across mountainous counties, a serpentine route padded by a weak surveyor, or one reaching a settlement far from the network is valid but more expensive — more miles to lay and maintain, steeper grade, and right-of-way acquired through every county the route crosses. Building a stop in open country is cheaper on the station (no land premium, no existing town to buy into) but earns nothing until traffic builds — the speculative frontier play. The strategic question: connect an existing town at a land premium for immediate traffic, or plant a cheap stop ahead of demand and grow a settlement around it — and the route geometry you pay for is the one your surveyor produced.

The length and grade come from the line's surveyed route; the terrain and land cost come from the county polygons that route crosses. Cost is derived from this geometry, not stored as a flat number — so it stays consistent if map data changes, and a better survey yields a genuinely cheaper, faster line.

Offering Expansion Sites

The expansion frontier (the candidate list on the Network screen) is derived from settlement-edge adjacency to the player's network on the canonical settlement graph. It is hybrid-granularity, split by candidate kind — settlements are the graph nodes, counties are the area / roll-up layer (region scope), and each candidate kind keys to the layer it actually lives on:

  • Connect-an-existing-town — settlement granularity. An authored settlement node is a candidate when it carries no player station and has a rail edge in the settlement graph to a settlement where the player does hold a station. These are real named nodes (Pillar 3) — not county capitals — and the player points a study at the named town. Connecting an existing node lays the surveyed line and builds a station on the existing node; it does not plant a new node or a pop-0 settlement.
  • Open-country site — county granularity. A frontier county — a county that contains at least one of those network-adjacent unstationed settlements but holds no player station — surfaces one synthetic open-country site, sited at a point inside the county. The build origin is the nearest player-stationed settlement (by geometry); the site has no settlement until built (the pop-0 creation above), then grows from through-traffic (Pillar 7). The county is the unit because open country has no node and because the feasibility verdict, permitting, and land cost read county goodwill (Feasibility Studies) — which rolls up at county scope, consistent with the region-scope model.

Adjacency rule, precisely. Build adjacency over the settlement graph's rail edges. The frontier reach is every edge with exactly one player-stationed endpoint; the unstationed endpoint is a connect-an-existing-town candidate, and its owning county (via the region hierarchy / settlement→county parent link) becomes a frontier county that yields one open-country site when it holds no player station. A county with no settlement edge into the network is not frontier — it is unreachable in one move, which is the correct period outcome (Pillar 4: reachability is graph-real, not a hop count). Authored towns deeper inside a reached county surface as candidates only once a nearer town is built and extends the edge graph — progressive expansion, not an all-at-once dump of every off-network town. There is no "survey anywhere on the map" affordance; every candidate is a named place or a named county (Pillar 3).

On distance / hops. Because a frontier candidate is by construction one edge from the network, the per-candidate hop count is structurally 1 for every candidate — no longer a placeholder but a true constant on this graph, so it is no longer a meaningful cost driver. The distance signal that does vary now lives in the surveyed route length (real geometry), which already drives construction cost (cost model). Whether the study commission cost and duration should scale on surveyed/straight-line route length rather than the now-constant hop count is a cost-model refinement for playtest tuning, not a frontier-semantics question.

Network-Presence Counts

The player reads network presence rolled up at any region scope ("how much of this state do I actually hold?"). Unlike standings — which roll up by population-weighted mean — presence is a set of raw, leaf-additive counts, so it legitimately aggregates by summing a per-county leaf metric up the hierarchy. The counts are defined off the same player-stationed settlement set the expansion frontier uses:

  • Served = a player station on the settlement. A settlement is held iff it carries the player's station (it is in the player-held station set the frontier treats as stationed). A settlement merely reachable on the player's network without its own station is not served — it is exactly a connect-an-existing-town candidate, not a held node. Reachability never substitutes for a station in the presence count.
  • Settlements held = stationed settlements whose county lies in the active scope. Settlements total = every settlement in scope, on- or off-network — authored towns the player has never touched count toward the denominator, because an off-network settlement exists as data and is the expansion runway the count is meant to show. A rail-isolated settlement that can never be reached still counts (consistent with the multiply-connected graph being a correct period outcome, not a data error).
  • Counties with a station = distinct counties in scope that hold at least one stationed settlement. Counties total = every county in scope (all authored counties of the level — 83 on the Michigan seed), not "counties that contain a settlement" and not "counties with an on-network settlement." A county that can never hold a station still counts toward the denominator, exactly as an unreachable settlement still counts toward settlements total. The denominator is the fixed geographic scope, not a set that drifts with the player's own network state or with authored-data sparsity — a hidden, network-dependent denominator would be an untrustworthy fraction (Pillars — trustworthy numbers).

On the single-state Michigan seed the synthesized Country scope and the State scope re-aggregate over the same 83 counties, so their presence counts are identical; the Country chip is shown for consistency and forward-compatibility with multi-state maps.

Naming a Planted Settlement

An open-country build creates a named settlement — the railroad makes the place (Pillar 7), and named settlements are first-class entities (Pillar 3), so the new town is never left as an opaque "Frontier Stop N." At build-commit the player is offered a name field pre-filled with a period-appropriate suggestion drawn from a scenario-authored place-name pool for the setting. A player who doesn't care accepts the default; a player who wants to name their town overrides it (Pillar 6 — depth is opt-in). The name pool is scenario data; the suggested default is a draw from it that avoids collision with existing settlement names.

Practical Consequences

  • Routing trains, contracts, and freight is graph traversal on the settlement graph.
  • Construction projects target settlements and the lines between them: build a station on an existing settlement (connect it) or in open country (create a new settlement), upgrade a station's tier, build/upgrade a rail line between two settlements, decommission either.
  • Acquisitions and sales are ownership changes on stations and rail lines.
  • Competing networks are simply stations and lines owned by other actors. Two operators may each build their own station serving the same town, or in the same county, or share one — a per-scenario authoring and per-contract concern, not a structural one.

The visual rail line drawn on the hand-drawn map is the rendered form of a rail line edge; the station marker is the rendered form of a region's infrastructure. The vector map's region polygons render the region nodes. Map and graph stay tightly coupled and synchronized.


Ownership Visualization

When multiple companies operate on the same map, ownership has to be readable without breaking the antique aesthetic. The design uses a layered approach — period-appropriate visual differentiation by default, hover and click for detail, an optional strategic overlay for at-a-glance territorial reading.

Default Visual Differentiation

Each operator's track is rendered in a distinct combination of ink color and line style drawn from period cartography:

Operator Default style
Player's company Solid black or dark navy — full visual weight, the eye's anchor
Rival 1 Dashed dark red
Rival 2 Dot-dash dark green
Rival 3 Dotted sepia or dark blue
Rival 4+ Additional combinations of ink color and line style

Combinations of ink color and line style scale to roughly 6–8 cleanly distinguishable companies, which covers most scenarios. This matches the actual cartographic tradition — period maps used exactly these techniques to distinguish competing railway companies.

Independent / non-player roads (not the player, not a tracked rival) render in the recessive Owner.Neutral graphite ink (see M12-DesignDirection.md §3.3) — subordinate to the player's full-weight track, but still selectable and hoverable (recessive ≠ hidden).

Hover for Tooltips

Hovering any track segment surfaces a tooltip with the operator's name and a quick stats line (recent contracts, dominant cargo type, era-appropriate notes). The hover layer is the standard "who is this?" interaction without changing views.

Click for Detailed Panels

Clicking a segment, station, or company-distinguished area opens the full ownership panel — operator metadata, holdings, recent activity, current contracts, reputation. The click layer is for working with a specific operator in depth.

Territory View (Toggle)

An optional Territory View overlay applies a light watercolor-style tinting to regions by dominant operator. Antique-appropriate (period maps did use light washes for territorial extents — colonial holdings, Civil War control maps, etc.), so it doesn't break the parchment aesthetic. Off by default; togglable when the player wants to read the strategic shape of the map at a glance.

Many-Operator Fallback

Some scenarios — notably the UK Grouping of 1923, which had 120+ railways before consolidation — exceed the visual-differentiation budget. The recommended fallback:

  • Render the player's network and any contractually relevant rivals (interchange partners, hostile operators, named historical figures) explicitly with their own ink/line styles.
  • Render the long tail of minor operators with a generic "other competition" style (e.g., light gray dotted) without per-operator distinction.
  • Lean on the Territory View toggle and hover-for-detail for everything else.

Passenger Service

The game models passenger service in three tiers, each fitting cleanly into existing infrastructure rather than inventing parallel systems.

Long-Distance Express (Inter-Regional, Premium)

Routes between distant urban regions, often with few intermediate stops. Premium fleet (fast express locomotives, Pullman-tier passenger cars), high per-passenger ticket prices, strict on-time requirements. Revenue upside scales with speed and equipment quality. Historical examples: the Empire Builder, the Orient Express, the Twentieth Century Limited. Implemented as routes on the region graph with premium-tier procurement allocation. Capacity gating: requires Terminal stations at every served urban region and Trunk track on the entire route — the speed and on-time guarantees aren't physically deliverable below those tiers.

Local Regional Passenger (Inter-Regional, Standard)

Shorter inter-regional routes — typically rural-to-urban feeders or branch-line service. Multi-stop is common. Standard fleet, modest per-passenger rates, more frequent service that tolerates more variability. Volume comes from breadth, not luxury. Implemented as routes on the region graph with standard-tier equipment. Capacity gating: Depot stations and Standard track at the floor; Halt + Branch is acceptable for the rural ends of mixed-tier routes (small-town flag-stops along a Standard-grade branch line are historically normal).

Urban Transit (Intra-Regional, Facility)

Rail that runs within a single urban region — trams/streetcars, elevated rail, subway/metro, modern light rail — modeled as a regional facility rather than a route. Built as an Urban Transit Network project (see ProjectManagement.md), it generates ongoing background revenue scaled by regional population and quality tier.

Era-appropriate forms:

  • Pioneer / early Expansion — horsecars (street-pulled rail), occasional cable systems.
  • Late Expansion — electric streetcars/trams; first elevated rail (NYC 1870s); London Underground from 1863.
  • Golden Age — mature subway/metro systems in major cities; comprehensive electric streetcar networks; interurban electric lines.
  • Transition / Modern — modern subway and light rail; many streetcar systems abandoned mid-century in the US, retained or restored elsewhere.

Premium urban-transit equipment (era-specific: electric vs horse, grade-separated vs street-level, dedicated right-of-way vs shared) acts as procurement-tier modifiers that boost ridership and revenue. The network feeds population dynamics — a well-served urban region attracts migrants per Economy.md.

This is distinct from suburb-to-city "commuter rail" in the American sense, which uses main-line tracks and crosses region boundaries — that service is Tier 2 (Local Regional Passenger) above.

How They Differentiate

The first two tiers share the existing contract / route / fleet / triage machinery (per Contracts and Procurement Fleet Capacity) and differ in:

  • Fleet allocation — fast express locomotives on long-distance express; older or slower equipment on locals.
  • Equipment tier — premium (Pullman) on express captures higher ticket prices; standard tier on locals.
  • Contract terms — express contracts have higher rates and stricter service levels; local contracts the inverse.
  • Route shape — express is point-to-point or few-stop; local is often multi-stop.

The third tier (Urban Transit) is its own gameplay surface — a regional asset with its own project type, ongoing revenue stream, and feedback into population dynamics.

A mature network can mix all three: a flagship long-distance express running through several urban regions, with local trains feeding each urban hub from its rural surroundings (including dedicated suburb-to-city commuter rail on main lines), while each urban region also runs its own urban transit network (subways / trams / elevated) as a regional facility.


Headquarters and Starting Position

Every game starts with the player's company having a headquarters in one of the map's regions. The headquarters:

  • Determines the region the player begins in.
  • Acts as the seed for the company's rail network — initial lines must originate from or near it.
  • Establishes that region's starting infrastructure tier (typically Depot for an established starting position, occasionally Halt for a startup scenario or Terminal for a wealthy successor).

The choice (or assignment) of headquarters location is a major strategic input — it dictates which rural regions are reachable as early feeder lines and which urban regions are plausible long-term targets.


Open Questions

All major Map and Regions design questions are currently resolved. Specific tunable values are scenario-tunable and will need playtesting:

  • Region polygon authoring tools, exact ink palette and line-style options for ownership visualization, terrain difficulty multipliers.
  • Per-tier numeric values: construction cost, maintenance per period, capacity (throughput per period), and the speed cap for line tiers. These will be set per-scenario (a 1850s frontier scenario should price Trunk track very differently from a 1920s mature-network scenario) and tuned in playtesting. The dual-ladder structure (Station: Halt/Depot/Terminal × Line: Branch/Standard/Trunk) is fixed; the numbers under it are not.

The framework is intentionally kept open to future revisiting (notably whether richer per-region classifications would justify promoting tags to first-class flags, and whether a fourth tier on either ladder would be worth adding for late-modern scenarios).