Files
gig-line/Tools
zwitschi 5e5e5ae9b4 refs: survey the sibling project and recalibrate the hero facade
Tools/sibling_asset_audit.py reads the sibling security-game project's prop
library straight from the GLB headers: 20 street props, 11.8k triangles, every
one with a Blender source. The 50 .blend sources are copied to
Art/props/blender_src/ with a manifest; nothing is imported into Unreal yet. Its
building meshes are deliberately not taken - they are Godot GLBs built around a
29.6 m facade that this project measured at 25.75 m.

The facade proportions were wrong against the photograph: 5.7 m of blank wall
above the capitals. Entablature is now 3.4 m, parapet 2.2 m, with architrave and
cornice bands and square pedestals, so the elevation reads as layered stone.
2026-11-07 12:20:41 +01:00
..

Tools

Repeatable import/export and processing helpers. Anything that was done twice by hand belongs here.

Conventions

  • One script, one job. No interactive prompts; every input is an argument.
  • Each script documents its input format, output format, and the exact tool version it was tested with.
  • Blender scripts run headless (blender --background --python), so they can be re-run for a regression check.
  • No credentials, no absolute machine paths, no writes outside the project by default.
  • A script that produces game content logs what it produced, so Game/Content can be audited against it.

Helpers

  • render_screenshots.sh — visual-review pipeline: rebuilds /Game/Test/ReviewMap from current content (ue_build_review_map.py), runs the game on it in -game mode, lets AGigLineShotActor (Game/GigLine/Source/GigLine/) capture the fixed camera list, and copies the PNGs into the gitignored Screenshots/. See Screenshots/README.md.
  • check-lfs.sh — repository guard: fails if git-lfs or the lfs filter is missing, or if an LFS-tracked file was committed as a plain blob.
  • site_assembly.py — assembles terrain + street + blockout into one file and raycasts the walking routes for holes and steps.
  • street_mesh.py — road, kerbs, and sidewalks on the DEM, in the project frame; kerbs flush at the three crossings.
  • terrain_from_dem.py — terrain grid from the committed DEM, with building footprints cut out.
  • blosm_blockout.py — headless Blosm import of the committed .osm extract into a .blend, with a per-building scale report. Exact invocation in Art/blender/README.md.
  • page_image_fetch.py — resolves a web page's og:image and downloads it, with page URL and hash in a local sidecar. Works for Flickr, Commons file pages, and most photo blogs.
  • commons_fetch.py — Wikimedia Commons reference fetcher. Search, exact File: titles, or a whole Commons category (--category), thumbnails, provenance sidecar.json per folder. Wikimedia throttles upload.wikimedia.org (HTTP 429), so keep batches to six or fewer files and pass --delay 3; a throttled file is skipped and recorded rather than aborting the run. Writes only into the gitignored Art/reference/; reference images are never committed.

Planned helpers

  • Blender export preset runner (named presets, metric scale assertion)
  • OSM extract fetch and manifest writer (records date, bounds, checksum)
  • QGIS processing steps as batch scripts, so the geo cleanup is reproducible rather than GUI-only