#!/usr/bin/env bash # Render in-game screenshots for visual review into /Screenshots/ (gitignored). # # Usage: Tools/render_screenshots.sh # Rebuilds /Game/Test/ReviewMap from current content, runs the game on it # (the GigLineShotActor walks three cameras, captures, quits), then copies # the PNGs into Screenshots/. 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/3 build review map ==" 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 echo "== 2/3 run game on review map ==" # -windowed -NoSplash: a fullscreen swap can leave the first frame uncaptured. ./Engine/Binaries/Linux/UnrealEditor-Cmd "$PROJ" /Game/Test/ReviewMap \ -game -windowed -ResX=1920 -ResY=1080 -nopause -nosplash -stdout echo "== 3/3 collect screenshots ==" mkdir -p "$REPO/Screenshots" rm -f "$REPO"/Screenshots/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 cp -f "$src" "$REPO/Screenshots/" found=1 done [ "$found" = "1" ] || { echo "ERROR: no review-*.png found"; exit 1; } ls -la "$REPO/Screenshots"