diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 3ded0d4..058aa6c 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -84,19 +84,19 @@ jobs: # NOTE: on Linux, makensis uses -D defines (the /D form is Windows-only # and is rejected as a script path), and it resolves relative paths # against the script directory — pass absolute paths from the workspace. - cp assets/textures/icon.ico packaging/windows/step-line.ico + cp assets/textures/icon.ico packaging/windows/gig-line.ico makensis \ -DVERSION="$VERSION" \ - -DARTIFACT="$PWD/build/step-line-windows-$VERSION.exe" \ - -DICON="$PWD/packaging/windows/step-line.ico" \ - -DOUT="$PWD/build/step-line-setup-$VERSION.exe" \ - packaging/windows/step-line.nsi + -DARTIFACT="$PWD/build/gig-line-windows-$VERSION.exe" \ + -DICON="$PWD/packaging/windows/gig-line.ico" \ + -DOUT="$PWD/build/gig-line-setup-$VERSION.exe" \ + packaging/windows/gig-line.nsi - name: Verify Windows installer contents run: | VERSION="$(sed -n 's/.*config\/version="\([^"]*\)".*/\1/p' project.godot)" - ls -la build/step-line-setup-$VERSION.exe - 7z l build/step-line-setup-$VERSION.exe | grep -E "step-line.exe|uninstall.exe" + ls -la build/gig-line-setup-$VERSION.exe + 7z l build/gig-line-setup-$VERSION.exe | grep -E "gig-line.exe|uninstall.exe" - name: Package Linux AppImage run: | @@ -106,7 +106,7 @@ jobs: if: github.event_name == 'workflow_dispatch' uses: actions/upload-artifact@v4 with: - name: step-line-build + name: gig-line-build path: build/* if-no-files-found: error diff --git a/DONE.md b/DONE.md index 11a8578..f06fa94 100644 --- a/DONE.md +++ b/DONE.md @@ -163,7 +163,7 @@ Completed task sections moved from `TODO.md`. Sections are moved only when every applied on phase change and shift start. - [x] Street lamps: poles with emissive bulbs + OmniLights on the sidewalk; `WorldBuilder.set_night_mode` switches bulbs/lights on at night. -- [x] Marquee signage: emissive “STEP LINE” strips + Label3D above the entrance. +- [x] Marquee signage: emissive “GIG LINE” strips + Label3D above the entrance. - [x] Street dressing: crosswalk stripes, planters, and low-poly trees. - [x] NPC visual variety: per-seed height/brightness variation (deterministic LCG). - [x] Denser routine traffic (tourists/performers/influencers/trespassers). @@ -211,21 +211,21 @@ Completed task sections moved from `TODO.md`. Sections are moved only when every - [x] Export presets: `binary_format/embed_pck=true` on all platforms — every binary is now self-contained (all game data in one file; `.pck` no longer shipped). - [x] App icon: `assets/textures/icon.png` (1024) + multi-size `icon.ico`, copied to - `packaging/windows/step-line.ico` and `packaging/linux/step-line.png` via the generator. -- [x] NSIS script `packaging/windows/step-line.nsi` (installs `Step Line.exe`, uninstaller, + `packaging/windows/gig-line.ico` and `packaging/linux/gig-line.png` via the generator. +- [x] NSIS script `packaging/windows/gig-line.nsi` (installs `Gig Line.exe`, uninstaller, shortcuts, registry entry; `makensis /DVERSION=… /DARTIFACT=…`). -- [x] AppImage: `packaging/linux/step-line.desktop`, `AppRun`, appdata.xml, and +- [x] AppImage: `packaging/linux/gig-line.desktop`, `AppRun`, appdata.xml, and `build_appimage.sh` (appimagetool, `APPIMAGE_EXTRACT_AND_RUN=1`). -- [x] Local end-to-end: rebuilt embedded exports and produced `step-line-0.2.0-x86_64.AppImage`, +- [x] Local end-to-end: rebuilt embedded exports and produced `gig-line-0.2.0-x86_64.AppImage`, ran it headless (0 script errors). - [x] CI: NSIS + AppImage steps added to `.gitea/workflows/build.yml` build job; publish glob - already uploads `build/step-line-**` (covers setup/AppImage names). -- [x] CI run 1110 verified end-to-end (v0.2.1): NSIS installer `step-line-setup-0.2.1.exe` - built, `7z l` shows `step-line.exe` + `uninstall.exe`, AppImage built (33.9 MB), + already uploads `build/gig-line-**` (covers setup/AppImage names). +- [x] CI run 1110 verified end-to-end (v0.2.1): NSIS installer `gig-line-setup-0.2.1.exe` + built, `7z l` shows `gig-line.exe` + `uninstall.exe`, AppImage built (33.9 MB), release `v0.2.1` published, `Job succeeded`. - Gotchas fixed on the way: makensis needs `-D` defines (not `/D`) and absolute paths (it resolves relatives against the script dir); installed exe must be space-free - (`step-line.exe`); icon.ico must use classic BMP entries (ImageMagick; PIL emits + (`gig-line.exe`); icon.ico must use classic BMP entries (ImageMagick; PIL emits PNG-compressed ICOs NSIS rejects). ## 🎮 Assets & detailed graphics pass (textures, rigs, UI feedback) @@ -234,7 +234,7 @@ Completed task sections moved from `TODO.md`. Sections are moved only when every seamless concrete, asphalt, awning, skyline, vignette, HUD icons, access-card art — all ≤1024px and power-of-two; imported under `assets/textures/`. - [x] Environment: textured facade + glass door, concrete sidewalk, asphalt street, striped - awning with “STEP LINE”, generated skyline backdrop planes, soft sun shadows. + awning with “GIG LINE”, generated skyline backdrop planes, soft sun shadows. - [x] NPCs: humanoid rig (torso/head/limbs) with archetype props (camera, delivery box, hat, sign, backpack), procedural walk bob, head-turns-toward-guard cue. - [x] UI/feedback: inspection artifact cards, mode icons (flashlight/door/wand), escalation @@ -412,7 +412,7 @@ Completed 2026-10-31 (working tree). Headless **88/88**; `src/test/smoke_session offset and the spawn `y`, and verify eye height while walking the steps. - [x] Steps and the landing are visual-only (no collider). The guard walks through them; add simple step colliders or restage the landing so it does not intersect the walk path. -- [x] Marquee text (`STEP LINE`) is tiny from the sidewalk. Scale the Label3D up. +- [x] Marquee text (`GIG LINE`) is tiny from the sidewalk. Scale the Label3D up. - [x] Focus circle and name tag are small at 2–3 m. Consider a larger circle / font after a real playtest. - [x] NPC crowd cap (`MAX_LIVE_NPCS`) silently drops routine traffic at 16. Add a short @@ -655,7 +655,7 @@ produces a 63 MB static bundle and it serves locally with HTTP 200s for html/was - [x] Add a `Web` preset to `export_presets.cfg` using `variant/thread_support=false` so the build runs on plain static hosting without COOP/COEP headers. -- [x] Export to `build/web/` and package `build/step-line-web-.zip` from +- [x] Export to `build/web/` and package `build/gig-line-web-.zip` from `tools/build_releases.sh` (zip or Python fallback). - [x] Publish the web zip with the desktop artifacts (`tools/publish_release.sh`). - [x] Cover the preset, the non-threaded choice, and the release wiring in diff --git a/MEMORY.md b/MEMORY.md index a278a21..e849cf4 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -28,6 +28,14 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o ## Handoff (read this first) +- **Visual-alignment pass planned (2026-11-01):** `TODO.md` gains a "Visual + alignment with rendered mockups" section. Goal: restructure generated-image + storage, move the reference mockups out of `docs/screens/designs/` into a + runtime-accessible root (e.g. `assets/images/`), load the proposed UI/scene + art at runtime (start menu, selection screens, HUD, panels), and make the game + match the mockups — verified by `screen_designs.py compare` + `judge`. Not + started; no code moved yet. + - **Phase 2 — AI texturing (this agent, DONE 2026-11-01).** Phase 1 assets were already in the tree (untracked) and are preserved. Generated six seamless AI clothing albedos into `assets/textures/npc/ai/{shirt,trousers,jacket,vest, @@ -86,7 +94,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o aim-free selection with wheel cycling and Shift precision walk (ADR-0011/0012), and a **Web** export target. `export_presets.cfg` gains a `Web` preset with `variant/thread_support=false` (static hosting, no COOP/COEP); `tools/build_releases.sh` exports `build/web/` and zips it to - `build/step-line-web-.zip`, and `publish_release.sh` uploads it. Covered by + `build/gig-line-web-.zip`, and `publish_release.sh` uploads it. Covered by `src/test/tests/test_web_export.gd`. - **Prop atlas (v0.3.1):** `model_pipeline.atlas_for()` builds a per-prop power-of-two PNG with one 8×8 cell per palette role, plus a metallic/roughness atlas (G=roughness, B=metallic). The @@ -352,7 +360,7 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o and published — installers/AppImage are on the releases page. Releasing = bump version → tag → push. - NSIS gotchas (validated in a local ubuntu:24.04 docker repro): makensis uses `-D` defines (never `/D`), resolves relative `-DICON`/`-DARTIFACT` against the **script directory** so CI - passes `$PWD`-absolute paths; installed exe must be space-free (`step-line.exe`); ICO must be + passes `$PWD`-absolute paths; installed exe must be space-free (`gig-line.exe`); ICO must be classic BMP entries (ImageMagick `icon:auto-resize=48,32,16`; PIL emits PNG-compressed ICOs NSIS cannot load). - appimagetool runs system `appstreamcli` if present (strict, exit 3 on warnings) — project diff --git a/PLAN.md b/PLAN.md index d1d292b..0eb50e2 100644 --- a/PLAN.md +++ b/PLAN.md @@ -1,4 +1,4 @@ -# Game Plan: Step Line +# Game Plan: Gig Line ## Premise diff --git a/README.md b/README.md index 974b39e..ff2cd94 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Step Line +# Gig Line -Step Line is a workplace security simulation about observation, communication, access verification, and proportionate escalation. The player works security at public-facing venues around Hollywood Boulevard, managing stairs, entrances, crowds, guests, staff, and occasional serious threats. +Gig Line is a workplace security simulation about observation, communication, access verification, and proportionate escalation. The player works security at public-facing venues around Hollywood Boulevard, managing stairs, entrances, crowds, guests, staff, and occasional serious threats. The central design goal is simple: @@ -23,12 +23,12 @@ The central design goal is simple: | Platform | Package | | --- | --- | -| **Windows — installer** | [`step-line-setup-.exe`](https://git.allucanget.biz/zwitschi/security-game/releases) · contains all game data, shortcuts + uninstaller | -| **Windows — portable** | [`step-line-windows-.exe`](https://git.allucanget.biz/zwitschi/security-game/releases) · 64-bit, no install needed | -| **Linux — AppImage** | [`step-line--x86_64.AppImage`](https://git.allucanget.biz/zwitschi/security-game/releases) · single file, `chmod +x` and run | -| **Linux — portable** | [`step-line-linux-.x86_64`](https://git.allucanget.biz/zwitschi/security-game/releases) · 64-bit, `chmod +x` and run | -| **macOS** | [`step-line-macos-.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · unsigned build, quarantine note below | -| **Web (browser)** | [`step-line-web-.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · unzip and serve the folder from any static host (no special headers) | +| **Windows — installer** | [`gig-line-setup-.exe`](https://git.allucanget.biz/zwitschi/security-game/releases) · contains all game data, shortcuts + uninstaller | +| **Windows — portable** | [`gig-line-windows-.exe`](https://git.allucanget.biz/zwitschi/security-game/releases) · 64-bit, no install needed | +| **Linux — AppImage** | [`gig-line--x86_64.AppImage`](https://git.allucanget.biz/zwitschi/security-game/releases) · single file, `chmod +x` and run | +| **Linux — portable** | [`gig-line-linux-.x86_64`](https://git.allucanget.biz/zwitschi/security-game/releases) · 64-bit, `chmod +x` and run | +| **macOS** | [`gig-line-macos-.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · unsigned build, quarantine note below | +| **Web (browser)** | [`gig-line-web-.zip`](https://git.allucanget.biz/zwitschi/security-game/releases) · unzip and serve the folder from any static host (no special headers) | **All releases:** @@ -45,7 +45,7 @@ The central design goal is simple: > the page and tag URLs are public. > > macOS builds are unsigned: right-click → Open, or clear the quarantine with -> `xattr -dr com.apple.quarantine step-line-macos.zip`. Build instructions and +> `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 @@ -480,7 +480,7 @@ Implemented so far: - Prop atlas (v0.3.1): `tools/model_pipeline.py` packs each prop's palette into one power-of-two colour atlas plus a metallic/roughness atlas and emits a single material with per-vertex UVs, so a prop is one draw material rather than one per part; `audit` enforces the contract - Generated prop models (v0.3.0 work): `tools/model_pipeline.py` builds bollards, benches, bins, planters, newspaper boxes and a hydrant as `.glb` props with per-part materials, loaded by `WorldBuilder` with a procedural fallback; the optional AI concept step (`model_pipeline.py concept`) supplies per-prop colour palettes - NPC base model (v0.6.0 assets): `tools/npc_pipeline.py` builds a skinned, UV-mapped base character (`assets/models/generated/npc_base.glb`) with per-slot albedo/normal/ORM maps and an armature matching the procedural rig's node names; AI fabric albedos (shirt/trousers) and a derived `palette.json` are layered in. Runtime integration into `NpcAvatar` is pending, so the procedural rig still renders -- Web build: `build/step-line-web-.zip` (Godot's non-threaded web template, no COOP/COEP headers needed) built by `tools/build_releases.sh` and published with the desktop artifacts; serve the unzipped folder from any static host +- Web build: `build/gig-line-web-.zip` (Godot's non-threaded web template, no COOP/COEP headers needed) built by `tools/build_releases.sh` and published with the desktop artifacts; serve the unzipped folder from any static host - Aim-free selection pass (v0.3.0 work, [ADR-0011](docs/adr/0011-aim-free-selection-and-precision-walk.md)): the focus cone ranks candidates by angle then distance, `Tab` and the mouse wheel cycle nearby people nearest-first and pin the selection, right click clears focus with a short re-acquire grace, the HUD reports how many people are in the ring, and holding `Shift` walks at half speed for close work Not yet implemented: wiring the authored NPC base model into the live game (`NpcAvatar._load_model`, see [`docs/plan-graphics-v0.6.md`](docs/plan-graphics-v0.6.md) — the procedural rig still renders for now), live 3D body-camera replay, editor-based GUT integration, and crowd performance profiling/LOD (see `TODO.md`). @@ -493,7 +493,7 @@ Not yet implemented: wiring the authored NPC base model into the live game (`Npc 4. The guard's camera sits at eye height and the guard stands on the landing, not inside the building. 5. Walking into the steps carries the guard up onto the landing (steps have colliders). 6. The skyline backdrop shows silhouettes against the sky, not an opaque black slab. -7. The `STEP LINE` marquee is readable from the sidewalk. +7. The `GIG LINE` marquee is readable from the sidewalk. 8. NPCs spawn and approach the entrance during the first minutes. 9. Looking at an NPC inside the focus cone shows a blue focus circle in front of the face, the person's name, and the HUD target line. 10. `Space` or left click opens the action wheel; `A`/`D` highlight a slice, `Space` confirms it, `Esc`/right click cancels without a log entry. diff --git a/TODO.md b/TODO.md index 4f743c1..7878a9e 100644 --- a/TODO.md +++ b/TODO.md @@ -75,6 +75,54 @@ Detailed plan: [`docs/plan-graphics-v0.6.md`](docs/plan-graphics-v0.6.md) · [AD - [ ] Update `README.md`, `docs/architecture.md` (Level 2 gains `tools/npc_pipeline.py`), and mark ADR-0013 Accepted. - [ ] Publish the release per `docs/RELEASING.md`. +## Visual alignment with rendered mockups + +The AI-rendered references in `docs/screens/designs/` (start menu, pause, settings, +shift review, radial menu, HUD, scene views) describe the intended look of every +screen. This pass reorganizes how generated images are stored, makes the game load +the proposed interface/scene art from disk, and aligns the selection screens, HUD, +and scene visuals with those mockups — verified with +`tools/screen_designs.py compare` + `judge`. + +### Storage restructure + +- [ ] Decide the canonical runtime image root (e.g. `assets/images/` for UI/scene art) and record it in `MEMORY.md` and an ADR. +- [ ] Move the reference mockups from `docs/screens/designs/` into the runtime root (keep `docs/screens/designs/` as a docs-only copy or replace it with the new path). +- [ ] Document one convention for game vs reference vs development images across `assets/textures/`, `assets/images/`, `assets/models/generated/`, `docs/screenshots/`, and `docs/screens/designs/`. +- [ ] Re-run `godot --headless --path . --import` to regenerate `.import` sidecars after any move. +- [ ] Confirm `.gitignore` still excludes development-only outputs (concepts, Blender sources, raw AI fabrics) under the new layout. + +### Documentation path updates + +- [ ] Update `README.md` paths (screen-designs section, confirmed-assets links, the `assets/images/backgrounds` resize example). +- [ ] Update `docs/architecture.md`, `PLAN.md`, and ADR-0010/0011/0012/0013 references to `docs/screens/designs/`. +- [ ] Update `tools/screen_designs.py` docstrings and mark the old paths in `DONE.md` as historical. + +### Code path updates + +- [ ] Point `tools/screen_designs.py generate` at the new design output path and keep `compare`/`judge` reading the right locations. +- [ ] Update GDScript `preload()` paths (`materials.gd`, `hud.gd`, `world_builder.gd`) if the game textures move. +- [ ] Update `capture_screenshots.gd` / `capture_prop_gallery.gd` output directories if captures relocate. + +### Load proposed interfaces + scene art from disk + +- [ ] Add a central UI/scene art loader (e.g. `src/game/ui/art.gd`) that loads the mockup-derived images from the new runtime root, with a procedural fallback when a file is missing. +- [ ] Wire the start menu and venue selection screen to use the `start_menu` scene art. +- [ ] Wire the pause overlay, settings, shift review, radial menu, and HUD chrome to their reference images. + +### Align in-game visuals + +- [ ] Make the venue selection screen match the `start_menu` mockup (layout, palette, background). +- [ ] Make the HUD match the `targeting_npc` / `escalation_hud` mockups (focus ring, escalation meter, log, hints). +- [ ] Align the remaining panels (pause, settings, shift review, radio, wand, timeline) to their mockups. +- [ ] Align scene lighting, fog, and post-processing for `venue_overview` and `late_night_avenue`. + +### Verify against the mockups + +- [ ] Regenerate the staged captures and run `screen_designs.py compare` (no gross drift). +- [ ] Run `screen_designs.py judge` and clear every `diff` verdict (target `match`/`review`). +- [ ] Add the capture + compare step to CI or a repeatable smoke so drift is caught early. + ## Future ideas (optional, not scheduled) - [ ] Live 3D body-camera replay (the timeline is text-only today). diff --git a/assets/models/generated/bench.glb b/assets/models/generated/bench.glb index 3b36ffb..4d856de 100644 Binary files a/assets/models/generated/bench.glb and b/assets/models/generated/bench.glb differ diff --git a/assets/models/generated/bollard.glb b/assets/models/generated/bollard.glb index f07026d..d203183 100644 Binary files a/assets/models/generated/bollard.glb and b/assets/models/generated/bollard.glb differ diff --git a/assets/models/generated/fire_hydrant.glb b/assets/models/generated/fire_hydrant.glb index ca141b1..c3ad2f5 100644 Binary files a/assets/models/generated/fire_hydrant.glb and b/assets/models/generated/fire_hydrant.glb differ diff --git a/assets/models/generated/newspaper_box.glb b/assets/models/generated/newspaper_box.glb index 442d031..5a58cc3 100644 Binary files a/assets/models/generated/newspaper_box.glb and b/assets/models/generated/newspaper_box.glb differ diff --git a/assets/models/generated/planter_box.glb b/assets/models/generated/planter_box.glb index 4010261..f2611ad 100644 Binary files a/assets/models/generated/planter_box.glb and b/assets/models/generated/planter_box.glb differ diff --git a/assets/models/generated/trash_bin.glb b/assets/models/generated/trash_bin.glb index 49c89bc..1e08ea9 100644 Binary files a/assets/models/generated/trash_bin.glb and b/assets/models/generated/trash_bin.glb differ diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 2828885..0762dc4 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -1,4 +1,4 @@ -# Releasing Step Line +# Releasing Gig Line This guide describes how to produce downloadable executables and publish them so the README "Downloads" links always point at the latest release. @@ -18,7 +18,7 @@ time you export, either: Verify with: ```bash -godot --headless --export-release "Linux" build/step-line-smoke.x86_64 +godot --headless --export-release "Linux" build/gig-line-smoke.x86_64 ``` ## 2. Bump the version @@ -81,17 +81,17 @@ godot --headless --path . --quit-after 120 # boot smoke t Artifacts are written to `build/` (all exports embed the PCK — single files): -- `build/step-line-linux-.x86_64` -- `build/step-line-windows-.exe` -- `build/step-line-macos-.zip` -- `build/step-line-web-.zip` — browser build (non-threaded Godot web +- `build/gig-line-linux-.x86_64` +- `build/gig-line-windows-.exe` +- `build/gig-line-macos-.zip` +- `build/gig-line-web-.zip` — browser build (non-threaded Godot web template; unzip and serve the folder, no COOP/COEP headers required) When run in CI (tags/dispatch), the build job also packages: -- `build/step-line-setup-.exe` — Windows installer (NSIS, incl. shortcuts + +- `build/gig-line-setup-.exe` — Windows installer (NSIS, incl. shortcuts + uninstaller; apt `nsis` on the runner) -- `build/step-line--x86_64.AppImage` — Linux AppImage (`packaging/linux/build_appimage.sh`, +- `build/gig-line--x86_64.AppImage` — Linux AppImage (`packaging/linux/build_appimage.sh`, appimagetool via `APPIMAGE_EXTRACT_AND_RUN`) Locally you can build the AppImage with `bash packaging/linux/build_appimage.sh `; @@ -145,7 +145,7 @@ RELEASE_JSON=$(curl -s -X POST "$API" \ RELEASE_ID=$(echo "$RELEASE_JSON" | python3 -c "import sys,json;print(json.load(sys.stdin)['id'])") -for f in build/step-line-*"$VERSION"*; do +for f in build/gig-line-*"$VERSION"*; do curl -s -X POST "$API/$RELEASE_ID/assets" \ -H "Authorization: token $TOKEN" \ -F "attachment=@$f" diff --git a/docs/architecture.md b/docs/architecture.md index 4537f40..5cd2ae9 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -132,7 +132,7 @@ A continuous-integration pipeline keeps the headless test suite green on every c Releases are produced from a tagged commit and published to the repository host's release page, where the README "Downloads" links point. - `export_presets.cfg` — committed Linux, Windows Desktop, and macOS export presets so builds are reproducible. -- `tools/build_releases.sh` — exports all three desktop artifacts into `build/`, named `step-line--.`. +- `tools/build_releases.sh` — exports all three desktop artifacts into `build/`, named `gig-line--.`. - `tools/publish_release.sh` — creates a release and uploads the artifacts via the Gitea/Forgejo API (requires `GITEA_TOKEN`). - [`RELEASING.md`](RELEASING.md) — step-by-step guide and release checklist. diff --git a/docs/screenshots/01-venue-overview.png b/docs/screenshots/01-venue-overview.png index bd697a7..9dfe86d 100644 Binary files a/docs/screenshots/01-venue-overview.png and b/docs/screenshots/01-venue-overview.png differ diff --git a/docs/screenshots/02-targeting-npc.png b/docs/screenshots/02-targeting-npc.png index 383fde3..cb3bcd5 100644 Binary files a/docs/screenshots/02-targeting-npc.png and b/docs/screenshots/02-targeting-npc.png differ diff --git a/docs/screenshots/03-access-inspection.png b/docs/screenshots/03-access-inspection.png index 05d9726..303ee54 100644 Binary files a/docs/screenshots/03-access-inspection.png and b/docs/screenshots/03-access-inspection.png differ diff --git a/docs/screenshots/04-radio-report.png b/docs/screenshots/04-radio-report.png index e6057e0..72b4b2f 100644 Binary files a/docs/screenshots/04-radio-report.png and b/docs/screenshots/04-radio-report.png differ diff --git a/docs/screenshots/05-late-night-avenue.png b/docs/screenshots/05-late-night-avenue.png index ff72e31..5d77551 100644 Binary files a/docs/screenshots/05-late-night-avenue.png and b/docs/screenshots/05-late-night-avenue.png differ diff --git a/docs/screenshots/06-night-flashlight.png b/docs/screenshots/06-night-flashlight.png index 24fe0c3..dbc433a 100644 Binary files a/docs/screenshots/06-night-flashlight.png and b/docs/screenshots/06-night-flashlight.png differ diff --git a/docs/screenshots/07-wand-screening.png b/docs/screenshots/07-wand-screening.png index be99dc3..c68b7a9 100644 Binary files a/docs/screenshots/07-wand-screening.png and b/docs/screenshots/07-wand-screening.png differ diff --git a/docs/screenshots/08-escalation-hud.png b/docs/screenshots/08-escalation-hud.png index 5c53ed8..a6ae978 100644 Binary files a/docs/screenshots/08-escalation-hud.png and b/docs/screenshots/08-escalation-hud.png differ diff --git a/docs/screenshots/09-body-camera-timeline.png b/docs/screenshots/09-body-camera-timeline.png index afc2ec1..da7f28a 100644 Binary files a/docs/screenshots/09-body-camera-timeline.png and b/docs/screenshots/09-body-camera-timeline.png differ diff --git a/docs/screenshots/11-precision-walk.png b/docs/screenshots/11-precision-walk.png index d7679ff..a1066fb 100644 Binary files a/docs/screenshots/11-precision-walk.png and b/docs/screenshots/11-precision-walk.png differ diff --git a/export_presets.cfg b/export_presets.cfg index ce7d1db..f6f2f7a 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -9,7 +9,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="build/step-line-linux.x86_64" +export_path="build/gig-line-linux.x86_64" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -40,7 +40,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="build/step-line-windows.exe" +export_path="build/gig-line-windows.exe" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -76,7 +76,7 @@ custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="build/step-line-macos.zip" +export_path="build/gig-line-macos.zip" patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" @@ -96,7 +96,7 @@ texture_format/etc2_astc=true codesign/enable=false codesign/timestamp=true codesign/identity_type=0 -application/bundle_identifier="biz.allucanget.step-line" +application/bundle_identifier="biz.allucanget.gig-line" application/icon="" application/icon_interpolation=4 application/export_angle=0 diff --git a/packaging/linux/AppRun b/packaging/linux/AppRun index 69fc679..b2b2f69 100644 --- a/packaging/linux/AppRun +++ b/packaging/linux/AppRun @@ -2,4 +2,4 @@ # AppImage entry point: launch the bundled game binary. SELF="$(readlink -f "$0")" HERE="$(dirname "$SELF")" -exec "${HERE}/usr/bin/step-line" "$@" +exec "${HERE}/usr/bin/gig-line" "$@" diff --git a/packaging/linux/build_appimage.sh b/packaging/linux/build_appimage.sh index 5d2f33a..ae834a4 100644 --- a/packaging/linux/build_appimage.sh +++ b/packaging/linux/build_appimage.sh @@ -1,15 +1,15 @@ #!/usr/bin/env bash -# Build a self-contained Step Line AppImage (all game data included). +# Build a self-contained Gig Line AppImage (all game data included). # # Prereqs: exported Linux binary in build/ (embed_pck=true), curl. # Usage: bash packaging/linux/build_appimage.sh [version] -# Output: build/step-line--x86_64.AppImage +# Output: build/gig-line--x86_64.AppImage set -euo pipefail HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" ROOT="$(cd "$HERE/../.." && pwd)" VERSION="${1:-$(sed -n 's/.*config\/version="\([^"]*\)".*/\1/p' "$ROOT/project.godot")}" -SRC_BIN="$ROOT/build/step-line-linux-${VERSION}.x86_64" +SRC_BIN="$ROOT/build/gig-line-linux-${VERSION}.x86_64" if [[ ! -f "$SRC_BIN" ]]; then echo "error: missing $SRC_BIN — run ./tools/build_releases.sh first" >&2 @@ -18,20 +18,20 @@ fi WORK="$(mktemp -d)" trap 'rm -rf "$WORK"' EXIT -APPDIR="$WORK/StepLine.AppDir" +APPDIR="$WORK/GigLine.AppDir" mkdir -p "$APPDIR/usr/bin" -cp "$SRC_BIN" "$APPDIR/usr/bin/step-line" +cp "$SRC_BIN" "$APPDIR/usr/bin/gig-line" # The export embeds the PCK (embed_pck=true), so no extra data files are needed. -cp "$HERE/step-line.desktop" "$APPDIR/step-line.desktop" +cp "$HERE/gig-line.desktop" "$APPDIR/gig-line.desktop" cp "$HERE/AppRun" "$APPDIR/AppRun" chmod +x "$APPDIR/AppRun" -cp "$HERE/step-line.png" "$APPDIR/step-line.png" +cp "$HERE/gig-line.png" "$APPDIR/gig-line.png" # Desktop entry + metainfo in standard locations (AppStream validation requires # the metainfo filename to match the component id, and the .desktop discoverable). mkdir -p "$APPDIR/usr/share/applications" "$APPDIR/usr/share/metainfo" -cp "$HERE/step-line.desktop" "$APPDIR/usr/share/applications/step-line.desktop" -cp "$HERE/step-line.appdata.xml" "$APPDIR/usr/share/metainfo/net.stepline.game.appdata.xml" +cp "$HERE/gig-line.desktop" "$APPDIR/usr/share/applications/gig-line.desktop" +cp "$HERE/gig-line.appdata.xml" "$APPDIR/usr/share/metainfo/net.gigline.game.appdata.xml" TOOL="${APPIMAGE_TOOL:-/tmp/appimagetool-x86_64.AppImage}" if [[ ! -f "$TOOL" ]]; then @@ -41,7 +41,7 @@ if [[ ! -f "$TOOL" ]]; then chmod +x "$TOOL" fi -OUT="$ROOT/build/step-line-${VERSION}-x86_64.AppImage" +OUT="$ROOT/build/gig-line-${VERSION}-x86_64.AppImage" echo "==> Building AppImage -> $OUT" # Extract-and-run avoids a FUSE dependency on the build host. APPIMAGE_EXTRACT_AND_RUN=1 "$TOOL" "$APPDIR" "$OUT" diff --git a/packaging/linux/step-line.appdata.xml b/packaging/linux/gig-line.appdata.xml similarity index 72% rename from packaging/linux/step-line.appdata.xml rename to packaging/linux/gig-line.appdata.xml index fae1183..fad9c96 100644 --- a/packaging/linux/step-line.appdata.xml +++ b/packaging/linux/gig-line.appdata.xml @@ -1,19 +1,19 @@ - net.stepline.game - Step Line + net.gigline.game + Gig Line Workplace security simulation on Hollywood Boulevard https://git.allucanget.biz/zwitschi/security-game - Step Line Team + Gig Line Team

- Step Line is a workplace security simulation about observation, communication, + Gig Line is a workplace security simulation about observation, communication, access verification, and proportionate escalation. Guard the steps and entrance of venues around Hollywood Boulevard: direct tourists, verify wristbands and IDs, screen guests, and escalate only when you have to.

- step-line.desktop + gig-line.desktop CC0-1.0 MIT diff --git a/packaging/linux/step-line.desktop b/packaging/linux/gig-line.desktop similarity index 79% rename from packaging/linux/step-line.desktop rename to packaging/linux/gig-line.desktop index 064c50f..e495cb8 100644 --- a/packaging/linux/step-line.desktop +++ b/packaging/linux/gig-line.desktop @@ -1,9 +1,9 @@ [Desktop Entry] Type=Application -Name=Step Line +Name=Gig Line Comment=Workplace security simulation on Hollywood Boulevard -Exec=step-line -Icon=step-line +Exec=gig-line +Icon=gig-line Terminal=false Categories=Game;Simulation; Keywords=security;simulation;hollywood; diff --git a/packaging/linux/step-line.png b/packaging/linux/gig-line.png similarity index 100% rename from packaging/linux/step-line.png rename to packaging/linux/gig-line.png diff --git a/packaging/windows/step-line.ico b/packaging/windows/gig-line.ico similarity index 100% rename from packaging/windows/step-line.ico rename to packaging/windows/gig-line.ico diff --git a/packaging/windows/step-line.nsi b/packaging/windows/gig-line.nsi similarity index 59% rename from packaging/windows/step-line.nsi rename to packaging/windows/gig-line.nsi index 53fa64a..9d1fb30 100644 --- a/packaging/windows/step-line.nsi +++ b/packaging/windows/gig-line.nsi @@ -1,8 +1,8 @@ -; Step Line Windows installer (NSIS 3). +; Gig Line Windows installer (NSIS 3). ; Build from the repo root with the exported self-contained exe: -; makensis /DVERSION=0.2.0 /DARTIFACT=build/step-line-windows-0.2.0.exe \ -; /DICON=packaging/windows/step-line.ico packaging/windows/step-line.nsi -; Outputs: build/step-line-setup-.exe +; makensis /DVERSION=0.2.0 /DARTIFACT=build/gig-line-windows-0.2.0.exe \ +; /DICON=packaging/windows/gig-line.ico packaging/windows/gig-line.nsi +; Outputs: build/gig-line-setup-.exe !ifndef VERSION !define VERSION "0.0.0" @@ -11,26 +11,26 @@ !error "ARTIFACT define required (path to exported windows exe)" !endif !ifndef ICON - !define ICON "packaging\windows\step-line.ico" + !define ICON "packaging\windows\gig-line.ico" !endif ; The installed executable uses this clean name (no spaces — NSIS /oname tokens ; on whitespace, so a spaced name breaks the File directive). -!define INSTALLED_EXE "step-line.exe" +!define INSTALLED_EXE "gig-line.exe" !ifndef OUT - !define OUT "build\step-line-setup-${VERSION}.exe" + !define OUT "build\gig-line-setup-${VERSION}.exe" !endif -!define COMPANY "Step Line Project" -!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Step Line" +!define COMPANY "Gig Line Project" +!define UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\Gig Line" Unicode true ManifestDPIAware true Icon "${ICON}" UninstallIcon "${ICON}" -Name "Step Line ${VERSION}" +Name "Gig Line ${VERSION}" OutFile "${OUT}" -InstallDir "$PROGRAMFILES64\Step Line" +InstallDir "$PROGRAMFILES64\Gig Line" RequestExecutionLevel admin Page directory @@ -47,13 +47,13 @@ Section "Install" WriteUninstaller "$INSTDIR\uninstall.exe" ; Shortcuts - CreateDirectory "$SMPROGRAMS\Step Line" - CreateShortCut "$SMPROGRAMS\Step Line\Step Line.lnk" "$INSTDIR\${INSTALLED_EXE}" - CreateShortCut "$SMPROGRAMS\Step Line\Uninstall.lnk" "$INSTDIR\uninstall.exe" - CreateShortCut "$DESKTOP\Step Line.lnk" "$INSTDIR\${INSTALLED_EXE}" + CreateDirectory "$SMPROGRAMS\Gig Line" + CreateShortCut "$SMPROGRAMS\Gig Line\Gig Line.lnk" "$INSTDIR\${INSTALLED_EXE}" + CreateShortCut "$SMPROGRAMS\Gig Line\Uninstall.lnk" "$INSTDIR\uninstall.exe" + CreateShortCut "$DESKTOP\Gig Line.lnk" "$INSTDIR\${INSTALLED_EXE}" ; Registry (Add/Remove Programs) - WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "Step Line" + WriteRegStr HKLM "${UNINST_KEY}" "DisplayName" "Gig Line" WriteRegStr HKLM "${UNINST_KEY}" "DisplayVersion" "${VERSION}" WriteRegStr HKLM "${UNINST_KEY}" "Publisher" "${COMPANY}" WriteRegStr HKLM "${UNINST_KEY}" "DisplayIcon" "$INSTDIR\${INSTALLED_EXE}" @@ -66,9 +66,9 @@ Section "Uninstall" Delete "$INSTDIR\${INSTALLED_EXE}" Delete "$INSTDIR\uninstall.exe" RMDir "$INSTDIR" - Delete "$SMPROGRAMS\Step Line\Step Line.lnk" - Delete "$SMPROGRAMS\Step Line\Uninstall.lnk" - RMDir "$SMPROGRAMS\Step Line" - Delete "$DESKTOP\Step Line.lnk" + Delete "$SMPROGRAMS\Gig Line\Gig Line.lnk" + Delete "$SMPROGRAMS\Gig Line\Uninstall.lnk" + RMDir "$SMPROGRAMS\Gig Line" + Delete "$DESKTOP\Gig Line.lnk" DeleteRegKey HKLM "${UNINST_KEY}" SectionEnd diff --git a/project.godot b/project.godot index 4032e89..a24a7ae 100644 --- a/project.godot +++ b/project.godot @@ -10,7 +10,7 @@ config_version=5 [application] -config/name="Step Line" +config/name="Gig Line" config/description="Workplace security simulation about observation, access verification, and proportionate escalation." config/version="0.5.0" run/main_scene="res://scenes/main.tscn" diff --git a/src/game/main.gd b/src/game/main.gd index 7af3137..053359a 100644 --- a/src/game/main.gd +++ b/src/game/main.gd @@ -8,4 +8,4 @@ func _ready() -> void: var manager := GameManager.new() manager.name = "GameManager" add_child(manager) - print("[Step Line] game started") \ No newline at end of file + print("[Gig Line] game started") \ No newline at end of file diff --git a/src/game/ui/hud.gd b/src/game/ui/hud.gd index 6519586..ceb662d 100644 --- a/src/game/ui/hud.gd +++ b/src/game/ui/hud.gd @@ -266,7 +266,7 @@ func _init() -> void: add_child(debug_label) func set_shift_state(coordinator: Object, scenario: Resource) -> void: - top_label.text = scenario.display_name if scenario else "Step Line" + top_label.text = scenario.display_name if scenario else "Gig Line" var mins := int(coordinator.elapsed_s) / 60 var secs := int(coordinator.elapsed_s) % 60 time_label.text = "shift %02d:%02d phase %s\nrep %.0f crowd %.0f%%" % [ diff --git a/src/game/ui/start_menu.gd b/src/game/ui/start_menu.gd index dc95514..7788219 100644 --- a/src/game/ui/start_menu.gd +++ b/src/game/ui/start_menu.gd @@ -47,7 +47,7 @@ func _build() -> void: center.add_child(column) var title := Label.new() - title.text = "STEP LINE" + title.text = "GIG LINE" title.add_theme_font_size_override("font_size", 44) title.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER column.add_child(title) diff --git a/src/game/world_builder.gd b/src/game/world_builder.gd index 38bad5e..0c2e873 100644 --- a/src/game/world_builder.gd +++ b/src/game/world_builder.gd @@ -270,7 +270,7 @@ func _build_marquee() -> void: _marquee_emissive.append(mat) marquee_label = Label3D.new() marquee_label.name = "MarqueeLabel" - marquee_label.text = "STEP LINE" + marquee_label.text = "GIG LINE" marquee_label.position = Vector3(0, 7.3, -3.55) marquee_label.modulate = Color(1, 0.6, 0.9) marquee_label.font_size = 160 diff --git a/src/test/tests/test_web_export.gd b/src/test/tests/test_web_export.gd index 5c9b80b..729d259 100644 --- a/src/test/tests/test_web_export.gd +++ b/src/test/tests/test_web_export.gd @@ -47,9 +47,9 @@ func test_web_preset_is_static_hosting_friendly() -> bool: func test_release_scripts_build_the_web_zip() -> bool: var build := FileAccess.get_file_as_string("res://tools/build_releases.sh") var a := TestUtils.check(build.contains('--export-release "Web"'), "build script exports Web") - var b := TestUtils.check(build.contains("step-line-web-${VERSION}.zip"), "build script names the web zip") + var b := TestUtils.check(build.contains("gig-line-web-${VERSION}.zip"), "build script names the web zip") var publish := FileAccess.get_file_as_string("res://tools/publish_release.sh") - var c := TestUtils.check(publish.contains("step-line-web-$VERSION.zip"), "publish script uploads the web zip") + var c := TestUtils.check(publish.contains("gig-line-web-$VERSION.zip"), "publish script uploads the web zip") return a and b and c func test_web_build_files_present_when_exported() -> bool: diff --git a/tools/build_releases.sh b/tools/build_releases.sh index fefa807..1d0177d 100755 --- a/tools/build_releases.sh +++ b/tools/build_releases.sh @@ -7,10 +7,10 @@ # - Run from the repository root. # # Produces: -# build/step-line-linux-.x86_64 -# build/step-line-windows-.exe -# build/step-line-macos-.zip -# build/step-line-web-.zip (Godot web build: static hosting, no threads) +# build/gig-line-linux-.x86_64 +# build/gig-line-windows-.exe +# build/gig-line-macos-.zip +# build/gig-line-web-.zip (Godot web build: static hosting, no threads) # set -euo pipefail @@ -21,24 +21,24 @@ mkdir -p build rm -f build/*.pck echo "==> Exporting Linux (x86_64)" -"$GODOT" --headless --export-release "Linux" "build/step-line-linux-${VERSION}.x86_64" +"$GODOT" --headless --export-release "Linux" "build/gig-line-linux-${VERSION}.x86_64" echo "==> Exporting Windows Desktop" -"$GODOT" --headless --export-release "Windows Desktop" "build/step-line-windows-${VERSION}.exe" +"$GODOT" --headless --export-release "Windows Desktop" "build/gig-line-windows-${VERSION}.exe" echo "==> Exporting macOS" -"$GODOT" --headless --export-release "macOS" "build/step-line-macos-${VERSION}.zip" +"$GODOT" --headless --export-release "macOS" "build/gig-line-macos-${VERSION}.zip" echo "==> Exporting Web (no threads, static-hosting friendly)" rm -rf build/web mkdir -p build/web "$GODOT" --headless --export-release "Web" "build/web/index.html" # Ship the web build as a single zip so it can be downloaded and served as-is. -rm -f "build/step-line-web-${VERSION}.zip" +rm -f "build/gig-line-web-${VERSION}.zip" if command -v zip >/dev/null 2>&1; then - (cd build/web && zip -q -r "../step-line-web-${VERSION}.zip" .) + (cd build/web && zip -q -r "../gig-line-web-${VERSION}.zip" .) else - python3 - "$PWD/build/web" "$PWD/build/step-line-web-${VERSION}.zip" <<'PYZIP' + python3 - "$PWD/build/web" "$PWD/build/gig-line-web-${VERSION}.zip" <<'PYZIP' import os, sys, zipfile src, out = sys.argv[1], sys.argv[2] with zipfile.ZipFile(out, "w", zipfile.ZIP_DEFLATED) as archive: diff --git a/tools/generate_textures.py b/tools/generate_textures.py index 578025b..c810fcc 100644 --- a/tools/generate_textures.py +++ b/tools/generate_textures.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Generate small authored textures for Step Line (assets/ import convention). +"""Generate small authored textures for Gig Line (assets/ import convention). All outputs are deterministic (fixed seeds), <=1024px, power-of-two where possible. Run from the repo root: python3 tools/generate_textures.py @@ -202,8 +202,8 @@ def awning(): for x in range(0, w, 32): d.arc([x, h - 24, x + 32, h + 40], 0, 180, fill=(80, 20, 24), width=6) f = font(96) - tw = d.textlength("STEP LINE", font=f) - d.text(((w - tw) / 2, 30), "STEP LINE", font=f, fill=(255, 250, 235)) + tw = d.textlength("GIG LINE", font=f) + d.text(((w - tw) / 2, 30), "GIG LINE", font=f, fill=(255, 250, 235)) # subtle top shading shade = Image.new("RGBA", (w, h), (0, 0, 0, 0)) sd = ImageDraw.Draw(shade) @@ -409,7 +409,7 @@ def generate_image(prompt: str, model: str, size: int, "Authorization": f"Bearer {_api_key()}", "Content-Type": "application/json", "HTTP-Referer": "https://git.allucanget.biz/zwitschi/security-game", - "X-Title": "Step Line", + "X-Title": "Gig Line", }, method="POST", ) @@ -472,7 +472,7 @@ def _run_ai(args: argparse.Namespace) -> None: def _build_arg_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser( - description="Generate Step Line textures (authored or via OpenRouter).") + description="Generate Gig Line textures (authored or via OpenRouter).") parser.add_argument( "--ai", action="store_true", help="generate textures through the OpenRouter image API " diff --git a/tools/model_pipeline.py b/tools/model_pipeline.py index 6b4e1cf..23518dc 100644 --- a/tools/model_pipeline.py +++ b/tools/model_pipeline.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Build the low-poly prop models used in the Step Line street scene. +"""Build the low-poly prop models used in the Gig Line street scene. The scene needs street furniture (bollards, benches, bins, planters, newspaper boxes, a hydrant) that reads as solid geometry instead of flat boxes. This tool @@ -629,7 +629,7 @@ def build_glb(prop: dict, palette: dict = None, atlas: dict = None) -> bytes: mr_view = add_view(atlas["metal_rough_png"]) gltf = { - "asset": {"version": "2.0", "generator": "step-line model_pipeline"}, + "asset": {"version": "2.0", "generator": "gig-line model_pipeline"}, "scene": 0, "scenes": [{"name": prop["name"], "nodes": [0]}], "nodes": [{"name": prop["name"], "mesh": 0}], @@ -889,7 +889,7 @@ def list_props(args) -> int: def build_parser() -> argparse.ArgumentParser: parser = argparse.ArgumentParser( - description="Build low-poly prop models for Step Line.") + description="Build low-poly prop models for Gig Line.") commands = parser.add_subparsers(dest="command", required=True) listing = commands.add_parser("list", help="print the prop catalogue") diff --git a/tools/npc_pipeline.py b/tools/npc_pipeline.py index c72d2cb..ce598f9 100644 --- a/tools/npc_pipeline.py +++ b/tools/npc_pipeline.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Build the low-poly, skinned NPC base mesh used by Step Line. +"""Build the low-poly, skinned NPC base mesh used by Gig Line. The mesh, armature, UVs and neutral material maps are authored procedurally in Blender and exported to `assets/models/generated/npc_base.glb`. Godot imports the diff --git a/tools/publish_release.sh b/tools/publish_release.sh index 55192c4..079aac5 100755 --- a/tools/publish_release.sh +++ b/tools/publish_release.sh @@ -59,14 +59,14 @@ fi # Artifacts that must exist (run tools/build_releases.sh first). portables=( - "build/step-line-linux-$VERSION.x86_64" - "build/step-line-windows-$VERSION.exe" - "build/step-line-macos-$VERSION.zip" + "build/gig-line-linux-$VERSION.x86_64" + "build/gig-line-windows-$VERSION.exe" + "build/gig-line-macos-$VERSION.zip" ) extras=( - "build/step-line-setup-$VERSION.exe" - "build/step-line-$VERSION-x86_64.AppImage" - "build/step-line-web-$VERSION.zip" + "build/gig-line-setup-$VERSION.exe" + "build/gig-line-$VERSION-x86_64.AppImage" + "build/gig-line-web-$VERSION.zip" ) all_artifacts=("${portables[@]}") for f in "${extras[@]}"; do @@ -81,7 +81,7 @@ API="$HOST/api/v1/repos/$REPO/releases" echo "==> Creating release $TAG on $HOST/$REPO" RELEASE_ID="$(curl -s -X POST "$API" "${AUTH[@]}" \ -H "Content-Type: application/json" \ - -d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"body\":\"Step Line $VERSION — playable prototype. See README for controls.\",\"draft\":false,\"prerelease\":false}" \ + -d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"body\":\"Gig Line $VERSION — playable prototype. See README for controls.\",\"draft\":false,\"prerelease\":false}" \ | python3 -c "import sys,json;print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true)" # If the release already exists (tag already pushed), reuse it. diff --git a/tools/screen_designs.py b/tools/screen_designs.py index 665c9ff..18eae9c 100644 --- a/tools/screen_designs.py +++ b/tools/screen_designs.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Generate screen-design reference images for Step Line and compare captures. +"""Generate screen-design reference images for Gig Line and compare captures. This tool turns the screen descriptions that already live in `docs/` (README screenshot captions, ADRs 0007-0010, PLAN.md, architecture.md, and the @@ -507,7 +507,7 @@ SCREENS = [ "prompt": ( "First-person 3D game screenshot at night from a security guard standing at " "the bottom of venue steps, looking at a lit entrance door with a striped " - "awning and STEP LINE sign. Subtle head-height view, brick facade, dark blue " + "awning and GIG LINE sign. Subtle head-height view, brick facade, dark blue " "night sky, minimal HUD: a small cyan 'Precision walk (Shift)' chip at the " "bottom left, shift clock top right, thin control hint line at the bottom. " "Realistic lighting, muted colours, no people"), @@ -944,7 +944,7 @@ def _call_openrouter(body, timeout=180): "Authorization": f"Bearer {key}", "Content-Type": "application/json", "HTTP-Referer": "https://git.allucanget.biz/zwitschi/security-game", - "X-Title": "Step Line", + "X-Title": "Gig Line", }, method="POST", ) @@ -1018,7 +1018,7 @@ def judge(args): def build_parser(): parser = argparse.ArgumentParser( - description="Generate and compare Step Line screen-design references.") + description="Generate and compare Gig Line screen-design references.") commands = parser.add_subparsers(dest="command", required=True) gen = commands.add_parser(