ifndef::imagesdir[:imagesdir: ./images] [[section-runtime-view]] == Runtime View === Walk the block . Player launches game → `AGigLineGameModeBase` spawns `AGigLineCharacter` at `PlayerStart` `(-13336, -1150, 600)`. . Character falls 144 cm to road surface (Z 456) and begins walking. `StartLocation` captured on first grounded frame. . Player holds W → `IA_Move` fires → `ApplyMove(1, 0)` → `AddMovementInput(ForwardVector, 1)` → capsule moves at 450 cm/s. . Mouse move → `IA_Look` fires → yaw/pitch applied to controller rotation → camera follows (attached to capsule at 160 cm eye height). . Player presses R → `ResetToStart` → teleport to `StartLocation`/`StartRotation`, `StopMovementImmediately`, reset control rotation. . Player presses Escape → `TogglePause` → `SetPause(true)`, switch to `FInputModeUIOnly`, show cursor. World timers stop; core tickers continue. . Player presses Escape again → `TogglePause` → `SetPause(false)`, switch to `FInputModeGameOnly`, hide cursor. === Screenshot capture . `Tools/render_screenshots.sh` compiles editor, builds `ReviewMap` from `Tools/ue_build_review_map.py`, launches game in `-game` mode. . `AGigLineShotActor` iterates the camera list, sets view, calls `HighResShot 1280x720`, waits for capture. . On last camera, requests engine quit. PNGs are copied to `Screenshots/` and committed. === QA self-test (`-qaselftest`) . Core ticker starts at `BeginPlay` (not a world timer — world timers freeze on pause). . 1.0 s: begin driving forward input. . 3.0 s: stop, measure displacement (> 200 cm = PASS). . 3.5 s: call `ResetToStart`. . 4.0 s: measure distance from spawn (< 100 cm = PASS). . 4.5 s: call `TogglePause`, check `IsGamePaused()` (= true = PASS). . 5.5 s: call `TogglePause`, check `IsGamePaused()` (= false = PASS). . 6.0 s: swept ground transect across three lanes (Y −1400, −167, +1000), X −14900 to −9420 at 200 cm spacing. 84 samples, 0 holes = PASS. . 7.0 s: final verdict logged. === Build and import pipeline . Blender headless (`Tools/export_*.py`) reads `.blend` files, applies metre→centimetre conversion, exports FBX with `ue_metric_v1` preset. . Unreal headless (`Tools/ue_import_*.py`) imports FBX via Interchange, places meshes at geographic coordinates, sets collision profiles. . `Tools/ue_build_demo_map.py` assembles `DemoMap`: creates/repositions actors, sets lighting, saves map and assets.