Muckturnier

News 01.09.2020–17.03.2022

Muckturnier kann jetzt Qt 6

Corona verhindert nach wie vor leider nachhaltig jedes Muckturnier. Aber irgendwann wird es schon mal wieder besser werden. Hoffentlich. Egal wie, die Entwicklung geht weiter. Corona hin oder her ;-)

Die neue Major-Release-Version 6 von Qt, der Bibliothek, auf die das Muckturnier-Programm aufbaut, wurde am 08.12.2020 veröffentlicht. Seither ist nicht viel passiert: Anfangs fehlten viele Features, Module waren noch nicht portiert etc. Selbst Gentoo Linux (das i. d. R. immer recht schnell mit neuen Versionen ist) hat bis dato Qt 6 noch nicht in das Mainline-Paket-Repository Portage aufgenommen. Nach wie vor sieht es wohl so aus, als ob das Muckturnier-Programm noch lange auf Qt 5 setzen würde.

Aber zumindest kann man mittlerweile Qt 6 (das Stand jetzt Version 6.2.3 erreicht hat) auf Gentoo über das Qt-Overlay problemlos bauen und nutzen. Deswegen habe ich mir mal angeschaut, wie viel Aufwand eine Portierung wäre.
Netterweise war der Aufwand sehr überschaubar. Nach ein paar ohnehin sinnvollen Änderungen und Optimierungen am Code waren es letztendlich nur ein paar Zeilen, die es gebraucht hat, um Muckturnier mit Qt 6 zum Kompilieren zu bringen. Und zwar ohne die Kompatibilität mit Qt 5 zu verlieren. Ein bisschen Feinschliff fehlt noch (z. B. wurde QList zugunsten von QVector rausgeschmissen, was ich überall benutze, aber QVector heißt jetzt QList …), aber es läuft.

Heißt also: Das Muckturnier-Programm ist jetzt für die hoffentlich bald wieder bessere oder zumindest normalere Zukunft gerüstet. Und wenn dann irgendwann mal Qt 6 vernünftigerweise als Standard-Basis definiert wird (z. B. wenn Gentoo Qt 5 rausschmeißt oder zumindest KDE offiziell auf Qt 6 setzt), dann kann’s direkt losgehen :-)

Muckturnier 3.4.1

Mit Version 3.4.1 gibt es jetzt das erste Maintenance-Release für Muckturnier 3.4. Es gab zwar mindestens seit einem dreiviertel Jahr mit an Sicherheit grenzender Wahrscheinlichkeit Corona-bedingt keine Muckturniere, aber die Entwicklung ist nicht stehengeblieben. Schließlich wird ja irgendwann mal wieder Normalität einkehren, und dann geht's wieder los :-)

„Maintenance“ heißt „Instandhaltung“ bzw. „Wartung“. Das heißt, dass es keine neuen Features oder Funktionen gibt, sondern nur Fehlerkorrekturen. Jeder sollte das Update installieren!

Dark/Night Mode

Dunke Farbschemata werden zunehmend beliebt. Bisher waren Teile des Muckturnier-Programms mit einem dunklen Farbschema schlecht oder gar nicht benutzbar, da z. B. die Icons auf einen hellen Hintergrund ausgelegt waren; somit würde ich das Folgende auch als Bugfix und nicht als neues Feature definieren: Jetzt gibt es zwei Sätze Icons, je einen für hell/weiß und einen für dunkel/schwarz. Weiterhin passen sich die Anwendungsfarben nun an das globale Farbschema an:

Screenshot der Ergebnisse-Seite, halb mit einem dunklen und halb mit einem hellen Farbschema

Ein dunkler Style ist momentan unter Linux und macOS möglich. Windows 10 1809 bietet zwar eine dunkles Farbschema, die API scheint aber derzeit nicht offiziell dokumentiert zu sein. Folgerichtig unterstützt Qt momentan einen „Dark Mode“ unter Windows nicht.
Sollte das Ganze offiziell werden und auch noch in Qt 5 einfließen (auf dem das Muckturnier-Programm wohl noch eine ganze Zeit basieren wird), wird die entsprechende Windows-Unterstützung selbstverständlich noch nachgereicht. So lang sieht das Muckturnier-Programm unter Windows aus wie gehabt.

Bugfixes

Es wurden einige Fehler behoben, die hauptsächlich im Netzwerkbetrieb aufgetreten sind.

Mit einer Ausnahme: Durch das Verschieben der Optionen unter den pro Seite verfügbaren „Einstellungen“-Knopf wurde ein recht merkwürdiger Bug eingeführt: Wenn im Einstellungen-Menü der Ergebnisse-Seite „Automatische Auswahl“ → „Auswahl laut Auslosung“ deaktiviert war, konnte man keine Runden mehr auswählen. Das ist nun behoben.

Weiterhin gab es folgende Bugfixes bzw. folgendes unerwartetes Verhalten wurde korrigiert:

Viel Spaß mit der neuen Version! Hoffen wir, dass es 2021 (vielleicht im Herbst?!) mal wieder ein Muckturnier gibt!

Muckturnier und Qt 6

Das Muckturnier-Programm baut auf dem Qt-Framework auf. Gestern wurde nun offiziell das neue Major-Release Qt 6 veröffentlicht.

Nun dachte ich mir: „Na dann, portiere ich Muckturnier doch gleich auf Qt 6“. Allerdings haben die Qt-Entwickler (verständlicherweise) einen Schlussstrich bezüglich Windows gezogen, und unterstüzen keine Windows-Versionen mehr, die seitens Microsoft nicht mehr unterstützt werden. Heißt also: Qt 6 läuft nur auf Windows 10.

Für Linux und macOS gäbe es denke ich kein Problem. Aber die meisten Muckturnier-User werden wohl unter Windows unterwegs sein. Und was nimmt man, wenn man ein Muckturnier auswertet? Das älteste Notebook, was noch geht. Und ob auf dem Windows 10 läuft, sei dahingestellt.

Die aktuelle Version des Muckturnier-Programms, die gegen Qt 5 linkt, läuft sogar noch unter Windows XP. Und das ist sicherlich für das Projekt kein Schaden. Heißt also:
Ein auf Qt 6 aufbauendes Muckturnier-Programm, was dann mindestens Windows 10 benötigen wird, wird es erst dann geben, wenn Gentoo Qt 5 rausgeworfen hat. Das wird kommen, aber es wird noch dauern. Also keine Angst ;-)

Muckturnier 3.4.0 out now!

So, wie es derzeit aussieht, wird es leider wohl in naher Zukunft kein Muckturnier geben. Aber irgendwann wird Corona überstanden sein. Und die Entwicklung ist weitergegangen, deswegen gibt es jetzt – Corona hin oder her – ein neues Release :-)

Die neue Version bringt neben zahlreichen Bugfixes vor allem neue Features: U. a. gibt es jetzt ein vernünftiges Konzept für die Auslosung direkt bei der Anmeldung, es werden verschiedene Spielstandzettel unterstützt, das Auffinden von Eingabefehlern ist jetzt deutlich einfacher und die Suchfunktion wurde weiter verbessert.

Im Einzelnen:

Auslosung direkt bei der Anmeldung

Das Konzept für die Auslosung direkt bei der Anmeldung wurde kürzlich schon unter dem Titel Technology Preview: Auslosung bei der Anmeldung vorgestellt. Der Einstellungen-Dialog wurde noch ein bisschen weiterentwickelt und sieht jetzt so aus:

Dialog für die Einstellungen der Auslosung

Hier möchte ich insbesondere auf die Vorteile eingehen, die man durch die Auslosung bei der Anmeldung hat:

Automatische Auswahl in der 1. Runde und für einzelne Spieler

Wenn das Programm weiß, wer wo sitzt, dann kann schon die erste Runde schnell und einfach eingegeben werden: Man einfach wählt die Tischnummer aus, und die Paare bzw. Spieler werden automatisch ergänzt. Nach wie vor geht es natürlich auch, eines der Paare auszuwählen; alles Übrige wird dann automatisch ergänzt. Bisher war das erst ab Runde 2 möglich, da man die Auslosung erst über die Eingabe der Ergebnisse der 1. Runde überhaupt erfuhr.

Neu in Version 3.4 ist weiterhin, dass die automatische Paar- bzw. Tischauswahl jetzt auch für Turniere mit einzelnen Spielern zur Verfügung steht.

Die Möglichkeit, eine Auslosung (manuell) einzugeben und für die 1. Runde bei Feste-Paare-Turnieren zu nutzen, brachte schon die Version 3.3. Jetzt kann aber von der Auslosung weiter profitiert werden:

Optionen für die automatische Auswahl

Die automatische Auswahl wurde in zwei Parameter aufgeteilt. Zum einen „Auswahl laut Auslosung“, und zum anderen „Paar 2 rückt pro Runde weiter“ (beides zu aktivieren bzw. deaktivieren im Menü unter dem „Einstellungen“-Knopf auf der Spielstandseite).

Die „Auswahl laut Auslosung“ greift auf die Auslosung zurück, die auf der Anmeldeseite eingegeben wurde, und zwar unabhängig von der offenen Runde. Das ermöglicht eine Neuauslosung pro Runde, egal, ob man mit festen Paaren oder mit einzelnen Spielern spielt.

Ist zusätzlich die Option „Paar 2 rückt pro Runde weiter“ aktiviert, dann wird nur in der 1. Runde auf die Auslosung auf der Anmeldeseite zurückgegriffen, ab der 2. dann auf die Ergebnisse der letzten Runde (wobei, wie bisher auch, Paar 1 immer sitzen bleibt und Paar 2 immer einen Tisch weiterrückt). Auch diese Option ist jetzt unabhängig davon verfügbar, ob man mit festen Paaren oder einzelnen Spielern spielt.

Das Aussetzen der automatischen Auswahl, damit man auch von der Auslosung bzw. der eigentlich richtigen Position laut der letzten Runde abweichende Ergebnisse eingeben kann, ist jetzt über den Knopf mit dem Autoselect-Zauberstab-Icon rechts neben der Spielstandeingabe möglich. Der ist jetzt da, wo bisher die Option „Paare bzw. Tischnummer automatisch auswählen“ war.

Vertikale Spielstandzettel

Inspiriert durch das dieses Jahr abgehaltene Muckturnier der SPD Konradsreuth (das sind übrigens wirklich hartnäckige EDV-Verweigerer!), bei dem Basti Söllner und ich nur wegen ein paar Toren nicht mit auf dem Siegertreppchen standen(!), bringt das neue Release jetzt Unterstützung für eine weitere Variante von Spielstandzetteln.

Für gewöhnlich wird beim Mucken von links nach rechts aufgeschrieben, Paar 1 oben und Paar 2 unten. Einen Beispiel-Spielstandzettel mit diesem Layout gibt es nach wie vor unter Material. Für diese Variante des Aufschreibens habe ich damals auch die Eingabemaske der Ergebnisse-Seite gestaltet.

Nun wird aber – wie ich jetzt weiß – mitunter (und eben auch von der SPD Konradsreuth) ein Spielstandzettel verwendet, bei dem Paar 1 links und Paar 2 rechts stehen, und die Bobbl von oben nach unten aufgeschrieben werden. Wenn man so einen „vertikalen“ Spielstandzettel in die „horizontale“ Eingabemaske des Muckturnier-Programms eingeben will, bekommt man einen Knoten im Hirn und Eingabefehler sind vorprogrammiert. Evtl. hielt diese Tatsache sogar den einen oder anderen bisher davon ab, das Muckturnier-Programm überhaupt zu benutzen!

Da ich natürlich ein möglichst breites Spektrum an Muckturnier-Varianten abdecken will (und das auch kein allzu großes Problem war), bringt Version 3.4 jetzt eine neue Auswahlmöglichkeit mit. Diese kann beim Anlegen des Turniers unter der neuen Seite „Ergebniseingabe“ ausgewählt (und natürlich auch als generelle Vorlage gespeichert) werden. Außerdem kann man das Layout des Eingabezettels auch noch im laufenden Betrieb ändern:

Unter dem neuen „Einstellungen“-Knopf (wo vorher nur die einzelne Checkbox „Eingabe ohne Tischnummern“ war) versteckt sich jetzt ein Menü:

„Einstellungen“-Menü der Ergebnisse-Seite

Da kann man dann zwischen dem altbekannten „horizontalen“ Layout

„Horizontaler“ Eingabedialog

und der neuen „vertikalen“ Variante

„Vertikaler“ Eingabedialog

wählen. Selbstverständlich unterstützen beide Varianten beliebig viele Bobbl, nicht nur zwei wie in dem gezeigten Beispiel. Das gewählte Layout spiegelt sich auch in der Tabelle der bisher eingegebenen Spielstände und in der Formatierung der Turnier-Export-Daten wieder.

Kontinuierlicher Vergleich der Spielstände im Netzwerkbetrieb

Bei größeren Turnieren (oder auch generell) bietet es sich an, alle Ergebnisse unabhängig voneinander an zwei Rechnern einzugeben. Damit können Eingabefehler gefunden werden, denn ein Zahlendreher ist schnell passiert, und immer wieder sind Spielstandzettel auf den ersten Blick nicht klar und eindeutig.

Der augenscheinlich einfachste Weg, Unterschiede zu finden, ist der Vergleich der Rangliste. Ist die Rangliste identisch, müssen auch die eingegebenen Ergebnisse identisch sein. Hierfür gab es in früheren Versionen verschiedene Ansätze, vgl. hierzu das Release Announcement für Version 0.7.5, das für Version 0.7.7 und das für Version 3.0 (ab da ging es zumindest einigermaßen …).

Die aktuelle Version bringt ein anderes, neues Konzept. Weil um was geht es? Wir wollen Eingabefehler finden. Und die findet man am besten direkt während der Eingabe. Wenn ein Netzwerk läuft, dann gleicht jetzt jeder Client kontinuierlich und automatisch seine bisher eingegebenen Ergebnisse mit dem Server ab. Das sieht dann (eingeblendet neben der Tabelle mit den bisherigen Ergebnissen) so aus:

Anzeige zur Synchronität der eingegebenen Client-Ergebnisse mit denen des Servers

Die Anzeige wird mit jeder Eingabe bzw. Änderung, sowohl auf der Client- als auch auf der Serverseite, aktualisert. Sofern die Ergebnisse nicht identisch sind, können die Unterschiede aufgelistet werden. Der entsprechende Dialog sieht beispielsweise so aus:

Anzeige der Unterschiede der Ergebnisse eines Clients zu denen des Servers

Damit sollte man nun endlich ganz einfach und vor allem nebenbei, ohne zusätzlichen Aufwand, Eingabefehler finden und vor allem auch leicht korrigieren können.

Manche Konzepte müssen eben einfach ein bisschen reifen ;-)

Verbesserungen in der Suchfunktion

Phonetische Suche

Als neue Option gibt es jetzt die Möglichkeit, eine sog. „phonetische Suche“ durchzuführen. Dabei wird nicht nach der eingegeben Buchstabenfolge (oder Abwandlungen davon) gesucht, sondern nach dem Klang der Aussprache des Suchbegriffs. Implementiert ist das mit Hilfe des „Kölner Phonetik“-Algorithmus.

Beispielsweise kann man so den Namen „Raithel“ auch mit dem Suchbegriff „Reidl“ finden. Womöglich ist gerade das jetzt Zufall, aber bemerkenswerterweise findet man auch Uwe Trczelinski, einen er beiden Gewinner des 1. Hofer Aufmuckers 2017, wenn man (entsprechend der Aussprache des Namens) nach „Tschilinski“ sucht.

Die phonetische Suche kommt, sofern sie neben dem Namen-Eingabefeld auf der Anmeldeseite aktiviert ist (das ist sie standardmäßig) beim Import von Paar- bzw. Spielerlisten und auch beim Anmelden neuer Paare bzw. Spieler zum Einsatz und sollte besser vor ungewollten Doppelanmeldungen schützen.
Beispiel: Das Paar „Bauer Martin / Schmidt Bernd“ ist angemeldet, und fälschlicherweise wird versucht, „Bernd Schmitt / Martin Bauer“ anzumelden. Das ging der bisherigen Suchfunktion durch die Lappen, wird aber durch die phonetische Suche jetzt als potenzielles Duplikat gemeldet.

Der Nachteil der phonetischen Suche ist die Tatsache, dass sie – durch die systembedingte und auch gewollte große Unschärfe – potenziell auch viele falsch positive, also unpassende bzw. ungewollte Treffer liefert. Deswegen muss sie aktiv mit einem Klick auf den Ohr-und-Schall-Symbol-Button eingeschaltet werden:

Suchleiste mit Button für die „phonetische Suche“

Einen großen Nutzen sollte diese Funktion vor allem dann haben, wenn man mit vielen Voranmeldungen arbeitet und den bzw. die Namen nicht richtig versteht und/oder falsch schreibt. Den selben Vorteil sollte sie auch dann bringen, wenn z. B. nach dem Turnier die Leute ihre Platzierung wissen wollen und man die Rangliste mit viel Lärm außenherum durchsuchen will.

Tolerantere Standardsuche

Weiterhin wurde die normale Suchfunktion um einen weiteren Aspekt toleranter gemacht: Aufeinanderfolgende gleiche Buchstaben. Diese werden jetzt dahingehend berücksichtigt, dass man Namen wie „Heerdegen“ jetzt z. B. auch bei der Suche nach „Herdeegen“ finden kann.

Überarbeitung der Match-Funktion

Abgesehen davon wurde die Implementierung der Match-Funktion (die die Übereinstimmung des Suchbegriffs mit einer gegebenen Zeichenfolge prüft) überarbeitet. Diese kommt jetzt ohne reguläre Ausdrücke und mit viel weniger zu vergleichenden Varianten aus (maximal drei plus ggf. die phonetische Variante).

Die Änderungen resultieren in einer ganz erheblichen Steigerung der Geschwindigkeit der Suche: Sie benötigt jetzt nur noch ca. 1/65(!) der Zeit der vorhergehenden Versionen, das sind gut 98 % weniger.
Dies macht sich insbesondere beim Import einer langen Paar- bzw. Spielerliste bemerkbar: Hier hat die Suche nach potenziellen Duplikaten bisher selbst auf leistungsfähigen Computern sekundenlang gedauert. Jetzt geht das auch auf älterer Hardware ohne merkliche Verzögerung, innerhalb eines Mausklicks.

Änderungen an der Ranglistenseite

Die „gegnerischen geschossenen Tore“ werden jetzt standardmäßig bei der Erstellung der Rangliste berücksichtigt. Schließlich liegen die Daten ja vor, warum sollte man sie nicht zur Unterscheidung von Platzierungen nutzen? Ob oder ob nicht die gegnerischen Tore per Voreinstellung berücksichtigt werden sollen, kann jetzt auch im „Turnier starten“-Dialog und per Vorlage für neue Turnierdatenbanken festgelegt werden.

Weiterhin gibt es eine neue Anzeigeoption auf der Ranglistenseite: „Nicht entscheidende Tore ausgrauen“. Damit werden Tore bzw. gegnerische Tore, die für die Platzierung nicht relevant sind, grau dargestellt. Die Option kann über das neue „Einstellungen“-Menü ein- und ausgeschaltet werden. Das ist unter dem gleichnamigen Knopf zu finden, der sich jetzt an der Stelle der Checkbox „Gegnerische Tore berücksichtigen“ befindet. Diese Option ist ebenfalls in das Menü gewandert.

Eine „ausgegraute“ Rangliste sieht beispielsweise so aus:

Beispiel für eine „ausgegraute“ Rangliste

Passend dazu kann man jetzt auch beim Export auswählen, was mit nicht relevanten Toren passieren soll: Sie können jetzt immer angezeigt, eingeklammert oder auch ausgeblendet werden.

Überarbeiteter „Turnier starten“-Dialog

Der „Turnier starten“-Dialog bringt jetzt deutlich mehr Einstellmöglichkeiten. Alle sind auch Bestandteil der Vorlage für neue Turnierdatenbanken. Diese Vorlage kann jetzt außerdem direkt im Dialog gesetzt bzw. aktualisert werden.

Neben den Grundeinstellungen „Turniertyp“, „Punkte pro Bobbl“ und „Bobbl pro Runde“ stehen jetzt, wenn die Option „Erweiterte Einstellungen“ aktiviert ist, folgende Optionen zur Vorauswahl:

Turnier abschließen

Ein weiteres neues Feature ist die Möglichkeit, ein Turnier abzuschließen. Wenn Ergebnisse vorliegen und alle Runden abgeschlossen sind (das Turnier also potenziell beendet ist), kann man via „Datei“ → „Turnierstatus festlegen“ das Turnier als „abgeschlossen“ deklarieren. Das bewirkt – unabhängig von einem dateisystemseitigen Schreibschutz – dass das Turnier nicht mehr (aus Versehen) verändert werden kann.

Sind trotzdem Änderungen nötig, dann kann der Status (natürlich nur dann, wenn die Datei an sich nicht schreibgeschützt ist) jederzeit wieder auf „offen“ gesetzt werden.

Auswahl weiterer Neuerungen und Bugfixes

Relevante „interne“ Änderungen

… die die meisten wohl eher nicht interessieren, aber nicht unerwähnt bleiben sollen.

Die Lizenz des Projektes wurde von „GPLv2“ auf „GPLv3 or later“ geändert.

Für alle, die selber kompilieren, ist folgendes wichtig: Es wird jetzt mindestens Qt 5.11 benötigt (statt bisher Qt 5.7) und ab jetzt nutzt der Quellcode den C++17-Standard (statt bisher C++11). Nutzer von Binärpaketen bzw. Installern braucht das natürlich nicht zu kümmern.

Eine weitere, aber auch vermutlich nur für Wenige relevante Änderung ist: Der Prüfsummen-Algorithmus (u. A. für die Prüfsumme der Rangliste) wurde überarbeitet. Die bisherige Implementierung könnte (zumindest theoretisch) trotz unterschiedlicher zugrundeliegender Ranglisten in der selben Prüfsumme resultieren. Das sollte jetzt nicht mehr passieren, allerdings werden jetzt für die selben Datenbestände ganz andere Prüfsummen ausgegeben, als bisher.

Alle Änderungen enthält wie immer der ChangeLog. Viel Spaß mit der neuen Version :-)