Skärmdumpar på osynlig skärm och deterministiska bildrutor
All checks were successful
release / build-release (push) Successful in 1m42s

- tools/shots/headless.go: startar en egen headless Wayfire (wlroots
  headless-backend + Xwayland) och kör spelet där, så att inga fönster syns
  eller tar fokus från det man gör på datorn; snäll avstängning och
  städning av sockets; METRO_HEADLESS=0 använder skärmen
- skriptläget ritar scenen synkront vid shot så att bilden alltid speglar
  exakt den uppdateringen oavsett FPS (två körningar ger identiska PNG:er)
- README/roadmap: hur den osynliga skärmen fungerar och används manuellt

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-24 11:40:49 +02:00
parent 915c684dc2
commit ef6cfaccc8
12 changed files with 155 additions and 1 deletions

View File

@@ -107,6 +107,15 @@ go run ./tools/shots # bygger debug, kör spelet med -script, skriver doc/img
committa `doc/img/` i samma commit, så visar README och wiki alltid aktuell
grafik. Nya vyer läggs till i listan i `tools/shots/main.go`.
**Osynlig skärm:** på Linux startar `tools/shots` en egen headless
wlroots-kompositor (Wayfire med `WLR_BACKENDS=headless` och Xwayland) och
kör spelet där, så att skärmdumparna varken syns eller tar fokus från det
man själv gör på datorn. Bilderna är pixelidentiska med riktiga skärmen
(mjukvarurendering, nearest-filter). `METRO_HEADLESS=0` stänger av det;
saknas `wayfire` används skärmen. Samma knep för manuella körningar:
`DISPLAY=:N WAYLAND_DISPLAY=wayland-N ./metro-puzzle-jp …` mot en startad
headless-instans.
### CI
`.gitea/workflows/release.yaml` kör `go vet` + `go test`, bygger