Sharkoon DAC Pro S V2 in Betrieb genommen
Friday, 2. April 2021
Dass ich mir mal ein als DAC beworbenes Gerät kaufen würde hätte ich auch nicht gedacht. Aber der Sharkoon DAC Pro S V2 dient bei mir weit abseits von audiophilen Phantasien schlicht als Alternative zum defekten Kopfhöreranschluss meines PC-Gehäuses, aus dem Ton nur noch einseitig herauskam.
Das ist in der Box
Es ist wirklich nur ein USB-Stick mit Kopfhörereingang:
Wobei von wegen Kopfhörereingang, tatsächlich kann dort wie bei Telefonen auch ein kombiniertes Mikrofon mit angeschlossen werden. Zusätzlich gibt es an der Seite drei Leuchten für die gerade genutzte Abtastrate, 44.1, 48 und 96 kHz. Es lag noch eine kleine Anleitung unter dem schwarzen Einsatz.
Installation
Im laufenden Betrieb angeschlossen wurde der Stick sofort erkannt:
onli@fallout:~$ cat /proc/asound/cards 0 [HDMI ]: HDA-Intel - HDA Intel HDMI HDA Intel HDMI at 0xf7114000 irq 33 1 [PCH ]: HDA-Intel - HDA Intel PCH HDA Intel PCH at 0xf7110000 irq 34 2 [Device ]: USB-Audio - USB Audio Device UC Mic USB Audio Device at usb-0000:00:14.0-5.1, full speed 3 [S ]: USB-Audio - Sharkoon Gaming DAC Pro S
Bei einem normalen Linuxsystem müsste dann nur er in der grafischen Konfiguration als Ausgabegerät gewählt werden. Weil ich pures ALSA benutze musste ich stattdessen meine ~/.asoundrc editieren und das dmix-Device anpassen. Von:
pcm.dmixer { type dmix ipc_key 1024 slave { pcm "hw:PCH" buffer_size 16384 period_time 0 period_size 1024 } }
zu:
pcm.dmixer { type dmix ipc_key 1024 slave { pcm "hw:S" buffer_size 16384 period_time 0 period_size 1024 } }
Firefox neustarten und der Ton erschien sofort, ein Reboot war nicht nötig.
Klangqualität
Eine naheliegende Frage wäre: Und, klingt es besser? Die Antwort: Vielleicht? Ich habe mit Tempel von Colour Haze mein Lieblingsalbum angehört. Klang gut. Klang aber auch vorher schon gut. Es fällt auf, wie laut die Musik jetzt sein kann, ich muss mit meinen Kopfhörern die Lautstärkeregelung auf 10 von 100 setzen (db Gain: -35) um in etwa das vorherige Niveau zu erreichen, das bei 31 von 100 lag. Und im Zweifel bedeutet lauter bei Musik ja besser, so ist kein Vergleich möglich. Allerdings: Meine Logitech-Kopfhörer haben eine Boost-Funktion, die ich anfangs verschmäht habe und später dann doch akzeptierte (bei solchen geschlossenen Kopfhörern mit starker Isolierung sei sie angemessen las ich, und musste dann zustimmen). Da meine ich deutlich wahrzunehmen, dass der Unterschied zwischen Boost an und aus geringer geworden ist. Mag Einbildung sein, vielleicht hängt auch das nur an der leicht anderen Lautstärke, vielleicht passte die Funktion auch einfach nie für dieses Album und meine initiale Abneigung kam hierher.
Wer fundiertes über die Qualität lesen will sollte den Test samt den Messungen von Igor ansehen. Er schrieb:
Stichwort Zielgruppe. Jeder Gamer, der ein ordentliches Headset hat, kann den Onboard-Sound genüsslich abhaken. Wir haben hier nämlich weder die Einflüsse der Grafikkarte noch ein zu hohes Grundrauschen. Und ordentlich Verstärkerleistung gibt es sogar für hochohmige Headsets noch genug. Der Frequenzgang ist linear und sauber und genau das wird die Liebhaber des differenzierten Hörens und des räumlichen Tiefgangs begeistern. Die Protagonisten der Badewannen-Fraktion, die mit ihren Spaßkopfhörern noch den ultimativen Bass-Booster für die gepflegte Gehirnmassage suchen, werden allerdings herb enttäuscht.
Gut, dedizierte Grafikkarte habe ich derzeit nicht, auch schon als eine im System war weder Einflüsse von ihr bemerkt noch irgendein Grundrauschen. Aber immerhin liest sich das so als ob der Sharkoon-Stick zumindest nichts falsch macht.
Letzten Endes eine direkt linuxkompatible USB-Soundkarte mit Kopfhörerverstärker, der auch einen Kopfhörer mit Bedarf für ein wesentlich lauteres Signal als die meinen brauchen versorgen könnte. Wer das sucht, für den könnte der Sharkoon-Stick passen. Und als Lösung für den defekten Kopfhöreranschluss des Gehäuses taugt er auch. Ich habe ihn bei equippr für 30€ plus Versand gekauft. Pfeilschneller Verstand - spätabends bestellt, einen Tag gewartet, am nächsten war er schon da.
Xmodmap per udev aktivieren
Monday, 22. March 2021
Meine Tastatur soll mit englischem Tastaturlayout laufen. Gleichzeitig muss das nervige CapsLock deaktiviert sein. Die Taste dient dann zusammen mit dem rechten Alt dem Setzen von Umlauten. CapsLock-q steht für ä, CapsLock-y für ü und CapsLock-p für ö. Um diese Belegung umzusetzen braucht es eine Mischung aus setxkbmap
und xmodmap
:
setxkbmap -variant altgr-intl -option -option compose:rctrl -option lv3:ralt_switch -option terminate:ctrl_alt_bkspc -option eurosign:e -option nbsp:level3n xmodmap /home/onli/.Xmodmap
Wobei in der .Xmodmap nur das hier steht:
clear lock keycode 66 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift
Diese Befehle sendet meine ~/.icewm/startup bei jedem Login. Aber seit ich wegen der Heimarbeit regelmäßig die Tastatur zwischen Arbeitslaptop und eigenem PC wechselte, störte es mich langsam, dass ich nach jedem Wechsel bei angeschaltetem PC die Befehle neu ausführen musste. Das müsste man doch auch ohne Desktopumgebung automatisieren könnte. Desktopumgebungen wie KDE und Gnome könnten die Tastaturbelebung dauerhaft setzen, dafür ist dort meine Zielkonfiguration mit dem deaktivierten CapsLock und den erreichbaren Umlauten trotz US-Layout gar nicht so einfach umzusetzen.
Und tatsächlich gibt es für sowas udev. Damit können bei jedem Hardwarewechsel Berechtigungen gesetzt, Namen verteilt und eben auch beliebige Befehle ausgeführt werden. Doch leider ausgerechnet diese Tastaturumstellung nicht. Die Befehle werden einfach geschluckt, als ob nach udev nochmal der XServer auf den Hardwarewechsel reagiert und die Tastatur zurücksetzt. Zum Glück bin ich dann über diesen Artikel gestolpert, der zusammen mit einem Arch-Forenbeitrag beschreibt wie hier udev doch noch eingesetzt werden kann. Der Trick: Anstatt die Befehle direkt auszuführen schreibe in eine Datei, worauf ein inotify-Watcher reagiert daraufhin und im richtigen Kontext die Befehle ausführt.
Konfiguration udev
Wir starten mit udev. Zuerst gucken wir, wie die Tastatur identifiziert werden kann:
onli@fallout:~$ lsusb Bus 003 Device 002: ID 8087:8001 Intel Corp. … Bus 002 Device 007: ID 046a:a087 Cherry GmbH Wireless Mouse Bus 002 Device 009: ID 258a:1006 SINO WEALTH USB KEYBOARD
258a:1006
ist die gesuchte Kombination. Das packen wir nun in die udev-Regel unter /etc/udev/rules.d/80-ajazzmapping.rules (der Abschnitt vor .rules kann natürlich anders benannt werden):
ACTION!="add|change", GOTO="ajazz_rules_end" ATTRS{idVendor}=="258a", ATTRS{idProduct}=="1006", RUN+="/usr/local/bin/keyboard-udev.sh" LABEL="ajazz_rules_end"
Das Skript reagiert nur auf die Aktionen add oder change des Hardwaresystems, also wenn die Tastatur angesteckt wird. Per idVendor und idProduct schränken wir die Regel weiter ein auf genau die Hardwareidentifikatoren, die wir oben lsusb
entnomment haben. Und dann soll ein Skript ausgeführt werden.
Aktion: keyboard-udev.sh
Und zwar dieses, gespeichert als /usr/local/bin/keyboard-udev.sh:
#!/bin/bash # Path to lock file lock="/tmp/keyboard.lock" # Lock the file (other atomic alternatives would be "ln" or "mkdir") exec 9>"$lock" if ! flock -n 9; then notify-send -t 5000 "Keyboard script is already running." exit 1 fi echo '' > /tmp/keyboard.lock & # The lock file will be unlocked when the script ends
Das mit dem Lock ist gar nicht so ganz simpel, aber eigentlich müssen uns die Details hier nicht weiter interessieren. Wichtig ist: Nach /tmp/keyboard.lock wird geschrieben, und darauf können wir nun reagieren.
Die Reaktion
Dafür wird bei Start des Xservers der inotify-Watcher gestartet. Dafür kommt ein Aufruf zu file-inotify.sh
in die $HOME/.xinitrc, sodass sie bei mir nun so aussieht:
/usr/local/bin/keyboardMapping.sh file-inotify.sh /tmp/keyboard.lock /usr/local/bin/keyboardMapping.sh & # Triggered by udev rule xrdb -merge -I$HOME ~/.Xresources exec dbus-run-session /usr/bin/icewm-session --notray
file-inotify.sh müssen wir noch anlegen, ich erstellte es als /usr/local/bin/file-inotify.sh:
#!/bin/bash # Usage: file-inotify <file># Command is run when file is written. path=$(realpath "$1") job="$2" #basename=$(basename "$1") dirname=$(dirname "$1") inotifywait -m -e close_write --format '%w%f' "$dirname" \ | while read file do if [[ $(realpath "$file") == "$path" ]]; then sh -c "$job" fi done
Und die /usr/local/bin/keyboardMapping.sh? Das sind einfach die Tastatursetzbefehle von oben:
#!/bin/bash echo "remapping keyboard" setxkbmap -variant altgr-intl -option -option compose:rctrl -option lv3:ralt_switch -option terminate:ctrl_alt_bkspc -option eurosign:e -option nbsp:level3n xmodmap /home/onli/.Xmodmap
Die Tastatur sitzt
Jetzt steht das ganze System. Bei Systemstart wird per xinitrc der inotify-Watcher gestartet, der auf Dateisystemaktionen reagiert. Wenn udev das Einstöpseln der Tastatur mitbekommt schreibt es in die beobachtete Datei, woraufhin das Tastaturlayout gesetzt wird. Das funktioniert verlässlich und verursacht beim Warten keine Systemlast.
Die keyboardMapping.sh und damit die setxkbmap
- und xmodmap
-Befehle nicht manuell ausführen zu müssen ist an sich nur eine Kleinigkeit. Aber das automatisiert zu haben ist eine sehr angenehme Kleinigkeit. Ich vergaß es doch immer mal wieder, tippte daraufhin Unsinn zusammen und musste das Umschalten dann nachholen. So brauch ich nicht mehr dran zu denken.
Zur Zukunft von Serendipity mit PHP 8.0
Tuesday, 16. March 2021
Uberspace hat PHP 8.0 aktivierbar gemacht. Da dort meine Entwicklungsinstallation lebt habe ich mir angeschaut, was da genau auf die Blogsoftware zukommt. PHP 8.0 ist zwar schon draußen, PHP 7.4 wird aber noch eine ganze Weile unterstützt, es eilt also nicht. Andererseits gibt es viel zu tun. Zumindest ist das meine Einschätzung.
Die inkompatiblen Änderungen von PHP 8.0
PHP 8.0 ist inkompatibel mit einigem Code, der in den letzten 20 Jahren bei Serendipity zusammengekommen ist. Vor allem diese Änderungen (von hier) machen der Software zu schaffen:
A number of notices have been converted into warnings:
Attempting to read an undefined variable.
…
Attempting to read an undefined array key.
…
Serendipity macht beides sehr, sehr oft. Und noch öfter, wenn man die Smarty-Templates hinzurechnet, die nun ebenfalls bei Zugriff auf undeklarierte Variablen solche Warnungen werfen. Werden Warnungen geworfen ist das im Zweifel im Blog sichtbar, kann generiertes HTML und CSS kaputtgehen, bei Entwicklungsversionen bricht die Ausführung ab.
Der Code schaut zum Beispiel oft, ob in $serendipity
ein gesuchter Key gesetzt ist, oder switcht sogar über diesen Wert:
switch($serendipity['POST']['adminAction']) { … }
Wenn $serendipity['POST']['adminAction']
nie gesetzt wurde, wirft das jetzt eine Warnung. Vorher war das Ergebnis einer solchen Abfrage einfach null und machte entsprechend nichts. Wir können das reparieren, mit isset
oder dem ??
-Operator:
switch($serendipity['POST']['adminAction'] ?? '') { … }
Aber will man die Warnungen nicht verstecken muss das eben durch den gesamten Code hindurch gemacht werden.
Der aktuelle Stand
Warnungen zu unterdrücken halte ich wirklich für keine gute Option. Tatsächlich wurden durch dieses neue Verhalten jetzt schon einige Bugs sichtbar, als ich die Warnungen nachverfolgend durch den Code ging. Es ist zwar unangenehm bei altem Code wie diesem – tatsächlich ist Serendipity kein toller Kandidat für die Portierung auf PHP 8 – aber die Änderungen sind grundsätzlich gut. Serendipity sollte da mitgehen.
Ich habe einen ersten Pull-Request vorbereitet. Den will ich so nicht mergen, er ist zu groß geworden, aber ich werde ihn aufsplitten (der erste Folge-PR ist hier). Mit diesen Codeänderungen kann der Blog mit Standardplugins schon wieder fehlerlos dargestellt werden, auch alle Hauptseiten im Backend werfen keine Fehler mehr. Mit etwas mehr Arbeit wird wahrscheinlich bald der Rest des Kerns wieder gehen.
Anstehende Entwicklungen und Entscheidungen
Es würde wohl in ein Serendipity 3.0 münden. Die von PHP 8.0 diktierten Änderungen werden s9y teilweise zu inkompatiblen Änderungen zwingen. Zum Beispiel bei der Redeklarierung von Konstanten, was nun ebenfalls einen Fehler wirft, aber für das Fallback bei den Sprachdateien genutzt wird.
Aber ich könnte mich täuschen. Vielleicht lassen sich solche Änderungen durch Ideen anderer Entwickler vermeiden. Vielleicht sollte man temporär an dieser Stelle doch die Fehlermeldungen unterdrücken, wo wir da doch wirklich wissen, dass davon kein Bug versteckt wird. s9y versucht ja auch sonst immer, inkompatible Änderungen zu vermeiden. Ich hoffe, die jeweilige Änderung in den PRs mit den anderen zu besprechen.
Dann bleiben aber immer noch die alten Themes und Plugins.
Bei den Themes ist es möglich, dass die genutzte Template-Engine Smarty eine neue Version herausbringt, die besser auf PHP 8.0 ausgerichtet ist und die Warnungen bei undeklarierten Variablen vermeidet. Wenn nicht, werde ich die empfohlenen Designs reparieren (und natürlich auch dieses hier im Blog genutzte), wäre dann aber sehr dafür die alten Themes ohne eigenen Maintainer aufzugeben.
Bei den Plugins ist die Situation ähnlich. Auch die werden wahrscheinlich fast alle repariert werden müssen. Die wichtigsten werde ich bei meiner Arbeit an Serendipity selbst mitreparieren, wenn mir niemand zuvorkommt. Man könnte es beim Rest mit automatisierten Tools wie rector versuchen. Und nachbessern falls Nutzer Probleme melden. Dabei sollten wir aber die Plugins markieren, die bereits repariert sind, damit ein etwaig unbedarfter Nutzer nicht unwissentlich ein eventuell inkompatibles Plugin installiert.
Wie gesagt, das ist nur meine unabgesprochene Einschätzung. Durchaus möglich, dass ich gute Alternativen übersehe und mein Ansatz arbeitsintensiver ist als nötig. Aber so oder so schadet es nicht, wieder durch den Code zu gehen und den von Hand geradezubiegen. Das werde ich in nächster Zeit immer mal wieder machen, dabei auf Github PRs vorbereiten und einsenden.
Das positivste: Der für PHP 8.0 angepasste Code lief problemlos mit PHP 7.4, sicher auch mit 7.3. Die Änderungen dürften also nicht zu einem harten Bruch führen. Wenn das Projekt den hier beschriebenen Weg weitergeht sollte die nächste Serendipity-Version mit allen aktuellen PHP-Versionen zugleich funktionieren.
Dieser Blog lief zu lange ohne Backups
Wednesday, 10. March 2021
Heute ist OVH in Straßburg ein Rechenzentrum abgebrannt. Die Bilder sehen nicht so aus, als ob da Daten überleben könnten:
Und während auf Hackernews die Leser über ihre Notfallpläne diskutierten ging ich im Kopf auch die meinen durch. Lokales Backup via pogo, externes Backup via rsync. Selbst wenn da ein Datenzentrum abbrennt, kann nichts wirklich passieren. Oder? Um zu überprüfen, dass die Backups wirklich durchgeführt werden, ging ich meine Server durch. Auch den dieses Blogs. Und sah: Nichts.
Kein Backupskript. Kein Eintrag in der crontab. Keine aktuelle Backupdatei auf dem Backupserver. Selbst die Backupoption des Hosters (die 0.50€ kostet!) war aus.
Ich hatte bei meiner Blog-Migration von scaleway zu vultr Backups schlicht vergessen. Ich weiß noch, dass ich kurz dachte, das einen Moment später machen zu können weil ich wegen des Umzugs ein lokales Backup hatte. Ein Fehler. Es war eine stressige Zeit und ich habe da nie wieder dran gedacht. Bis heute.
Die Einträge eines Jahres wären verloren gewesen. Klar, mancher steckt vielleicht noch in Caches, aber garantiert nicht alle. Dieser Blog lebt seit 2008, es ist meine wichtigste Webpräsenz, auch nur Teile davon zu verlieren wäre furchtbar ärgerlich gewesen. Ich habe Unmengen Glück gehabt, dass die Daten auf dem Server ohne Backup überlebten. Backups, die jetzt wieder aktiviert sind.
Rennt da nicht rein: Überprüft eure Backups, macht welche wenn ihr noch keine habt.
FreshRSS
Thursday, 4. March 2021
Feedtragon war für mich der perfekte Feedreader – kein Wunder, baute ich ihn doch selbst. Als Schwachstelle entpuppte sich Superfeedr, als der als Backend genutzte Service die Preise anhob hätte ich feedtragon auf ein eigenes Backend umbauen müssen. Stattdessen benutzte ich mehrere Fertig-Feedreader: BazQux (hervorragend, aber damals wollte ich nichts bezahlen), den Digg Reader (abgeschaltet) und bis zuletzt Feedly (gut, aber etwas umständlich). Nun bin ich bei FreshRSS gelandet, was auf meinem uberspace von mir selbstgehostet wird.
Eindruck nach ein paar Wochen
FreshRSS ist freie Software (AGPL) und funktioniert einwandfrei. Die Installation ist im Uberspace-Wiki dokumentiert, uberspace bietet sich für sowas immer als unproblematischer und fähiger Hoster an. Meine Installation ist jetzt schon ein bisschen her, aber es muss gepasst haben, sonst würde ich mich an Probleme erinnern.
Das Interface ist das eines klassischen RSS-Readers. Links ist die Liste der Feeds, rechts die Artikel. Mit der Toolbar oben können diverse Aktionen mit den Artikeln durchgeführt (z.B. als Favorit markieren) und zwischen den verschiedenen Ansichten umgeschaltet werden.
Kleinigkeiten empfinde ich als nicht optimal. Das automatische Markieren als gelesen durch Scrollen der eingeklappten Artikelliste war extrem stressig, zum Glück kann die Funktion deaktiviert werden. Die Taste M
sollte den Gelesen-Status von Artikel umschalten, aber bewirkt nichts. Und das Warnungsicon bei Uncategorized in der Feedliste links ist nervig, wenn wie bei mir alle Feeds nicht in Kategorien sind und das auch so bleiben soll.
Aber das sind wirklich Kleinigkeiten. Der Rest passt. Insbesondere habe habe ich den Eindruck, dass die Infrastruktur sehr gut funktioniert. Damit meine ich, dass die Software einwandfrei per Cronjob die Feeds liest und neue Artikel entdeckt. Die Darstellung der Artikel selbst ist gut, die wichtigsten Tasten J
und K
zum Weitergehen in der Artikelliste sind belegt. Der eingebaute RSS-Feed gibt die Option der Weiterverarbeitung. Mehr braucht es nicht.
Es tut gut, wieder einen selbstkontrollierten Feedreader zu haben. Und noch dazu einen, den ich nicht selbst bauen muss, auch wenn feedtragon wieder zum Laufen zu bringen immer noch als gutes Projekt in meinem Hinterkopf herumschwebt. Feedly hatte schon okay funktioniert, aber mir waren die Limitierungen unangenehm und es nagte auch der Gedanke, warum ich nicht freie Software benutze wenn es denn gute Optionen gibt.
Als nur tt-rss mit seinem problematischen Autor auf meinem Radar war sah das nicht so aus, aber FreshRSS füllt die Rolle gut. Unter anderem Dirk hatte die Software in seinem Blog erwähnt. Auch wenn ich nicht mehr genau weiß, welcher Autor und welcher Artikel den Ausschlag gab: Danke für den Hinweis.
Wie XCOM 2 die Schraube anzieht
Friday, 19. February 2021
Wer als Veteran des Vorgängers Enemy Unknown das neuere XCOM 2 spielt könnte sich wundern, wieviel die Entwickler am Spieldesign geändert haben. Eine Änderung insbesondere ist kritisch: Viele Missionen haben eine Rundenzeitbegrenzung. Als ich damals darüber las ging ich sogar davon aus, dass dieser neue Ansatz überhaupt nicht zu meiner Spielweise passen würde. Was stimmt – aber das ist überraschenderweise kein Problem. Stattdessen ist das Rundenlimit eine der Änderungen, die das Spiel noch besser als den ersten Teil machen.
Die Wurzeln: Rundenkämpfe, RPG-Elemente und Basisbau
Es täuscht, aber: Auf den ersten Blick ändert sich nicht viel. Noch immer gilt es die Erde gegen eine Alieninvasion zu verteidigen, nur sind sie diesmal schon angekommen und etabliert. Ihr führt den Widerstand, der den Kampf gegen die Alienherrscher gewinnen und ihre finsteren Pläne vereiteln will.
In erster Linie passiert das in den bekannten Rundenkämpfen. Immer ein kleines Team aus XCOM-Soldaten muss die Siegbedingungen auf den nicht zu großen Karten erreichen. Und das möglichst, ohne dass einer der vier (später auch mehr) geführten Recken stirbt. Das bedeutet: Deckung nutzen, Gegner flanken, geschickt die Sonderfähigkeiten der Soldatenklassen einsetzen, ein bisschen Glück haben und im Zweifel neu laden. Von den Spezialaktionen gibt es bald mehr, erledigte Gegner bringen Erfahrung, bei Levelaufstiegen darf eine von immer zwei möglichen Fähigkeiten erlernt werden. Aber immer erst nach der Mission, nur in der Heimatbasis kann die Beförderung verliehen werden.
Die Basis ist auch sonst ein wichtiges Spielelement. Sind ein paar Räume wie das Forschungslabor schon vorhanden, ist da noch weiterer Platz für Einrichtungen. Beispielsweise für das Psi-Labor, mit dem neue Rekruten mit den übernatürlichen Fähigkeiten ausgestattet werden können, die auch die Aliens immer wieder gegen die Spielertruppe einsetzen. Doch für die Räume braucht es Ressourcen wie auch genug Energieproduktion, zudem müssen fast alle Einrichtungen sowie Ausrüstungsgegenstände erstmal erforscht werden.
Diese Ressourcen gewinnt man durch erfüllte Missionen, aber auch durchs Kontrollieren der Weltkarte. Die Sektoren müssen kontaktiert werden, was Zeit kosten, dann gibt es monatlich Unterstützung. Und auch gibt es immer wieder Ressourcenquellen auf der Karte, bei denen gegen Zeiteinsatz z.B. neue Rekruten oder Intel gewonnen werden können. Meist aber ruft sowieso eine der Missionen.
Die Hauptressource: Zeit
Es gibt also überall etwas zu tun und man hat gerade am Anfang unzählige Optionen. Doch XCOM 2 lässt eben nicht frei die Möglichkeiten auszuprobieren. Stattdessen gibt es immer wieder zeitkritische wichtige Missionen. Das Spiel poppt deren Beschreibungen auf und sagt ganz klar: Du hast im Grunde keine Wahl, du musst jetzt eine dieser drei wählen um eine Aktion der Aliens zu vereiteln oder eine einzelne erfüllen, um Ressourcen zu erhalten.
Vor allem das Avatarprojekt droht da als klar sichtbares Zeitlimit, das sabotiert werden muss. Dafür können Alienforschungseinrichtungen hochgejagt werden. Ironischerweise ist das eine der wenigen Missionstypen, bei denen der Spieler einmal kein Zeitlimit hat. Dafür praktisch in allen anderen: Dann ist z.B. in dem zu kapernden abgestürzten UFO ein Peilsender, der in 5 Runden Verstärkungen anfordern und damit zum Rückzug zwingen wird, sollte er nicht rechtzeitig abgeschaltet werden.
Doch ist dieses Zeitlimit in den Missionen nicht so stressig wie es klingt. Es zwingt zum aggressiveren Vorgehen, klar. Aber zum einen tut das XCOM gut, denn es verhindert das übervorsichtige Vortasten bei dem dann meist minutenlang nichts passierte. Vor allem aber ist das Spiel für diese schnellere Spielweise ausgelegt. Es gibt nicht die große übermächtige Gegnermassen, sondern es sind relativ wenige Aliens auf den Karten unterwegs, die sich zudem in kleine Gruppen von immer etwa drei Gegner aufteilen. Manchmal trifft man mehrere dieser Gruppen in einem Zug, aber meistens können sie nach und nach abgearbeitet werden. Vor allem wenn man nach einer Weile 5 oder 6 eigene Figuren mit guter Ausrüstung und Sonderfähigkeiten führt werden die Missionen beherrschbar.
Die vielen Verbesserungen
So können die vielen Verbesserungen scheinen. Wie klar wurde, dazu zähle ich das Missionsdesign mit seinem Zeitlimit, aber das ist beileibe nicht alles.
Durch die vielen automatisch auftauchenden Missionen gerade am Anfang des Spiels ist der Spieler zwar zuerst sehr unfrei, aber auch geführt. Die Missionen fordern und gleichzeitig sollen ja doch auf der Weltkarte und beim Basisbau längerfristige Entscheidungen getroffen werden. Aber doch wird man nicht überfordert, weil mit den Missionen immer Fortschritt erreicht wird. So verhindert XCOM 2 effektiv, dass die schiere Komplexität zum blockierenden Problem wird. Und der Schwierigkeitsgrad wird gemächlich erhöht, zumindest langsamer als es mir beim Vorgänger vorkam.
Diesem besseren Spielgefühl dienen auch die stärkeren Klassen. Sie alle haben ein klareres Profil mit besseren Spezialfähigkeiten bekommen. Wer dann noch halbwegs fleißig Ressourcen in Soldatenupgrades investiert kämpft nicht mehr als absoluter Underdog gegen die Feinde, anders als im ersten Teil.
Es gibt immer noch einen Heavy und einen Scharfschützen, die immer noch mit schwerem Geschütz bzw. Gewehr die Gegner aufräumen. Dazu kommt diesmal der Ranger mit Schrotflinte und Nahkampfangriff, der sich entweder auf diesen spezialisiert oder auf die Tarnung. Und dann komplettiert auch schon der Spezialist die regulären Klassen, der als Heiler oder als Hacker sehr wichtig geworden ist. Vor allem, dass er als Hacker Roboter besonders effektiv ausschalten oder sogar zeitweise übernehmen kann macht ihn sehr effektiv. Dazu kommt dann noch der Psi-Soldat, der schnell sehr viele sehr starke Fähigkeiten bekommt, dann humanoide Gegner sogar dauerhaft übernehmen kann, garantiert trifft oder Flächenschaden verursacht.
Dazu setzt XCOM 2 den Fokus auf die Inszenierung fort. Die Missionen sind weit davon entfernt wie das Herumziehen kleiner Pixelfiguren zu wirken. Dafür sorgen die vielen Momente, in denen die Kamera in die Nahansicht geht um Aktionen und ihre Ergebnisse zu zeigen. Auch außerhalb der Missionen gibt es viele Zwischensequenzen, besonders wenn eines der Hauptziele erfüllt wurde, in denen auch die Mitstreiter des Widerstands auftreten.
Ein gelungener schmaler Grat
Die geringe dem Spieler mögliche Initiative am Anfang hätte nerven können, das Zeitlimit in den Missionen stressen, die Weltkarte langweilen. Stattdessen fügt sich XCOM 2 zu einer tollen Mischung zusammen, die schlicht nochmal besser funktioniert als der auch schon sehr gute Vorgänger.
Wie knapp das war zeigen die sich wiederholenden Missionen, in denen ein Sender vor den Aliens verteidigt werden soll. Der ist immer auf der anderen Seite der Karte. Ein festes Zeitlimit gibt es nicht, aber manchmal wird er von der ersten Runde an angegriffen. Dann reicht die Zeit höchstens gerade so, rechtzeitig den Sender zu erreichen und die Gegner zu besiegen. Ich schaffte es immer, aber gerade am Ende des Spiels (wenn die Gegner stärker sind) nur durch exzessives Ausnutzen der Quickload-Funktion, um immer optimale Spielzüge zu machen. Selbst dann war es ein paarmal unwahrscheinlich knapp. Und das ist dann nicht mehr herausfordernd spaßig, sondern frustrierend unfair.
Ich kann mir daher sehr gut vorstellen, dass die oft zu lesende Kritik an den DLCs berechtigt ist, dass sie entweder mit weiteren starken Feinden oder mit zu vielen weiteren – und dann durch die unweigerlich ausfallenden verletzten Soldaten nicht mehr gewinnbaren – Pflichtmissionen am Anfang die Balance kippen.
Aber so wie das Grundspiel ist funktioniert die Mischung hervorragend. Und die Linuxversion funktioniert mit sehr wenigen kleinen Macken (wie manchmal etwas etwas spät nachladenden Texturen) ebenfalls sehr gut. XCOM 2 wird mittlerweile im Sale für 4€ auf Steam verscherbelt, das Geld ist es auf jeden Fall wert.
Serendipitys Social-Buttons mit Zähler aktualisiert
Thursday, 4. February 2021
Hier im Blog läuft das Plugin serendipity_event_social/Share Buttons, das unter den Einträgen per shariff umgesetzte datenschutzfreundliche 2-Klick-Buttons anzeigt. Mit denen kann man den Blogartikel in sozialen Netzwerken wie Twitter und Facebook teilen, aber ohne dass allein durch das Laden dieser Seite deren Code geladen wird. Das verhindert Überwachung.
Die Buttons funktionierten weiterhin, aber der Zähler war hier im Blog kaputt. Shariff hat auch ein Backend, das ich für alle Pluginnutzer auf meinem uberspace laufen lasse. Das Backend holt die Zahlen. Aber hier im Blog hatte ich es auf die falsche URL gestellt, das /
am Ende fehlte. Das ist nun korrigiert.
Die Gelegenheit habe ich genutzt, um auch das Backend zu aktualisieren - es lief noch eine ältere Version. Wohl dadurch war die Facebook-API deaktiviert worden, sie ist jetzt wieder an. Das Backend-Update war wohl generell notwendig. Wenn also auch bei euch im Blog der Zähler nicht funktionierte wäre nun ein neuer Test eine gute Idee.
Beim Serendipity-Plugin musste nichts geändert werden, nur die richtige URL habe ich jetzt dokumentiert.
Ich war mir sicher, über das Plugin hier im Blog bereits geschrieben zu haben. Aber ich finde keinen Artikel dazu, nur dass ich vor 9 Jahren schonmal mit shariff experimentiert hatte. Deshalb sei hier noch erwähnt, dass das Plugin mehr macht als nur die Buttons anzuzeigen: Es baut auch das HTML, um das erste genutzte Bild oder eine gesetzte Alternative bei diesen Kästen einzusetzen, die Seiten wie Twitter bauen wenn bei ihnen ein Artikel verlinkt wird. Was ich für ein nettes Feature halte.
Und damit wäre die Vorstellung nachgeholt.
Lärmfilter fürs Mikrofon unter Alsa
Monday, 1. February 2021
Ich möchte hier alsa_rnnoise vorstellen. Aber dafür muss ich erstmal das tolle NoiseTorch erwähnen. Es ist ein Programm, das den Umgebungslärm reduziert der vom Mikrofon aufgenommen wird. Wenn man via dem PC mit anderen Leuten spricht und sie nicht mit beispielsweise dem Tastaturlärm oder anderen Lärmquellen belästigen will ist das praktisch. Und auch wenn man Aufnahmen außerhalb eines isolierten Raums macht könnte es nützlich sein. Ich nutze NoiseTorch während der Arbeit am Laptop für unsere Telefonkonferenzen.
Aber weil es im Kern ein Pulsaudio-Plugin ist funktioniert es für mich nicht am heimischen, mit ALSA eingerichteten PC. NoiseTorch hat auch ein paar Macken, wie die hohe Prozessorlast selbst ohne Sound-Input, die aber an Pulseaudio hängt – was mich darin bestärkt weiterhin kein Pulseaudio zu installieren. Deswegen ist es für mich besonders toll, dass der Entwickler arsen sich die Mühe gemacht hat ein ALSA-Plugin mit der gleichen Kernfunktionalität zu bauen. Eben alsa_rnnoise. Das namensgebende RNNoise ist das neuronale Netzwerk, das auch NoiseTorch benutzt um Lärm wegzufiltern.
Installation
Weder RNNoise noch alsa_rnnoise waren für void gepackt, daher musste ich beides manuell installieren. Was sich zusammen mit der folgenden ALSA-Konfiguration ein bisschen anfühlte wie Linux vor einer Dekade. Aber wer modernen Komfort will könnte sich ja an NoiseTorch mit Pulseaudio halten. Zum Glück beschreibt die jeweilige Readme fast vollständig was zu tun ist.
Stell erstmal sicher, dass alsa-dev installiert ist:
sudo xbps-install alsa-lib-devel
Dann installiere RNNoise:
git clone https://gitlab.xiph.org/xiph/rnnoise.git cd rnnoise ./autogen.sh ./configure make sudo make install
Die Libraries von RNNoise werden so nach /usr/local/lib/ gepackt.
Den Ordner von RNNoise müssen wir bei der Installation von alsa_rnnoise dem Buildsystem mitteilen, ebenso wie den richtigen Ordner für ALSA-Plugins:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:/usr/lib/pkgconfig/:/usr/lib64/pkgconfig/ meson build -Dplugin_dir=/usr/lib/alsa-lib/ ninja -C build sudo ninja -C build install
Damit ist das System bereit um ALSA zu konfigurieren. Die Readme schlägt diese Konfiguration vor, die in der $HOME/.asoundrc zu platzieren wäre:
pcm.urnnoise { type rnnoise slave.pcm "sysdefault" } pcm.rnnoise { type plug slave { rate 48000 pcm "urnnoise" } } pcm.!default { type asym playback.pcm "cards.pcm.default" capture.pcm "rnnoise" }
Bei mir muss da aber noch das softvol-Plugin dazwischen, da mein t.bone MB 88U sonst zu leise ist, plus eine manuelle dmix-Konfiguration. Daher sieht die .asoundrc bei mir etwas anders aus:
pcm.!default { type asym playback.pcm { type plug slave.pcm "dmixer" } capture.pcm rnnoise } ctl.!default { type hw card "PCH" } pcm.softvol { type softvol slave.pcm "hw:Device" control { name "Softmaster"; card "Device"; } max_dB 20.0 min_dB -5.0 } pcm.urnnoise { type rnnoise slave.pcm "softvol" } pcm.rnnoise { type plug slave { rate 48000 pcm "urnnoise" } } pcm.dmixer { type dmix ipc_key 1024 slave { pcm "hw:PCH" buffer_size 16384 period_time 0 period_size 1024 } }
Der Filter funktionierte so direkt.
Soundtest
Aber funktioniert er auch gut, lohnt sich der Aufwand? Ich habe ein paar Testaufnahmen gemacht um das einzuordnen. Eingebunden sind unkomprimierte .wav-Dateien, die auf .ogg zurückfallen falls der Browser mit ersteren nicht umgehen kann (mit ffmpeg umgewandelt, maximale Qualität).
Ohne Lärm
Im ersten Test habe ich in einem ruhigen Raum ohne besondere Lärmquelle kurz in das Mikrofon gesprochen. Hier sollte der Filter im Idealfall kaum wahrnehmbar sein, auf jeden Fall sollte er die Stimme nicht abschneiden. Doch hört selbst wie es lief.
Ich fand das Ergebnis gut. Der Raum klingt ein bisschen anders, oder? Aber ich habe nicht den Eindruck, dass es schlechter klingt oder meine Sprache abgehackt wird. Da auch die Prozessorlast nicht hoch war ein erster Hinweis, dass alsa_rnnoise immer anbleiben könnte.
Mit Tastaturlärm
Regulären Lärm wie das Klappern der Tastatur rauszufiltern oder zu reduzieren wäre mir am wichtigsten. So könnte ich guten Gewissens in Gesprächen das jeweilige Programm nicht auf Push-To-Talk stellen. Und wenn sowas funktioniert, dann wird wahrscheinlich auch ein in der Ferne vorbeifahrendes Auto weggefiltert.
Ein gutes Ergebnis! Wenn ich nicht spreche ist die Tastatur weg, wenn ich spreche ist sie leiser. Und sie ist vorher ja sehr laut, gar nicht mal nur das Klicken der Tasten, sondern da wurden auch die Schwingungen des Tisches übertragen. Als ob ich auf die Tastatur hämmern würde, dabei tat ich das gar nicht.
Wenn ich während eines Gespräches mal tippen müsste wäre der Lärmfilter sehr hilfreich.
Mit einem Staubsauger an der Seite
Ich dachte, wenn ich einen Handstaubsauger anmache wäre ich ohne Filter nicht zu hören und mit Filter vielleicht etwas, wobei ich andererseits fürchtete, dass das zuviel erhofft ist. Tatsächlich funktionierte es nicht, aber anders als erwartet.
Die Aufnahme ohne Filter war besser als erwartet, weil trotz des Lärms meine Stimme aufgenommen wurde und sogar verständlich blieb. Mit dem Filter dagegen war zwar der Staubsaugerlärm reduziert, aber war leider auch meine Stimme immer wieder verzerrt. Als ob die Aufnahme übersteuern würde, wobei ich mir ziemlich sicher bin nicht wesentlich lauter geredet zu haben als bei der ersten Aufnahme. Bei solchem extremen Lärm liegt bei alsa_rnnoise wohl eine Grenze, ob es jetzt am Alsaplugin oder am RNNoise-Kern selbst liegt kann ich nicht sagen.
Fazit
NoiseTorch ist derzeit natürlich schon einfacher zu installieren und zu konfigurieren, aber ich sehe großes Potential in der ALSA-Lösung. Sie könnte einfach von Distributionen ausgeliefert werden und wir dann eine Konfigurationsoption davon entfernt sein, automatisch die Sprachaufnahmen aller Linuxnutzer verbessern zu können. Egal ob das Aufnahmen für Podcasts oder VoIP-Gespräche sind. Damit das machbar wird sollte mit Aufnahmen während extremen Umgebungslärms etwas besser umgegangen werden. Andererseits dürfte niemand erwarten bei solchem Lärm gut verstanden zu werden, daher ist das in der Praxis vielleicht ein relativ kleines Problem.
Ich bin gespannt was draus wird. Bei meinem System lasse ich das jetzt einfach erstmal an und schaue, ob es sich bewährt.
Open-World in Bestform bei Mad Max
Friday, 29. January 2021
Das 2015 etwas nach dem Release des hervorragenden Films Mad Max: Fury Road veröffentlichte Spiel zu Mad Max ging trotz positiver Tests wohl ziemlich unter, zumindest hörte man schnell nichts mehr davon. Auch kein gutes Zeichen: Der ins Hauptmenü gesetzte Menüpunkt DLC führt zu einer leeren Shopseite, die Online-Funktionen werden abgeschaltet. Also werden es viele nicht gespielt haben, und das ist ein Verlust – denn Mad Max ist richtig gut.
Szenario
Mad Max ist eigentlich eine Filmreihe, bei der bis zu Fury Road Mel Gibson die Hauptrolle spielte. Es ist wieder mal eine postapokalyptische Dystopie und ähnelt daher etwas Fallout, aber es kommt ohne dessen schwarzen Humor aus. Stattdessen ist diese Zukunftsversion viel mehr verstörend, mit zu Monstern verkommenen Menschen, lebensfeindlichen Wüstenlandschaften und aus dem verbliebenen Schrott der Zivilisation zusammengeklaubten Unterschlüpfen – und vor allem Autos. Ganz vielen Autos, mit denen sich die Überlebenden bekriegen und wobei Benzin selten ein Mangel ist. Max ist einer dieser Fahrer und auch er ist eine ziemlich beschädigte Figur, wenn auch etwas weniger auf einem wahnsinnigen Vernichtungstrip als seine üblichen Antagonisten.
Das Spiel jetzt setzt die Handlung in die Nähe des letzten Films, der wiederum keine klare Kontinuität mit den vorherigen Filmen hatte. Es ist immer noch so in etwa die gleiche Welt und die gleiche Figur, aber es gibt selten eindeutigen Verweise auf was vorher passiert. Im Spiel sind ein paar mehr als im Film war, so wird die Donnerkuppel zitiert (Two men enter; one man leaves!). Und es gibt klare Verweise auf den Film, der Bösewicht ist gebaut wie einer der Verbündeten des Film-Bösen.
Die Handlung ist ansonsten simpel: Zu Beginn verliert Max im Kampf gegen Scrotus sein Auto. Doch er trifft auf den buckeligen Mechaniker Chumbucket, der ihm ein neues bauen kann. Allerdings reicht der verbaute V6-Motor Max nicht, er will einen V8. Den könnte er in Gastown gewinnen. Aber dort muss er erstmal hinkommen, eine in der Haupthandlung zu überwindende Mauer und viele Gegner wie Nebenmissionen trennen ihn von der auch im Film erwähnten Stadt.
Viel zu tun in der offene Welt
Das Spiel ist ein Actionspiel mit RPG-Elementen in einer offenen Welt und daher vom Genre in der gleichen Kategorie wie ein Assassin's Creed oder Far Cry. Und als dystopische Version dieser Spiele könnte man es auch treffend beschreiben. Allerdings gibt es ein sehr viel wichtigeres aufrüstbares Auto, dafür weniger reguläre Waffen, und funktioniert das Spielkonzept wirklich gut.
In der Spielwelt sind eine Reihe von Feinden und Orte verteilt, die unterschiedlich viel Aufmerksamkeit und Zeit beanspruchen.
Zuerst fährt natürlich nicht nur der Spieler in der Gegend herum. Sondern auch eine ganze Menge an Feinden, meist die Warboys von Scrotus, die mit ihren Autos direkt den Wagen des Spielers angreifen werden. Wer nicht flieht steckt immer wieder in Autokämpfen, bei denen die Fähigkeiten des Wagens wie die Harpune oder Maxs Schrotflinte zum Einsatz kommen werden.
Zivilisten gibt es auch, sie teilen Informationen oder Schrott, beteiligen sich ansonsten aber nicht an den Kämpfen.
Bei den Orten stolpert man zunächst über die Scarecrows, aus Metall und Leichen zusammengehaltene Feuertürme. Max kann sie mit seiner Harpune niederreißen, was den Gefährdungsfaktor des Sektors etwas senkt und sammelbaren Schrott hinterlässt.
Ähnlich funktionieren die Scharfschützentürme, nur schießen die halt zurück und ist der Lohn nicht Schrott, sondern Munition und von einem Ort weniger beschossen zu werden.
Schrott, Munition und manchmal Erinnerungsstücke der Zivilisation finden sich an den gelb markierten neutralen Orten, bei denen aber auch immer ein paar Banditen sich aufhalten und was aufs Maul wollen.
Das gilt meistens auch für die Aussichtsorte. Bei ihnen gibt es aber noch einen Heißluftballon, mit dem man aufsteigt und so die Umgebung erkunden kann. Das Pendant zum Erklimmen von Türmen in anderen Open-World-Spielen samt Markierung anderer Orte auf der Karte. Einmal erkundet dienen diese Orte dann noch als Schnellreisepunkt und bleiben feindeslos.
Aber es sind die Festungen der Verbündeten, die eher als gute Rückzugsorte dienen. Sie alle sind Teil der Haupthandlung. Da ist zum Beispiel die Mannschaft eines riesiges Schiffs, das mitten in der Wüste auf einem Hügel festsitzt, wobei die Bewohner auf die Rückkehr des Ozeans warten. In diesen Festungen gibt es immer ein paar Nebenmissionen und wer an den anderen Orten die richtigen Kisten findet kann in ihnen Stationen aufbauen. Danach bekommt man bei jedem Besuch der Festung z.B. den Wasserkanister aufgefüllt.
Und natürlich haben auch die Feinde Basen. Die sind oft ebenfalls fantastisch in die kaputte Welt integriert. Es gibt dabei verschiedene Arten von feindlichen Festungen, bei der einen muss beispielsweise der Ölförderturm in die Luft gejagt, bei einer anderen alle Gegner besiegt werden. Diese Orte werden einmal befreit von Alliierten in Besitz genommen und bringen regelmäßige Schrotteinnahmen.
Ein Auto-RPG, ein Survivalgame?
Mit dem Schrott und wenn die Gebiete der Verbündeten ausreichend befriedigt wurden schalten sich immer weitere Upgrade frei, die den eigentlichen Star des Spiels verbessern: Das Magnum Opus getaufte Auto. So wird es schneller, bekommt einen Flammenwerfer, bessere Panzerung und einiges mehr. Manche der Upgrades sind auch ans Bewältigen von Haupt- oder Nebenmissionen gebunden, wie der erwähnte V8-Motor. Tatsächlich machen die Verbesserungen ordentlich was aus, gerade wenn die Autos der Gegner anfangen gepanzert zu werden ist nach etwas investiertem Schrott der Unterschied im Kampf deutlich spürbar.
Und auch Max bekommt Upgrades, die verbessern ihn dann in den Faustkämpfen, die er immer wieder zu erledigen hat wenn er zu Fuß unterwegs ist. Das ist ähnlich wie in den Batmanspielen: Linksklicken zum Angreifen, langer Klick für einen stärkeren langsamen Angriff, wenn ein Gegner angreift muss mit rechter Maustaste gekontert werden. Dazu kommt die Schrotflinte, kurzzeitig verwendbare Nahkampfwaffen und ein paar andere Kampffähigkeiten wie Shims oder später freischaltbare Zusatzfähigkeiten. Außerdem gibt es für Errungenschaften (wie den Zornzustand durch gute Kampfkombinationen in wenigen Sekunden zu erreichen) Punkte, die bei einem Schamanen in weitere Boni umgewandelt werden können.
Max kann nur wenig Munition mit sich rumschleppen. Er heilt sich über das Wasser im Kanister, das nicht gerade viel ist. Und selbst das Benzin im Auto geht mit der Zeit aus. Anfangs wirkt Mad Max daher wie ein Survivalspiel, bei dem knappe Ressourcen sorgsam verwaltet werden sollen. Doch das ändert sich schnell: Überall liegt alles rum was Max braucht, Benzin z.B. gibt es im Überschuss und regeneriert auch noch. Dazu sind die meisten Schamanenupgrades solche, die den Ressourcenmangel entgegenwirken, sodass z.B. mehr Schrott und Wasser gefunden wird. Wenn dann noch ein paar Stationen in den Festungen gebaut wurden ist der Ressourcenmangel komplett vorbei. Immerhin bleibt der Munitionsmangel ein Thema, weil eben nur wenig mitgenommen werden kann, wodurch die Kämpfe interessant bleiben und beim Spielen eben doch etwas rationiert werden muss.
Schnell, hübsch und gutklingend
Positiv überrascht war ich von der Technik des Spiels. Gut, es ist nicht ganz neu, aber das ist mein PC ja auch nicht. Ich hatte absolut stabile 75 FPS, das bei meinem Monitor durch FreeSync gegebene Maximum. So wirken die Fahrten viel besser als wenn es geruckelt hätte. Dabei sieht Mad Max stellenweise toll aus, die diversen Wüstenlandschaften insbesondere. Auch die düstere Umgebung von Gastown ist klasse gemacht und die Autos sind genau so faszinierend gepanzerte coole Schrottkisten wie in den Filmvorbildern. Die in tolle Explosionen aufgehen, wobei auch Feuer und Rauch stark wirken.
Mit gutklingend meine ich besonders die Motoren. Die Musik steht nicht stark im Vordergrund. Und obwohl die Sprecher ausnahmslos gut waren: Es ist der V8-Motor, der genau so klingt wie er klingen soll und generell die Autokämpfe, die eine tolle Soundkulisse schaffen.
Vereinzelte Bugs und die verschwundene Linuxversion
Anders als die Psyche von Mad Max ist das Spiel Mad Max sehr stabil. Ich sah nur vereinzelte Bugs. So blieb in einem Gespräch mit einem Zivilisten der Sound weg, ein anderes endete mit einem schwarzen Bildschirm, nachdem währenddessen ein kleiner Wirbelsturm die Spielfigur in die Höhe riss. Fragwürdiger ist da die Linuxversion. Mad Max wurde eigentlich von Feral portiert und diese Version auch per Steam verteilt. Mittlerweile aber wird sie nicht mehr auf der Steamseite erwähnt und tatsächlich startete sie bei mir nicht (wobei Feral-Portierungen auf meinem System generell seltenst funktionierten), die Windowsversion mit Proton-5.21-GE1 lief dann auch unter Linux einwandfrei.
Die Mischung machts
Ich habe bisher im Grunde nur aufgezählt was im Spiel drin ist und bin dabei noch nicht mal fertig. Es gibt zudem noch Rennen, Stürme, von Zivilisten vergebene Missionen, die Basen haben Verteidigungsmechanismen und Sammelitems gibt es auch noch. Mad Max ist prall gefüllt. Aber das macht ein Spiel noch nicht gut. Andere Open-World-Spiele sind eher abschreckend, wenn es an jeder Ecke etwas anderes zu tun gibt.
Das besondere an Mad Max ist wie gut die Elemente zusammenpassen. Da ist erstmal das Szenario, das vollumfänglich ausgenutzt wird um absurde Charaktere wie Chumbucket mit seiner religiösen Verehrung des Automobils zu platzieren oder auch schillernde Gegenfiguren wie die Kurtisane Hope. Die Hauptmissionen führen in die Festungen, die mit ihren Upgrades und Nebenmissionen Motivation geben die Spielwelt zu erkunden. Das wiederum schafft Bedarf für die Upgrades von Max und dem Magnum Opus, was ebenfalls durch das Erkunden der Spielwelt bedient werden kann. Und dann funktioniert es eben wenn in der Spielwelt einiges los ist, es überall Scarecrows umzustürzen und feindliche Basen zu erobern gibt, ohne dass die Aktivitäten sich zu sehr unterscheiden als dass es verwirren würde. Es hilft auch, dass es mit dem Metallschrott nur eine einzige Sammelressource gibt. Und dass das Spiel auch deutlich macht: Du musst das alles nicht tun, da drüben ist der grüne Punkt der zur nächsten Hauptmission führt. Etwas 40 Stunden habe ich so im Spiel verbracht, was für ein Einzelspieler-Actionspiel sehr ordentlich ist.
Außerdem ist es endlich mal ein gutes Spiel zu einem guten Film. Auch wenn Max im Spiel nicht aussieht wie Max im Film, ist es doch klar die gleiche Welt, bedient sich Film wie Spiel der gleichen Elemente und Atmosphäre und baut dabei das Computerspiel dieses Universum ein bisschen weiter aus als ein Film es könnte. Erhalten bleibt auch der Fokus auf das Auto und auf Autoschlachten, was größtenteils durchaus Spaß macht.
Nur stellenweise wird das etwas zum Manko, wenn später die gegnerischen Wagen ziemlich viel aushalten und man eigentlich keine Lust mehr hat, schon wieder Minuten darein zu investieren sie kaputtzurammen. Dann aber hat man meist auch andere Optionen wie den Flammenwerfer, man muss sich nur überwinden deren Munition auch einzusetzen.
Ein paar der Sammelelemente hätten auch nicht sein müssen. So kann man Convoys vernichten und dadurch Trophäen für das Magnum Opus sammeln, welche die Werte verbessern. Die Kämpfe sind nett, nur dass die Upgrades sich wiederholen und jeder Bonus der gleichen Kategorie so stark ist wie der andere. Die findbaren Zivilisationsartefakte sind okay wenn Max einen Kommentar abgibt, aber sie zu sammeln gibt das Spiel außer einer Prozentanzeige keinen Grund. Und warum man feindliche Wagen kapern und in die eigene Garage stellen sollte bleibt auch unklar, ist der Magnum Opus doch schneller, stärker, besser zu steuern – und wiegt durch die anderen Wagen erstmal von Gegnern ignoriert zu werden das nicht auf.
Aber das sind sind kleine Macken in einem ansonsten tollen Spiel, das mit Story, Grafik, Spielmechaniken und vor allem dem Szenario super ansprechend ist. Wer ein bisschen was übrig hat für diese Art von Open-World-Actionspielen sollte es nicht weiter ignorieren.
Heroic 1.0 veröffentlicht, FOSS-Client für Epic
Monday, 11. January 2021
Heroic ist ein Programm, um unter Linux Spiele des Epic-Stores zu starten. Da Epic Linux nicht unterstützt sollte man meinen, dass es für Linuxspieler uninteressant wäre. Und würde sich täuschen. Denn Epic haut ununterbrochen kostenlose Spiele raus. Und nichtmal Mist oder was schon hundertmal umsonst verteilt wurde, sondern in meinem Account liegen zum Beispiel mit Troy, Alien Isolation und Civilization VI interessante Spiele bislang ungespielt herum.
Heroic baut auf legendary auf. Das ist ebenfalls ein Client für den Epic-Store, aber es ist ein Kommandozeilenprogramm. Ohne den Code studiert zu haben ist die Aufteilung wohl so, dass legendary den Großteil der Arbeit macht und Heroic dafür eine grafische Oberfläche bereitstellt. Das ist mir hochwillkommen, auch weil GameHub diese Aufgabe nicht wirklich übernehmen zu wollen scheint.
Der Login ist leider noch etwas frickelig. Man soll sich auf der Webseite einloggen und dann die SID
eingeben. Wie man die findet erklärt Heroic aber nicht. Da ist es einfacher, ein Terminal aufzumachen und mit
legendary auth
den Login zu erledigen. Legendary macht zuerst auch nur die Webseite im Browser auf, nach dem Login aber wird die SID im Terminal angezeigt und kann auch dort direkt für das Programm gesetzt werden. Ist legendary eingeloggt ist auch Heroic eingeloggt. Grundsätzlich sollten zumindest manche Spiele später nach der Installation auch starten, ohne dass ein weiterer Login notwendig ist.
Heroic wird sicher noch nicht per Paketmanager deiner Distribution verfügbar sein, aber beim Release ist ein AppImage angehängt. Das ausführbar machen und starten reicht, wenn denn legendary installiert ist, was wiederum im Paketmanager vorhanden sein sollte. Wenn nicht kann auch das gemäß der Anleitung auf der Github-Seite manuell installiert werden.
Dabei aber nicht vergessen, dass Heroic trotz der Versionsnummer ein sehr junges Projekt ist. Dass etwas nicht funktioniert ist zu erwarten.
Sustaphones: Eine Seite für lang nutzbare Smartphones
Thursday, 31. December 2020
Sustaphones ist ein von mir gebautes Mashup. Die Seite listet zum einen Telefone auf, die von alternativen Android-Distributionen wie LineageOS unterstützt werden. Außerdem zeigt sie via verlinkten Anleitungen von iFixit wie einfach ihre Batterien auswechselbar sind.
Motivation
Mir geht die Wegwerfkultur bei den Smartphones gegen den Strich. Smartphones sind kleine Computer und mittlerweile unheimlich leistungsstark. Computer wie PCs werfen wir allerdings nicht einfach weg. Am Anfang war es ja noch logisch sie nach maximal zwei Jahren auszuwechseln, zu groß waren die Sprünge der neuen Modelle bei Software, Bildschirmqualität, Speicherplatz und Prozessorleistung. Doch seit schon mehreren Jahren sind die gestern gebauten Telefone für eine lange Zeit konkurrenzfähig. Oder: Sie wären es, wenn sie nicht bewusst als Wegwerfprodukte konzipiert würden. Das passiert auf zwei Wegen. Zuerst mit ausbleibenden Sicherheitsupdates, wodurch es schnell unverantwortlich wird ein ansonsten einwandfreies Gerät weiterzuverwenden. Dann mit dem nicht auswechselbaren Akku, der unweigerlich nach wenigen Jahren seinen Geist aufgeben wird, woraufhin das Gerät dann Schrott ist – falls das Wechseln des Akkus doch möglich ist, ist es oft zu teuer.
Anfang des Jahres hatte ich mich nach Lösungsmöglichkeiten umgesehen. Die Überlegungen landeten dann auch hier im Blog. Linux auf Smartphones könnte ein Ausweg sein, aber war damals noch nicht praxistauglich und ist es wohl auch heute noch nicht. Kommerzielle Android-Telefone mit Nachhaltigkeit als Ziel, wie das Fairphone, sind nicht nur teuer, sondern auch keine komplette Garantie für langfristige Unterstützung. Firmen können pleitegehen. Und das Fairphone 3 zum Beispiel hatte zu dem Zeitpunkt nichtmal Android 10, was mich abschreckte (mittlerweile wurde das Update nachgereicht).
Android mit Communityunterstützung erschien wie die beste Möglichkeit, womit ich auch schon Erfahrung hatte. Doch welche moderne Hardware taugt? Denn selbst wenn ein Gerät von LineageOS oder einem anderen Rom unterstützt wird hilft das ja noch nicht viel, wenn der eingeklebte altersschwache Akku das Gerät in naher Zukunft unnutzbar macht. Ich landete erst beim LG G3 und dann beim LG G5, aber mir fehlte die Übersicht über mögliche Alternativen.
Jedes Android-Projekt wie LineageOS führt zwar Listen welche Hardware es unterstützt, aber welche davon ist reparierbar?
Genau diese Übersicht stellt sustaphones her. Denn es listet viele Smartphones mit Unterstützung für alternative Android-Distributionen, das heißt mit Updates weit über die minimale Herstellerunterstützung hinaus. Und zudem, wie schwierig ein Akkuwechsel ist.
Datenquellen
Die Daten werden von den verlinkten Projekten bereitgestellt, mal mehr, mal weniger direkt.
LineageOS hat ein Wiki mit einer Hardwareliste. Schon die wäre auslesbar, aber noch besser ist, dass sie aus einer Yaml-Datei gewonnen wird die auf Github lebt. Damit hat die Seite direkt Infos zu vielen Geräten, wobei LineageOS auch noch die größte und bekannteste Alternative zum Herstellerandroid ist.
MoKee ROM kenne ich weniger gut. Es ist scheinbar ein asiatisches Projekt, was es interessant macht, da es einige Geräte unterstützt die bei LineageOS fehlen. Leider fand ich hier keine so direkt maschinenlesbare Liste. Aber es gibt auf der Webseite eine Übersicht samt Hardwareinformationen, die lud ich in meine Datenbank.
Bei iFixit war ich überrascht, sogar eine API für genau solche Projekte zu finden. Hervorragend gemacht lieferte sie alle notwendigen Informationen, die Anleitungen, ihre Bewertung und sogar Bilder. Die Arbeit bestand vor allem darin die Namen zuzuordnen, da die sich bei den drei Projekten gerne mal unterscheiden und gerade iFixit mit den eindeutigen Codenamen der Geräte nichts anfangen konnte (falls ich nichts übersah...).
Die zu kombinierbaren Daten für eine hilfreiche Seite waren also vorhanden.
Es gibt noch mehr Möglichkeiten: Wie schwierig ein Bildschirm zu reparierbar ist wäre auch eine interessante Information, und es gibt noch weitere Android-Projekte wie /e/, Paranoid Android und Resurrection Remix OS. Ob ich die Seite in diese Richtung erweitere wird vom Interesse abhängen. Meinungen dazu?
Technik
Sustaphones ist eine statische Seite, die von mehreren handgeschriebenen Ruby-Skripten gebaut wird. Jeweils ein Skript ist dafür zuständig, die Daten von den unterstützten Projekten zu holen und in die Datenbank zu schreiben. Ein zusätzliches baut mit den Daten das HTML der Seite.
Netlify ist derzeit der Hoster, was für solche statischen Seiten superkomfortabel und noch dazu kostenlos ist. Netlify holt sich das generierte HTML direkt von Gitlab.
Beim Design habe ich mich wieder zurückgenommen und ein CSS-Framework eingesetzt, diesmal fiel die Wahl auf Bulma. Die Such- und Filterfunktion ist mit List.js gebaut. Abgesehen davon wird keinerlei Javascript genutzt.
Einige Zeit ging für die Optimierung der Performance drauf, ich orientierte mich dabei an der Bewertung von Chromiums Lighthouse. Dass es eine statische Seite ist half, aber andererseits ist es eine lange Liste, daher war die Performance nicht direkt super. Jetzt werden die Bilder erst nachgeladen wenn sie sichtbar werden, mittels der relativ neuen Browserfunktion. Zudem stammen die Bilder direkt von der iFixit-API, die dafür ein CDN benutzt, das wird preconnectet. Schließlich wird das Javascript mit defer
eingebunden und List.js erst initialisiert wenn der Besucher die Suchfunktion benutzen will. All die Optimierungen zusammengenommen sollte die Seite ziemlich schnell laden.
Fazit und Ausblick
Ich empfand sustaphones direkt als hilfreich. Vorher hatte ich keinen klaren Überblick über Alternativen zum LG G5. Jetzt weiß ich, dass es tatsächlich kaum neuere Telefone mit Lineage-Unterstützung (gleiches gilt für MoKee) und einfachem Akkuwechsel gibt. Die letzten sind aus 2016, besser als das G5 zum Beispiel das hierzulande seltene LG V20. Neuer ist nur das 2017 veröffentlichte Xiaomi Mi A1, das zwar keinen direkt auswechselbaren Akku hat, aber eine angeblich leicht nachvollziehbare Anleitung – die aber nicht mehr aufrufbar ist.
Ein neues Android-ROM auf ein gewöhnliches Smartphone aufzuspielen ist wirklich eine Möglichkeit, der Wegwerfkultur entgegenzuwirken. Denn jede Lebenszeitverlängerung hilft. Aber darauf jetzt zu setzen, um sich für ein Telefon zu entscheiden und das jahrelang zu benutzen? Das ist schwierig, wenn seit vier Jahren keine reparierbare moderne Hardware nachkam. Das G5 ist klasse, aber wie lange wird es davon noch gute Modelle geben?
Das alles macht das mittlerweile mit Android 10 erhältliche Fairphone 3 attraktiver.
Wenn ich die Seite nochmal erweitere wäre daher eine zweite Unterseite mit kurzen Vorstellartikeln zu Linux- und fairen/nachhaltigen Telefonen ganz oben auf der Todo-Liste.
Davon abgesehen, gibt es Vorschläge oder Feedback für die Seite?
Slay the Spire, ein gelungener Genremix
Monday, 14. December 2020
Slay the Spire ist ein Roguelike mit Handkarten. Es führt beide Konzepte gekonnt zusammen und ist auch insgesamt einfach überraschend gut gemacht.
Einfacher Beginn
Ganz zu Beginn ist ein einzelner Charakter verfügbar, der mit einer geringen Auswahl an Handkarten das Spiel startet. Handkarten haben viele verschiedene Effekte, so würde eine Blockkarte dem Charakter 6 Blockpunkte gegeben, die ebensoviel Schaden abwehren. Der Charakter hat zudem ein Startartefakt, zum Beispiel eines das nach jedem Kampf ein paar Lebenspunkte heilt.
Auf einer Übersichtskarte muss Schritt für Schritt die nächste Station ausgewählt werden. Das kann ein Lagerfeuer sein, an dem ebenfalls die Lebenspunkte geheilt werden können oder aber eine Karte verbessert werden kann; ein Händler, bei dem Artefakte, Tränke und neue Karten gekauft werden können; Multiple-Choice-Events mit diversen Effekten, Schatztruhen mit Artefakten – oder aber Kämpfe.
Fortgeschrittene Kämpfe
In den Kämpfen sind die Gegner mit den Handkarten zu besiegen. Es sind Rundenkämpfe. Ein Icon über den Gegnerköpfen zeigt ihre nächste Aktion an, z.B. dass der jeweilige Gegner angreifen oder sich buffen wird. Solange noch Aktionspunkte und Karten da sind können diese gespielt werden. Die simplen machen einfach Schaden oder erhöhen den Blockwert. Dann gibt es solche, die den Gegner verwundbarer machen oder schwächen. Dazu kommen viele andere Karten, von denen nach den Kämpfen immer eine zusätzliche in den Vorrat gelegt werden kann, die weitreichendere Effekte haben.
Welche Karten verfügbar sind hängt vom Charakter und Spielfortschritt ab. Jeder Charakter hat mehrere Freischaltungen. Beim Tod oder nach Bewältigen des Finales werden die gesammelten Punkte gezählt und dem Konto gutgeschrieben. Ist die Grenze für die nächste Freischaltung überschritten, werden weitere Karten (oder auch Artefakte) freigeschaltet, die dann beim nächsten Durchgang gefunden werden könnten. Genauso werden auch die anderen drei Charaktere erst nach und nach spielbar. Und während der erste, der Ironclad, ein ziemlich simpler Kämpfertyp ist, wird es zunehmend komplizierter. Dann greifen die Statuseffekte mehr zusammen, gibt es Giftschaden, Orbs mit passiven und aktiven Effekten oder Kampfzustände und mächtige Zusatzkarten mit speziellen Effekten, die alle sinnvoll eingesetzt werden müssen damit der Finalkampf erreicht und gewonnen werden kann.
Beherrschbare Komplexität
Slay the Spire macht also einige Sachen ziemlich gut. Es fängt relativ simpel an, ist dabei aber nicht zu einfach, weil es schon einen Moment dauert bis man versteht wie selbst die einfachen Anfangskarten ineinandergreifen. Dabei ist aber selbst ein Scheitern vor dem Finale immer ein Fortschritt, nicht nur per gemehrtem Spielerwissen, sondern weil ja auch im Laufe der Zeit neue Karten, Artefakte und Charaktere dazukommen. So werden immer weitere Konzepte eingeführt. Und die sind durchaus erlernbar, ist der Effekt der Karten doch jederzeit in klaren Worten beschrieben. Insgesamt gibt es später dank den neuen Charakteren, Karten und Artefakten immer mehr Möglichkeiten, sodass dieses auf dem ersten Blick simple Spiel viel länger Spaß macht als man erst erwartet.
Die Radeon RX 6800 (XT) unter Linux sieht klasse aus
Wednesday, 18. November 2020
Ich bin gerade durch das Phoronix-Review der neuen AMD-Grafikkarten gegangen und bin beeindruckt. Sie testen die Leistung für Spiele unter Linux, mit und ohne Proton und mit AMDGPU-PRO sowie dem freien Mesa 20.3. Das Ergebnis ist einfach stark. Sie kommen alles zusammengerechnet auf dieses Benchmarkergebnis:
Die Treiber sind sehr nah beieinander, die 6800 XT is nah bei der RTX 3080 und die 6800 stärker als die 2080 Super. Zum Vergleich, so sieht das in meinem Meta-Benchmark unter Windows aus:
Das passt! Wenn auch die 3070 wahrscheinlich unter Linux anders als unter Windows etwas stärker als die kleinere 6800 ist, wird der Unterschied nicht groß sein. AMD hat also nicht nur eine Grafikkarte herausgebracht, die ordentlich unter Linux läuft. Das hatten wir schon in vorherigen Releases. Sondern AMD hat eine Karte herausgebracht, die es mit Nvidas neuen Top-Karten aufnehmen kann und deren relative Leistung unter Linux mit dem freien Treiber erhalten bleibt. Es gibt also endlich eine High-End-Grafikkarte für Linux mit einem freien Treiber.
Was großartig ist, auch wenn man selbst nicht unbedingt so viel für eine Grafikkarte ausgeben will. Die günstigeren Varianten werden ja ähnlich gut – relativ gesehen – unter Linux laufen.
Age of Empires 2: Definitive Edition unter Linux
Monday, 16. November 2020
Die erneuerte Variante des Klassikers Age of Empires 2 läuft mit Proton unter Linux. Sogar der Multiplayer geht, aber nicht ohne weitere Anpassungen. Die Goldwertung auf ProtonDB ist da etwas irreführend.
Ich benutzte Proton-5.9-GE-8-ST, die modifizierte GloriousEggroll-Version. Damit lief das Offline-Match gegen die KI, ohne dass mir Probleme auffielen. Aber beim Multiplayer gab es immer fast sofort einen Disconnect.
Die Lösung fand ich auf Github:
rm ~/.steam/steam/steamapps/compatdata/813780/pfx/drive_c/windows/system32/ucrtbase.dll cd ~/.steam/steam/steamapps/compatdata/813780/pfx/drive_c/windows/system32/ wget "https://aka.ms/vs/16/release/vc_redist.x64.exe" cabextract vc_redist.x64.exe cabextract a10
Nach dem Ersetzen der Dateien lief dann auch der Multiplayer, bei mir bis jetzt stabil.
Update: Ich habe jetzt eine Weile nicht mehr gespielt, aber der Fix sollte weiterhin funktionieren. So landete erst vor drei Wochen – im Februar 2023 – in der ProtonDB ein Eintrag, laut dem Age of Empires mit einem cabextract-Workaround für den Multiplayer repariert werden konnte. Interessant ist die Abweichung, anstatt die vc_redist.x64.exe herunterzuladen kann sie dem Eintrag zufolge auch aus dem Hauptverzeichnis des Spiels kopiert werden. Und es funktionierte mit einer neueren Protonversion, Spieler sind also nicht auf die 5.9-GE8 beschränkt, sondern sollten einfach die aktuelle versuchen.
Multiplayer meinte bei mir übrigens nicht ranked, sondern ich spielte normale Multiplayermatche mit einem Kumpel. Bei der Microsoft-Accounteinbindung gab es auch Probleme, sodass ich manche dieser kleinen Aufgaben nicht erledigen konnte, die Avatar-Icons freigeschaltet hätten. Ich weiß nicht, ob diese Probleme Ranked-Spiele blockiert hätte – Erfahrungen dazu bitte gerne als Kommentar teilen.
Dafür hatte ich einen sehr positiven Eindruck von der Performance des Spiels. Auch gegen mehrere Gegner und mit vielen Einheiten auf der Karte sah ich keine FPS-Einbrüche. Gut, würde man bei einem so alten Spiel außerhalb extrem vollen Karten vielleicht auch nicht erwarten, aber Proton kann ja manchmal doch Performance kosten. Stabil war das Spiel auch, die Abstürze die ich sah hingen völlig an einer defekten Grafikkarte. Sobald die ausgewechselt war lief das Spiel bei mir komplett stabil.
Regions of Ruin – Toller Ansatz, aber es fehlt was
Monday, 9. November 2020
Regions of Ruin ist eine Genremischung in Pixelgrafik. Die Zutaten: Ein Sidescroller mit RPG- und Aufbauspielelementen. Man spielt einen Zwerg, der die aussterbende Zwergenrasse wiedervereinen will, dabei aber eine Monsterhorde voller Orks und Goblins besiegen muss.
Vom Lagerfeuer zum Dorf
Startpunkt ist die eigene Siedlung. Wo anfangs nur zwei Zwerge sich an einem Lagerfeuer wärmen entsteht nach und nach ein richtiges Dorf, wenn mit gesammelten Rohstoffen weitere Gebäude errichtet und ausgebaut werden. So kannst du zum Beispiel eine Taverne errichten. In der Taverne warten Söldner darauf, mit in die Gruppe genommen zu werden. Wird die Taverne vergrößert gibt es mehr Söldner zur Auswahl, dann kommt auch ein Brett für Kopfgeldquests hinzu. Die Rohstoffe wie Holz dafür werden nicht nur von dir selbst gesammelt, sondern auch von Arbeitern – meist befreiten Zwergen – die zu von Gegnern gesäuberten Gebieten geschickt werden können und dann von dort in einer festen Rate Rohstoffe einbringen. Solange der Vorrat reicht und das Lager noch nicht voll ist.
Diese Gebiete sind die auf der Karte verteilten und meist sehr kurzen 2D-Level. In ihnen gibt es NPCs – die oft Quests vergeben – Rohstoffe, Schätze und Monster. Um die Quests zu erfüllen muss man fast immer Monster töten, die auf dem oder einem anderen Level verteilt sind. Die werden schnell sehr stark, wohl dem Spieler der seine Söldnergruppe voll ausgebaut hat. Schätze meint Ausrüstungsgegenstände, wobei der Zwerg neben Rüstung, Waffe, Schild und Helm noch ein Amulett und einen Ring tragen kann. Wie beim Diablosystem haben manche dieser Items magische Eigenschaften und gibt es verschiedene farbig markierte Stärkeklassen, nach einer Weile müssen sie schon mindestens blau-magisch sein um eine Option sein zu können.
Hakelige Kämpfe
Die Kämpfe gegen die Monster und das Befreien der Level sind das Hauptelement des Spiels, und hier fängt es an problematisch zu werden. Anfangs alleine konnte man die Gegner sehr überlegt ausschalten, es gibt sogar eine Schleichfunktion, samt Verstecken hinter Fässern und Bonusschaden wenn Gegner überrascht werden. Treffer von Gegnern können Verletzungen verursachen, dann sinkt der Maximalgesundheitszustand, der Heiler in der Siedlung kann die Effekte entfernen. Angriffe können geblockt werden, es gibt Standard- und stärkere langsamere Angriffe, plus Ausdauerbalken, und mit bei Levelaufstiegen aktivierten Effekten kann der Spielercharakter angepasst werden.
Später jedoch ist man in der Gruppe unterwegs, und dann werden die Kämpfe sehr chaotisch. Gewinnen wird die stärkere Gruppe, aber welche das ist ist vorher kaum zu sehen. Die Level haben keine Gefährlichkeitsanzeige. So gibt es eine Hauptstory, in der Zwergenrunen aktiviert werden sollen, was dann jeweils ein entferntes Gebiet markiert. Das vierte davon war für mich und meine Gruppe viel zu stark – aber wie soll man erkennen, wann man für die Gegnergruppe bereit ist? Ich könnte jetzt nur Zeit investieren, mehr Level bewältigen, meinen Charakter und seine Gruppe aufleveln (auch mit einem Gebäude in der Siedlung, das Söldner viel stärker macht), und es dann periodisch wieder probieren. Aber das ist doch keine Lösung.
Abnutzungserscheinungen
Das wirkt auch deswegen so unattraktiv auf mich, weil sich jetzt langsam das Prinzip der 2D-Level abgenutzt hat. Wenn die Quests praktisch immer Töte ein paar Monster sind, wird das im Laufe der Zeit weniger interessant, selbst wenn das Spiel immer mal wieder neue Ideen aufbringt, wie (nicht toll umgesetzte) Festungen samt Monsterwellen, die man überleben soll. Gleichzeitig haben die regulären Gebiete das gleiche Problem: Die Monster sind teils zu stark, ohne dass das vorher ersichtlich ist. Sowieso, Grinden zu müssen ist kein gutes Spieldesign.
Die Bedienung ist dabei auch ein Problem. Ein Spiel wie Regions of Ruin spielt sich viel besser mit dem Controller. Das wird auch unterstützt, aber das Interface ist dafür nicht ausgelegt. Das Journal zum Beispiel lässt sich mit dem Controller gar nicht aufrufen, man muss die Maus in die Hand nehmen. Muss man auch, um im Söldnermenü den ausgewählten zu wechseln. Und sollte man, um auf der Karte Gebiete auszuwählen, da die Controllersteuerung dort nur manchmal und umständlich funktioniert. Problematisch wird auch das Schleichen: Jede der Schultertasten ist belegt, aber betätigt man aus Versehen die fürs Schleichen ist das ein Umschalter, der den Zwerg massiv verlangsamt – und damit im Gefechtschaos meist direkt tötet. Es ist offensichtlich, dass der Entwickler mit Maus und Tastatur spielt. Machen manche PC-Spieler auch bei solchen Spielen, macht den meisten aber keinen Spaß.
Stilfragen sind subjektiv, Bugs sind es nicht
Wenn die Grafik wenigstens konsistent hübsch wäre! Sie ist es stellenweise. Aber der Pixelmatsch bei den Charakteren und Gegenständen hat trotz der Anleihen mit der Eleganz der Spiele meiner Kindheit nichts zu tun. Immerhin wird die Freiheit einer solchen Engine genutzt, wenn jeder Ausrüstungsgegenstand am Spielercharakter zu erkennen ist (naja, soweit die Pixelfantasie trägt), die 2D-Gebiete voller Dinge und Hintergrundelemente vollstehen und in der Siedlung die Gebäude Schritt für Schritt wachsen. Aber trotzdem: Hübsch ist anders.
Voll zu den Problemen passt dann auch, wenn die Begleiter in den späteren vertikalen Leveln hängen bleiben. Nach unten fallen geht noch, aber dem Spieler springend folgen oder nach oben klettern - keine Chance. Oder wenn sie bei den Belagerungen an den Rand der Karte rennen und sich dort ohne Gegenwehr angreifen lassen. Da setzt die KI einfach komplett aus.
Fazit: Ein gutes Konzept macht noch kein gutes Spiel
Regions of Ruin hat mit seiner Mischung ein interessantes Konzept. Es fasziniert gerade zu Beginn, wenn all die Spielelemente anfangen zusammenzugreifen: Der Siedlungsaufbau, die hektischen Kämpfe, das Aufleveln des Charakters, dann die vielen Quests die Welt füllen und durch NPCs und gesammelte Buchseiten langsam die Hintergrundgeschichte zusammenkommt. Doch schnell verpufft dieser Effekt, wenn die kurzen 2D-Level zu wenig überraschen, die Kämpfe sich als repetitiv und zu chaotisch erweisen und der stark wachsende Schwierigkeitsgrad Grinden erfordert. Dazu die Schwächen bei Bedienung, Grafik und Begleiter-KI. Das erinnert an Pixel Piracy, das ähnlich faszinierend und dann unfertig war, wobei das mit etwas mehr Spielfortschritt auch noch unweigerlich kaputt ging. So kaputt ist Regions of Ruin nun nicht, doch auch es entpuppt sich nach wenigen Stunden leider als unfertiges Konzeptspiel.