Generate multi-model anchored concepts, drop old Comedy Store refs, and trim the concept gallery
Full build / Import + headless tests (push) Successful in 41s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-03 17:49:48 +01:00
1 parent 87e1c9e7a5
commit 988d431da8
40 files changed
+110 -329

No files matched your search

+5 -10
View File
@@ -79,18 +79,13 @@ just as with the Hollywood day/night rows.
## References
The committed, license-cleared photo board for this block — with the provenance sidecar and the
decisions each photo informed — is in
[`screens/refs/joke-shop/README.md`](screens/refs/joke-shop/README.md), and the three-up board
(real photo | generated concept | current capture) is in
[`screens/boards/README.md`](screens/boards/README.md).
The old committed Comedy Store photo board was removed on 2026-11-03 in favour of a local-only
research set under `tmp/research/comedy-store/` (owner override: development reference, never
committed, no licence gate). The three-up board (real photo | generated concept | current capture)
is in [`screens/boards/README.md`](screens/boards/README.md); its photo panel is a historical
public-domain frame, and the current block reference now lives in the gitignored research folder.
- OpenStreetMap way 428854155: <https://www.openstreetmap.org/way/428854155>
- Wikimedia Commons photographs used for proportion and material study:
- <https://commons.wikimedia.org/wiki/File:ComedyStore_01.jpg>
- <https://commons.wikimedia.org/wiki/File:ComedyStore_02.jpg>
- <https://commons.wikimedia.org/wiki/File:The_Comedy_Store.jpg>
- <https://commons.wikimedia.org/wiki/File:The_Comedy_Store_West_Hollywood_(51017780551).jpg>
- AI art-direction frames: [`screens/concepts/joke_shop/`](screens/concepts/joke_shop/README.md)
- The hall wall uses the `dark_stucco` pick (1024 px, matte charcoal grain) instead of the grey
paver tile, so the black stucco reads as the real club's flat plaster rather than masonry.
+1 -1
View File
@@ -15,4 +15,4 @@ attribution lives in the caption and the [refs sidecars](../refs/README.md)).
| --- | --- |
| ![three-up board: elcapitan day](elcapitan-day-board.jpg) | El Capitan facade, day. Photo: [CC BY 2.0, woo, 2009](https://commons.wikimedia.org/wiki/File:El_Capitan_Theater_frontal_fachade-The_Masonic_Temple.jpg) via `refs/hollywood`. Concept: photo-anchored generation. Capture: current build with the ashlar limestone field (`limestone_ashlar`, anchored on the same photo). |
| ![three-up board: elcapitan night](elcapitan-night-board.jpg) | El Capitan block, night. Photo: CC BY-SA 3.0 (reviewed; redistribution only, no derived assets) via `refs/hollywood`. Concept: photo-anchored night restage. Capture: current build. |
| ![three-up board: jokeshop day](jokeshop-day-board.jpg) | Joke Shop frontage, day. Photo: public domain (2006) via `refs/joke-shop`. Concept: photo-anchored (hillside frame; the branded frontage trips the model's recitation filter). Capture: current build with the `dark_stucco` wall tile. |
| ![three-up board: jokeshop day](jokeshop-day-board.jpg) | Joke Shop frontage, day. Photo: local-only research frame (`tmp/research/comedy-store`, gitignored). Concept: photo-anchored (gemini + gpt). Capture: current build with the `dark_stucco` wall tile. |
+2 -2
View File
@@ -1,7 +1,7 @@
{
"board": "jokeshop-day-board.jpg",
"caption": "Joke Shop frontage, day. Photo: public domain 2006. Concept: photo-anchored (hillside frame). Capture: dark stucco wall tile.",
"photo": "docs/screens/refs/joke-shop/comedy-store-frontage-palms-day-pd-2006-12-29.jpg",
"caption": "Joke Shop frontage, day. Photo: local-only research frame (tmp/research/comedy-store). Concept: photo-anchored (gemini + gpt). Capture: dark stucco wall tile.",
"photo": "tmp/research/comedy-store/01.jpg (local-only, gitignored)",
"concept": "docs/screens/concepts/joke_shop/joke_shop_entrance_day-v2.png",
"capture": "docs/screenshots/12-joke-shop.png"
}
+20 -81
View File
@@ -1,6 +1,13 @@
# Scene concepts: the realistic target look
These are AI-generated example frames (`python3 tools/scene_concepts.py generate --group scene`, `openai/gpt-5-image-mini`, 1280×720) for the realism pass. They are art direction, not assets. `tools/scene_concepts.py realism` pairs them with the in-game shots from `src/test/capture_realism.gd` (see `SHOTS` in the tool). New generations never overwrite a file here; they are saved as `<name>-vN.png`.
These are AI-generated example frames for the realism pass. They are art direction, not assets.
`tools/scene_concepts.py realism` pairs them with the in-game shots from `src/test/capture_realism.gd`
(see `SHOTS` in the tool). New generations never overwrite a file here; they are saved as
`<name>-vN.png`.
Concepts are organised per venue in the two subfolders below. The older top-level single-frame
concepts were removed on 2026-11-03 in favour of the per-venue boards, which carry photo-anchored
generations with a `.refgen.json` provenance sidecar each (source photo, licence, model).
## Real-world Hollywood block
@@ -10,37 +17,10 @@ The map-optimization references for the El Capitan Entertainment Centre block
facts and game mapping are documented in
[`../../hollywood-boulevard-map.md`](../../hollywood-boulevard-map.md).
## Concept list
### Hollywood Entrance
![hollywood entrance morning](hollywood_entrance_morning.png)
warm low sun, long soft shadows, brick with visible mortar and wear, stone plinth, potted topiary, haze that fades the far street to beige
### Hollywood Entrance Golden Hour
![hollywood entrance golden hour](hollywood_entrance_golden_hour.png)
strong back light and rim light on people, marquee bulbs reading even in daylight
### Hollywood Entrance Rain Night
![hollywood entrance rain night](hollywood_entrance_rain_night.png)
dark scene lit by practical lights only (marquee, sodium lamps), wet glossy ground with reflections, fog
### Boulevard Skyline
![boulevard skyline day](boulevard_skyline_day.png)
deep layered skyline with real towers and haze, palms lining the road, red curb paint, believable asphalt
### Boulevard Skyline Dusk
![boulevard skyline dusk](boulevard_skyline_dusk.png)
purple/orange gradient sky, neon signs, lit windows, car light trails
### The Joke Shop — Sunset Strip
## The Joke Shop — Sunset Strip
The current Joke Shop map is based on The Comedy Store at 8433 Sunset Blvd.
The real-site mapping, simplifications and reference photographs are in
The real-site mapping and simplifications are in
[`../../joke-shop-map.md`](../../joke-shop-map.md); the frames are in
[`joke_shop/README.md`](joke_shop/README.md).
@@ -48,56 +28,15 @@ The real-site mapping, simplifications and reference photographs are in
![Joke Shop entrance at night](joke_shop/joke_shop_entrance_night.png)
### Legacy Joke Shop Alley (pre-map optimization)
## Cross-cutting targets
![joke shop alley evening](joke_shop_alley_evening.png)
narrow brick alley, one warm wall lantern as key light, deep shadows, people in dark jackets
For comparison with locally generated realism runs (`docs/screens/realism/`, gitignored):
![joke shop door closeup](joke_shop_door_closeup.png)
close material detail: brick, mortar, aged wood door, brass
These two frames describe the old alley layout and are retained for comparison;
they are no longer the target for the Joke Shop map.
### Studio Stage Door Night
![studio stage door night](studio_stage_door_night.png)
granite facade, a bright bulb canopy as the main light, a glossy black car, stanchions and a barrier
### Sidewalk Material Closeup
![sidewalk material closeup](sidewalk_material_closeup.png)
paver joints, stains, granite curb, aggregate asphalt and a tree grate at grazing light
### Entrance Steps Podium
![entrance steps podium](entrance_steps_podium.png)
granite steps, handrails, glass doors, the check-in podium
### Crowd Barrier Line
![crowd barrier line](crowd_barrier_line.png)
steel barriers, a red carpet, a crowd with depth-of-field haze
### Responder Arrival Wide
![responder arrival wide](responder_arrival_wide.png)
fire engine, turnout gear, red/blue light spill on wet pavement
### NPC Portrait Day
![npc portrait day](npc_portrait_day.png)
close portrait of a pedestrian: skin with visible pores and stubble, fabric weave, shallow depth of field. The bar for an avatar close-up, not for the crowd shots
The `npc_portrait` capture in `capture_realism.gd` is staged, not posed by the crowd: it freezes one NPC on an open patch of sidewalk, parks the rest of the crowd out of frame, turns the subject into the camera and stands the guard on the sunlit side. It is the only shot where a face fills the frame, so it is the one to eyeball after an avatar change (generate a local run under `docs/screens/realism/`).
Cross-cutting targets, for comparison with locally generated realism runs:
- **Exposure.** The concepts keep the ground mid-grey. The game's sidewalk is close to white, so it is overexposed.
- **Night means dark.** The night/dusk concepts are lit by practical lights. The game's "Evening" phase is a bright pink-orange frame.
- **Depth.** The concepts show a layered skyline fading into haze. The new v2 skyline strips supply this; the old box skyline did not.
- **Geometry and foliage.** The facades have plinths, cornices and deep window reveals, and the trees and shrubs are organic. The game uses flat walls and blob trees.
## Additional previews
![npc_portrait_day-v2.png](npc_portrait_day-v2.png)
- **Exposure.** The concepts keep the ground mid-grey; the game's sidewalk reads lighter, so it
overexposes against the reference.
- **Night means dark.** The night/dusk concepts are lit by practical lights only (marquee,
signage, street lamps), with wet pavement reflections.
- **Depth.** The concepts show a layered skyline fading into haze; the v2 skyline strips supply
this at the boulevard boundary.
- **Geometry and foliage.** The facades have plinths, cornices and deep window reveals, and the
trees and shrubs are organic; the venue-realism passes close these gaps incrementally.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

@@ -44,3 +44,15 @@ mild — treat this as the overcast target, not a decay reference.
## Across the boulevard
![Ovation Hollywood frontage across the boulevard](hollywood_boulevard_across_street.png)
## Facade — local-reference anchored, two models
![El Capitan facade anchored on a local research frame, Gemini](el_capitan_facade_gemini_day.png)
![El Capitan facade anchored on a local research frame, GPT image](el_capitan_facade_gpt_day.png)
Both frames are anchored on the same local-only research photo
(`tmp/research/elcapitan/01.jpg`, gitignored) with `--reference-unchecked`, one with
`google/gemini-2.5-flash-image` and one with `openai/gpt-5-image-mini`. Provenance and model are
in each frame's `.refgen.json` sidecar. Local reference only; the photo never enters the repo and
these frames are art direction, not assets.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

@@ -0,0 +1,12 @@
{
"concept": "el_capitan_facade_gemini_day",
"generated": "el_capitan_facade_gemini_day.png",
"model": "google/gemini-2.5-flash-image",
"reference": {
"file": "tmp/research/elcapitan/01.jpg",
"licence": "unchecked",
"page": "",
"licence_checked": false
},
"suffix": "Use the attached reference photograph as the fixed source of geometry and composition: keep the building's proportions, column rhythm, band heights, signage placement and camera angle exactly as photographed. Only restage lighting, weather, people and surface condition where the prompt asks for it. Do not invent extra storeys, wings or ornaments that the photo does not show."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

@@ -0,0 +1,12 @@
{
"concept": "el_capitan_facade_gpt_day",
"generated": "el_capitan_facade_gpt_day.png",
"model": "openai/gpt-5-image-mini",
"reference": {
"file": "tmp/research/elcapitan/01.jpg",
"licence": "unchecked",
"page": "",
"licence_checked": false
},
"suffix": "Use the attached reference photograph as the fixed source of geometry and composition: keep the building's proportions, column rhythm, band heights, signage placement and camera angle exactly as photographed. Only restage lighting, weather, people and surface condition where the prompt asks for it. Do not invent extra storeys, wings or ornaments that the photo does not show."
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

+15 -9
View File
@@ -10,12 +10,9 @@ game textures. The geometry mapping and source links are in
![The black comedy club under its signature canopy, anchored on the hillside block photo](joke_shop_entrance_day-v2.png)
Generated with `generate --reference`, anchored on the licence-cleared
[`comedy-store-hillside-canopy-day-pd-2006-12-29.jpg`](../../refs/joke-shop/comedy-store-hillside-canopy-day-pd-2006-12-29.jpg)
board photo (public domain); provenance in
[`joke_shop_entrance_day-v2.refgen.json`](joke_shop_entrance_day-v2.refgen.json).
The frontage photo itself triggers the model's image-recitation filter, so the
hillside block frame anchors the facade; shape follows the frontage photo.
Generated with `generate --reference`, anchored on a Comedy Store board photo that has since
been removed from the committed refs (the block now uses the local-only `tmp/research/comedy-store/`
set); provenance in [`joke_shop_entrance_day-v2.refgen.json`](joke_shop_entrance_day-v2.refgen.json).
## Entrance — day
@@ -29,6 +26,15 @@ hillside block frame anchors the facade; shape follows the frontage photo.
![The club seen from across Sunset Boulevard](joke_shop_across_street.png)
The older top-level concepts `joke_shop_alley_evening.png` and
`joke_shop_door_closeup.png` are kept as a record of the pre-map-optimization
alley design. They no longer describe the current Joke Shop map.
## Facade — local-reference anchored, two models
![Comedy Store facade anchored on a local research frame, Gemini](comedy_store_facade_gemini_day.png)
![Comedy Store facade anchored on a local research frame, GPT image](comedy_store_facade_gpt_day.png)
Both frames are anchored on the same local-only research photo
(`tmp/research/comedy-store/01.jpg`, gitignored) with `--reference-unchecked`, one with
`google/gemini-2.5-flash-image` and one with `openai/gpt-5-image-mini`. Provenance and model are
in each frame's `.refgen.json` sidecar. Local reference only; the photo never enters the repo and
these frames are art direction, not assets.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@@ -0,0 +1,12 @@
{
"concept": "comedy_store_facade_gemini_day",
"generated": "comedy_store_facade_gemini_day.png",
"model": "google/gemini-2.5-flash-image",
"reference": {
"file": "tmp/research/comedy-store/01.jpg",
"licence": "unchecked",
"page": "",
"licence_checked": false
},
"suffix": "Use the attached reference photograph as the fixed source of geometry and composition: keep the building's proportions, column rhythm, band heights, signage placement and camera angle exactly as photographed. Only restage lighting, weather, people and surface condition where the prompt asks for it. Do not invent extra storeys, wings or ornaments that the photo does not show."
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

@@ -0,0 +1,12 @@
{
"concept": "comedy_store_facade_gpt_day",
"generated": "comedy_store_facade_gpt_day.png",
"model": "openai/gpt-5-image-mini",
"reference": {
"file": "tmp/research/comedy-store/01.jpg",
"licence": "unchecked",
"page": "",
"licence_checked": false
},
"suffix": "Use the attached reference photograph as the fixed source of geometry and composition: keep the building's proportions, column rhythm, band heights, signage placement and camera angle exactly as photographed. Only restage lighting, weather, people and surface condition where the prompt asks for it. Do not invent extra storeys, wings or ornaments that the photo does not show."
}
@@ -3,10 +3,11 @@
"generated": "joke_shop_entrance_day-v2.png",
"model": "google/gemini-2.5-flash-image",
"reference": {
"file": "docs/screens/refs/joke-shop/comedy-store-hillside-canopy-day-pd-2006-12-29.jpg",
"file": "tmp/research/comedy-store/01.jpg (local-only; original board photo removed 2026-11-03)",
"licence": "Public domain",
"page": "https://commons.wikimedia.org/wiki/File:ComedyStore_01.jpg",
"licence_checked": true
"licence_checked": true,
"removed_from_refs": true
},
"suffix": "Use the attached reference photograph as the fixed source of geometry and composition: keep the building's proportions, column rhythm, band heights, signage placement and camera angle exactly as photographed. Only restage lighting, weather, people and surface condition where the prompt asks for it. Do not invent extra storeys, wings or ornaments that the photo does not show."
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

-3
View File
@@ -21,9 +21,6 @@ docs/screens/refs/
README.md # board overview and image gallery
SIDECAR.md # provenance table
*.jpg|png
joke-shop/ # 8433 Sunset Blvd block
README.md
SIDECAR.md
tv-studio/ # studio entrance reference set
README.md
SIDECAR.md
-26
View File
@@ -1,26 +0,0 @@
# Joke Shop / Sunset Strip reference board
Licensed photographs of the real Comedy Store block at 8433 Sunset Boulevard, used as evidence for
the game's second venue: the low black hall, the deep signature canopy, the circular blade sign, the
red curtain bays and the dry hillside that rises directly behind the roofline.
Development reference only; not shipped with the game. Provenance and licences are in
[`SIDECAR.md`](SIDECAR.md). Folder rules: [`../README.md`](../README.md). Generated art-direction
frames: [`../../concepts/joke_shop/`](../../concepts/joke_shop/README.md).
| Photo | What it is evidence for |
| --- | --- |
| ![The Comedy Store from across Sunset, hillside and houses behind the roof](comedy-store-hillside-canopy-day-pd-2006-12-29.jpg) | **Block and hillside.** The hall's height against the boulevard, the canopy depth from the street, and the dry slope with houses and palms rising behind the roofline. |
| ![The Comedy Store frontage with palms and the wall sign](comedy-store-frontage-palms-day-pd-2006-12-29.jpg) | **Frontage rhythm.** Blade sign height and diameter, the flat black wall, palm placement, kerb setback and where the entrance sits in the run. |
| ![Canopy fascia covered in white signatures with red curtains below](comedy-store-signature-band-day-wikimedia-2020-04-09.jpg) | **Canopy and curtain detail.** Signature density on the fascia, the white band width, the red curtain bays and the warm interior spill at dusk. |
## Gaps to fill
- A night photograph of the canopy, blade sign and red curtain wash (the current night evidence is
the generated concept frame and the game capture).
- A closer view of the entrance recess and door hardware.
- An across-street frame showing the neighbouring frontages on the south side of Sunset.
- A hillside detail showing the house rooflines above the club.
Add new files with the naming convention in [`../README.md`](../README.md) and list them in the
sidecar in the same commit.
-60
View File
@@ -1,60 +0,0 @@
# Sidecar — The Comedy Store block, 8433 Sunset Blvd
| Field | Value |
| --- | --- |
| Venue / block | The Comedy Store (game: The Joke Shop), Sunset Boulevard, West Hollywood |
| Folder | `docs/screens/refs/joke-shop/` |
| Collected by | project (agent session, 2026-11-03) |
| Date range | 2006–2020 (original captures); downloaded 2026-11-03 |
| Intended use | venue three-up board, canopy/frontage proportions, hillside silhouette |
| Shipped? | no — development reference only; not bundled with the game or releases |
## Photographs
| File | Subject | View | Source | Author | Licence | Captured | Purpose | Shipped |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| `comedy-store-hillside-canopy-day-pd-2006-12-29.jpg` | Comedy Store and the hillside behind it | day, across Sunset | <https://commons.wikimedia.org/wiki/File:ComedyStore_01.jpg> | Gary Minnaert | Public domain | 2006-12-29 | street wall height, canopy depth, hillside houses and palms | no |
| `comedy-store-frontage-palms-day-pd-2006-12-29.jpg` | Frontage with palms and the wall sign | day, straight on | <https://commons.wikimedia.org/wiki/File:ComedyStore_02.jpg> | Gary Minnaert | Public domain | 2006-12-29 | blade sign size/height, wall length, palm rhythm, entrance position | no |
| `comedy-store-signature-band-day-wikimedia-2020-04-09.jpg` | Canopy signatures and red curtains | day, three-quarter | <https://commons.wikimedia.org/wiki/File:The_Comedy_Store_West_Hollywood_(51017780551).jpg> | Tony Mariotti (Los Angeles; [rubyhome.com](https://www.rubyhome.com/)) | CC BY 2.0 | 2020-04-09 | signature density, fascia band width, curtain bays, interior spill | no |
Licence text: [CC BY 2.0](https://creativecommons.org/licenses/by/2.0/). The CC BY file is also
credited in [`../../../CREDITS.md`](../../../CREDITS.md) under "Development-only reference images".
Not used: `File:The Comedy Store.jpg` (CC BY-SA 3.0) from the map document's original link list.
The two public-domain frames above cover the same evidence, so the share-alike review was not
needed for this board.
## Redactions and permissions
- No identifiable faces, licence plates or interiors in the committed crops; the plate area of the
parked car in the first photo is already unreadable at this resolution.
- Exterior public frontage only. The interior signature wall photo found in the Commons search was
**not** downloaded or committed.
## What was derived from this set
| Decision | Evidence | Where it landed |
| --- | --- | --- |
| 27 m frontage, 8.4 m street wall, 12.2 m OSM height | frontage photo measured against the door width | `docs/joke-shop-map.md`, `WorldBuilder` `comedy_store` spec |
| 4.9 m sloped canopy with a signature fascia | block and canopy photos | canopy slab geometry and the `Label3D` signature bands |
| 3.9 m circular blade sign on a roof pole | frontage photo | blade sign mesh and its night emissive |
| Hillside houses and palms above the roofline | block photo | `SunsetHillside` backdrop geometry |
| Red curtain bays between entrance and east end | signature-band photo | curtain bays and the entrance curtain |
## Generated boards used with this set
Generated frames are kept in [`../../concepts/joke_shop/`](../../concepts/joke_shop/README.md) and
are used for palette and night mood only; shape follows the photographs.
| Board | Path | Model | Generated | Spend |
| --- | --- | --- | --- | --- |
| Joke Shop entrance, day | `docs/screens/concepts/joke_shop/joke_shop_entrance_day.png` | `openai/gpt-5-image-mini` | 2026-11-02 | ~$0.01 |
| Joke Shop entrance, night | `docs/screens/concepts/joke_shop/joke_shop_entrance_night.png` | `openai/gpt-5-image-mini` | 2026-11-02 | ~$0.01 |
| Joke Shop across the street | `docs/screens/concepts/joke_shop/joke_shop_across_street.png` | `openai/gpt-5-image-mini` | 2026-11-02 | ~$0.01 |
## Notes
- Images re-encoded as JPEG q85 with EXIF removed (no GPS or camera metadata committed); the
untouched downloads stay outside the repository.
- `File:The Comedy Store West Hollywood (51017780551).jpg` asks for a dofollow attribution link;
the link is included above and in `CREDITS.md`.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 KiB