eeedfd7d6d
Behind `?one=1` the merged board was something a visitor could not find and did not get: the site still landed on the Bay Area, the left column still offered two other boards, and clicking one still tore the board down and built another. The board existed and the product did not change. A bare URL is now one California. `?city=sf` and `?city=socal` still get the dedicated boards, unchanged and on purpose — twenty-nine capture guards and the `bay-area` and `socal` budget cells aim at those boards by name and assert the `data-board` they land on, and a metro id falling back to the merged board would not degrade them, it would make them silently measure something else. `?one=0` forces the old arrangement, and both `california` budget cells now pass it: their caps are the plain state board's 440,000, and without it they would measure the merged board that `california-one` already covers. Also `CALIFORNIA.md`: what a single cohesive California is still missing, measured rather than listed. Every district on the board by the latitude of its centre is 1 / 23 / 26 / 1 / 2 / 54 across 32-37 N and **zero above 38 N** — 107 districts, 103 of them in two clusters four hundred kilometres apart, and four hundred and fifty kilometres of northern California with not one building on it. Eight airports, all Bay or LA. Two ports, both in San Pedro Bay. Two freeways of twelve vertices each across a thousand kilometres of state. The scale is not the problem and the file says so first: the board is 32.50-42.05 N and -124.50 to -114.00 W at 1,919 m to the unit, every feature on its real coordinate, nothing schematic. It is not too small. It is empty.
185 lines
9.1 KiB
Markdown
185 lines
9.1 KiB
Markdown
# Building out one California
|
||
|
||
What the merged board is missing, sized so it can be worked in parallel.
|
||
|
||
This is a **content** programme. It is deliberately separate from `TODO.md`,
|
||
which tracks engine work that is decided but not done: nothing below needs a new
|
||
mechanism, and every item is a data file somebody can write against a pack format
|
||
that already exists. The two do meet in one place, and the meeting is stated up
|
||
front so nobody starts at the wrong end — see "What has to come first".
|
||
|
||
---
|
||
|
||
## The scale is already right. The density is not.
|
||
|
||
Worth settling before anything else, because "make the map bigger" and "make the
|
||
map denser" are different jobs and only one of them is open.
|
||
|
||
The board runs **32.50–42.05 N and −124.50 to −114.00 W** — the whole state, at
|
||
its true shape, on real latitude and longitude. `World.project` is a linear map
|
||
from degrees to scene units at 1,919 m to the unit, and every hill, district,
|
||
landmark, bridge, airport and port in every pack is placed by its real
|
||
coordinate. Nothing is schematic and nothing is squashed to fit. A board 554
|
||
units across is 1,063 km across, and that is a fact rather than a framing.
|
||
|
||
So the state is not too small. **It is empty above 38 N**, and this is the
|
||
measurement that says so — every district on the board, by the latitude of its
|
||
centre:
|
||
|
||
| band | districts |
|
||
| --- | --- |
|
||
| 32 N | 1 |
|
||
| 33 N | 23 |
|
||
| 34 N | 26 |
|
||
| 35 N | 1 |
|
||
| 36 N | 2 |
|
||
| 37 N | 54 |
|
||
| **38–42 N** | **0** |
|
||
|
||
107 districts, and 103 of them are in two clusters four hundred kilometres
|
||
apart. The northern **four hundred and fifty kilometres of California has not one
|
||
building on it**, and the Central Valley between the clusters has three. The
|
||
state capital is absent. So is San Diego, Fresno, Bakersfield, Stockton, Redding
|
||
and Santa Rosa.
|
||
|
||
The same is true of everything else the board carries:
|
||
|
||
- **Airports — 8, all of them Bay or Los Angeles.** KSFO, KSJC, KLAX, KBUR,
|
||
KVNY, KLGB, KSNA, KONT. No Sacramento, no San Diego, no Oakland, no Fresno, no
|
||
Santa Barbara, no Palm Springs.
|
||
- **Ports — 2, both in San Pedro Bay.** USLAX and USLGB. No Oakland, no
|
||
Richmond, no San Diego, no Stockton, no Humboldt Bay, no Hueneme.
|
||
- **Freeways — 2 roads of 12 vertices each.** US-101 and I-5, as twelve-point
|
||
polylines across a thousand kilometres of state. That is roughly one bend
|
||
every ninety kilometres, which is why they read as a diagram rather than as
|
||
roads, and it is before the separate problem that the engine draws them 1,919 m
|
||
wide on purpose.
|
||
|
||
---
|
||
|
||
## What has to come first
|
||
|
||
**Two engine items gate the value of most of this, and both are measured and
|
||
written up in `TODO.md`.** Content added before them will be authored against
|
||
ground that is about to change and a budget that is about to stop being the
|
||
binding constraint.
|
||
|
||
1. **The relief ramp is landed (`d6dc307`) but unjudged.** Vertical exaggeration
|
||
now falls from 15x to 5.78x as the camera descends. Every judgement about how
|
||
a hill or a skyline reads is a judgement about relief, so wait until this has
|
||
been looked at before tuning heights.
|
||
2. **Cost does not track the view.** Measured with `scripts/cost-at.mjs`: the
|
||
merged board draws 355,759 triangles at 400 km and 329,392 at 2.5 km — flat,
|
||
because `createTerrain` is one mesh and the anonymous city is one
|
||
`InstancedMesh`, and `three` culls per object. Until the terrain and the lots
|
||
are chunked, **every district added anywhere is paid for everywhere**, and the
|
||
400,000 cap is reached by content that is nowhere near the camera. After it,
|
||
the cap stops being the reason a city cannot be dense.
|
||
|
||
The honest order is therefore: judge the ramp → chunk the terrain → chunk the
|
||
lots → then add the cities below at a lot size that is finally worth choosing.
|
||
**Coastline, hydrography, airports, ports and the freeway geometry are exempt** —
|
||
they are cheap, they are not lot-limited, and they can be authored in parallel
|
||
starting now.
|
||
|
||
---
|
||
|
||
## The work, in parcels
|
||
|
||
Each parcel is one pack-format contribution, sized to be reviewable on its own.
|
||
`src/tools/poseEditor.ts` (godmode, `G`) emits paste-ready `Chapter` blocks,
|
||
which is what makes adding a place cheap; `src/cities/socal.ts` is the reference
|
||
for a multi-city region and `src/cities/sf.ts` for a dense one.
|
||
|
||
**Everything is traced by hand.** ARCHITECTURE.md §3.2 is the constraint and it
|
||
has not moved: OpenStreetMap is ODbL, ODbL is share-alike, and a share-alike
|
||
obligation cannot live in an Apache-2.0 repo — nor be discharged by serving it
|
||
from an API instead. Original expression, or a US-Government public-domain source
|
||
named in `NOTICE`. `scripts/check-no-binaries.mjs` enforces the other half.
|
||
|
||
### A. The Central Valley — the corridor the board already drives
|
||
|
||
The two freeway chapters run through it and there is nothing to see. Highest
|
||
value per district in the programme, because a visitor is already sent here.
|
||
|
||
- **Sacramento** — the capital, and the most visible single absence. A downtown
|
||
district, the Capitol as a landmark, the river confluence, Old Sacramento.
|
||
- **Stockton and Modesto** — Delta port town and valley grid.
|
||
- **Fresno** and **Bakersfield** — the two big valley cities, low and wide.
|
||
- The **agricultural fabric** between them: the valley is not empty ground, it is
|
||
a grid, and a very low-coverage district with a near-zero tower chance reads as
|
||
farmland where bare terrain reads as desert.
|
||
|
||
### B. The north — four hundred and fifty kilometres with nothing on it
|
||
|
||
`TODO.md` already records that the Klamath knot reads as four chains at four
|
||
bearings and that the Cascade corner reads as Basin and Range. Both are relief
|
||
notes; these are settlement.
|
||
|
||
- **Redding** and **Chico**, the two northern valley towns.
|
||
- **Santa Rosa** and the Sonoma/Napa corridor — the nearest real settlement to
|
||
the Bay's northern edge and currently a hard stop at the pack boundary.
|
||
- **Eureka and Humboldt Bay** — the only harbour on four hundred kilometres of
|
||
North Coast, and the one place up there with a port.
|
||
- **Tahoe**: the lake exists as inland water; the basin has no settlement.
|
||
|
||
### C. San Diego — the missing corner
|
||
|
||
The board runs to 32.50 N and the southernmost district centre is at 32.75.
|
||
San Diego is a metro the size of the ones already modelled and it is absent:
|
||
downtown, Coronado, the bay, North Island, the mesa canyons that shape it, and
|
||
**the port**, which is one of the two things the board's vessel layer could
|
||
already use.
|
||
|
||
### D. The freeway network — the roads, as roads
|
||
|
||
Twelve vertices is a diagram. Two roads is not a network.
|
||
|
||
- **Retrace US-101 and I-5** at a vertex density that survives being looked at
|
||
from ten kilometres rather than from a thousand. The `Road` type already
|
||
carries `widthM` alongside `width`, and `cities/reconcile.ts` already reads it.
|
||
- **Add the ones a Californian would notice missing**: I-80 over Donner, I-15 to
|
||
the Mojave, I-10 east from Los Angeles, I-405, I-880/I-680 around the Bay,
|
||
CA-99 up the valley, CA-1 down the coast.
|
||
- **The width question is engine work, not content.** `createFreewayWorld` draws
|
||
a 4.7 km-wide atlas glyph because DRIVE mode has to drive down it on a board
|
||
where a real freeway is a fifth of a pixel, and `23e4bb8` withdraws that glyph
|
||
close in rather than fixing it — so today a city has no roads on it at all.
|
||
The true-width corridor needs the roadside props to be re-scaled with it
|
||
(`structures.ts` sets their setback from the slab, so a 44 m ribbon with
|
||
today's props puts 600 m oaks beside a two-lane road) and drive mode's near
|
||
plane is 0.1 units, which is 192 m on this board, against a car 2.6 mm long.
|
||
**File this as engine work in `TODO.md`, not as a tracing job.**
|
||
|
||
### E. Airports and ports — the assets
|
||
|
||
Both types are plain data with an existing renderer, so these are the cheapest
|
||
items here and they are not gated on anything in "What has to come first".
|
||
|
||
- **Airports**: KSMF (Sacramento), KSAN (San Diego), KOAK, KFAT (Fresno),
|
||
KSBA (Santa Barbara), KPSP (Palm Springs), KRDD (Redding), KMRY (Monterey).
|
||
- **Ports**: Oakland, Richmond, San Diego, Stockton, Humboldt Bay, Port Hueneme.
|
||
Oakland is the one to do first — it is across the water from a board the
|
||
product already photographs, and the vessel layer is already wired.
|
||
|
||
### F. Landmarks the eye goes looking for
|
||
|
||
58 today, all Bay and LA. The state Capitol, the Coronado bridge, Shasta Dam,
|
||
the Golden Gate's northern approach, the Carquinez bridges, Vandenberg,
|
||
the Salton Sea's shoreline works.
|
||
|
||
---
|
||
|
||
## Two things to check before opening a parcel
|
||
|
||
- **The block cap.** `src/test/packs/californiaBoard.test.ts` holds the state
|
||
pack's block count under 9,200 and it currently reads 8,881. Several parcels
|
||
above will cross it. The cap is a real budget on a real board and the right
|
||
move is to measure and move it deliberately, in the same commit, with the
|
||
number recorded — not to raise it quietly to make a test pass.
|
||
- **Draw calls, not triangles.** `TODO.md` records that adding Sacramento is
|
||
"a district and about 300 lots; the budget that has to be checked first is
|
||
draw calls on the california mobile cell, not triangles." That board reads 411
|
||
draws of a 460 cap. Draw calls are the scarce resource on this board, and they
|
||
are what a new airport, port or landmark group spends.
|