Skärmdumpar på osynlig skärm och deterministiska bildrutor
All checks were successful
release / build-release (push) Successful in 1m42s
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:
@@ -6,6 +6,10 @@
|
||||
// PNG:er till doc/img/. Vägarna genom banorna räknas ut med BFS från
|
||||
// bandatan. Kör om detta när grafik, UI eller banor ändrats, och committa
|
||||
// bilderna – README och wikin pekar på dem.
|
||||
//
|
||||
// På Linux körs spelet på en osynlig skärm (headless Wayfire + Xwayland,
|
||||
// se headless.go) så att inget fönster syns eller tar fokus. METRO_HEADLESS=0
|
||||
// stänger av det.
|
||||
package main
|
||||
|
||||
import (
|
||||
@@ -164,6 +168,14 @@ func main() {
|
||||
if runtime.GOOS == "windows" {
|
||||
exe += ".exe"
|
||||
}
|
||||
hl, err := startHeadless(filepath.Join(root, "build"))
|
||||
must(err)
|
||||
if hl != nil {
|
||||
fmt.Printf("» osynlig skärm: %s / %s (inget syns på skrivbordet)\n", hl.wayland, hl.x11)
|
||||
defer hl.stop()
|
||||
} else {
|
||||
fmt.Println("» ingen headless-kompositor (wayfire saknas eller METRO_HEADLESS=0): använder skärmen")
|
||||
}
|
||||
_ = demo
|
||||
for _, s := range shots {
|
||||
args := []string{"-mute", "-nosave", "-script", strings.ReplaceAll(s.script, "$OUT", out)}
|
||||
@@ -175,7 +187,11 @@ func main() {
|
||||
}
|
||||
run := exec.Command(exe, args...)
|
||||
run.Dir, run.Stdout, run.Stderr = filepath.Dir(exe), os.Stdout, os.Stderr
|
||||
if hl != nil {
|
||||
run.Env = hl.env()
|
||||
}
|
||||
if err := run.Run(); err != nil {
|
||||
hl.stop()
|
||||
fail(fmt.Errorf("%s: %w", s.script, err))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user