1
0

California gets roads, traffic, and a car to follow

This commit is contained in:
2026-08-11 18:24:53 -07:00
parent 9c9e78f6f9
commit fe58290728
43 changed files with 5593 additions and 68 deletions
+23 -2
View File
@@ -1,6 +1,6 @@
# Tera — architecture
**Tera** is the map view: a city from above, rendered in three.js, public and
**Tera** is the map view: California and its cities from above, rendered in three.js, public and
self-hostable. **Spaces** is the other half — the offices you walk into. They
are one engine and one asset library, seen from outside and from inside.
@@ -78,9 +78,11 @@ lumbridge-simulate/
│ └── scene.ts # lights, sky, camera flights, render loop
├── src/interiors/ # the inside of the world — floorplans, desks, presence
├── src/assets/ # the library. Original meshes and materials, Apache 2.0.
├── src/transport/ # serialisable route packs + renderer-free fixed-step sim
├── src/cities/ # data packs. Pure geography, no code.
│ ├── california.ts # state/corridor scale; LA ↔ SF continuity
│ ├── sf.ts # ~1000 lines of coastline, hills, districts, landmarks
│ └── la.ts # LA / OC / Riverside
│ └── socal.ts # LA / OC / Riverside
├── src/adapters/ # where outside data plugs in
│ └── workie.ts # Workie API -> Marker[]
└── src/main.ts # the standalone demo app
@@ -97,6 +99,25 @@ and a city share the projection, camera, lighting and render loop, and differ
only in what they put in the scene. That is why `scene.ts` owns the loop and
knows nothing about terrain specifically.
`transport` also stays outside the renderer. A `TransportPack` is plain JSON and
`VehicleSimulation` returns plain geographic poses. Three.js enters only in the
`roadTraffic` render layer, which projects poses through the active `World`.
That separation lets a future authoritative session server replay the same
route simulation without importing a browser or a GPU.
### 2.1 Product/control-plane boundary
Tera/Spaces is the authoritative renderer and simulation client. The separate
`lumbridgecorp` service remains the control plane: identity, tenant registry,
membership, billing, provisioning, and short-lived launch grants. It must not
grow a second world renderer or own frame-by-frame simulation.
The public Tera build remains zero-config and useful without any service. Hosted
presence, multiplayer, profiles, webcam faces, and media surfaces arrive through
adapters whose absence cannot stop the city, office, traffic, or sky from
running. This is the replacement path for the retired Phaser World 1; it is not
a migration of that renderer.
---
## 3. Three rules that keep Apache 2.0 honest