Roads

Sketch a rough polyline, pick a road class, tweak speed and lanes — the editor fits a curvature-bounded arc spline live.

Design-TimeTransport

Editing Workflow

  1. Player picks a road class (see hierarchy below), which sets defaults for speed limit, lane count and minimum curve radius.
  2. 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).
  3. Player sketches a rough centerline polyline over the terrain.
  4. 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.
  5. 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.

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

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.

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

References

  1. AASHTO minimum curve radius formula and worked example — "AASHTO Horizontal Curve Design," engineersuniverse.com.
  2. 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.
  3. Functional classification hierarchy (Local, Collector, Arterial, Freeway) — FHWA, "Highway Functional Classifications," Section 3.
  4. Major/Minor Collector and rural classification detail — FHWA Functional Classification Guidelines: Concepts, Criteria and Procedures.
  5. Three-tier simple classification (arterial/collector/local) and Interstate/Freeway definitions — Wikipedia, "Functional classification".
  6. Frontage/service road definition and typical classification as Collector or Local — Wikipedia, "Frontage road"; OpenStreetMap Wiki, "Frontage road".
  7. Dirt/unpaved road definition — Wikipedia, "Unpaved road".
  8. Alley as a narrow service road for rear access — OpenStreetMap Wiki, "Kaart: Road Classifications Guide".
  9. Access ramp / service drive as distinct feature classes — "TIGER Census Feature Class Codes," proximityone.com.
  10. Local road accessibility/speed characteristics — US Patent 10,127,466, "Lateral sign placement determination," Table 2.
  11. Signalized vs. unsignalized (uncontrolled, yield-controlled, stop-controlled) intersection terminology — ITE, "Types of Unsignalized Intersections," Unsignalized Intersection Improvement Guide.