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