Files
tokyo-wangan-racing/docs/japanese-road-standards.md
T
jesse 7d368d5444 Render C1 structural variety: girder bridges, Ginza overpasses, JCT speeds, 3+3 widening
Four fidelity fixes, all verified in a live Studio datamodel (not just built):

1. Wire up the dead `bridge` flag. Circuit.luau marks 474 samples as bridge
   spans but nothing ever read the field, so every elevated metre rendered as
   the same slab on square columns. Flagged spans now get a steel box girder
   (鋼箱桁橋) with stiffener ribs under the deck, carried on a transverse pier
   cap and round columns at a wider pitch than the viaduct pillars.

2. Ginza 跨道橋. The Ginza section sits below street level in the filled-in
   楓川・築地川 river beds and the surviving city bridges cross over it, their
   piers landing in the median. Adds the crossing decks, parapets and centre
   piers -- which is the physical reason lane changes are banned there, not
   just a paint choice.

3. Junction speed plates. 江戸橋JCT内 / 浜崎橋JCT内 / 京橋JCT-旧白魚橋乗継所 are
   posted 40 km/h, not the 50 km/h mainline limit; plates repeat more often
   through the short restricted stretches.

4. Shiodome JCT -> Hamazakibashi JCT widened to 3+3 lanes via widthAt(), with
   a taper (max ~1.7 studs/sample) instead of a step. Every fixed-width
   consumer -- deck, median, parapets, lane marks, signage offsets, skyline
   setback, finish line -- now reads widthAt() so nothing floats or clips.

Verified headlessly (tools/verify_c1_fixes*.luau):
  girders 488 / 474 flagged samples, pier caps 85, columns 80
  Ginza overpasses 7, piers 7, lateral offset from centreline 0.000 studs
  speed plates 40km/h x7, 50km/h x8
  deck width Shiodome 81.5 vs Kasumigaseki 60.0
  seam lip max 0.0006, road-surface raycast step max 0.260, 0 deck holes

Two earlier "failures" were bad tests, not bad geometry, and the fixed
harnesses document the traps: deck parts are pitched by CFrame.lookAt so
Position.Y+Size.Y/2 is not the surface height (and LookVector is -Z, so the
end faces are easy to swap), and a seam raycast must filter to the Expressway
folder or it hits TunnelCeiling/MedianFence and reports a phantom 19-stud step.
2026-08-01 18:10:00 -04:00

97 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Japanese expressway road-standard reference (verified)
Compiled 2026-08-01 for the Tokyo Wangan Racing circuit. Every figure here was
read from a primary standard or an official sign artwork file, **not** from
recollection. Where a commonly-repeated number turned out to be wrong, that is
called out explicitly, because the wrong versions are widespread online.
## Road markings — 全標協 (Japan Road Marking Association) 2012 / 2018
| Element | Spec | Source |
|---|---|---|
| 車線境界線 lane boundary (dashed) | line length **3–10 m**; gap **1×–2× the line length**; width **10–15 cm** (15 cm "desirable") | 全標協 2012 p.42 |
| Lane boundary where overtaking undesirable (屈曲部/curves) | becomes **solid** instead of dashed | 全標協 2012 p.42 |
| Boundary vs 変速車線 (accel/decel lane at ramps) | length **2 m** (3 m on decel lanes), width **45 cm** | 全標協 2012 p.42 |
| 導流帯 gore / zebra hatching | **45 cm** white solid bars repeated every **1.0 m**; bounded by a 15–20 cm edge line | 全標協 2018 pp.97–98 |
| Zebra around an obstruction | 45 cm bars at 1.0 m, guided by arrows upstream | 全標協 2018 |
| Dashed extension of edge line through intersections | width 15–30 cm, line+gap every 0.5–2.0 m | 警察庁 2014 p.11 様式4 |
**Correction to a widely-repeated claim.** The "45 cm wide lines on expressways"
figure that circulates online is *not* the lane boundary — 全標協 2012 p.42 gives
45 cm only for the boundary between a through lane and a **変速車線**
(acceleration/deceleration lane). Applying 45 cm to ordinary lane dividers makes
the road look like it is all ramp. Lane dividers are 15 cm.
**On 8 m / 12 m.** The standard specifies a *range* (3–10 m line, gap 1–2×), not a
single value. 8 m line / 12 m gap sits inside that range at the high-speed end
(gap = 1.5× line) and is the configuration used at expressway speeds; a 5 m/5 m
rhythm reads as a surface street. Treat 8/12 as "a legal expressway
configuration", not as "the one legally mandated number".
## Colour values — sampled from official sign artwork, not estimated
| Use | Value |
|---|---|
| Guide sign (案内標識) green | **#005D35** |
| Shutoko route badge green | **#007F1F** |
| Sign lettering | white #FFFFFF |
Japanese **expressway** guide signs are green; ordinary-road guide signs are
blue. Shutoko uses green.
## Speed limits (from the route articles' own signage tables)
| Route | Posted |
|---|---|
| C1 都心環状線 (Inner Circular) | **50 km/h** mainline, **40 km/h** inside the junction sections — 江戸橋JCT内, 浜崎橋JCT内, and 京橋JCT–旧白魚橋乗継所 are each posted 40 in the route's own 車線・最高速度 table |
| B 湾岸線 (Bayshore/Wangan) | **80 km/h** (60–70 in places) |
The C1 and the Wangan are **not** the same limit — a C1-shaped circuit should be
posted 50, not 80.
## Caveats / not verified
- Lamp pole spacing (~35 m) and parapet heights are reasonable engineering
values but were **not** confirmed against a primary source; they are tuned by
eye for gameplay readability.
- Asphalt/concrete RGB values in MapBuilder are art direction, not measured
photometry. Porous asphalt (排水性舗装) does read darker and coarser than
ordinary asphalt, which the palette reflects.
## Structural sections of the C1 (drives MapBuilder geometry)
The C1 is not a uniform elevated tube — it changes structural type along its
length, and the circuit now renders each type differently.
| Section | Real-world form | In-game |
|---|---|---|
| Elevated viaduct (most of the loop) | Deck on concrete columns | `Pillar` every 3rd sample above Y=18 |
| Bridge spans (474 flagged samples) | Steel box girder 鋼箱桁橋 over the old canals | `BridgeGirder` + `GirderRib` under deck; `PierCap` + round `PierColumn` on a 6-sample pitch |
| Ginza 銀座 | Runs **below** street level in the filled-in 楓川・築地川 river beds; surviving city bridges cross **over** it, piers landing in the median | `GinzaOverpass` + `OverpassParapet`, `OverpassPier` in the median |
| Tunnel sections | Bored/cut-and-cover | Tunnel bore, ceiling, no sky lighting |
Girder depth is set from the span/depth rule of thumb for steel box girders
(≈1/20 of span): at ~35 m spans that is ~1.8 m ≈ 6.4 studs (`GIRDER_H`).
**Why Ginza bans lane changes.** The no-lane-change marking through Ginza is not
arbitrary styling — the crossing bridges' piers physically occupy the median
between the carriageways, so the lanes are separated by structure. The yellow
line and the `OverpassPier` geometry are two expressions of the same fact.
## Lane counts
| Section | Lanes |
|---|---|
| Most of C1 | 2 + 2 |
| Shiodome JCT → Hamazakibashi JCT | **3 + 3** (widened; carries the merge from the Haneda line) |
Rendered by `widthAt(i)`: 60 studs baseline, 82 studs in `WIDE_ZONES`, with a
taper between so the widening never steps more than ~1.7 studs per sample.
## Method note
Wikipedia article *extracts* (`prop=extracts`) silently drop the infobox and
table markup that carry these figures — the measurements only appear in the raw
wikitext (`prop=revisions&rvslots=main`). Query the wikitext when hunting for
specs.