Screenshotting Ingress
Im Vorfeld der Ingress-Aktion "Divide & Conquer" am 7. Februar 2014, bei der über 40 Spieler mehrere große Felder über die Städte Mainz und Wiesbaden spannten, kam der Wunsch auf, das Geschehen auf der Intel Map über Screenshots nachverfolgbar zu machen - auch, um im Anschluss ein schön animiertes GIF oder einen Film präsentieren zu können.
Nun war dieses Vorhaben leider nicht ganz so trivial umzusetzen, wie erhofft. Die Herausforderungen und wie diese zu lösen sind, habe ich im folgenden beschrieben.
Screenshots
Reload der Intel-Map
Die Karte aktualisiert sich nicht auf unbegrenzte Dauer automatisch. Für die inoffizielle Erweiterung IITC gibt es ein entsprechendes Plugin, aber hier sollte die Original-Map verwendet werden. Benutzerkationen per JavaScript zu simulieren, erwies sich als schwierig, so dass nur der Weg über einen Reload der ganzen Seite übrig blieb. Extensions wie Auto Refresh Plus ermöglichen ein zeitgesteuertes Neuladen eines Tabs. Ein Nachteil ist, dass es im Anschluss eine Weile dauert, bis die Map mit allen Portalen, Links und Feldern wieder neu aufgebaut wurde.
Regelmäßige Screenshots
Zum Fotografieren der Map kam das Tool Shutter zum Einsatz, das sich genialerweise auch über ein Skript wie das folgende aufrufen lässt. So wird ungefähr jede Minute ein Screenshot des Browserfensters gemacht.
#! /bin/bash
while true; do
shutter --window=.*Chromium.* -e -C --delay=0 --output="~/ingress/%Y%m%d%T.png"
sleep 1m
done
Idealer Kartenausschnitt
Die Felder hatten die Form einer Raute, so dass das Browserfenster ungefähr quadratisch aufgezogen wurde. Die Zoomstufen der Intel-Map stellten sich hier als großes Hindernis heraus, denn eine Maximalansicht der Fläche ließ sich kaum erreichen. Entweder waren Teile abgeschnitten, oder die Fläche wurde nur verhältnismäßig klein angezeigt. Auch ein Kippen des Display um 90° mittels xrandr --output VGA1 --rotate left
hilft bei einer Auflösung von 1920x1080 nicht wirklich viel - sieht aber cool aus auf dem LCD-TV und ist ein schöner Brainfuck beim Bedienen der Maus
GIF-Animation
Nachdem ich unbrauchbare Screenshots aussortiert hatte, habe ich die verbleibenden über 100 PNG-Dateien per Phatch in GIFs umgewandelt. Dies geschieht einfach über die "Speichern"-Aktion, bei der als Ausgabeformat eben GIF ausgewählt wird.
Im Anschluss galt es die Einzelbilder zu einem einzigen animierten GIF zusammenzufassen, das ohne größere Qualitätseinbußen eine möglichst kleine Dateigröße haben sollte. Hier konnte das Kommandozeilenprogramm Gifsicle seine Stärken ausspielen. Der Befehl
$ gifsicle -V -O3 --delay=30 --loopcount=0 --colors 128 --crop 100,200-860,810 2014*.gif > loop.gif
erzeugt ein sich wiederholendes GIF mit einer Verzögerung von 0,3 Sekunden zwischen den einzelnen Frames. Die Anzahl der Farben habe ich auf 128 reduziert und den Bildausschnitt per --crop
so reduziert, dass der Rahmen des Browserfenster und weitere überflüssige Flächen wegfielen.
Den letzten Frame mit dem vollendeten grünen Feld wollte ich allerdings länger aus 0,3 s anzeigen lassen. Mit $ gifsicle -I loop.gif
lassen sich Informationen, u.a. auch die Anzahl der Frames, ausgeben. Um den letzten Frame (in diesem Fall mit der #109) 3 s anzeigen zu lassen, half folgender Befehl.
$ gifsicle -b loop.gif -d30 "#0-108" -d300 "#109"
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt