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:
1 parent
0eb17e3bb4
commit
3989d7b2e5
44 files changed
+180
-124
No files matched your search
+10
-10
@@ -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:
|
||||
|
||||
@@ -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 "
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in new issue
Block a user