Vehicle stations — cross-game mechanic

The single shared mechanic that all rural Jet Lag adaptations are built on. Each format defines its own rules but adapts only the transportation layer — and that layer is the same idea everywhere: personal vehicles, ride-sharing, and taxis play the role of buses and trains, anchored to a generated set of "vehicle stations" with a wait-time roll on every departure. Real bus / train / ferry service in your play area, if any, plays per the official rulebook alongside vehicle stations.


Why this mechanic exists

Jet Lag: The Game leans on the friction of public transit — waiting for the next train, transferring between lines, walking the last block — to shape interesting decisions for both seekers and hiders. In rural environments where the buses don't run and the nearest train station is in the next state, that friction disappears the moment players get in a car. Free driving is too fast and too unconstrained, and a "fuel budget" alone doesn't reproduce the temporal texture of transit (the unpredictable wait, the choice of where to transfer).

The vehicle-stations mechanic re-introduces transit-shaped friction without requiring transit infrastructure. Cars become the buses; clustered points-of-interest become the stations; a 2d6 departure roll becomes the schedule. Background research and per-component cost weights live in the transit-friction reference.


What a vehicle station is

A vehicle station is a real-world location — a museum, park, gas station, restaurant, etc. — that the generator in stations-generator/ picked from OpenStreetMap inside your play-area polygon. Each station carries:

Stations are spaced using a two-tier rule: ~300 m minimum within a cluster (matching average urban bus stop spacing), ~1000 m minimum between clusters (matching light-rail / metro spacing). The result on the map is groups of stations around towns and commercial areas with visible gaps between them — the same shape transit stops take in real cities.

Open the generator to generate the station map for your play area.


How vehicle stations fit alongside bus and train lines

Any rule in the official Jet Lag rulebooks that references transit translates as follows:

Official term Rural-variant reading
Bus / train / metro stop Vehicle station
Bus / train line Real lines that exist in your area (a small-town bus, a tourist trolley, an Amtrak run) play as the official rulebook describes them — the rural variant adds no special rules for them. The rural mechanic only changes how cars move.
Boarding a vehicle Driving away from a station after the wait clears
Schedule wait The 2d6 departure roll at the station that starts a route
Transfer Ending one route at a station and declaring a new one (with its own roll)
End of the line The last station in your declared route

What this preserves: every change in plan incurs a wait, longer trips amortize fewer rolls per mile (so they "run faster" the same way long transit lines do), and transfers cost real time. What you gain: stations are picked from places you'd actually want to visit (parks, museums, cafés, bookstores) rather than the real-world stops a transit agency optimized for route and passenger efficiency, so the station map tends to be more interesting to play across. What you lose: pre-fixed lines and timetables — every station connects to every other station, and the schedule is rolled fresh per departure.


The departure roll

Every route begins with a departure roll at its starting station, before you drive anywhere. Roll 2d6 and read the sum against the station's wait-time range:

2d6 sum Outcome Probability Example for 10–15 min range
2–3 On time. Leave immediately. 8.3 % Leave now
4–6 Lower bound of the range. 33.3 % 10 min
7–10 Upper bound of the range. 50.0 % 15 min
11–12 You missed your departure. Wait the upper bound, then re-roll. 8.3 % Wait 15 min, then re-roll for a new departure

The skew toward the upper bound is intentional — real transit runs late more often than early, so the dice carry that bias forward. This skew is a design choice, not a measured calibration target, and is tunable along with the rest of the table.

You leave a station by driving off in your vehicle. If you don't drive off within your rolled wait time, you've missed your departure. Roll again for the next one — including the chance of another miss on an 11 or 12.


Routes

A route is a pre-declared sequence of stations from your current location to your destination. Most routes will include intermediate stations between the two ends.

Why the dismount rule: vehicle stations are picked from places that are interesting to be at — parks, museums, cafés, bookstores, arcades. Without a get-out requirement the station becomes a math token on a map. Forcing a brief dismount turns each stop into a reason to actually take a look at the site, which is half the point of choosing those POIs in the first place.

Why the destination is a forced stop (separately from the dismount): without it, players could declare a route ending at the next station they're already approaching, hop through with no roll, declare another, and effectively never incur a departure roll. The forced stop ensures every route imposes at least one roll's worth of friction. Short routes get to that roll sooner, so they incur more total rolls per mile traveled; long routes amortize the friction over a longer commitment.

Arrival cooldown when transit is also in play

If your game includes any real transit (a bus, train, tram, or ferry line that players are allowed to ride), every vehicle route — personal or by-request — picks up a post-arrival cooldown to keep transit options competitive:

  1. Note your departure time when you actually drive off from the starting station (after the wait clears, not when you rolled).
  2. On arrival at your destination station, wait 2× the drive time before you may dismount-and-declare your next route or board another mode. (Example: a 12-minute drive incurs a 24-minute cooldown on arrival.)
  3. The cooldown is dead time at the destination station — you can stretch, eat, browse the POI you stopped at, but you can't start the next departure roll until it clears.

Why 2× the drive time: transit is roughly 3× slower than driving over a comparable trip — that's the midpoint of the 2–3.5× per-minute commercial-speed gap and the 2–4× door-to-door range derived in the transit-friction reference. A 1× drive plus a 2× post-arrival cooldown sums to 3× the drive time on the clock, putting a vehicle leg roughly on par with the transit alternative. Without this, every mixed-mode game would just favor driving. In games with no real transit at all, this rule does nothing useful and is skipped.

Changing your route mid-trip

A mid-route change is just ending your current route early and starting a new one from there:

  1. Pick a station along your current route to be your new endpoint. Treat it as your destination from this point forward.
  2. Drive there. That station is the end of your current route.
  3. Get out of the vehicle. As above.
  4. From that station, declare a new route to wherever you want to go next. Make a departure roll for the new route, as you would for any route.
  5. Once your wait clears, drive off on the new route.

There is no separate "transfer" mechanic — a mid-route change is just two routes back-to-back, each with its own declaration, dismount, and departure roll.


By-request transport (ride-sharing, taxis, hotel shuttles)

Some play areas have no real transit, or no players with personal vehicles, but do have on-demand ride options — Uber, Lyft, Via, local taxi services, hotel shuttles, etc. These play under the basic mechanic with one allowance: you may time your ride request so the vehicle arrives at the end of your rolled wait.

When you're ready to leave a station by by-request transport:

  1. Declare your route and make a normal 2d6 departure roll against the starting station's wait-time range.
  2. Wait the rolled time. During the wait you may check ride-app ETAs as often as you like, but don't request the ride yet.
  3. Time the request so the vehicle is scheduled to arrive at the station no earlier than the end of your rolled wait. (In practice: when the app's quoted ETA equals the time remaining on your wait, request the ride.)
  4. The ride picks you up and you depart on your declared route.

Why timing the request is allowed. Without it, by-request riders would be double-penalized — once for the station roll, once for the ride to arrive. Letting the rider line up the two waits keeps total time-to-vehicle-arrival roughly equal to the rolled wait, the same friction shape as transit.

Changing your mind before requesting — you may switch services, switch destination, or call off the trip entirely up until you actually request the ride. Doing so counts as a missed departure and requires a fresh departure roll. Once requested, the ride is committed and you ride it to the destination you declared.

Mixing transport modes in one game

The mechanic is mode-agnostic, so any combination works:

Each mode resolves at the station the same way: declare → roll → wait → depart. Personal vehicles use the basic mechanic above; by-request transport adds the ride-timing allowance; real bus / train / ferry lines follow the official rulebook unchanged. In any game where real transit is one of the modes in play, vehicle routes (personal and by-request) also pay the arrival cooldown described above — that's what keeps the slower transit option competitive.


What this mechanic doesn't change

The vehicle-stations layer governs how non-transit vehicles (personal cars, ride-sharing, taxis) move and nothing else. It does not by itself re-balance:

Each format's own rules are responsible for spelling out how it handles the few official mechanics that do depend on transit topology (e.g. "end of the line" wording in Hide + Seek's Curse of the Express Route). Those caveats live with the format that needs them, not here.


Tunability

All of the numbers above are starting points, not measured calibration targets. The site exposes the spacing parameters as sidebar settings (and the CLI as flags); the wait-tier breakpoints + 2d6 outcome table are constants in stations-generator/core/src/constants.js and stations-generator/core/src/density.js. If you find that play-tests want denser station maps, looser cluster spacing, longer waits in sparse areas, or a different miss probability — change them. The framing the rest of this file describes does not depend on the specific numbers.