qa: package + document controls (0.1.0 release check PASS) (#18)

Merged PR #18: package + document controls

Co-authored-by: Zwitschi <zwitschi82@gmail.com>
This commit was merged in pull request #18.
This commit is contained in:
zwitschi authored and zwitschi committed 2026-11-08 15:22:34 +01:00
1 parent b27d30d556
commit 3a1db78473
6 files changed
+82 -2

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
# Controls (`0.1.0` walkable demo)
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.
| Action | Key | Notes |
| --- | --- | --- |
| Move forward | `W` | 4 m/s walk |
| Move back | `S` | |
| Strafe right | `D` | |
| Strafe left | `A` | |
| Look | Mouse | Captured on launch; `Escape` releases it |
| Jump | `Space` | |
| Reset to start | `R` | Returns to the grounded spawn point |
| Pause / release mouse | `Escape` | Second press resumes and recaptures the mouse |
## Notes
- Movement is relative to where you are looking (controller yaw), so the capsule
stays upright on the sloped street.
- 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`.
## 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.:
```bash
python3 Tools/input_test.py --sequence move:2,look:3
```
It drives the focused game window exactly like real hardware, which is how the
controls were regression-tested on the packaged build.
Binary file not shown.
+23 -1
View File
@@ -41,7 +41,7 @@ Measured at 1440p on the development workstation: Bazzite, Ryzen 7 7700X, 64 GB
| `0.1.0` | Collision and packaging | PASS — no blocking collision, no invisible walls, no seam gaps (see audit note) | `-qaselftest` on the packaged build, 2026-11-08 | 2026-11-08 |
| `0.1.0` | 60 FPS at 1440p | PASS — 2.42 ms avg (414 fps), p99 3.01 ms at 2560×1440, TSR on, VSync off, no FG | `-qaselftest` perf capture, `Docs/perf/0.1.0-walk-frametimes.csv` | 2026-11-08 |
| `0.1.0` | Fresh checkout build | PASS — clean clone of `main` (`4bc41e9`), `git lfs pull` + `check-lfs.sh` OK (130 LFS files), both `GigLineEditor` and `GigLine` targets built with the documented engine | `/tmp/fresh-check`, 2026-11-08 | 2026-11-08 |
| `0.1.0` | Packaged Linux build | — | — | — |
| `0.1.0` | Packaged Linux build | PASS — packaged Development build launches straight into DemoMap, no missing-asset/linker errors; controls shown in-game and in `Docs/controls.md` | `Docs/perf/0.1.0-packaged-hud-controls.png`, 2026-11-08 | 2026-11-08 |
## `0.1.0` — Placement vs references — record (2026-11-08)
@@ -180,3 +180,25 @@ Engine/Build/BatchFiles/Linux/Build.sh GigLine Linux Development \
`-project=` argument.
**Verdict: PASS.**
## `0.1.0` — Packaged Linux build + documented controls — record (2026-11-08)
**Package:** `RunUAT BuildCookRun … -platform=Linux -clientconfig=Development
-cook -build -stage -pak -archive -archivedirectory=/run/media/system/DATA/Builds/GigLineQA`
→ `EXIT=0` (Success).
**Launch:** `./GigLine.sh -windowed` (plain, no map argument) →
`LogLoad: LoadMap: /Game/Hollywood/DemoMap?Name=Player` — the packaged game opens
the walkable demo directly (the default-map fix holds in a package, not just the
editor). No `LogLinker`/missing-asset/failed-to-find errors in the run.
**Controls documented and shown in-game:**
- `Docs/controls.md` — full binding table (WASD, mouse look, Space, R, Esc) plus
how to test input headlessly.
- `AGigLineHUD` now draws a control legend bottom-right every frame:
"WASD move · Mouse look · Space jump · R reset · Esc pause".
- Verified in the packaged capture: the bottom-right text bbox is 426×12 px
(a single right-aligned line), attributed text bottom-left. Screenshot:
`Docs/perf/0.1.0-packaged-hud-controls.png`.
**Verdict: PASS.**
@@ -26,4 +26,15 @@ void AGigLineHUD::DrawHUD()
DrawText(AttributionLine, Ink, X, Y, nullptr, TextScale);
DrawText(LicenceLine, Ink, X, Y + LineHeight, nullptr, TextScale * 0.82f);
// Control legend, bottom-right (0.1.0 release check: controls shown in-game).
if (!ControlsLine.IsEmpty())
{
float IgnoredW = 0.0f, ControlsH = 0.0f;
GetTextSize(ControlsLine, IgnoredW, ControlsH, nullptr, TextScale * 0.82f);
const float CX = Canvas->ClipX - MarginPx - IgnoredW;
const float CY = Canvas->ClipY - MarginPx - ControlsH;
DrawText(ControlsLine, Shadow, CX + 1.0f, CY + 1.0f, nullptr, TextScale * 0.82f);
DrawText(ControlsLine, Ink, CX, CY, nullptr, TextScale * 0.82f);
}
}
+8
View File
@@ -28,6 +28,14 @@ public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attribution")
FString AttributionLine = TEXT("\u00A9 OpenStreetMap contributors");
/**
* Control legend, shown bottom-right so the 0.1.0 demo documents its own
* controls in-game (release check: "controls documented in Docs/ and shown
* 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");
/** Licence line, including where the licence can be read. */
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Attribution")
FString LicenceLine = TEXT("Data \u00A9 OpenStreetMap contributors, ODbL 1.0 \u2014 openstreetmap.org/copyright");
+1 -1
View File
@@ -114,7 +114,7 @@ The MPFB character asset is planned as the NPC template (see `ROADMAP.md`). Keep
- [x] Remove TEMP QA diagnostics (`GigLine SIM` / `GigLine GROUND` log lines and the settle-timer log) from `GigLineCharacter.cpp` before the release tag, or gate them behind a cvar. **Done 2026-11-08:** SIM/GROUND probes were already removed in the input fix (PR #8); the remaining settle-timer + `GigLine IN:` input-setup logs are now gated behind the `gigline.SetupLogs` cvar (default 0 in `DefaultEngine.ini [ConsoleVariables]`, re-enable at runtime). Verified on the packaged build: 0 setup-log lines, `-qaselftest` still all PASS.
- [x] 60 FPS at 1440p on the dev workstation (Bazzite, Ryzen 7 7700X, 64 GB RAM, RTX 5070 Ti 16 GB) using a documented quality preset; record upscaling state; report performance without frame generation. **Measured 2026-11-08:** Epic preset, TSR on, VSync off, no frame gen — **2.42 ms avg (414 fps), p99 3.01 ms** at 2560×1440 over the fixed `-qaselftest` walk route; frame-time series in `Docs/perf/0.1.0-walk-frametimes.csv`, record in `Docs/release-checks.md`.
- [x] Fresh project checkout builds with the documented external engine installation. **Verified 2026-11-08:** clean clone of `main` (`4bc41e9`) + `git lfs pull` (`check-lfs.sh` OK, 130 files); `GigLineEditor` (28.2 s) and `GigLine` (26.9 s) both `Result: Succeeded` with the documented engine path. Record in `Docs/release-checks.md`.
- [ ] Package Linux build with documented controls.
- [x] Package Linux build with documented controls. **Verified 2026-11-08:** packaged Development build (`EXIT=0`) launches straight into `/Game/Hollywood/DemoMap`, no missing-asset/linker errors. Controls documented in `Docs/controls.md` and drawn in-game bottom-right by `AGigLineHUD` ("WASD move · Mouse look · Space jump · R reset · Esc pause"); evidence screenshot `Docs/perf/0.1.0-packaged-hud-controls.png`.
- [ ] Tag `v0.1.0` and write `CHANGELOG.md` entry; then remove this section.
### Documentation