#!/usr/bin/env bash # Render in-game screenshots for visual review into /Screenshots/ (gitignored). # # Usage: Tools/render_screenshots.sh # Rebuilds /Game/Test/ReviewMap and /Game/Hollywood/DemoMap (shot lists), runs # the game on each map (the GigLineShotActor walks the cameras, captures, quits), # and copies the PNGs into Screenshots/. PNGs are never committed. set -euo pipefail REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" ENGINE="${UE_ENGINE_DIR:-/run/media/system/DATA/Engines/UE_5.8.4}" PROJ="$REPO/Game/GigLine/GigLine.uproject" echo "== 1/4 build review + demo shot maps ==" cd "$ENGINE" ./Engine/Binaries/Linux/UnrealEditor-Cmd "$PROJ" \ -run=pythonscript -script="$REPO/Tools/ue_build_review_map.py" \ -nullrhi -unattended -nopause -stdout cat /tmp/ue-review-map-result.txt | tail -3 run_capture() { local map="$1" label="$2" echo "== capture: $label ==" ./Engine/Binaries/Linux/UnrealEditor-Cmd "$PROJ" "$map" \ -game -windowed -ResX=1920 -ResY=1080 -nopause -nosplash -stdout } echo "== 2/4 run game on review map (hero/scene shots) ==" run_capture "/Game/Test/ReviewMap" "review" echo "== 3/4 run game on demo map (walkable-demo shots) ==" run_capture "/Game/Hollywood/DemoMap" "demo" echo "== 4/4 collect screenshots ==" mkdir -p "$REPO/Screenshots/demo" rm -f "$REPO"/Screenshots/review-*.png "$REPO"/Screenshots/demo/review-*.png found=0 for src in \ "$REPO/Game/GigLine/Saved/Screenshots"/*/review-*.png \ "$REPO/Game/GigLine/Saved/Screenshots"/*/*/review-*.png \ "$HOME/.config/Epic/GigLine/Saved/Screenshots"/*/review-*.png; do [ -e "$src" ] || continue name=$(basename "$src") if [[ "$name" == review-?("")-demo-* || "$name" == review-*-demo-* || "$name" == review-0?-demo-* ]] \ || [[ "$name" == *demo-* ]]; then cp -f "$src" "$REPO/Screenshots/demo/$name" else cp -f "$src" "$REPO/Screenshots/$name" fi found=1 done [ "$found" = "1" ] || { echo "ERROR: no review-*.png found"; exit 1; } echo "--- Screenshots/ ---" ls -1 "$REPO/Screenshots" echo "--- Screenshots/demo/ ---" ls -1 "$REPO/Screenshots/demo"