From 9ce70113899b01fe7e47a6eeb5b7b54b5a240c7d Mon Sep 17 00:00:00 2001 From: Zwitschi Date: Mon, 9 Nov 2026 12:21:11 +0100 Subject: [PATCH] docs(input): the V toggle, the harness switches, and the HUD line Docs/controls.md documented the 0.1.0 bindings only, so the camera toggle added with 0.2.0 was undocumented for the player-facing set and the review switches were undocumented everywhere. Adds the V row, a changes-since-0.1.0 note that first person stays the default, and a table for -thirdperson / -walk / -qaselftest with the note that the walking capture is driven per shot rather than by the switch. The in-game HUD line gains 'V view' so the packaged build documents it too. --- Docs/controls.md | 19 ++++++++++++++++++- Game/GigLine/Source/GigLine/GigLineHUD.h | 2 +- TODO.md | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Docs/controls.md b/Docs/controls.md index 591aec2..287cef4 100644 --- a/Docs/controls.md +++ b/Docs/controls.md @@ -1,4 +1,4 @@ -# Controls (`0.1.0` walkable demo) +# Controls Keyboard and mouse. The same list is shown in-game, bottom-right of the frame (`AGigLineHUD`), and the packaged Linux build ships with these bindings. @@ -12,6 +12,7 @@ Keyboard and mouse. The same list is shown in-game, bottom-right of the frame (` | Jump | `Space` | | | Reset to start | `R` | Returns to the grounded spawn point | | Pause / release mouse | `Escape` | Second press resumes and recaptures the mouse | +| Swap first / third person | `V` | First person is the default; the body is hidden in that view | ## Notes @@ -19,6 +20,22 @@ Keyboard and mouse. The same list is shown in-game, bottom-right of the frame (` - The mouse is captured on launch, so looking works without clicking first. `Escape` toggles the capture as part of pause. - Bindings are Enhanced Input actions in `/Game/Input` built by `Tools/ue_create_input_assets.py`; the mapping context is `IMC_Default`. +## Changes since `0.1.0` + +- **`V` swaps first and third person** (`0.2.0`, `IA_ToggleCamera`). The shipped default view is still first person, as the owner decided for `0.1.0`; third person adds a collision-tested spring-arm camera and a visible, animated body. `Escape` still pauses and releases the mouse in either view. + +## Review and harness switches + +These are command-line switches for the screenshot pipeline and QA runs, not player controls. They exist so a capture is reproducible rather than dependent on a human pressing keys at the right moment. + +| Switch | Effect | +| --- | --- | +| `-thirdperson` | Starts the pawn in the third-person rig, so a capture shows the body without anyone pressing `V` | +| `-walk` | Holds forward input from the first frame — what makes the stride shot possible | +| `-qaselftest` | Runs the scripted walk / reset / pause / transect checks and quits | + +The walking shot is driven per shot rather than by the switch: the shot actor enables the walk only while a tracking (`ShotFollow`) camera is being captured, and returns the pawn to spawn afterwards, so the fixed-camera shots still find it in place. + ## Testing input without a physical keyboard `Tools/input_test.py` injects OS-level keyboard/mouse events through a virtual `/dev/uinput` device (see `Tools/input_emulation.py`), e.g.: diff --git a/Game/GigLine/Source/GigLine/GigLineHUD.h b/Game/GigLine/Source/GigLine/GigLineHUD.h index adff4ec..491ac5e 100644 --- a/Game/GigLine/Source/GigLine/GigLineHUD.h +++ b/Game/GigLine/Source/GigLine/GigLineHUD.h @@ -34,7 +34,7 @@ public: * in-game"). Keep in sync with Docs/controls.md. */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Controls") - FString ControlsLine = TEXT("WASD move \u00B7 Mouse look \u00B7 Space jump \u00B7 R reset \u00B7 Esc pause"); + FString ControlsLine = TEXT("WASD move \u00B7 Mouse look \u00B7 Space jump \u00B7 V view \u00B7 R reset \u00B7 Esc pause"); /** Licence line, including where the licence can be read. */ UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attribution") diff --git a/TODO.md b/TODO.md index 5690972..d06da0e 100644 --- a/TODO.md +++ b/TODO.md @@ -28,7 +28,7 @@ Actionable task list for this project. This file is the single, central place fo - [x] Add third-person camera following the player body. Done 2026-11-09: `USpringArmComponent` + camera on the capsule, boom 340 cm, lag 8, and the body is the animated skeletal mesh with the skin material. Review shot 5 (`demo-third-person`, `Screenshots/README.md`) shows the rig; the shipped default view stays first person. - [x] Add first/third-person toggle. **V**, via `IA_ToggleCamera`; the toggle swaps the active camera and the body's visibility. `-thirdperson` on the command line starts in third person so the review is reproducible. - [x] Add camera collision to prevent clipping through geometry. The spring arm's collision test (`bDoCollisionTest`, probe 12 cm on `ECC_Camera`) shortens the boom instead of letting the camera pass through a wall. **Not yet exercised against a wall in a shot** — the spawn point has open space behind it, so this is implemented but unproven. -- [ ] Document any input changes. +- [x] Document any input changes. `Docs/controls.md` gains the **V** first/third-person toggle (first person stays the default), a "changes since 0.1.0" note, and a table of the review harness switches (`-thirdperson`, `-walk`, `-qaselftest`). The in-game HUD line now reads `WASD move · Mouse look · Space jump · V view · R reset · Esc pause`. ### Release checks