From e807744bf76757410bb24c117ce70e04b6931999 Mon Sep 17 00:00:00 2001 From: ArthurErlich Date: Mon, 5 Oct 2026 23:59:14 +0200 Subject: [PATCH] chore(prototype): keep street variant B only; record second run Co-Authored-By: Claude Opus 5.5 --- docs/research/vehicle-probe.md | 6 +++ .../overtake_proto_a.street_template.lua | 41 ------------------- 2 files changed, 6 insertions(+), 41 deletions(-) delete mode 100644 mod/content/streets/overtake_proto_a.street_template.lua diff --git a/docs/research/vehicle-probe.md b/docs/research/vehicle-probe.md index 70017a7..8c794c4 100644 --- a/docs/research/vehicle-probe.md +++ b/docs/research/vehicle-probe.md @@ -98,3 +98,9 @@ The human confirmed in game what the log showed: rebuilding the segment under a - First in-game run (human, 2026-10-05): the template loads, the lanes are visibly offset as intended, and vehicles can drive on the passing lanes. **Town (non-player) cars sometimes choose the passing lane.** **A faster bus behind a slower vehicle does not switch to the empty lane**: the switching logic is missing. - Changes for the next run: passing lanes allow only `BUS`/`TRUCK` (keeps private `CAR` town traffic out), and the probe logs the road template per vehicle (`road=`), since lane indices 2/3 also mean ordinary lanes on `country_new_medium`. - Hypothesis for the switch: the engine only re-chooses lanes at segment boundaries (`GetNextEdgeTrafficPenaltyAndAlternatives`), so short segments give a blocked bus more chances to pick the passing lane. Fallback trigger: `replaceSegment` ahead of the pair (made the leader re-plan lanes on multilane roads). +- Second run (2026-10-05 ~21:50 UTC, variant B, passing lanes BUS/TRUCK only). The human judged **variant B correct** (backward passing lane offset -2.5, forward +2.5), so variant A was removed. On the prototype road, lane 4 is the normal forward lane and lane 3 the forward passing lane. + - **An overtake happened**: fast 29251 (lane 4, 22.22 m/s) got past slow 29851 over segments 29707 → 30211 (side by side) → 30215 → 29708 → 29042 and stayed ahead. But the *slow* vehicle was in the passing lane (lane 3), and the passer went past in the normal lane. + - The engine treats both lanes as equal: some vehicles cruise in the passing lane almost the whole way (29796: 28/28 samples in lane 3, 27775: 29/29). Others mix (29251: 33 in lane 4, 14 in lane 3). + - Vehicles slowed to 9–10 m/s and briefly stopped on segment 27290 (presumably the end of the prototype stretch): a merge from two lanes into one. + - Visually the lane change is abrupt (human: "the lanes need a smoother transition"): the switch happens at the node, which has almost zero length on a straight, and the jump is about 5–6 m sideways. + - Next ideas: a lower speed limit on the passing lane (prefer the normal lane unless it's blocked), a smaller offset or transition segments for a smoother change. diff --git a/mod/content/streets/overtake_proto_a.street_template.lua b/mod/content/streets/overtake_proto_a.street_template.lua deleted file mode 100644 index 8d4e1af..0000000 --- a/mod/content/streets/overtake_proto_a.street_template.lua +++ /dev/null @@ -1,41 +0,0 @@ --- PROTOTYPE (ticket "Can a street type with overlaid passing lanes fake overtaking on single-lane roads?"): --- throwaway, lives only on branch prototype/vehicle-probe. --- Looks like country_new_small (same style, one visible lane per direction), but each direction gets a narrow --- extra passing lane at the centre line, pushed by `offset` over the oncoming lane. Variant A: passing-lane --- offsets B +2.5 / F -2.5 (the unit and sign of LaneConfig.offset are unknown; variants A and B use opposite signs). -function data() -return { - availability = { yearFrom = 0, yearTo = 0 }, - cost = 180, - country = true, - defaultWithCrosswalk = false, - description = { - description = "PROTOTYPE overtaking road, variant A: country small road with overlaid passing lanes (offset B +2.5 / F -2.5).", - icon = "::/infrastructure/street/country/country_new_small.tga", - name = "Overtake proto A (passing lanes B +2.5 / F -2.5)", - previewIcon = "::/infrastructure/street/country/country_new_small_preview.tga", - }, - emissions = { noise = 0, pollution = 0, pollutionRadius = 0, radius = 0 }, - fillGroundTex = "::/infrastructure/street/shared/street_fill.gtex", - laneConfigs = { - { forward = false, height = 0, offset = -1, speed = 22.22, transportModes = { "PERSON", "CARGO" }, width = 2 }, - { forward = false, height = 0, offset = -0.5, speed = 22.22, transportModes = { "CAR", "BUS", "TRUCK" }, width = 5 }, - -- backward passing lane, meant to sit over the forward driving lane (BUS/TRUCK only: keeps town cars out) - { forward = false, height = 0, offset = 2.5, speed = 22.22, transportModes = { "BUS", "TRUCK" }, width = 0.5 }, - -- forward passing lane, meant to sit over the backward (oncoming) driving lane (BUS/TRUCK only) - { forward = true, height = 0, offset = -2.5, speed = 22.22, transportModes = { "BUS", "TRUCK" }, width = 0.5 }, - { forward = true, height = 0, offset = 0.5, speed = 22.22, transportModes = { "CAR", "BUS", "TRUCK" }, width = 5 }, - { forward = true, height = 0, offset = 1, speed = 22.22, transportModes = { "PERSON", "CARGO" }, width = 2 }, - }, - maintenanceCost = 30, - menuCategory = { categories = { { category = "roads_country", filterCategories = { }, order = 441 } } }, - modifiers = { maxSpeedModifier = 0, noiseModifier = 0, pollutionModifier = 0 }, - pedestrianWalkPenalty = true, - priority = 200, - roadType = "STREET", - sidewalkFillGroundTex = "::/infrastructure/shared/none.gtex", - simBuildable = false, -- towns must not build the prototype - streetStyle = "::/infrastructure/street/country/country_new_small.street", - builderAudioRes = "::/gui/construction/sound/buildoze_street.builder_audio", - } -end