Rename Step Line to Gig Line

Update the game name in project.godot, export presets, UI/marquee/title strings, packaging (AppImage/NSIS/desktop/appdata), tools, docs, and the generated prop GLBs. Packaging assets and README screenshots are regenerated. Headless suite 209/209 and Python tooling tests pass.
This commit is contained in:
zwitschi committed 2026-11-01 12:52:17 +01:00
1 parent 0eb17e3bb4
commit 3989d7b2e5
44 files changed
+180 -124

No files matched your search

+10 -10
View File
@@ -7,10 +7,10 @@
# - Run from the repository root.
#
# Produces:
# build/step-line-linux-<version>.x86_64
# build/step-line-windows-<version>.exe
# build/step-line-macos-<version>.zip
# build/step-line-web-<version>.zip (Godot web build: static hosting, no threads)
# build/gig-line-linux-<version>.x86_64
# build/gig-line-windows-<version>.exe
# build/gig-line-macos-<version>.zip
# build/gig-line-web-<version>.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:
+5 -5
View File
@@ -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 "
+3 -3
View File
@@ -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")
+1 -1
View File
@@ -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
+7 -7
View File
@@ -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.
+4 -4
View File
@@ -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(