Roads
Sketch a rough polyline, pick a road class, tweak speed and lanes — the editor fits a curvature-bounded arc spline live.
Editing Workflow
- Player picks a road class (see hierarchy below), which sets defaults for speed limit, lane count and minimum curve radius.
- Player can tweak the speed limit, snapped to 5 mph increments, and lane counts per direction — including asymmetric two-way roads (e.g. 2 lanes outbound, 1 inbound).
- Player sketches a rough centerline polyline over the terrain.
- The editor live-fits the polyline to an arc spline: straight runs stay line segments, turns become circular arcs no sharper than the class's minimum curve radius at the chosen speed (see below) — snapping/relaxing the sketch as needed. Road class is fixed for the length of a network segment; it can only change at an intersection, where one segment ends and a new one of a different class begins.
- The lane bundle (see Transport doc) and its live rendered preview update continuously as the player drags control points.
Road Class Hierarchy
Mapped onto the real US functional-classification ladder (FHWA/AASHTO) rather than invented labels, plus two real-world classes worth adding beyond the original list: Industrial Collector (a Major Collector variant sized for truck traffic) and Frontage/Service Road (a Collector/Local road that parallels a Freeway for local and industrial access)[3][6].
| In-game class | Real-world term | Access control | Notes |
|---|---|---|---|
| Unpaved | Unimproved / dirt road[7] | Uncontrolled | Unpaved local road; native subgrade, no sealed surface. Curvature is unbounded — no minimum radius. |
| Alley | Alley[8] | Uncontrolled | Narrow service road behind properties, for rear/loading access in dense blocks; not for through traffic. |
| Local | Local Road/Street[4][10] | Uncontrolled, or unsignalized (yield- or stop-controlled)[11] | Lowest tier — the vast majority of network mileage; not for through traffic. |
| Collector | Minor / Major Collector[4][5] | Signalized at intersections (movements demotable to stop/yield) | Connects Local roads to Arterials. Industrial Collector — a Major Collector sized for truck design vehicles and loading access. |
| Highway | Arterial (Minor / Other Principal)[4][5] | At-grade — signalized, or unsignalized (yield- or stop-controlled)[11] | Highest-volume through-roads that are not access-controlled. |
| Freeway | Interstate / Other Freeway & Expressway[5] | Fully access-controlled | Grade-separated, on/off ramps only; ramps generated as connector arc splines (TIGER class "access ramp"[9]). |
Any “Uncontrolled” class above can also carry YIELD or STOP signs at individual intersections — the MUTCD terms these unsignalized intersections “yield-controlled” or “stop-controlled” (all-way or partial), as distinct from a fully uncontrolled intersection with no regulatory sign at all[11]. Companion, not a rung on the ladder: a Frontage/Service Road can run alongside a Freeway, itself classified as a Collector or Local road, for the local and industrial access the Freeway's controlled access removes[3][6].
Intersections
Control at a junction is derived from the classes of the roads meeting there, not placed by hand.
Footprint
Every junction has a footprint polygon enclosing the curb corners where adjacent approaches' pavement edges meet. The footprint is the convex hull of one curb corner per approach-side (left and right, at the approach's paved extent offset perpendicular to the centerline), giving a simple convex polygon — a 4-vertex rectangle for a 2-road perpendicular junction, a 4-vertex parallelogram for a 4-way cross. Asymmetric lane counts (e.g. 2 lanes outbound, 0 inbound) shift the curb corner to the side that actually carries pavement rather than centering on the centerline. The footprint is the basis for connector geometry, future curb/sidewalk/gutter mesh, and the per-movement control markers drawn at the junction.
Control Generation
Collector and Above
A Collector or higher is never left uncontrolled at its intersections[11]: whenever a Collector-or-above road meets any other road, the editor auto-generates an access-control device — a traffic signal by default. The player can then demote individual movements at that junction down to stop or yield control (e.g. turning a Local street's approach onto a Highway from signalized to stop-controlled), but cannot remove control entirely or promote a junction past what its classes require.
Local
A Local road behaves the same way one rung down: it always generates control where it meets a lower class, except Unpaved.
- At a T-junction, this is a yield sign on the lower-class approach.
- At a through junction, this is a 2-way stop, stopping the lower-class approach.
Local meeting Local generates a stop sign by default (2-way or all-way depending on geometry), which the player can demote to yield or to no control.
Alley and Unpaved
These two classes never generate control on their own. An Alley or Unpaved road meeting another Alley or Unpaved road, or meeting a Local road, stays uncontrolled unless the player adds a stop or yield sign by hand.
Freeway
Freeways never form an at-grade intersection at all: a Freeway only meets another road through a grade-separated interchange, which generates ramp connector arc splines (see Curvature model above) rather than a controlled junction.
Class Matrix
| Meeting classes | Unpaved | Alley | Local | Collector | Highway | Freeway |
|---|---|---|---|---|---|---|
| Unpaved | Uncontrolled | Uncontrolled | Uncontrolled | Signal (demotable) | Signal (demotable) | N/A — grade-separated |
| Alley | — | Uncontrolled | Yield (T-junction) / 2-way stop (otherwise, stopping the Alley) | Signal (demotable) | Signal (demotable) | N/A — grade-separated |
| Local | — | — | Stop (default; demotable to yield or none) | Signal (demotable) | Signal (demotable) | N/A — grade-separated |
| Collector | — | — | — | Signal (demotable) | Signal (demotable) | Interchange (ramp) |
| Highway | — | — | — | — | Signal (demotable) | Interchange (ramp) |
| Freeway | — | — | — | — | — | Interchange (ramp) |
“Demotable” means the generated control can be dropped one level (signal → stop/yield, or stop → yield/none) on a per-movement basis, never removed above what the classes require. Ramp geometry at Collector/Highway ↔ Freeway interchanges and Freeway ↔ Freeway interchanges is the connector-arc-spline construction from the Transport doc's Intersections section, not a signal or sign.
Curvature Model
Minimum curve radius is derived from the AASHTO Green Book's horizontal-curve formula, driven by the road's design speed[1]:
Rmin = V² / (15 × (emax + fs)) (US customary: V in mph, R in ft)
Rmin = V² / (127 × (emax + fs)) (metric: V in km/h, R in m)
where e_max is the maximum superelevation rate (~0.04–0.08 depending on context) and f_s is the maximum side-friction factor, both speed-dependent per the Green Book's tables[1][2]. Worked reference point: at 60 mph with emax = 0.06, Rmin ≈ 1,000 ft[1]. Low-speed urban streets (under ~35 mph) generally skip superelevation entirely and rely on side friction alone[2].
In the editor, each road class carries a lookup table of {speed → R_min} built from this formula (flatter e_max/f_s assumptions for Local/Collector streets, highway-grade assumptions for Highway/Freeway); the live arc fit refuses to place an arc tighter than the value for the road's current speed setting. Unpaved is the one exception — it carries no minimum radius, so the sketch polyline is fit as freely as the player draws it.
Speed & Lanes
- Speed limit is a per-road-segment tweak, snapped to 5 mph increments (matching how US speed limits are actually signed), and re-tightens the live minimum radius per the formula above.
- Lane count is set per direction, not just per road, so asymmetric bundles (e.g. a 2-in/1-out collector) are first-class — see the Bundle model in the Transport doc.
Bridges & Overpasses
Roads can cross over water, terrain, or other roads at different elevation levels. The player sketches a road at any elevation; if the road's path crosses below an existing road or water body, the editor auto-generates bridge/overpass geometry.
- Water crossings: When a road descends below sea level or water-table depth, a bridge is generated. Bridge length and height are derived from span geometry (distance between terrain approaches) and clearance requirements (navigation height over water).
- Road overpasses: When a sketched road passes above an existing road (at a different elevation), an overpass span is generated if the roads are parallel or crossing. Overpass geometry mirrors the under-road's lane bundle and curvature.
- Terrain underpasses: When a road is sketched at elevation below surrounding terrain, cut geometry is modeled; if cut depth exceeds a threshold (e.g., > 20 ft), an underpass tunnel is suggested as an alternative. Final choice (cut vs. tunnel) is a player toggle with cost comparison.
- Grade separation: Freeways at grade-separated interchanges use ramp connector arcs (see Intersections section); local/collector overpasses over freeways use similar ramp geometry for approach transitions.
Live Preview
The fitted spline, lane bundle and procedural surface/markings (see Procedural Materials doc) re-render on every drag frame, not just on release — the point is that class, speed and lane edits are felt immediately in the 3D view, not discovered after committing.
Open Questions
- Exact
e_max/f_sassumptions per in-game class (real Green Book tables are a starting point, not gospel — gameplay may want more forgiving minimums).
References
- AASHTO minimum curve radius formula and worked example — "AASHTO Horizontal Curve Design," engineersuniverse.com.
- Superelevation practice for low-speed streets, radius rounding — Massachusetts DOT, "PDDG Chapter 4 – Horizontal and Vertical Alignment", adapted from AASHTO's A Policy on Geometric Design of Highways and Streets (Green Book), 2018.
- Functional classification hierarchy (Local, Collector, Arterial, Freeway) — FHWA, "Highway Functional Classifications," Section 3.
- Major/Minor Collector and rural classification detail — FHWA Functional Classification Guidelines: Concepts, Criteria and Procedures.
- Three-tier simple classification (arterial/collector/local) and Interstate/Freeway definitions — Wikipedia, "Functional classification".
- Frontage/service road definition and typical classification as Collector or Local — Wikipedia, "Frontage road"; OpenStreetMap Wiki, "Frontage road".
- Dirt/unpaved road definition — Wikipedia, "Unpaved road".
- Alley as a narrow service road for rear access — OpenStreetMap Wiki, "Kaart: Road Classifications Guide".
- Access ramp / service drive as distinct feature classes — "TIGER Census Feature Class Codes," proximityone.com.
- Local road accessibility/speed characteristics — US Patent 10,127,466, "Lateral sign placement determination," Table 2.
- Signalized vs. unsignalized (uncontrolled, yield-controlled, stop-controlled) intersection terminology — ITE, "Types of Unsignalized Intersections," Unsignalized Intersection Improvement Guide.