Cities Skylines im Humble Bundle
Tuesday, 26. May 2020
Eines der meistgespielten Spiele aus meiner Spielesammlung wird gerade im Humble Bundle (wer möchte: Affiliate-Link) samt einiger Erweiterungen verkauft.
Cities: Skylines ist ein Simcity-Klon, der damals kurz nach einem gescheiterten Simcity-Reboot startete, den Macken wie eine verpflichtend dauerhaft bestehende Internetverbindung plagten. Skylines vermied solche Spielerdrangsalierungen und wurde so der Fanfavorit, die sympathischere Alternative.
Über Skylines habe ich mittlerweile einiges geschrieben und nichtmal nur im Blog. 2016 stellte ich hier das Spiel vor, lobte es und ging auf ein paar Schwachstellen ein. 2017 erweiterte ich das in einem Artikel über die bei mir auftretenden Simulationsfehler (die mittlerweile meinem Eindruck nach weniger spielblockierend sind). Vor einem Jahr folgte ein Artikel auf GamersGlobal über die Erweiterungen. Im Laufe der Jahre bekam Skylines einige davon. Ich habe für GG alle damals veröffentlichten und spielrelevanten vorgestellt und getestet.
Was meine ich mit spielrelevanten? Es gibt drei Arten von Erweiterungen für Skylines. Content Creator Packs, Radioerweiterungen und die anderen. Die ersten beiden halte ich für nicht relevant für normale Spieler. Content Creator Packs geben nur zusätzliche Assets, also z.B. neue Gebäude, die einem bestimmten Stil entsprechen. Ohne weitere Funktionen kann man damit nur seine Städte aufhübschen, wenn man sie gezielt einsetzt. Radioerweiterungen bringen neue Musik, was nett ist, aber man kann auch einfach seine eigene Musik im Hintergrund laufen lassen. Aber die anderen Erweiterungen, die sind relevant, denn sie bringen neue Funktionen wie z.B. neue Fortbewegungsmittel und lockern so den Spielablauf auf, wenn man das Grundspiel schon durch hat.
Mit dem Hintergrund ein paar Worte zum Bundle. Wer das Spiel noch nicht und auch nur minimal Interesse am Genre hat hat sollte auf jeden Fall zuschlagen. Die erste Stufe kostet 1€ und beinhaltet das Grundspiel sowie ein paar Musikstücke für das Ingame-Radio. Mit dem Grundspiel kann man sich schon locker 30 Stunden beschäftigen, ohne dass andere Erweiterungen nötig wären.
In der zweiten Stufe kommen dann ein paar echte Erweiterungen hinzu. Concerts, Snowfall und Natural Disasters. Doch ich muss warnen: Die sind nicht richtig toll. Concerts ist nett, aber eine kleine Erweiterung, in der ein Konzertgelände platziert und verbessert werden kann. Snowfall hat das Potential toll zu sein, denn der Wintereinbruch sieht nett aus und hat Auswirkungen auf den Verkehr und den (mit Snowfall eingeführten) Heizbedarf, aber es ist leider vermurkst: Es gibt nur ewige Schneekarten oder die gewöhnlichen, in denen nie Schnee fällt. Es bringt also enttäuschenderweise keinen dynamischen Jahreszeitenwechsel. Und Natural Disasters schließlich hat Zufallskatastrophen wie Kometeneinschläge, gegen die man Schutzgebäude wie Bunker und Warnsysteme bauen sollte. Das unterhält etwas, aber nicht lange. Snowfall und Natural Disasters sind zwei der ältesten Erweiterungen (After Dark gab es davor, ist aber inzwischen fast komplett im Grundspiel mit dabei), bei denen die Entwickler in ihren Erweiterungsmöglichkeiten scheinbar noch sehr beschränkt waren.
Wer mehr als die erste Stufe kaufen will sollte direkt zur dritten Stufe springen. Die Erweiterungen hier sind hervorragend. Mass Transit, Green Cities, Campus und Industries bringen alle gute neue Spielelemente. Mass Transit hat viele neue Transportmöglichkeiten, und da ein großer Teil des Spiels die Verkehrsplanung umfasst sind die angenehm spielauflockernd. Green Cities bringt alternative umweltschonende Zonen, was die Stadt aufhübscht und immer wieder eine nette Alternative ist, mit Vor- und Nachteilen. Campus bringt riesige Universitätsgebäude, die statt der Standarduniversität gebaut werden können. Diese Gebäude sind in einer Zone zusammengefasst, wobei diese Zone dann auflevelt und neue Gebäude freischaltet, was wiederum die Universität und umliegende Anwohnerzonen verbessert. Und schließlich Industries, was wahrscheinlich die beste Erweiterungen ist. In Industries wurde das Wirtschaftssystem überarbeitet. Statt wie zuvor einfach Industriezonen zu markieren und höchstens noch einen Industriezweig vorzugeben, können nun einzelne größere Fabriken und Betriebe platziert werden. Die fördern dann Rohstoffe oder verarbeiten sie, in mehrstufigen Abfolgen. Die Holzindustrie z.B. fällt Bäume, es gibt dann Bretter und Sägemehl, Möbel, Pellets und Papier, samt Bedarf für Produkte anderer Industriezweige. Was gut in das Spiel eingreift, denn gleichzeitig werden so Arbeitsplätze geschaffen und muss der dadurch entstehende Verkehr geleitet werden.
Wer das meiste aus den Erweiterungen ziehen will aktiviert sie nacheinander. So gibt es stufenweise neue Ergänzungen, die man in seine Stadt einbauen kann. Wer direkt mit den Erweiterungen anfängt wird sich an ihnen weniger erfreuen.
Es sei erwähnt, dass dieses Bundle nicht komplett ist, es gibt mit Parklife eine weitere gute ältere Erweiterung und mit Sunset Harbor ist die neueste nicht dabei, die ich auch selbst noch nicht getestet habe. Es ist auch durchaus möglich, dass Skylines nicht mehr ewig lange gepflegt wird und das Bundle ein Signal ist, dass bald ein Nachfolger angekündigt werden wird. Da weiß ich nichts genaues drüber, habe aber entsprechende Spekulationen gelesen. Das muss nicht vom Kauf abhalten, aber wer lieber auf einen Nachfolger warten wollte sollte sich dem bewusst sein.
Skylines läuft gut unter Linux, es ist eines der wenigen Linuxspiele die ich nicht mit Proton laufen lassen muss. Auch eine Bemerkung wert: Das Spiel hat die andere Person im Haus beim Zuschauen so fasziniert, dass sie das Computerspielen aufgenommen hat und Skylines jetzt auch selbst spielt. Alternativ oder zusätzlich zu den Erweiterungen gibt es eine aktive Modszene, die das Spiel gut erweitert hat. Wirklich einen Blick wert.
Knives Out
Monday, 25. May 2020
Viele gute Schauspieler in einem modernen Detektivkrimi, wobei dieser Detektiv namens Benoit Blanc (Daniel Craig) nicht wirklich die Hauptrolle ist. Das ist dagegen Marta Cabrera (Ana de Armas, das Hologram aus Blade Runner!), die Pflegerin des kürzlich verstorbenen Familienpatriarchs. Ein Selbstmord, oder nicht? Und wem wird das Erbe zufallen? Jeder in der dysfunktionalen Familie hat an ihm Interesse.
Knives Out ist einfach hervorragend gemacht. Klar angelehnt an die alten Detektivfilme wie Miss Marple und Poirot ist der Detektiv (unfassbar, dass das James Bond ist) mindestens so schrullig wie die Familienmitglieder und man könnte das alles erst für eine kleine Komödie halten. Würde dann aber verpassen, wie gut alles durchkonstruiert ist. Jede Szene hat eine Bedeutung, wenn etwas beiläufig erwähnt wird, wenn ein Objekt in irgendeiner Form vorkommt, wird es später wichtig werden.
Dabei schafft es die Story zu überraschen ohne unfair zu werden. Man hätte drauf kommen können, der Zuschauer bekommt alle notwendigen Hinweise. Das ist ein schöner Unterschied zu den älteren Varianten dieser Art von Film, wobei die auch nicht diese Art von Komödie waren, nicht zwischendrin das Gerne wechseln konnten. Knives Out ist zurecht ein großer Erfolg gewesen.
Oga als Alternative zu Nokogiri
Friday, 22. May 2020
Der bekannteste XML-Verarbeitungshelfer im Rubyland ist sicherlich Nokogiri. Mit Nokogiri kann man schnell Informationen aus XML und HTML herausholen, per xpath oder CSS-Selektor. Ein Beispiel von der Webseite:
doc = Nokogiri::HTML(open('https://nokogiri.org/tutorials/installing_nokogiri.html')) puts "### Search for nodes by css" doc.css('nav ul.menu li a', 'article h2').each do |link| puts link.content end puts "### Search for nodes by xpath" doc.xpath('//nav//ul//li/a', '//article//h2').each do |link| puts link.content end
Gegen Nokogiri spricht eigentlich nur die Installation. Basierend auf der libxml, ist es desöfteren mindestens eine zusätzliche Abhängigkeit, an die man im Zweifel bei der Servereinrichtung denken muss. Manchmal führt es auch zu ganz komischen Problemen.
Hier setzt Oga an. Es hat diese Abhängigkeit einfach nicht. Das macht die Installation unproblematischer. Die API ist etwas anders als bei Nokogiri, einige der Unterschiede sind in einer Dokumentationsdatei beschrieben. Es ist aber schon sehr ähnlich:
onli@fallout:~$ irb 2.5.3 :001 > require 'oga' => true 2.5.3 :002 > xml = Oga.parse_xml('<a><b test="def">abc</b></a>') => Document( children: NodeSet(Element(name: "a" children: NodeSet(Element(name: "b" attributes: [Attribute(name: "test" value: "def")] children: NodeSet(Text("abc")))))) ) 2.5.3 :003 > xml.xpath('/a/b') => NodeSet(Element(name: "b" attributes: [Attribute(name: "test" value: "def")] children: NodeSet(Text("abc")))) 2.5.3 :004 > xml.at_xpath('/a/b') => Element(name: "b" attributes: [Attribute(name: "test" value: "def")] children: NodeSet(Text("abc"))) 2.5.3 :005 > xml.at_xpath('/a/b').get('test') => "def" 2.5.3 :006 > xml.css('b') => NodeSet(Element(name: "b" attributes: [Attribute(name: "test" value: "def")] children: NodeSet(Text("abc"))))
Überraschenderweise bin ich mit Oga selbst noch in keinerlei Probleme gelaufen, seitdem ich beispielsweise das Blogsystem ursprung darauf umgestellt habe. Es fehlt allerdings an Dokumentation und Beispielen. Bei Nokogiri ist die offizielle Dokumentation auch schon spärlich, bei Oga ist es nochmal weniger, und es fehlen die zu Nokogiri vorhandenen vielen Stackoverflowantworten. Wie beim SAX-Parser, als ich für Oga in den Quellcode schauen musste um die implementierten Events herauszusuchen und Nokogiri wenigstens einen erklärenden Absatz auf der Webseite hatte.
Trotzdem etabliert sich Oga mittlerweile als Bestandteil meiner Rubyprojekte. Installationsprobleme zu vermeiden ist mir sehr wertvoll. Wem das ähnlich geht oder wer eine Alternative zu Nokogiri sucht sollte Oga eine Chance geben.
Effizienter CSV-Dateien verarbeiten, mit Ruby und generell
Wednesday, 20. May 2020
Vor kurzem schrieb ich darüber, wie ich mit dem SAX-Parser besser mit XML-Dateien umgehen konnte. Besser bedeutete, mit weniger Speicherbedarf schneller die gesuchten Informationen aus teils relativ großen XML-Dateien zu holen. Es half, aber der Server hatte immer noch spürbare Last durch die anderen Datenquellen: Den CSV-Dateien. Sie benutzen manche der Datenausgeber statt XML, und auch bei ihnen führte das naive Vorgehen zu extremen Speicher- und Prozessorbedarf.
Das naive Vorgehen war grob so:
hardwares = Database.instance.getHardwares hardwares.each do |hardware| csv = cache.getset('csvApi') do csvGz = open("https://url/zur/csv.gz") unzippedCsv = Zlib::GzipReader.new(csvGz).read csv = CSV.parse(unzippedCsv, :headers => true) csv end return csv.detect{|line| line['id'] == hardware.id } end
Es gab also ein Array mit den Bezugsobjekten, zu denen die Zeile mit ihrer ID aus der CSV-Datei gezogen werden soll. Optimiert ist da bereits, dass die CSV-Datei nicht mehrfach heruntergeladen wird. Dafür sorgt der lru-cache.
Wie geht es besser?
1. Speichereffizienter parsen
Der erste Schritt ist das Parsen der CSV-Datei. Der bisherige Code macht das in einem Rutsch und baut – ähnlich wie bei XML-Dateien – ein CSV-Objekt. Wenn wir stattdessen Zeile für Zeile durchgehen entsteht eine Chance, den Speicherbedarf zu reduzieren. Dalibor Nasevic hat dazu Codebeispiele und Benchmarkergebnisse. Der Code ändert sich so:
unzippedCsv = Zlib::GzipReader.new(csvGz) csvFile = CSV.new(unzippedCsv, headers: true) while line = csvFile.shift # do something end
Der GzipReader liest nicht mehr die Datei auf einmal in den Speicher, mit diesem neuen Startpunkt geht der CSV-Parser zeilenweise durch die Datei. Wenn wir jetzt einfach das CSV-Objekt nachbauen bringt das nicht viel, aber es gibt uns die Möglichkeit etwas besseres zu bauen.
2. Mit fastcsv schneller parsen
Doch bleiben wir erstmal beim Parsen selbst. Derzeit benutzt der Code das in Ruby integrierte CSV-Modul. Doch es gibt Alternativen, insbesondere fastcsv. Das Gem kann in vielen Fällen das normale CSV-Modul direkt ersetzen und war in meinen Tests etwa doppelt so schnell.
require 'fastcsv' csvFile = FastCSV.new(unzippedCsv, headers: true)
Nett, aber das Parsen der CSV-Datei war gar nicht das Problem. Das sparte ein paar Sekunden. Das eigentliche Problem war das spätere Durchsuchen des erstellten CSV-Objekts.
3. Mit Hash nicht suchen, sondern nachschlagen
Das ist eine Optimierung, die in jeder Sprache funktionieren wird.
Wenn CSV.parse
ein CSV-Objekt erstellt, ist das im Grunde ein großes Array mit Arrays (headers: false
) oder Hashs (headers: true
) in den Arrayeinträgen. Entsprechend durchsucht der Code von oben dieses Array mit dem üblichen Enumerable.detect. Doch das bedeutet, dass für jedes Suchobjekt die CSV-Struktur durchgegangen werden muss, bis etwas gefunden wurde. Oder bis die Struktur durch ist und eben nichts gefunden wurde. Wenn es nur eine Datenstruktur gäbe, die für eine ID direkt die passende Zeile ausgeben könnte…
Die gibt es natürlich, genau das ist in Ruby der Hash. Da wir jetzt zeilenweise durch die CSV-Datei durchgehen und die Struktur selbst bauen können wir sie nutzen:
csv = cache.getset('csvApi') do … csv = {} while line = csvFile.shift csv[line['id']] = line end csv end return csv[hardware.id]
Das hier ist die große Optimierung. Anstatt mehrfach durch die riesige Datenmenge zu stöbern am Anfang mit etwas Mehraufwand die Hashstruktur zu erstellen spart danach so viel Zeit bei jedem Suchvorgang, dass minuten- bis stundenlange Prozesse in wenigen Sekunden fertig werden.
4. Ungenutzte Datenfelder rausschmeißen
Moment, da gibt es noch eine mögliche Optimierung, wieder völlig unabhängig von Ruby. Eventuell braucht es später gar nicht alle Felder, die in der CSV-Datei gespeichert sind. Vielleicht wird später nur nach price und available geschaut. Wenn dem so ist, dann ist genau hier der Moment die überflüssigen Felder zu entfernen und so den Speicherbedarf zu senken:
while line = csvFile.shift csv[line['id']] = line.to_h.keep_if{|k, _| k == 'price' || k == 'available' } end
Die Kombination dieser vier Schritte ist sehr mächtig. Was vorher viele Minuten rödelte und Prozessorkerne voll auslastete ist in ein paar Sekunden erledigt. Aber es ist ja auch ein Idealfall. Es gab genau eine ID, wir in einer Hashmap als Key nutzen und dann nachschlagen konnten. Was, wenn es mehr als einen Key gibt?
5. SQLite für mehrere IDs
In meinem Anwendungsfall gab es manchmal neben der id noch die sku, also einen zweiten Key. Dann reicht ein Hash nicht, denn es gibt keine mir bekannte Möglichkeit, einen zweiten Key einzusetzen. Klar, wir könnten einen zweiten Hash erstellen. Aber würde das nicht den Speicherbedarf verdoppeln? Nein, es wäre besser einen zweiten Key als Index über die alte Hashmap zu legen. In Ruby wüsste ich nicht wie das geht (wenn du schon: Ein Kommentar wäre klasse!). Aber SQLite macht das mit links und ist in jeder Sprache verfügbar.
Die Idee also ist: Statt einer Hashmap erstellen wir eine SQLite-Datenbank im Arbeitsspeicher. Primary Key
wird die id, aber für die sku baut SQLite einen Index. Das Durchsuchen geht dann mit ein bisschen SQL. YAML serialisiert die CSV-Zeile, die im Zweifel auch wieder wie in Schritt 4 speicheroptimiert werden könnte.
csv = cache.getset('csvApi') do … csvFile = FastCSV.new(result, :headers => true) db = SQLite3::Database.new(':memory:') db.execute "CREATE TABLE csv(id TEXT PRIMARY KEY, sku TEXT, line TEXT)" while line = csv.shift db.execute("INSERT OR IGNORE INTO csv(id, sku, line) VALUES(?, ?, ?)", line['id'], line['sku'], YAML::dump(line)) end db.execute "CREATE INDEX csv_sku ON csv(sku)" db.execute "ANALYZE" db end row = csv.execute("SELECT line FROM csv WHERE id = ?", hardware.id).first unless row row = csv.execute("SELECT line FROM csv WHERE sku = ?", hardware.sku).first end if row return YAML::load(row[0]) end
SQLite ist unheimlich schnell, die CSV-Datei wird in sekundenschnelle durchsucht sein, je nach Größe natürlich.
Fazit
Wenn man es mal richtig macht… Ich fand das ein gutes Beispiel für einen Anwendungsfall von Informatik-Grundkenntnissen. Statt ein Array zu durchsuchen die Datenstruktur zu ändern und eine Hashmap zu nehmen ist Grundlagenstoff des Studiums, Standardbeispiel für O(1) statt O(n). Aber ich brauchte einen Moment um zu erkennen, dass das hier möglich ist, das komfortable CSV.parse
hatte mir das versteckt. SQLite einzubauen und nach einem schnelleren Gem zu schauen ist dann vielleicht etwas mehr aus praktischer Erfahrung gezogen, aber liegt wenn man mal optimiert und und nach dem Datenbankkurs auch nicht mehr fern.
Mir hat dabei auch geholfen, diese Aufgabe als eigenes Projekt zu betrachten. Ursprünglich war das nur eine kleine Ecke im Code des Überprojekts (pc-kombo), schnell mal gebaut, abgewandelt aus Code der eine REST-API nach den Informationen fragt (wo solche Optimierungen nicht möglich sind). Jetzt ist die Ecke ausgelagert in ihr eigenes Git-Repository und der Code ist auf genau diese Aufgabe reduziert. Das macht es einfacher, solche Optimierungsmöglichkeiten zu sehen.
Auf jeden Fall lohnt sich der Aufwand. Zusammen mit der Reduzierung der Last durch XML-Dateien kann ich den großen Server bald wieder abschalten, der nach dem Scaleway-Umzug die temporäre Heimat dieses Mikroservice wurde. Aus dem Mikroservice wurde jetzt tatsächlich auch ein kleines Programm, das auf schmalerer Hardware wird laufen können. Das reduziert die Strom- oder die Hostingkosten dann schnell um ein paar hundert Euro im Jahr.
Enslaved: Odyssey to the West
Monday, 18. May 2020
Enslaved ist ein Action-Adventure. In einer apokalyptischen Zukunft steuert der Spieler Monkey. Direkt in der Einleitung entkommt er seinen Entführern und trifft auf die junge Trip, die mit ihm einen Flugzeugabsturz übersteht. Danach aber nutzt sie einen Moment der Bewusstlosigkeit, um mit einem Halsband der Sklaventreiber Monkey zu versklaven. Er soll ihr helfen, ihre Heimat zu erreichen – fernab im Westen. Ob er will oder nicht.
Monkey kann ihr helfen, denn er kann kämpfen und klettern. Kämpfe gibt es zuhauf gegen die Mechs der Sklaventreiber, die in der ganzen zerstörten Welt stationiert zu sein scheinen. Und nur Klettern bahnt einen Weg durch die alten Ruinen. New York, wo das Flugzeug abstürzte, ist menschenleer und mehr Dschungel als Stadt.
Mit einzusammelnden Orbs können Monkeys Kampffähigkeiten verbessert werden, neue Angriffe, mehr Leben. Die Upgrades sind hilfreich, aber nicht unbedingt notwendig, auch können die Orbs kaum verpasst werden, so zahlreich sind sie.
Die Kämpfe funktionieren dabei ganz gut. Anfangs reichen die Standardangriffe, später muss man auf den Zustand des Gegners achten, ein Schild erst mit dem Betäubungsangriff deaktivieren, stärkere Angriffskombinationen gegen mehrere Gegner einsetzen. Dazu kommen Fernkampfangriffe, gegen die entfernteren Mechs oder um Kämpfe einfacher zu machen. Ich bin schon ein paarmal gestorben, aber das beschränkte sich auf einzelne schwierigere Stellen, der Großteil der Kämpfe war einfach.
Die Kletterpassagen sind die andere Hälfte des Spiels, aber sie sind ziemlich witzlos. Anders als in Prince of Persia kann man sich nicht vertun und ins Leere springen, sondern es gibt immer genau eine Möglichkeit weiterzumachen. Sie sind also praktisch nur Zierde. Erst spät kommt dann bei manchen Passagen Timing hinzu, dass z.B. eine Flamme manchmal ausgeht und man nur dann zum nächsten Punkt springen sollte.
Enslaved ist von 2010. Ich erinnere mich an die Reviews von damals, die das Spiel sehr gut, aber nicht perfekt fanden. GamersGlobal z.B. vergab eine 8.5. Ich fand es auch gut, aber schlechter als mich die Reviews von damals glauben machten. Die Dynamik zwischen Trip und Monkey ist simpel – sie ist jung, hübsch und braucht Hilfe, Monkey ist kein Monster. Die Spannung, die aus der Zwangssituation hätte entstehen können, wird dadurch nicht genutzt. Die Geschichte steuert auf ein anderes Finale um eine Pyramide zu, das aber zu unvermittelt kommt, sie ist nicht bis zum Ende gut strukturiert. Bis dahin motiviert sie aber doch, die Rettungsgeschichte am Anfang, die Versuche ein Verhältnis zwischen den beiden zu entwickeln, die Weltentdeckung, auch dass die Gespräche super vertont sind und so die Charaktere einem sympathisch werden hilft. Aber leider ist die Grafik der alten Konsolengeneration heutzutage ziemlich schlecht. Sie ist nicht direkt hässlich. Es gibt ein paar coole Umgebungen, in Farben und Design sieht man die Arbeit guter Grafiker. Aber technisch ist das Spiel angestaubt, die Texturen und Objekte detailarm, die Charaktermodelle klar aus einem älteren Videospiel.
Die Begleitersituation lädt zum Vergleich mit Bioshock Infinite ein. Und ich muss mich korrigieren: Infinite war nicht das erste Spiel, in dem das Problem der nervigen Begleiter gelöst wurde. Auch Enslaved schafft das, indem Trip fast nie direkt in Gefahr ist, auch nicht blöd herumläuft, sondern vorsichtig vom Spieldesign geführt und in Sicherheit gebracht wird. Das funktioniert, aber Trip hat nicht den direkten Einfluß, nicht den Charakter, den Elizabeth in Infinite im Spiel selbst entwickelt. Es fehlen die Animationen, die Kommentare, die zufällige Unterstützung im Kampf. Ein großer Fehler sind die wenigen Momente, in denen sie eben doch wie in alten Spielen sterben kann und dadurch dem Spieler nervig werden könnte. Dazu die ganze Kontrollgeschichte – nein, zu Infinite war es noch ein weiter Weg. Und doch: Nicht alleine durch die Spielwelt zu laufen, sondern mit jemandem, durch den Begleiter die Story getragen zu haben und die vielen Möglichkeiten für Gespräche, das funktioniert auch hier wieder. Ein erstaunlich mächtiges Instrument für Spiele, überraschend oft ungenutzt.
Ich habe Enslaved: Odyssey to the West zwar gerne gespielt und sogar durchgespielt, aber es ist nicht gut gealtert und hat bei Grafik, Story, Kämpfen und vor allem den Kletterpassagen viele Schwachstellen. Es sollte mit einem Controller gespielt werden und lief gut unter Proton. Einen Blick wert, aber wer es damals verpasste muss es heute nicht unbedingt nachholen.
Victor: SVGs mit Ruby erstellen
Friday, 15. May 2020
Vom Code aus Bilder erstellen – da landet man dann schnell bei SVG. Um unter Ruby ein SVG zu erstellen kann victor benutzt werden. Das Readme zeigt direkt wie es geht. Dieser Code:
require 'victor' svg = Victor::SVG.new width: 140, height: 100, style: { background: '#ddd' } svg.build do rect x: 10, y: 10, width: 120, height: 80, rx: 10, fill: '#666' circle cx: 50, cy: 50, r: 30, fill: 'yellow' circle cx: 58, cy: 32, r: 4, fill: 'black' polygon points: %w[45,50 80,30 80,70], fill: '#666' 3.times do |i| x = 80 + i*18 circle cx: x, cy: 50, r: 4, fill: 'yellow' end end svg.save 'pacman'
erstellt diese Grafik:
Cool: Der Code hinter dem gem ist ziemlich minimal, das ist fast nur eine intelligent gestrickte kleine API, die genau richtig den Funken Komplexität versteckt, wegen dem man SVGs anonsten nicht per Hand schreiben will. Samt hilfreichen Beispielen wird es ein praktisches Werkzeug.
Ich finde es toll, wie SVG immer wieder in Projekte von mir reinrutscht. Nicht, weil es bei mir besonders beliebt wäre, sondern schlicht weil es immer wieder gut ein Problem löst.
Freesync unter Linux
Wednesday, 13. May 2020
Mit dem neuen Acer CB242Y konnte ich jetzt zum ersten mal richtig Freesync unter Linux testen. Mein Ersteindruck: Das geht ja gar nicht, alles stürzt ab. Zweiter Eindruck nach Neukonfiguration: Funktioniert einwandfrei und ist nett. Halten wir mal fest, wie das einzurichten und zu testen ist.
Einrichten
Der Monitor muss mit dem Displayport verbunden sein. HDMI funktioniert unter Windows, derzeit aber nicht unter Linux. Phoronix schrieb im Oktober 2019, dass sich das ändern soll, aber bisher sah ich dazu noch nichts neues und bei mir funktionierte Freesync unter HDMI nicht.
Dann, klar, muss Freesync im Monitormenü aktiviert werden. Dafür gibt es normalerweise eine Option, manche Monitore sind doof und verstecken sie in einem Game-Modus.
Jetzt zur Linuxseite. Erstmal zu meinem System. Meine Grafikkarte ist eine Radeon RX 580. Kernel:
onli@fallout:~$ uname -a Linux fallout 5.6.11_1 #1 SMP Wed May 6 19:42:50 UTC 2020 x86_64 GNU/Linux
Mesa:
onli@fallout:~$ glxinfo | grep "OpenGL core profile version string" OpenGL core profile version string: 4.6 (Core Profile) Mesa 20.0.6
Eventuell musst du gar nichts konfigurieren. Im Terminal, prüfe die Ausgabe von xrandr --props
und suche nach vrr:
vrr_capable: 1 range: (0, 1)
Hier ist Freesync also an, 0 wäre aus. Vorsicht: Es gibt einen eigenen Eintrag für jeden Monitoreingang, da kann man sich schnell vertun.
Ist es 0 sollte die xorg.conf angepasst werden. Dafür fügt man eine Konfigurationsdatei in xorg.conf.d/ hinzu oder editiert die bestehende:
onli@fallout:~$ cat /usr/share/X11/xorg.conf.d/10-amdgpu.conf Section "OutputClass" Identifier "AMDgpu" MatchDriver "amdgpu" Driver "amdgpu" Option "VariableRefresh" "true" Option "TearFree" "true" EndSection
Mit einer Nvidia-Grafikkarte sähe das natürlich anders aus. Für den amdgpu-Treiber ist VariableRefresh die Option für Freesync, TearFree ist eine andere Rucklervermeidung wenn die FPS über der Monitor-Bildwiederholrate sind, optional.
Bei mir nicht optional: V-Sync. Ist das nicht an funktionierte Freesync nicht. Auch das mag sich noch ändern oder vom jeweiligen Spiel abhängen, aber bisher muss ich es systemweit erzwingen. Dafür setze ich beim Systemstart:
export vblank_mode=3
Jetzt sollten Programme im Vollbild(!) mit Freesync Ruckler und Tearing vermeiden.
Testen
Aber funktioniert es überhaupt in Praxis? Der Effekt ist normalerweise nicht so stark, dass man das direkt bemerkt. Spezielle Testsequenzen können es aber deutlich zeigen. Ein richtig gutes und absurderweise unbekanntes Programm dafür ist VRRTest. Es zeichnet graue Balken, die schnell von links nach rechts huschen. Wird die Bildwiederholrate des Monitors getroffen oder ist Freesync an ist das eine glatte Bewegung, ohne Freesync wird bei niedrigeren FPS deutlich unglatt, die Balken verursachen viel Tearing.
Es ist das einzige mir bekannte Programm, mit dem man Freesync unter Linux testen kann. Nett: Es hat ein AppImage! Installation ist also simpel. Lade von der Releaseseite das AppImage herunter und mache es ausführbar.
Bevor du es startest, solltest du deinen Compositor deaktivieren. Bei mir läuft picom, also beende ich den:
killall picom
Wenn GNOME oder KDE als Desktopumgebung benutzt wird haben die ihren eigenen Compositor integriert, der hoffentlich irgendwo in den Einstellungen deaktivierbar ist oder sich von selbst bei aktiven Vollbildanwendungen ausschaltet. Wayland unterstützt Freesync noch nicht, sagt auch das Arch-Wiki, gleichzeitig wird aber Unterstützung im Wayland-WM sway erwähnt, da scheint sich also gerade ein bisschen was zu tun. Im Zweifel: Wayland deaktivieren.
Dann kann vrrTest gestartet werden. Die Anwendung öffnet ihre Testoberfläche im Vollbild. Das sieht dann so aus:
Der Text oben links erklärt die Bedienung: Mit den Pfeiltasten die FPS auswählen. Ich fand es gut, erst auf die Monitorbildwiederholrate zu schalten, bei mir sind das 75, und mit b die genauere FPS-Zählung zu aktivieren. Wenn ich dann runtergehe wird es ohne Freesync ruckelig, mit Freesync bleibt es stabil, bis ich dann die 49 FPS erreiche und wohl die Freesync-Range verlassen wird.
Fazit: Kinderschuhe
Linux hängt hier doch deutlich hinterher. Kein Freesync über HDMI, keine einfache Aktivierung in einem grafischen Treiberverwaltungsprogramm, X konfigurierte ich seit vielen Jahren sonst nur noch zum Bugfixing in instabilen Distributionen. Blöd auch, dass die Funktion überhaupt so intransparent ist das Testprogramme nötig sind. Der Konflikt mit dem Compositor ist auch unpraktisch. Ich kann zudem gar nicht sicher sein, dass die Abstürze vom ersten Test nicht wiederkommen.
Aber immerhin: Freesync wird offiziell von AMD unter Linux unterstützt, es funktioniert verifizierbar in Praxis und der Effekt wenn es greift ist ziemlich cool. Ich freue mich, bei der Monitorauswahl auf die Funktion bestanden zu haben.
Monitorentscheidungsfindung, Teil 4: Fündig geworden mit dem Acer CB242Y
Monday, 11. May 2020
Update 17.05.: Ich habe im pc-kombo-Blog ein tiefgehenderes Review des CB242Y veröffentlicht. Mir wurde beim Schreiben desselben deutlich, dass das Panel weniger perfekt spielegeeignet ist als ursprünglich gedacht, wobei mein subjektiver Eindruck weiterhin positiv bleibt.
Mein Fazit nach dem Durchgehen der 1440p-Monitore sagte ja ziemlich deutlich, dass die 1080p-Modelle mir sinnvoller erscheinen. Ich bestellte dann tatsächlich einen aus der günstigeren Liste: Den Acer CB242Y in der Acer unbekannten bmiprx-Variante, also in schwarzem Plastik samt dem für Freesync unter Linux so wichtigem Displayport. Er hakt auf dem Papier alle Anforderungen ab, und auch in der Praxis macht er einen guten Eindruck. Mehr noch: Ein Volltreffer.
Verarbeitung und Details
Wenn ich den Acer mit dem HP 27q, dem Dell U2312HM und dem Übergangsmonitor vergleiche, einem alten Blaupunkt-Fernseher, sitzt der Acer zwischen dem Dell und dem HP. Er ist mit seinem schwarzen Plastik nicht ganz so schick, zwischen dem Panel und der dünnen Kante ist ein sichtbarerer Spalt. Aber es ist eben eine dünne Kante, nicht wie beim Dell ein dickes Stück Plastik an der Seite, und wie beim HP ist der untere Rand hervorgehoben, hier durch dickeres geriffeltes Plastik. Eine andere Variation des gleichen Designs. Das Material ist übrigens matt, kein Fingerabdruckmagnet, wobei Berührungen am Standfuß leichter sichtbare Spuren hinterlassen. Rechts unten ist eine kleine blaue LED, die sich leider nicht abstellen lässt. Den Großteil der Zeit kann ich sie ignorieren, aber manchmal stört sie mich, ich werde sie vielleicht abkleben.
Der Standfuß ist nicht so gut wie der vom Dell, aber besser als der vom HP. Wenn der Tisch wackelt, wackelt auch der Monitor etwas (seitlich), eben etwas mehr als nötig. Dafür steht er viel stabiler als der 27q, den ja der Kater umgeworfen hatte, dass sich das wiederholt ist unwahrscheinlich. Er ist höhenverstellbar, neig- und kippbar, ziemlich perfekt in der Hinsicht.
Das Netzteil ist integriert, was gut ist, so ist unter dem Schreibtisch ein Block weniger. Das OSD-Menü hat einen kleinen Kippschalter zum Steuern. Wesentlich besser als wenn der nicht da ist, nur eine Fernbedienung wäre noch besser.
Die Verarbeitung erscheint mir im Detail etwas schlampig, es sei mehr der Vollständigkeit halber erwähnt. Es ist eben ein Budgetmonitor, wenn man sucht merkt man das dann doch. An der Spalte zwischen Panel und Plastikrand sind ein paar Punkte, die bei entsprechendem Lichteinfall reflektieren. An der Kante seitlich sind ein paar Unregelmäßigkeiten, als ob da das Plastik nicht ganz sauber geschnitten worden wäre. In Makrofotografie würde das doof aussehen, normal davorsitzend ist es akzeptabel.
Bild und Panel
Mein Ersteindruck nach dem Einschalten: Perfekt. Alles sah gut aus, ich konnte kein Backlight-Bleeding feststellen. Ein Blick auf die Monitorkalibrierungsseite lagom zeigte dann: Ja, zumindest gut. Der Kontrasttest sah wirklich ordentlich aus. Dafür ist der Gammawert etwas daneben, die Bänder scheinen mir nicht bei der 2.2 zu verschmelzen (und die Einstellung dafür ist im Monitor auf 2.2, die 1.8 und 2.4 bewegen es nur weiter weg), sondern bei 2.3 oder 2.4. Beim Test für schwarz und weiß ist jeweils das schwierigste Quadrat für mich kaum (schwarz) oder nicht (weiß) zu erkennen. Ich habe ein bisschen mit den Einstellungen gespielt, aber bisher die Standardeinstellungen nicht verbessern können, nur die Helligkeit musste ich (wie immer) runterregeln.
Spieletauglich? Scheint so! Ich habe gestern eine ganze Weile gespielt und keinerlei Probleme bemerkt. Overdrive auf Normal, Freesync ist aus (dazu später mehr). Ich müsste es noch mit richtig schnellen Spielen testen, aber wenn ich bisher nichts negatives bemerkt habe werden die Reaktionszeiten garantiert für meinen Spielekonsum ausreichen. Die Bildwiederholrate ist durchgängig bei 75Hz, egal ob Freesync an oder aus ist.
Allerdings stellt sich dann im dunklen Raum bei einem dunklen Hintergrund heraus, dass da doch etwas ungleichmäßige Hintergrundbeleuchtung wahrnehmbar ist. Gerade in der rechten oberen Ecke wird das schwarz etwas grauer. Der Effekt ist nicht deutlich und viel geringer als beim HP, aber das Panel ist in der Hinsicht eben doch nicht so perfekt wie der alte Dell. Wichtig zu beachten (auch für mich): Der Effekt ist subtil, problemlos ignorierbar, was für einen modernen günstigen Monitor eher selten zu sein scheint.
Wie bei IPS üblich sind die Blickwinkel völlig ausreichend stabil. Ob ich direkt davor sitze oder quer im Stuhl liege: Das Bild bleibt wie es sein soll.
Sehr seltsam und meinem Eindruck nach komplett unbrauchbar ist der VRB-Modus. Visual Response Boost erklärt prad im Test eines anderen Acer-Monitors. Da werden also schwarze Frames eingefügt, um dem Auge schnellere Übergänge vorzugaukeln. Beim CB24 wird sobald ich die Funktion anmache das Bild grau (klar, die schwarzen Frames reduzieren die Gesamthelligkeit) und super-pulsierend, unerträglich. Overdrive auf Extrem ist auch nicht empfehlenswert, das sorgt für deutliche Artefakte (inverse ghosting?), aber Normal funktioniert.
Dass Spiele mit aktiviertem Freesync instabil waren lag sicher an Linux, das teste ich noch etwas mehr und schreibe dazu später einen eigenen Artikel. Der Monitor selbst konnte Freesync, ich konnte einen positiven Effekt von 75 bis 50 FPS feststellen (gut möglich, dass unter Windows Freesyncunterstützung bis zur spezifizierten Untergrenze von 48 FPS erreicht wird).
Fazit
Gut! Ich habe mit einem Coupon 120€ bei Galaxus bezahlt und dafür jetzt wieder einen spieletauglichen Monitor, der anders als der Übergangsmonitor keine Probleme hat Text darzustellen. Das Panel ist ordentlich, das Einstellungsmenü nicht hirnverbrannt, er hat die Anschlüsse die ich haben wollte (plus Audioeingang und -ausgang) und der Standfuß ist ziemlich gut. Die Platte des Standfuß ist vielleicht etwas groß, aber wenn das der Preis für katzensichere Stabilität sein sollte ist auch das okay.
Weiterhin ist wie erwartet der Sprung zurück auf 1080p nicht allzu schlimm. Ja, vielleicht war der Ersteindruck Der Text sieht weich aus nicht 100% nur der Kontrast zum blöden Postprocessing des Fernsehers, sondern auch die geringere DPI zum HP 27q. Aber unscharf oder schlecht aussehend ist da nichts. Scheint mir wirklich so, als müsse die DPI deutlich höher steigen um einen echten Effekt zu haben.
Vielleicht kommt das ja in ein paar Jahren mit dem Nachfolgemonitor. Jetzt ist erstmal für eine hoffentlich lange Zeit die Monitorsuche beendet.
Scaleway schaltet ARM-Instanzen ab, ich migrierte
Friday, 8. May 2020
Am 14. April schickte mir Scaleway diese Email:
C2 & ARM64 Instances end-of-life — Migrate now to Virtual Instances & Bare Metal cloud servers
Dear customer,
As of December 1 st, 2020, our C2 and ARM64 Instances will reach their end-of-life. The physical servers hosting them are indeed randomly affected by several stability issues, which prevent us from fully guaranteeing the overall quality of service. Rest assured, however, that we are committed to guiding you in your migration and provide you with the best matching resources for improved stability, performance and reliability.
Starting from April 14th, 2020, it is no longer possible to create new C2 and ARM64 Instances. In addition, their support will end on July 1st, 2020. As a result, our technical assistance will no longer address issues related to those instances. A price increase is also to be expected on July 1st, 2020. Lastly, C2 and ARM64 Instances will be completely deprovisioned as of December 1st, 2020.
Das betraf direkt alle drei meiner Scaleway-Instance. Ich hatte zwei kleine ARM64-Instanzen, von denen eine diesen Blog und die andere einen Microservice für pc-kombo betrieb. Die dritte war eine C2-Instanz, auf der pc-kombo selbst lief. Diese Email bedeutete für mich also vor allem Arbeit. Aber ich war gar nicht arg verärgert: Hosterwechsel oder zumindest Serverwechsel sind ja immer auch eine Chance, etwas schnelleres zu erwischen. Beides war richtig: Es war eine Menge Arbeit, und alle drei Projekte dürften jetzt schneller sein.
Blog: Scaleway zu Vultr
Den Anfang machte die unkritischste Seite, dieser Blog. Ich wollte wieder eine möglichst günstige Lösung haben. Spart Geld, aber nicht nur das: Ein Serverchen sollte für die Besucheranzahl dieser Seite auch wirklich ausreichen, zudem kann es für Serendipity nur gut sein, wenn ein weiterer Entwickler Performance auf schwächeren Servern durch den eigenen Blog im Blick hat.
Ich bin dann bei Vultr gelandet. Das waren die möglichen Angebote:
Als ich dann nach etwas Recherche feststellte, dass dank Cloudflare auch IPv4-Besucher die Seite erreichen würden, wählte ich das günstigste Angebot, das nur mit IPv6 auskommt.
Was ich da noch nicht wusste: Github kann kein IPv6. Serendipity will aber mit Github kommunizieren, um Plugins und sich selbst zu aktualisieren. Da hilft dann auch Cloudflare nicht. Aber so entstehen eben neue Serendipity-Entwicklungen: Es gibt jetzt einen Mirror auf Gitlab, der Pluginupdates ausliefern kann und der Code dafür ist im aktuellen Master. Jetzt fehlt nur noch, die Versionsprüfung und das Autoupdate-Plugin ebenfalls auf Gitlab zurückfallen zu lassen.
Wie schlug sich vultr selbst? Ziemlich gut. Die Verwaltungsoberfläche ist simpel und funktioniert, auch beim Server gab es keine Überraschungen. Der einzelne Prozessorkern war im Benchmark stärker als ein ARM64-Kern von Scaleway:
Scaleway:
root@onli-blogging-armv8:~# sysbench --test=cpu --cpu-max-prime=10000 run WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options. sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2) Running the test with following options: Number of threads: 1 Initializing random number generator from current time Prime numbers limit: 10000 Initializing worker threads... Threads started! CPU speed: events per second: 619.61 General statistics: total time: 10.0017s total number of events: 6202 Latency (ms): min: 1.55 avg: 1.61 max: 16.27 95th percentile: 1.70 sum: 9977.69 Threads fairness: events (avg/stddev): 6202.0000/0.00 execution time (avg/stddev): 9.9777/0.00
vultr:
root@onli-blogging:/var/www/html# sysbench --test=cpu --cpu-max-prime=10000 run WARNING: the --test option is deprecated. You can pass a script name or path on the command line without any options. sysbench 1.0.18 (using system LuaJIT 2.1.0-beta3) Running the test with following options: Number of threads: 1 Initializing random number generator from current time Prime numbers limit: 10000 Initializing worker threads... Threads started! CPU speed: events per second: 752.41 General statistics: total time: 10.0013s total number of events: 7528 Latency (ms): min: 1.19 avg: 1.33 max: 8.34 95th percentile: 1.47 sum: 9984.29 Threads fairness: events (avg/stddev): 7528.0000/0.00 execution time (avg/stddev): 9.9843/0.00
Andererseits hatte die Scaleway-Instanz 4 dieser Kerne, war also insgesamt deutlich stärker. Im Betrieb aber fühlt sich die Seite seit dem Wechsel schneller an. Entweder, weil bei einzelnen Besuchern immer nur der eine stärkere Kern zählt, vielleicht ist die SSD schneller angebunden, oder es ist einfach die neuere Linuxversion.
Es gibt sogar ein affiliate-Programm, wer über diesen Link einen Account macht und selbst $10 ausgibt schenkt mir $10. Und derzeit läuft eine Sonderaktion, die dem sich darüber anmeldenden Nutzer für 30 Tage $100 gibt, der erste Monat also umsonst wäre. Nett.
Der Wechsel zu vultr war also gut, es war aber einiges an Arbeit weil die Emails nicht funktionieren wollten. Sie gingen einfach nicht raus, auch wenn ich mein Bestes versuchte die Konfiguration der Scaleway-Installation zu kopieren. Wahrscheinlich war der Port blockiert? Ich musste das neu einrichten, mit uberspace als Relay. Das herauszufinden kostete mich Stunden.
PC-Kombo: Scaleway zu Scaleway
Für pc-kombo bin ich nach einiger Recherche bei Scaleway geblieben. Ich brauchte folgendes:
- Mehrere Kerne, damit problemlos mehrere Dienste parallel laufen können und auch Besucherspitzen abgefangen werden können.
- Genug Ram, um weiterhin die Seite mit LRU-Cache und Memoization zu beschleunigen.
Natürlich kriegt man das auch anderswo, im Zweifel für viel Geld. Hetzner zum Beispiel hätte ohne hohen Preis gepasst, da liegt allerdings schon Pipes, zu riskant. Am Ende waren die Angebote bei Scaleway für mich die attraktivsten. Großer Pluspunkt: Die Migration innerhalb Scaleways sollte einfach sein, oder?
Falsch: Ich lief da ins offene Messer. Als ich die C2-Instanz herunterfuhr um mit dem Management-Interface ein Backup zu machen und dann komfortabel mit Scaleways Bordmitteln auf einer neuen DEV-Instanz die Seite wieder einzurichten, dieser Anleitung folgend, fuhr sie nicht mehr hoch. Scaleway hatte meine Instanz weggegeben oder ganz abgeschaltet und keine Reserven mehr über. Es gab eine üble und hektische Downtime, in der ich mittels meiner eigenen Backups (Gott sie dank hatte ich die!) die Seite wieder einzurichten versuchte und parallel den Migrationsanweisungen von Scaleway folgte, die dann nur mit Supporthilfe funktionierten. Zusammenschrieb hier.
Das war also Mist. Immerhin: Seitdem funktioniert die Seite auf der neuen DEV-Instanz ohne weitere Probleme.
Mikroservice: Scaleway zu Heimserver
Ich habe hier daheim zwei kleine ARM-Miniserver: Einen Pogo und einen CHIP. Erst wollte ich damit die Scaleway-Instanz mit dem Mikroservice ersetzen. Stellte sich aber raus, dass der CHIP nicht stabil läuft und der Pogo keine Kapazitäten mehr frei hat, dass der Speicher und Prozessorbedarf meines Services (Preisaktualisierungen laufen darüber, XML, JSON und CSV muss geparst werden) für die beiden auch etwas zu hoch ist. Aber worüber ich noch gar nicht geschrieben habe: Für die Wissenschaftlerin im Haus lag hier auch noch ein alter Dual-Xeon-Server rum, ein HP Proliant G6, mit 48GB Ram. Der wäre definitiv stark genug.
Für den Test mit dem CHIP hatte ich den Service schon so umgebaut, dass eine ausfallende Internetverbindung kein Problem ist, er wartet dann einfach. Schnelles Internet wird auch nicht benötigt. Kritisch war der Lärm. Ich verwandte etwas Zeit darauf, den Server so leise wie möglich zu machen: Stromsparmodus (sowieso eine gute Idee), die Xeons sind auch untertaktet stark genug, keine Redundanz der Netzteile. Dann brauchte ich noch einen Platz, der etwas Lärm frisst und sich nicht zu stark aufheizt. Es wurde ein Wandschrank mit jetzt nur noch angelehnter Tür.
Das ist vielleicht auf Dauer nicht die günstigste Lösung aufgrund des Stromverbrauchs. Andererseits ist es nett, mal etwas mehr (und ansonsten richtig teure) Rechenleistung zur Hand zu haben. Ich habe direkt noch weitere Aufgaben für ihn im Blick. Was die kleine Scaleway-Instanz noch überforderte ist für den alten Server ein Kinderspiel, er langweilt sich.
Die Migration ist beendet. Keine meiner Seiten/Projekte liegt noch bei Scaleways ARM-Instanzen, die sie abschalten. Für Scaleway nicht ganz so toll: Obwohl ich ihnen als Kunde erhalten bleibe ist meine Monatsrechnung dort jetzt geringer, zudem kommt mit vultr ein weiterer günstiger und solider Hoster zu den von mir getesteten und positiv befundenen (Scaleway, Digital Ocean, Hetzner Cloud, vultr). Trotzdem ist die Abschaltung sicher richtig: Auch ich sah vorher Instabilitäten, gerade der Mikroservice lief nicht sauber. Sowas zu bereinigen vermeidet Enttäuschungen. Andererseits schade, dass jetzt keine günstige Bare-Metal-Lösung mehr angeboten wird. Damit war Scaleway gestartet und Probleme durch lastverursachende Nachbarn zu vermeiden hat einen gewissen Wert.
The Hateful Eight
Wednesday, 6. May 2020
Ein Western von Quentin Tarantino. Die Geschichte bleibt dabei länger im unklaren und wechselt dann die Zeitebene, was die Situation für den Zuschauer auflöst. Sogar für einen Film von Tarantino ist sie dabei besonders brutal.
Ich finde es ja immer toll, wenn Kurt Russel in einem Film auftaucht. Und auch die meisten anderen Tarantino-Schauspieler haben bei mir einen Bonus. Und doch: The Hateful Eight hat mich nicht gepackt. Zu unbarmherzig ist die Geschichte, keinerlei Sympathie ist möglich, und dabei ist das alles auch nicht so spannend, dass ich dem Film das verzeihen konnte.
Wäre vielleicht etwas anderes gewesen, wenn der Zeitebenen- oder Perspektivenwechsel als Kniff für mich neu gewesen wäre.
Snap und Ubuntu: Nachbesserungen erforderlich
Monday, 4. May 2020
Ubuntu 20.04 integriert Snaps stärker als zuvor in das Gesamtsystem. Während Ubuntu wie Debian eigentlich .debs benutzt, um Programme und Updates zu verteilen, werden jetzt mehr Teile per Snap ausgeliefert. Und das ist eigentlich eine tolle Sache: Denn Snaps sind nicht auf Ubuntu beschränkt. Sie können auch auf anderen Distributionen laufen. Zudem enthalten sie ihre Abhängigkeiten, dass Software im Laufe der Zeit auf neuen Linuxumgebungen nicht mehr startet wird dadurch gelöst oder zumindest minimiert. Zudem waren .debs nicht besonders einfach zu bauen. In der Hinsicht sind Snaps ähnlich wie Flatpaks oder das hervorragende AppImage eine gute Verbesserung. Ich bin ein Fan des Konzepts.
Aber es gibt auch Nachteile. Manche sind konzeptbedingt, andere betreffen speziell die Umsetzung von snap. Um die soll es hier gehen.
Die Problematik
Es gab jetzt in kurzer Zeit mindestens zwei populäre Artikel samt Thread auf Hacker News, die zusammen Probleme mit Snaps überzeugen vortragen. Der erste war Disabling Snaps in Ubuntu 20.04 mit dieser Diskussion, der zweite war Ubuntu 20.04 LTS’ snap obsession has snapped me off of it mit dieser.
Das Hauptproblem sind die Autoupdates. Snaps auf Ubuntu aktualisieren sich selbst. Sicherheitstechnisch begrüßenswert hat das einen Rattenschwanz von Problemen:
- Snaps können ohne Vorwarnung und Lösung kaputtgehen. Wenn ein Snap-Ersteller ein fehlerhaftes Update veröffentlicht, bricht die Software bei all ihren Nutzern, ohne dass Nutzer das Update verhindern können.
- Wie immer bei Autoupdates können sie im falschen Zeitpunkt auftauchen. Während einer wichtigen Präsentation beispielsweise soll der dafür genutzte Browser besser nicht updaten und dann einen Neustart einfordern. Mitten im Arbeitsflow gilt das gleiche für jede andere Software.
- Nicht immer ist Traffic unbegrenzt verfügbar. Hänge ich am mobilen Internet, will ich wohl kaum, dass mein begrenztes Volumen von Snaps aufgefressen wird.
Diese Argumente sind für mich völlig überzeugend. Snaps, da jetzt Teil des Distribution, sollten genau wie .debs nur auf Nutzeranforderung (zu der das System eventuell aufforderte) aktualisiert werden. Leider verweigert sich das Projekt dagegen. kikoreis nennt drei Argumente pro autoupdates:
- Browsers machen das sowieso schon.
- Ubuntu macht das sowieso schon, seit 16.04 LTS
- Snaps brauchen keine Rootrechte und ihre Updates sind daher weniger problematisch
Alle diese Argumente sind nicht korrekt. Browsers updaten sich selbst, aber eben nicht unter Linux – da macht das die Paketverwaltung unter Kontrolle des Nutzers. Ubuntu auf meinem Laptop im Büro hatte mich auch nach 2016 noch wegen der Updates gefragt. Und ob Updates mit oder ohne Rootrechte durchgeführt werden ändert an ihrer Problematik rein gar nichts.
Vor allem geht es am Thema vorbei: die Argumente adressieren keines der Probleme. Das Ursprungsproblem ist fehlende Konfigurierbarkeit. Um Nutzerbedürfnisse zu befriedigen und die Probleme zu lösen müssten die Autoupdates konfigurierbar sein. Sind sie es nicht, ist die Lösung ungeeignet.
In den Diskussionen kristallisieren sich weitere Probleme heraus. Eines davon finde ich beachtenswert: Ubuntu legt ~/snap an. Zwar ist klar, dass Snap ins Benutzerverzeichnis schreiben muss. Aber andere Software und auch proprietäre wie Steam ist wesentlich höflicher und versteckt sich, denn das Benutzerverzeichnis und sein Inhalt gehört dem Nutzer, der seine Organisation weitestgehend frei wählen darf. So liegt Steam unter ~/.local/share/Steam/. Genauso hätte es sich für Snap gehört.
Ubuntu hat weiterhin ein Problem mit fehlender Nutzerzentrierung
Es ist so schade, dass Canonical weiterhin seine Nutzerfeindlichkeit pflegt. Es war ja mal ganz anders: Linux for human beings wurde als Auftrag an größtmögliche Nutzerfreundlichkeit verstanden. Im Laufe der Zeit wurde daraus ein immer wieder durchschimmerndes Wir wissen es besser und eine Orientierung am unmündigsten aller Nutzer, um eigene Vorstellungen vorzugeben. Beispiel: Die Fensterverwaltungsbuttons nach links zu verschieben und damit die Nutzererwartung zu missachten wäre schon seltsam gewesen, sich dann aber sogar zu weigern die Seite grafisch konfigurierbar zu machen war einfach nur feindselig.
Genau diese Haltung bedroht jetzt auch Snaps: Denn eigentlich sind die eine gute Sache, gerade auch für Entwickler wie mich. Aber sie zu benutzen, um Zwangsupdates wie bei Windows durchzudrücken? Etwas, weswegen ein beachtlicher Teil der Linuxnutzer von Windows weggewechselt ist? Das missachtet grob Usability-Kriterien, hier vor allem die Aufgabenangemessenheit, und macht damit im Zweifel ein System für Nutzer unbenutzbar. Und das, obwohl Ubuntu 20.04 selbst wohl ein ziemlich gutes Release geworden ist.
Es erzeugt zudem völlig unnötigerweise einen Konflikt zwischen den Nutzern und den Machern des Systems.
Canonical hat gezeigt, dass sie es besser können. Die Fensterverwaltungsbuttonsseite war irgendwann wieder offiziell konfigurierbar, dann war auch die Standardeinstellung wieder korrekt. Aus Unity wurde mit solchen Verbesserungen im Laufe der Zeit eine gute Desktopumgebung, sodass als Ubuntu schließlich aufgab und zu Gnome wechselte dies bedauerlich war. Ich hoffe, dass die Organisation immer noch die Vernunft und die Kraft hat, auf die Kritik richtig zu reagieren. Dass Snaps konfigurierbar gemacht werden, wieder ultimativ der Nutzer sein System seinen Anforderungen entsprechend verwalten kann. Das wäre erfüllt, sobald Autoupdates optional werden und der sichtbare Snapordner verschwindet. Gut wäre es auch, wenn problemlos alte Snapversionen zurückgespielt werden können.
Hollow Knight
Friday, 1. May 2020
Hollow Knight ist ein wunderbar gelungenes Metroidvania.
Zu Beginn würde man das kaum glauben. Die Spielerführung anfangs ist mies. Die Spielfigur fällt vom Himmel, landet nahe einer kleinen Siedlung, die einen Zugang zu einer Höhle hat. Es ist der Eingang zur Spielwelt, doch gibt es keinen Grund sie zu entdecken, keine Story, keine Motivation. Macht man es trotzdem greifen immerhin recht schnell die üblichen Motivationsmechanismen des Genres: Dank neuer Fähigkeiten werden vorher unzugängliche Stellen erreichbar, mit zunehmender Stärke werden vorher fast unschlagbare Gegner besiegbar, Schritt für Schritt werden neue Abschnitte der Spielwelt aufgedeckt.
Im Spielverlauf ergibt sich dann so etwas wie eine Story: Dass etwas nicht stimmt in dieser dunklen Höhlenwelt und es änderbar wäre, ein Endgegner kündigt sich an, Verbündete tauchen wiederholt auf. Das erinnert dann durchaus an Dark Souls, mit dem es sich auch das Spielelement des Verlusts der Spielwährung beim Tod teilt, wobei dann noch eine Chance besteht, die gleiche Stelle zu erreichen und alles zurückzuergattern. Auch ist Hollow Knight nicht gerade einfach. Anderseits spielt sich so ein 2D-Plattformer ganz anders und der Vergleich ist bereits überstrapaziert. Und doch: Mit der Melancholie einer im Sterben liegenden alten Welt und dem häppchenweisen Andeuten einer Hintergrundgeschichte trifft das Mini-Entwicklerteam einen ähnlichen Ton.
Toll fand ich die Grafik. Einfach schön gezeichnet. Es erinnert mich dabei sehr an SNES-Spiele, oder eher: Wie die mit moderner Technik aussehen würden (eben nicht im Pixellook!). Dabei hat Hollow Knight durchaus seinen eigenen Stil. Sehr angenehm auch das Fortschrittsgefühl, wenn der Charakter merklich immer stärker wird, entweder direkt durch Upgrades seiner Waffe oder durch neue ausrüstbare Zauber, mehr noch durch neue Fähigkeiten wie den Wandsprung. Ein paar Witze sind enthalten, besonders einer spielt mit Genrekonventionen und hat mich beeindruckt, aber den will ich hier nicht spoilern.
Es ist nicht alles perfekt. So gibt es ein paar frustige Stellen. Bosse, die unfair schwer sind (teils, wenn bestimmte Upgrades noch nicht gefunden wurden). Und sogar optionale Bosse, die mir bis zum Spielende komplett unmöglich waren. Es gibt eine Sprungpassage, den White Palace, der ohne Youtube-Guide unmöglich gewesen wäre und auch mit viel Glück und Geduld erforderte, was dann nicht mehr spaßig war. Immer wieder die gleichen Gebiete durchwandern zu müssen passiert einen Tick zu oft.
Doch insgesamt: Richtig toll. Unfassbar, dass das Entwicklerstudio im Kern aus drei Leuten besteht.
Emails für einen IPv6-Server trotz Cloudflare per Uberspace
Wednesday, 29. April 2020
Ich habe gerade diesen Serendipity-Blog auf einen neuen Server umgezogen (dazu später mehr). Das schwierigste war, die Emails wieder zum Laufen zu kriegen. Deshalb muss ich das unbedingt dokumentieren.
Das Setup sieht so aus: Der Server ist die kleinste Cloud-Compute-Instanz bei Vultr. Ich habe mal wieder den Preis optimiert. Sie kann nur IPv6. Nicht ganz so schlimm, denn die Domain wird von Cloudflare verwaltet, was für jeden AAAA-Eintrag direkt einen A-Eintrag bereitstellt, also Zugang per IPv4. Cloudflare aber ist problematisch, um direkt vom Server Emails zu verschicken. Aber dafür ist noch uberspace dabei, das sowieso meine Emails verwaltet und hier als SMTP-Relay dient.
Ich zeige alles im Detail.
uberspace
Uberspace muss die Domain als Email-Domain führen. Das wird in der Anleitung erklärt und ist nur ein auf uberspace per SSH abzusendender Befehl.
Der vordere Teil der Emailadresse muss auch angelegt sein. Bei mir ist das postmaster@...
. So sieht das in der Verwaltungsoberfläche aus:
Beachte, dass jeder Account bei uberspace bei einem von mehreren Servern liegt. In den Konfigurationen unten werde ich den Servernamen immer mit UBERSPACEHOST
ersetzen, damit niemand aus Versehen den meinen verwendet.
Cloudflare
Ich gehe davon aus, dass Cloudflare als DNS-Server eingerichtet ist. Das variiert je nach Hoster, der die Domain gerade verwaltet, aber man sollte da den Nameserver übertragen können.
Für den Webserver zeigt Cloudflare auf die IP des Server. Für die Email zeigt der MX-Eintrag auf den jeweiligen Uberspace-Host und ein TXT-Eintrag aktiviert SPF:
Mehr muss Cloudflare nicht tun, es braucht auch insbesondere und anders als die Dokumentation für Email-Versand rät keinen Nameserver-Eintrag, der ohne Proxy auf die IP zeigt. Denn der Server versendet die Mails ja nicht direkt.
Server/Postfix
Serendipity ist konfiguriert, Emails als postmaster@onli-blogging.de zu senden. Wordpress müsste man genauso einstellen.
Auf dem Server leitet postfix die Emails an uberspace weiter. Das ist im wesentlichen diese Anleitung. Die /etc/postfix/main.cf muss editiert werden:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) biff = no append_dot_mydomain = no readme_directory = no compatibility_level = 2 smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_tls_security_level=may smtp_tls_CApath=/etc/ssl/certs smtp_tls_security_level=may smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all inet_protocols = all myorgin = /etc/mailname mydestination = onli-blogging, localhost.localdomain, localhost myhostname = onli-blogging.de relayhost = UBERSPACEHOST.uberspace.de:submission smtp_sasl_auth_enable = yes smtp_sasl_security_options = noanonymous smtp_sasl_tls_security_options = noanonymous smtp_sasl_password_maps = hash:/etc/postfix/sasl_password
Nur der letzte Abschnitt ist abgeändert. Dort wird der Mailserver und die eigene Domain als Absender gesetzt. In /etc/mailname steht übrigens nur nochmal die Domain:
onli-blogging.de
In /etc/postfix/sasl_password müssen die uberspace-Zugangsdaten angegeben werden. Das ist einfach die Hauptemail und das SSH-Passwort:
UBERSPACEHOST.uberspace.de:submission UBERSPACE_EMAIL:UBERSPACE_PASSWORD
UBERSPACE_EMAIL
könnte beispielsweise xyznutzer@UBERSPACEHOST.uberspace.de
sein. Diese Datei muss noch umgewandelt werden:
postmap /etc/postfix/sasl_password
Jetzt sollten Emails rausgehen und ankommen!
Monitorentscheidungsfindung, Teil 3: Die passenden 1440p-Monitore
Monday, 27. April 2020
Wie bei den 1080p-Monitoren werde ich in diesem Artikel alle 1440p-Monitore ab 25" und bis 32" durchgehen, die den zuerst definierten Anforderungen genügen oder zuerst so scheinen. Kurz gesagt ist das Freesyncunterstützung, kein TN-Panel, Reviews sollen spieletauglichkeit und generell ein gutes Bild bezeugen, Höhenverstellbarkeit wäre nett und angesichts der Auflösung ein Displayport Pflicht. Budgetgrenze ist bei 300€, was die Auswahl stark eingrenzen wird.
AOC
Die beiden AOC-Monitore Q3279VWF und Q3279VWFD8 sind 32" groß. Um sie bin ich beim letzten Monitorkauf schon rumgeschlichen, denn sie sind mit rund 200€ wirklich günstig für 1440p-Bildschirme. Der WF ist ein VA-Panel, aber er ist glänzend und deswegen keine Option. Immerhin war er nicht allzu schlecht im Review, deswegen für jemand anderen eventuell doch eine Option, solange der Fokus nicht zu sehr auf Spiele liegt. Vielversprechender Auftakt für den Nachfolger, dem WFD8, denn er hat eine matte Oberfläche und ein IPS-Panel. Und tatsächlich: Er bekam ein ziemlich positives Review. Die IPS-Version ist sehr viel spielegeeigneter. Ein Nachteil ist der doch bestehende IPS-Glow, auch bleibt das Manko der fehlenden Höhenverstellbarkeit.
Ins Raster fällt auch der AOC Q27T1, ein Porsche-Design, hier besprochen. Für Spieler wird abgeraten, aber wohl mehr aus einer generellen Abneigung gegen 75Hz. Das klingt im nächsten Review schon ganz anders. Dort wiederholt sich als Manko die fehlende Höhenverstellbarkeit. Für ein designlastiges Angebot nichtmal wirklich überteuert, wie sich zeigen wird.
Für den wohl wirklich guten AOC (C)Q27G2 (curved oder nicht) müsste man über die 300€ gehen oder auf ein Angebot warten. Wer weniger Kompromisse eingehen will, es aber 1440p werden soll, der sollte sich das ernsthaft überlege. Hardware Unboxed hat ihn sehr positiv besprochen.
Acer Nitro VG270U
27" und 75Hz. Meiner Erinnerung nach war dieser Monitor vor meinem letzten Kauf gerade veröffentlicht worden, aber gab noch keine Reviews. Mit 299€ ist er diesmal an der Budgetgrenze. Verwirrenderweise gibt es zwei Modelle – beide sind IPS, aber das eine kann 144Hz, das andere nur 75Hz. Allerdings ist es dafür günstiger, das 144Hz-Modell außerhalb des Budgets. Doch immer noch gibt es keine Reviews dieser Version.
Hey Acer, wenn ihr anfangen wollt den Monitor zu verkaufen, sendet mir oder wenigstens irgendwem ein Review-Modell zu.
Acer hätte auch noch einen EB275Ubmiiiprx, ein 75Hz IPS-Panel, zu dem ich aber ebenfalls keine Reviews fand.
Philips E-line
Der Philips E-line 328E9FJAB/00 hat ein gekrümmtes 32" VA-Panel und 75Hz, ist leider nicht höhenverstellbar. Es gibt wenige Reviews, aber eines von IGN. Auf der einen Seite klingt das positiv: Spieletauglich, gute Farbwert. Aber die Schwächen eines VA-Panels schlagen bei 32" wohl durch, nämlich die etwas schlechtere Blickwinkelstabilität im Vergleich zu IPS. Man müsse direkt und gerade davor sitzen, damit die Seiten nicht verfälschen. Wenn das stimmt wäre das doch sehr unangenehm.
Das würde dann auch den 325E1C treffen, ebenfalls mit einem 32" VA-Panel. Aber zu ihm fand ich kein Review.
Genauso beim 276E8FJAB. IPS-Panel mit 75Hz, könnte interessant sein, aber es gibt keine belastbaren Informationen.
Der Philips 275E1S/00 hat auch ein IPS-Panel. Ähnlich ist jedoch die Reviewsituation: Fast nichts zu finden. Ein Reddit-Thread taucht auf, in dem ein Käufer ihn gut fand, allerdings IPS-Glow in den Ecken erwähnte. Das ist zu wenig.
In den Kommentaren zum Anforderungsartikel erwähnte Andreas den Philips 272B8QJEB, der sich bei ihm wohl gut schlägt. In seinen Spezifikationen wird Adaptive Sync erwähnt, nicht aber Freesync, und laut Andreas taucht Freesync nicht als alleinige Einstellung im Menü auf.
Lenovo
Wie üblich: Lenovo ist auf meiner schwarzen Liste, also keine Option. Der Vollständigkeit halber seien die Modelle trotzdem erwähnt.
Der C32q-20 ist 32", 75Hz, IPS. Kein Review verfügbar.
Es gibt eine 27" Variante des Lenovo-Monitors vom vorherigen Artikel, den Q27q-10. Hierzu gibt es ein kurzes positives Nutzer-Youtubereview.
Weiterer 27"-Monitor ist der L27q-30, der als 75Hz IPS-Panel ins Raster passen würde. Aber wieder sind keine Reviews auffindbar. Genauso beim 32" IPS D32q-20.
iiyama ProLite XUB2792QSU-W1
Ein 27" Monitor mit IPS-Panel von 2017, der an der Budgetgrenze kratzt. Ein Mini-Review zerreißt ihn, erwähnt schlechte Bildqualität trotz manueller Farbanpassung und viel Backlight-Bleeding. Reddit sagt, er habe nur 70Hz - sei aber sonst gut. Techtesters fand ihn auch gut, erwähnt aber 75Hz (evtl geht da in der Übersetzung etwas verloren), prad lobte ihn ebenfalls. Ist dann wohl eine Option, wobei mir nicht klar ist ob heute noch konkurrenzfähig.
Samsung LC27JG56QQUXEN
27", VA-Panel, 144Hz für unter 300€ - das klingt ziemlich gut. Reddit hat einen positiven Thread, ein Youtube-Video zeigt einen sehr schönen Bildschirm. Professionellere Reviews scheinen leider zu fehlen, aber da der Vorgänger - der C27JG50/C27JG52 - vor allem wegen dem fehlenden Freesync durchfiel, was der hier aber hat, könnte der vom Panel her eine gute Option sein. Allerdings: 300€ und nicht höhenverstellbar? Ich glaub es hackt. Das ist fast beleidigend und disqualifiziert den Samsung für mich.
ASUS VZ27AQ
Zu ASUS wird es doch wohl echte Reviews geben? Der VZ27AQ sieht immerhin hübsch aus, er hat ein IPS-Panel, allerdings ist der Stand nicht höhenverstellbar und laut den Spezifikationen ist schon bei 60Hz Schluss, trotz Freesync. Aber dem ist nicht so, man findet vor allem Spezifikationenzusammenschriebe. Das beste Review ist ein halbenglisches(?) Youtube-Review, das zum Glück Untertitel hat. Es scheint ein gutes IPS-Panel zu sein und damit wenn günstig genug eine akzeptable Option.
HP 27q
Und natürlich gibt es da noch meinen alten HP 27q. Ich habe ihn im Blog beschrieben, nachdem er umgeworfen wurde und kaputtging. 27" und IPS, ich hatte Probleme, die 75Hz zu erreichen. RTINGS hat ein gutes Review, das einiges erklärt (75Hz geht nur mit Freesync ordentlich) und auch die Beleuchtungsprobleme bei dunklen Bildern zeigt. Fast genau so sah das bei mir auch aus. Nicht höhenverstellbar leider, ansonsten hübsch, schnell genug zum Spielen und mit guter Farbdarstellung.
Fazit
In meinen Augen lohnt das nicht wirklich. Es ist einfach eine undankbare Kategorie, die 300€ als Grenze zu hart, die Monitore zu beschnitten. Es gibt auch viel zu wenige Reviews der Kandidaten. Auf der einen Seite sind diese 1440p-Bildschirme doch deutlich teurerer als die 1080p-Alternative, bei denen die neuen Modelle wohl ziemlich gute Panel bekommen haben, 144Hz eine Option ist (in dieser Auswahl hatte das ja nur der Samsung) und wo trotzdem noch eher mal Budget für so unwichtige Kleinigkeiten wie einen ergonomisch minimal wichtigen höhenverstellbaren Standfuß über ist. Denn es ist ja leider nicht so, als ob der DPI-Vorteil – wenn man denn bei 27" bleibt – einen wirklich großen Unterschied ausmacht. Auf der anderen Seite locken die besseren Alternativen: Wenn ich schon dabei bin 300€ auszugeben, warum es dann nicht 330€ werden lassen und dafür etwas richtig gutes wie den AOC CQ27G2U nehmen? Und so viel mehr fehlt zu anderen sehr gut besprochenen Bildschirmen wie dem MSI Optix MAG272CQR oder dem LG 27GL850-B dann auch nicht mehr.
Am reizvollsten ist noch der AOC Q3279VWFD8, wenn ein möglichst großer Bildschirm gesucht wird. Um die 200€ für 32" mit IPS bezahlen und dann sei der sogar noch ganz gut? Das hat was. Beim Rest könnten sich noch gute Modelle bei denen ohne Reviews verstecken. Andererseits hat es meist seinen Grund, wenn die Herstellerfirmen keine Reviewgeräte verschicken.
Ich muss das jetzt selbst einen Moment sacken lassen, bevor ich mich entscheide. Nächster Artikel der Reihe ist dann die Vorstellung des Monitors, der es geworden ist. Im Blog liest man sich sicher vorher wieder.
Monitorentscheidungsfindung, Teil 2: Die passenden 1080p-Monitore
Friday, 24. April 2020
Auf zu den 1080p-Kandidaten. Fast schon leider gibt es richtig viel Auswahl von Monitoren mit einer Auflösung von 1920x1080. TN auszuschließen schmeißt viel Mist raus, Freesync vorzugeben hilft auch, aber immer noch ist die Entscheidung trotz der im vorherigen Artikel gesetzten Anforderungen keineswegs klar.
Ich werde jetzt alle in Frage kommenden Monitore durchgehen. Wo immer möglich werde ich Reviews verlinken, mit denen ich auch entscheiden will. Quelle der Kandidaten ist die Monitorliste auf PC-Kombo und was in Shops wie Galaxus verfügbar ist, dahin oder zur Herstellerseite gehen dann auch jeweils die Modelllinks.
Samsung S24*
Samsung hat einige 24-Zöller mit Freesync. Tatsächlich war ein S24F350 (mit seinen verschiedenen Unterversionen) eines der ersten günstigen Freesync-Modelle mit dem Paneltyp PLS (=IPS), der als spieletauglich gehandelt wurde. Leider ist Im Modellwirrwarr den Überblick zu behalten schwierig. Aber es sind die günstigsten Modelle, die den Großteil der Vorgaben erfüllen.
Es gibt den S24F350FHU, Samsung S24F352H, Samsung S24F354FHU und den Samsung S24F356. Sie alle haben kein Displayport und sind nicht höhenverstellbar. Was die genauen Unterschiede der jeweiligen Modelle sind wurde mir nicht klar. Der 356 hat einen anderen Standfuß, soviel ist sichtbar. Dieses Youtube-Review beklagt einen wackeligen Standfuß (vll wurde der deshalb beim 356 gewechselt) und starkes Backlight-Bleeding. Beides ist abschreckend, so wie auch die fehlenden Reviews, abgesehen vom ersten bereits verlinkten und dem zweiten positiven Nicht-Review auf pcmonitors.info.
Hier sei auch noch der Samsung S24R652 erwähnt, der wie eine moderne Bürovariante aussieht, was positiv ist. Höhenverstellbarkeit und Displayport insbesondere – aber 200€ ist zuviel für ein 1080p IPS-Panel mit nur 75Hz.
Samsung C24*
Es folgt die C24-Reihe. Gleiche Idee: Günstig, spieletauglich, nicht TN. Sondern diesmal VA. Zudem sind sie gekrümmt, was meiner Erfahrung nach weder schadet noch ein Pluspunkt ist. Der Samsung C24F390FH zeigt den alten wackeligen Standfuß, der Samsung C24F396FHU hat den länglicheren, der stabiler sein dürfte. Vom C24F356 in der 27"-Variante gibt es ein prad-Review, ziemlich positiv, nur für sehr schnelle Spiele sei der Bildschirm nicht geeignet und er ist halt wieder nicht höhenverstellbar. Dass ältere VA-Panel schlechter spielegeeignet sind als moderne ist meiner Meinung nach heute ein größeres Manko als ein älteres Release-Review wiederspiegeln kann.
Den Stand hat auch der teurere Samsung C24RG54FQU, der zudem einen Displayport hat. Sein großer Pluspunkt sind die unterstützten 144Hz. Das verbaute VA-Panel ist also eine neuere Generation. Daher hat er mit den Namensvettern wohl weniger zu tun als mit dem teuren und vom Markt verschwundenen Samsung CFG70. Eine Reviewseite fand ihn okay aber überteuert, was beim momentanen Preis in Deutschland eher nicht zutreffen dürfte.
Viewsonic VX2458-C-mhd
Was aber nicht heißen soll, dass es keine Alternative zum ähnlichen Preis gibt. Mindestens ist da der ViewSonic VX2458-C-mhd. Auch ~170€, VA-Panel, 144Hz. Er hat positive Reviews, eventuell ist aber das Backlight nicht gleichmäßig genug. Definitives Manko ist nur die fehlende Höhenverstellbarkeit, und dass der Preis sich dem 1080p-Maximum nähert.
Acer CB242Y
Also nochmal zu einer günstigeren und höhenverstellbaren Alternative. Denn das ist der Acer CB242Y, mit 75Hz IPS-Panel. Es wieder auf displayninja positiv beschrieben, aber da keine eigenen Bilder da sind vertraue ich dem Review nicht. Zuversichtlicher stimmt mich da dieses Youtube-Review, das zwar überzogen positiv ist angesichts der verfügbaren Alternativen, aber wirklich auch bei dunklen Bildern einen hübschen Monitor zeigt. Bislang ist das mein Favorit.
Ärgerlich: Acers Modellseite zeigt einen B242Y bir und einen leicht teureren CB242Y bmirx, erklärt aber nicht den Unterschied. Im Forum wurde nachgefragt und – typisch für Supportforen einer Großfirma – eine sinnentleerte Antwort gegeben. Geizhals behauptet, dass bei einem nochmals anderen bmiprx Displayport dabei wäre und das die Version ist, die in Deutschland verfügbar sei. Das wäre ein großer Vorteil.
AOC C24G1 und 24G2U(5)
144Hz und ein gekrümmtes VA-Panel, mit Displayport und sogar höhenverstellbar, das ist der C24G1. Nahe des Maximums des 1080p-Budgets ist der C24G1 wohl keine schlechte Wahl. Im Review schlug er sich 2018 sehr gut, als Allrounder stark in allen Kategorien. Derzeit schreckt mich mehr der aktuelle Preis ab: Laut Preisverlaufsdiagramm war er schonmal günstiger, obwohl das Panel ja eher nicht aus der aktuellen Generation sein kann. Er im Sonderangebot aber wäre ein zweiter Favorit.
Ende letzten Jahres kam der AOC 24G2U heraus, eine IPS-Alternative. Das Review ist ähnlich positiv. Hohe Minimalhelligkeit erscheint mir allerdings als ein wichtiges Manko. Noch wichtiger: Er ist nicht auf Lager und sein Preis ist knapp über den 200€.
Aber es gibt ja noch den AOC 24G2U5. Günstiger, verfügbar. Dafür nur 75Hz. Ist er damit noch besser als der Acer CB242Y? Immerhin hat er Displayport. Im Blog von notebooksbilliger, erstaunlicherweise nicht als Verkaufsveranstaltung geschrieben, kommt er mittelmäßig weg.
Es gäbe da auch noch den AOC 24V2Q, ebenfalls ein IPS, von dessen 27"-Variante KitGuru ein Review hat. Keine Höhenverstellbarkeit und einiges an IPS-Glow sind auch nicht überzeugend.
LG 24M*
Zum LG24MK430H-BK fand ich nur ein negatives Review. Die 75Hz funktionierten nicht richtig. Der LG 24MK600M klingt im Video erstmal deutlich besser. Doch die von ihm erwähnte Pixeligkeit, kein Displayport, nicht höhenverstellbar, das spricht dann wieder dagegen, wie auch die Kommentare die von weiteren Qualitätsproblemen berichten.
Auf den ersten Blick interessanter ist der LG 24MP59G-P. Doch hierzu hat RTINGS ein Review. Das Bild selbst sei okay, er ist spieletauglich, aber es gibt die IPS-Lichthöfe und andere Ungleichmäßigkeiten auf dunklen Hintergründen. Dann ist er auch noch nicht höhenverstellbar. Damit ist er dann raus.
HP 24fw und 24fh
So schlecht, dass ich HP ausschließen sollte war der Vorgänger nicht, obwohl ich dort definitiv auf ein einzeln aktivierbares Freesync achten würde.
Der HP 24FW ist IPS, 75 Hz, ohne Displayport, nicht höhenverstellbar. Ich finde kein ordentliches Review, aber dieses Youtube-Review auf Hindi, das am Ende das OSD-Menü zeigt. Es ist das gleiche wie bei meinem 27q und Freesync ist wieder im Gamemodus versteckt.
Das gleiche gilt beim 24fh. Ein Youtubevideo, diesmal auf Englisch, zeigt das inakzeptable OSD-Menü. Schade.
Lenovo Q24i-10
Der Monitor sieht zwar abgefahren aus. Aber für 75Hz ist er auf der teuren Seite, das Design wird mitbezahlt. Vor allem aber ist Lenovo wegen seiner Garantieverweigerung auf meiner schwarzen Liste. Ich sehe auch kein professionelles Review, das mir oder anderen den Monitor schmackhaft machen könnte.
Hannspree HG244PJB
144Hz, IPS, Displayport, höhenverstellbar. Das klingt gut, aber er ist von 2018 und ich finde keine richtig professionelle Reviews. Das würde ich bei dem Preis aber schon wollen. Es gibt positive Youtube-Videos, 1, 2 und 3. Aber keines davon geht auf den IPS-Glow ein oder zeigt brauchbare Testbilder dafür.
Fazit
Als günstigste Lösung wäre einer der Samsungmonitore bestimmt vertretbar, egal ob IPS oder VA, also S24 oder C24. Mir interessanter scheint der neue Acer-Budget-Monitor, der Acer CB242Y, besonders wenn bei der verfügbaren Version tatsächlich Displayport dabei ist. Es könnte aber an fehlenden professionellen Reviews liegen, dass dieses relative neue Modell noch zu gut dasteht. Ansonsten ist der AOC C24G1 Reviews zufolge so ziemlich die beste Wahl – wobei der Preis etwas niedriger sein könnte.
Als nächstes werde ich schauen, welche 1440p-Monitore in die Auswahl kommen. Wie teuer die sind und wie gut sie wirken wird mit darüber entscheiden, ob der C24G1 noch eine vernünftige Option ist.