Rebuild Daikoku Futo PA from measured real-world data
The PA was a placeholder: 9 painted stripes and 4 lights on a slab.
Rebuilt it against sourced figures rather than recollection.
Sources:
* OpenStreetMap way 59608205 (大黒ふ頭パーキングエリア) -- the apron is
181 m x 174 m / 1.6 ha, i.e. essentially SQUARE, not circular.
* ja.wikipedia 大黒パーキングエリア -- 首都高速で最大のPA, opened
1989-09-27. Capacity 小型 341 + 大型 59 + 身障者用 4 = 404, now
reproduced EXACTLY (11 rows x 31, 20/20/19, 1 row x 4).
* 本館 on the west side, ベイサイドテラス二番館 on the north, per the
same article. EV rapid charger (first on a Japanese expressway,
2008-10-10) and the 段差 bumps retrofitted to deter lowered cars.
Stall dimensions (小型 2.5x5.0 m, 大型 3.3x12 m, 6 m aisles) are
conventional JP parking-design values and are commented as NOT
primary-sourced, unlike the 全標協 road markings. Building footprints
are art-directed to the aerial and flagged as such.
tools/verify_daikoku_pa.luau asserts capacity, containment, block
separation and building placement in-engine: 20 passed, 0 failed.
Two bugs found and fixed by that harness:
* The hand-placed 小型 Z origin overlapped the 大型 bays by 42 studs.
The origin is now DERIVED from the 二番館 frontage; clearance is
61.4 studs. The first version of the overlap test compared
consecutive head lines (always 0 for back-to-back rows), which was
meaningless and hid this.
* push_mapbuilder.py lost a byte whenever a chunk began with a
newline -- Lua long-bracket literals swallow a newline directly
after the opening bracket (assembled=65158 vs 65159). It now emits
a deliberate leading newline; the push verifies match=true.
This commit is contained in:
@@ -59,13 +59,17 @@ print(call('local rs=game:GetService("ReplicatedStorage")\n'
|
||||
'return "buffer reset"'))
|
||||
|
||||
for i, c in enumerate(chunks):
|
||||
# Lua long-bracket literals SWALLOW a newline that immediately follows the
|
||||
# opening bracket. When a chunk happened to start with "\n" that byte was
|
||||
# silently lost, giving assembled=65158 vs expected=65159. Emit a deliberate
|
||||
# leading newline for Lua to eat so the payload always survives intact.
|
||||
code = (
|
||||
'local rs=game:GetService("ReplicatedStorage")\n'
|
||||
'local b=rs:WaitForChild("MBBuf")\n'
|
||||
f'local n="p{i}"\n'
|
||||
"local sv=b:FindFirstChild(n) or Instance.new(\"StringValue\")\n"
|
||||
"sv.Name=n sv.Parent=b\n"
|
||||
f"sv.Value=[{eq}[{c}]{eq}]\n"
|
||||
f"sv.Value=[{eq}[\n{c}]{eq}]\n"
|
||||
f'return "p{i} "..#sv.Value'
|
||||
)
|
||||
print(f" chunk {i+1}/{len(chunks)}: {call(code)}")
|
||||
|
||||
Reference in New Issue
Block a user