Rendering and presentation - Shared surface-material module (src/game/materials.gd) with per-surface roughness/metallic/uv profiles; ACES tonemapping, glow, fog and phase-driven sky energy. WorldBuilder rebuilt on those profiles with facade windows that light up, door trim/handles, curb, lane dashes, bollards, bench, bin and planter foliage. - NPC silhouettes: per-role clothing palettes, caps/hoods/backpacks/sunglasses, hands and shoes, arm/leg walk swing. - Six generated low-poly GLB props (bollards, bench, bin, planter, newspaper box, hydrant) built by tools/model_pipeline.py, loaded by WorldBuilder with a procedural fallback; ADR-0012. Selection and movement - Focus ranking by view angle then distance (NpcFocus.rank_indices); Tab and the mouse wheel cycle nearby people initially, right click clears focus with a re-acquire grace, HUD shows the candidate count, Shift walks at half speed. ADR-0011. Windowed smoke extended to cover wheel cycling and clearing. QA tooling - screen_designs.py catalogue grown to 19 screens (8 scene, 11 UI) plus a `list` subcommand; draft generation keeps existing AI references unless --force. Web export - New Web preset using the non-threaded Godot template (static hosting, no COOP/COEP). tools/build_releases.sh exports build/web and packages build/step-line-web-<ver>.zip; publish_release.sh uploads it with the desktop artifacts. test_web_export.gd covers the preset and release wiring. Verification - Headless suite 177 -> 181, Python tooling 53 tests, all eight smokes pass (including the windowed focus/wheel smoke). Web bundle serves index.html, index.wasm (35 MB) and index.pck (30 MB) with HTTP 200 from a static server. - Version 0.3.0; README, PLAN, RELEASING, TODO/DONE and MEMORY updated.
58 lines
2.0 KiB
Bash
Executable File
58 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build distributable desktop executables with the Godot export pipeline.
|
|
#
|
|
# Requirements:
|
|
# - Godot 4.3 (or the version in project.godot `config/features`) on PATH,
|
|
# with export templates installed (see docs/RELEASING.md).
|
|
# - 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)
|
|
#
|
|
set -euo pipefail
|
|
|
|
GODOT="${GODOT:-godot}"
|
|
VERSION="$(grep -oP 'config/version="\K[^"]+' project.godot)"
|
|
mkdir -p build
|
|
# Presets now embed the PCK into a single binary; drop stale .pck leftovers.
|
|
rm -f build/*.pck
|
|
|
|
echo "==> Exporting Linux (x86_64)"
|
|
"$GODOT" --headless --export-release "Linux" "build/step-line-linux-${VERSION}.x86_64"
|
|
|
|
echo "==> Exporting Windows Desktop"
|
|
"$GODOT" --headless --export-release "Windows Desktop" "build/step-line-windows-${VERSION}.exe"
|
|
|
|
echo "==> Exporting macOS"
|
|
"$GODOT" --headless --export-release "macOS" "build/step-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"
|
|
if command -v zip >/dev/null 2>&1; then
|
|
(cd build/web && zip -q -r "../step-line-web-${VERSION}.zip" .)
|
|
else
|
|
python3 - "$PWD/build/web" "$PWD/build/step-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:
|
|
for root, _dirs, files in os.walk(src):
|
|
for name in files:
|
|
path = os.path.join(root, name)
|
|
archive.write(path, os.path.relpath(path, src))
|
|
PYZIP
|
|
fi
|
|
|
|
echo ""
|
|
echo "Artifacts:"
|
|
ls -la build/*"${VERSION}"*
|
|
echo ""
|
|
echo "Upload to: https://git.allucanget.biz/zwitschi/security-game/releases"
|
|
echo "See docs/RELEASING.md for the full release checklist."
|