Add three multi-model Comedy Store scenes and plan the map recreation
Full build / Import + headless tests (push) Successful in 45s
Full build / Full desktop build + optional release (push) Skipped

This commit is contained in:
zwitschi committed 2026-11-03 18:04:09 +01:00
1 parent 988d431da8
commit 888897cac9
16 files changed
+170 -42

No files matched your search

+7
View File
@@ -11,6 +11,13 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o
maximum. Requests send a complete Firefox header set, not just the UA. DDG rate-limits by IP for
a while after probing, so the per-venue collections should still be run in small spaced batches.
Downloads are `local_only`/`unchecked-local` and never committed.
- **Comedy Store multi-model concepts (2026-11-03):** four scene pairs (facade, street, strip,
visitor) now live in `docs/screens/concepts/joke_shop/`, each anchored on a local-only
`tmp/research/comedy-store/` photo with one `google/gemini-2.5-flash-image` and one
`openai/gpt-5-image-mini` frame (`.refgen.json` records `unchecked`). Gotcha: DDG photo 07.jpg
was titled "Ramada hotel" but is actually an interior stage shot — Gemini refused it with a
text-only message; the hotel/parking ramp reference is still missing from the local set. The
map-recreation plan is tracked in `TODO.md` §Local map development → Comedy Store map recreation.
- **Local-only reference override (2026-11-03, owner decision):** for development-only photo
research the licence gate does **not** apply. Downloads for this track live in `tmp/research/`
(gitignored) and may come from DuckDuckGo image search, street-view frames, neighbouring
+39 -39
View File
@@ -16,6 +16,45 @@ The active planning order lives in [`TODO.md`](TODO.md) and [`AGENTS.md`](AGENTS
Versions are assigned only when a track's scope is accepted into a release. Every major, minor and patch version requires a changelog entry, a local release build and artifact verification before tagging.
## ⬇️ Downloads
| Platform | Package |
| --- | --- |
| **Windows — installer** | [`gig-line-setup-<ver>.exe`](https://git.allucanget.biz/zwitschi/security-game/releases) · contains all game data, shortcuts + uninstaller |
| **Windows — portable** | [`gig-line-windows-<ver>.exe`](https://git.allucanget.biz/zwitschi/security-game/releases) · 64-bit, no install needed |
| **Linux — AppImage** | [`gig-line-<ver>-x86_64.AppImage`](https://git.allucanget.biz/zwitschi/security-game/releases) · single file, `chmod +x` and run |
| **Linux — portable** | [`gig-line-linux-<ver>.x86_64`](https://git.allucanget.biz/zwitschi/security-game/releases) · 64-bit, `chmod +x` and run |
| **macOS** | [`gig-line-macos-<ver>.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · unsigned build, quarantine note below |
| **Web (browser)** | [`gig-line-web-<ver>.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · unzip and serve the folder from any static host (no special headers) |
| **Desktop HQ** | [`gig-line-desktop-hq-<ver>.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · optional Forward+ build with volumetric fog/SDFGI/flashlight; requires a Vulkan-capable GPU/driver |
**All releases:** <https://git.allucanget.biz/zwitschi/security-game/releases>
> Downloads are public (no sign-in required) since the host's instance-wide
> `REQUIRE_SIGNIN_VIEW` was disabled on 2026-10-31.
>
> **Latest published: v0.9.6** — the integration checkpoint: the 0.9.5 texture
> and material refinement (256² NPC maps, a four-times fabric weave without baked
> AO blotches, repaired Walk of Fame/awning surfaces and per-phase skyline haze)
> is packaged with the v0.9.4 NPC visual optimization, the Hollywood/Joke Shop
> maps and the v0.9.3 UI/accessibility polish, with the full gallery, smoke matrix
> and Web/Desktop HQ build re-verified.
>
> **Current source: v0.10.0-rc.1** — the release-candidate source; the final tag is pending external playtest and legal review.
> Releases are built automatically when a `vX.Y.Z` tag is pushed
> (see [`docs/RELEASING.md`](docs/RELEASING.md)); manual builds use
> `./tools/build_releases.sh`. Installer/AppImage packaging runs in the same pipeline
> (NSIS + appimagetool) and uploads with the portable binaries.
>
> macOS builds are unsigned: right-click → Open, or clear the quarantine with
> `xattr -dr com.apple.quarantine gig-line-macos.zip`. Build instructions and
> the release pipeline live in [`docs/RELEASING.md`](docs/RELEASING.md).
If you are here to develop or test locally instead of downloading, jump to
[Setup and Run](#setup-and-run) below.
The project is under active development. The design and architecture are documented, and a playable prototype vertical slice exists (Godot 4 + GDScript): a stylized El Capitan Entertainment Centre block, a first-person guard, simulated NPCs with intents and reactions, the six-level escalation model, access inspection and admission decisions, radio calls with credibility checks, reputation, crowd mood, and an end-of-shift review.
## Screenshots
Every capture is rendered from the current build by [`tools/check_screenshots.sh`](tools/check_screenshots.sh)
@@ -69,45 +108,6 @@ the sheets below track their visual progress.
More sheets and the review criteria are in [`docs/blender_previews/`](docs/blender_previews/README.md)
and [`docs/3d-model-review.md`](docs/3d-model-review.md).
## ⬇️ Downloads
| Platform | Package |
| --- | --- |
| **Windows — installer** | [`gig-line-setup-<ver>.exe`](https://git.allucanget.biz/zwitschi/security-game/releases) · contains all game data, shortcuts + uninstaller |
| **Windows — portable** | [`gig-line-windows-<ver>.exe`](https://git.allucanget.biz/zwitschi/security-game/releases) · 64-bit, no install needed |
| **Linux — AppImage** | [`gig-line-<ver>-x86_64.AppImage`](https://git.allucanget.biz/zwitschi/security-game/releases) · single file, `chmod +x` and run |
| **Linux — portable** | [`gig-line-linux-<ver>.x86_64`](https://git.allucanget.biz/zwitschi/security-game/releases) · 64-bit, `chmod +x` and run |
| **macOS** | [`gig-line-macos-<ver>.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · unsigned build, quarantine note below |
| **Web (browser)** | [`gig-line-web-<ver>.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · unzip and serve the folder from any static host (no special headers) |
| **Desktop HQ** | [`gig-line-desktop-hq-<ver>.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · optional Forward+ build with volumetric fog/SDFGI/flashlight; requires a Vulkan-capable GPU/driver |
**All releases:** <https://git.allucanget.biz/zwitschi/security-game/releases>
> Downloads are public (no sign-in required) since the host's instance-wide
> `REQUIRE_SIGNIN_VIEW` was disabled on 2026-10-31.
>
> **Latest published: v0.9.6** — the integration checkpoint: the 0.9.5 texture
> and material refinement (256² NPC maps, a four-times fabric weave without baked
> AO blotches, repaired Walk of Fame/awning surfaces and per-phase skyline haze)
> is packaged with the v0.9.4 NPC visual optimization, the Hollywood/Joke Shop
> maps and the v0.9.3 UI/accessibility polish, with the full gallery, smoke matrix
> and Web/Desktop HQ build re-verified.
>
> **Current source: v0.10.0-rc.1** — the release-candidate source; the final tag is pending external playtest and legal review.
> Releases are built automatically when a `vX.Y.Z` tag is pushed
> (see [`docs/RELEASING.md`](docs/RELEASING.md)); manual builds use
> `./tools/build_releases.sh`. Installer/AppImage packaging runs in the same pipeline
> (NSIS + appimagetool) and uploads with the portable binaries.
>
> macOS builds are unsigned: right-click → Open, or clear the quarantine with
> `xattr -dr com.apple.quarantine gig-line-macos.zip`. Build instructions and
> the release pipeline live in [`docs/RELEASING.md`](docs/RELEASING.md).
If you are here to develop or test locally instead of downloading, jump to
[Setup and Run](#setup-and-run) below.
The project is under active development. The design and architecture are documented, and a playable prototype vertical slice exists (Godot 4 + GDScript): a stylized El Capitan Entertainment Centre block, a first-person guard, simulated NPCs with intents and reactions, the six-level escalation model, access inspection and admission decisions, radio calls with credibility checks, reputation, crowd mood, and an end-of-shift review.
## Game Overview
A typical shift lasts 10–15 minutes: watch the entrance and sidewalk, judge why
+31
View File
@@ -461,6 +461,37 @@ facade evidence is still the 2009 CC BY frame. The 8 downloaded candidates are i
- [ ] Integrate the result behind `WorldBuilder.VENUE_SPECS` with colliders, navigation obstacles,
occlusion and the existing day/night materials.
### Comedy Store map recreation
*Plan (2026-11-03): rebuild the Joke Shop venue geometry from the new local-only reference set
(`tmp/research/comedy-store/`, gitignored) and the four photo-anchored scene pairs now in
`docs/screens/concepts/joke_shop/`. Evidence wins for shape; the concepts win for material/mood.
Nothing is committed until the licence gate on any promoted reference and the map-budget tests
pass. The current `_build_comedy_store_building()` stays as the fallback.*
- [ ] Extract the real proportions from the local frames (facade width/height, canopy depth and
slope, blade-sign diameter and pole height, red curtain bay count, entrance recess, kerb
setback, hillside rise) and reconcile them against the current 27 m / 8.4 m / 12.2 m spec
in `WorldBuilder.VENUE_SPECS["joke_shop"]` and `docs/joke-shop-map.md`.
- [ ] Rank the shape-language gaps between the current procedural building and the four scene
pairs: canopy fascia depth, blade-sign shape/position, curtain-bay rhythm, entrance recess,
hillside silhouette and the neighbouring hotel/parking mass. Write the top-five fix list
with measurements.
- [ ] Rebuild the canopy + blade sign as library props or procedural geometry through the assisted
pipeline (`blender_assets.py inspect` → scripted edits → `audit`/`fit`), keeping the 4,000
prop-triangle budget; verify against the street/strip concept pairs before committing.
- [ ] Add the neighbouring hotel/parking ramp as a low-detail blocker mass (no interior) so the
block silhouette matches the hotel reference frame, inside the venue mesh budget.
- [ ] Re-work the facade field from flat boxes to the reference's actual banding: black stucco
field (`dark_stucco`), deep canopy shadow, fascia band, red curtain bays and the recessed
entrance, using the four concept pairs for value/mood targets.
- [ ] Re-run the map-budget, navigation, collider and day/night capture gates after the rebuild
(`godot --headless --path . --script res://src/test/test_runner.gd`,
`tools/check_screenshots.sh`), and refresh the Joke Shop three-up board and
`docs/joke-shop-map.md`.
- [ ] Update `docs/development-status.md`, `docs/asset-tooling.md` and `CHANGELOG.md` when the
rebuild lands; record any accepted deviations from the reference.
### Generated location imagery
*Skill route: `lookdev`, `lighting`, `environment-artist`, `texture-workflow`; tooling:
+21 -3
View File
@@ -32,9 +32,27 @@ set); provenance in [`joke_shop_entrance_day-v2.refgen.json`](joke_shop_entrance
![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
## Street view — local-reference anchored, two models
![Comedy Store from the sidewalk, Gemini](comedy_store_street_gemini_day.png)
![Comedy Store from the sidewalk, GPT image](comedy_store_street_gpt_day.png)
## Sunset Strip context — local-reference anchored, two models
![The club in the wider Sunset Strip, Gemini](comedy_store_strip_gemini_day.png)
![The club in the wider Sunset Strip, GPT image](comedy_store_strip_gpt_day.png)
## Visitor view — local-reference anchored, two models
![The club as a visitor sees it, Gemini](comedy_store_visitor_gemini_day.png)
![The club as a visitor sees it, GPT image](comedy_store_visitor_gpt_day.png)
All `comedy_store_*_*_day` frames are anchored on local-only research photos under
`tmp/research/comedy-store/` (gitignored, `--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
in each frame's `.refgen.json` sidecar. Local reference only; the photos never enter the repo and
these frames are art direction, not assets.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

@@ -0,0 +1,12 @@
{
"concept": "comedy_store_street_gemini_day",
"generated": "comedy_store_street_gemini_day.png",
"model": "google/gemini-2.5-flash-image",
"reference": {
"file": "tmp/research/comedy-store/03.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.3 MiB

@@ -0,0 +1,12 @@
{
"concept": "comedy_store_street_gpt_day",
"generated": "comedy_store_street_gpt_day.png",
"model": "openai/gpt-5-image-mini",
"reference": {
"file": "tmp/research/comedy-store/03.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.2 MiB

@@ -0,0 +1,12 @@
{
"concept": "comedy_store_strip_gemini_day",
"generated": "comedy_store_strip_gemini_day.png",
"model": "google/gemini-2.5-flash-image",
"reference": {
"file": "tmp/research/comedy-store/06.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": "comedy_store_strip_gpt_day",
"generated": "comedy_store_strip_gpt_day.png",
"model": "openai/gpt-5-image-mini",
"reference": {
"file": "tmp/research/comedy-store/06.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": "comedy_store_visitor_gemini_day",
"generated": "comedy_store_visitor_gemini_day.png",
"model": "google/gemini-2.5-flash-image",
"reference": {
"file": "tmp/research/comedy-store/05.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.2 MiB

@@ -0,0 +1,12 @@
{
"concept": "comedy_store_visitor_gpt_day",
"generated": "comedy_store_visitor_gpt_day.png",
"model": "openai/gpt-5-image-mini",
"reference": {
"file": "tmp/research/comedy-store/05.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."
}