Document doors, routes and street furniture; refresh screenshots

City guide, architecture and README describe doors and back doors,
door-to-door routes along alleys, and the street furniture on folder
pavements. Documentation screenshots retaken on the current build,
including a street-level view of doorways, a streetlight and routes.
This commit is contained in:
Andy Dixon
2026-09-12 16:37:02 +01:00
parent 3680bde18f
commit 29271dead3
10 changed files with 24 additions and 9 deletions
+17 -7
View File
@@ -77,17 +77,27 @@ Plain ES modules, no framework, no build step.
nested pavements a few centimetres apart can't z-fight).
2. **Buildings and wall:** instanced boxes. The city shader adds procedural windows (lit share from
definition count), neon edges, a concrete wall and exponential fog.
3. **Effects:** additive and never occluding. Search beacons, fire and smoke particles (stateless,
3. **Doors and street furniture:** small instanced boxes (lit doorways, lamp posts and heads, bins,
benches, trees, hydrants, post boxes) drawn with a separate shader variant, and only within a few
hundred metres of the camera. Streetlights stand on folder boundaries, and everything sits on
folder pavements, never the road.
4. **Effects:** additive and never occluding. Lamp light pools, search beacons, fire and smoke particles (stateless,
animated in the vertex shader), residents (procedural stick-figure sprites), street routes
(mitred ribbons with chevrons or pulsing dashes, kept in right-hand lanes) and import arcs.
4. **Signs:** textured quads from the label atlas, depth-tested but not depth-writing. A shader test
5. **Signs:** textured quads from the label atlas, depth-tested but not depth-writing. A shader test
discards any quad face that would read mirrored, which is how two-faced blade signs work.
### Routing
- **Grid:** a 3 m occupancy grid blocks buildings (grown by 0.5 m) and the city wall, and makes
pavements slightly dearer than roads.
- **Search:** one Dijkstra run from the selected building's doors reaches every import and
- **Grid:** a 3 m occupancy grid blocks buildings (grown by 2 m, so a ribbon in its lane can't clip a
wall) and the city wall, and makes pavements slightly dearer than roads.
- **Doors:** each building gets one door, centred where possible and clear of its corners. Street
doors face the nearest open street. Buildings with no frontage get a back door whose path follows
a distance-to-street field computed once on a 0.5 m grid (chamfer sweeps until stable) through the
2.4 m alleys.
- **Search:** one Dijkstra run from the selected building's doorstep reaches every import and
dependent (paths cost the same both ways). It uses float64 distances and a settled set.
- **Shaping:** routes are straightened by line-of-sight, extended into both buildings, and boxed-in
targets fall back to the nearest reachable street.
- **Shaping:** street paths are straightened by line-of-sight (sampled every quarter cell), then joined
to each building's door path: inside the building, out through the doorway, along the alley, onto
the street. Alley points are drawn narrower and centred. Buildings with no door fall back to the
nearest reachable street.
+6 -1
View File
@@ -21,6 +21,9 @@ scale, so a large repository is a large city.
| **Yellow tape** rising across the walls | Dependabot alert (on the manifest file) |
| **Red tape** falling across the walls | Code scanning alert |
| **Light beam** into the sky | A search result |
| **Lit doorway** | The building's door: facing the street, or a back door onto an alley for files in the middle of a folder |
| **Streetlights** with pools of light | The edges of each folder: lights stand on its boundary, at every corner and every 20 m or so |
| **Bins, benches, trees, hydrants, post boxes** | Street furniture on the folder's pavement. Purely for atmosphere |
| **Cyan chevrons** on the road | Route to a file the selected file imports (**amber** if the import was inferred) |
| **Pulsing magenta dashes** on the road | Route from a file that imports the selected file |
| **Arcs** in the sky | The same import relationships, as the crow flies |
@@ -48,7 +51,9 @@ the selected file's routes.
## Following dependencies
Select a file (click it, search for it, or pick it from the sidebar). Routes appear on the streets
to everything it imports and from everything that imports it. With a file selected, switching to
to everything it imports and from everything that imports it. Every route leaves through the
building's door, follows the alley to the street if it's a back door, and goes in through the other
building's door. Alley stretches are drawn thinner. With a file selected, switching to
**Walk** puts you at its door facing along the first route: follow the arrows.
## Tour and links
Binary file not shown.

Before

Width:  |  Height:  |  Size: 426 KiB

After

Width:  |  Height:  |  Size: 632 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 393 KiB

After

Width:  |  Height:  |  Size: 374 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 757 KiB

After

Width:  |  Height:  |  Size: 769 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 530 KiB

After

Width:  |  Height:  |  Size: 531 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 KiB

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

After

Width:  |  Height:  |  Size: 108 KiB