Featurewünsche für LegacyClonk

An der Stelle sind wir wohl geteilter Meinung. Idealerweise sollte meiner Ansicht nach alles einfach so funktionieren, ohne dass der Spieler irgendwelche Konfiguration verändern muss. Manuelle Konfiguration sollte die Notlösung sein. Heimanschlüsse, wo man am Router sinnvoll etwas konfigurieren kann sind dank DS-Lite und anderen CGNAT-Verfahren sowieso am aussterben. Deshalb denke ich auch, dass Entwicklungszeit besser bei der Verbesserung der Hole Punching-Verfahren aufgehoben ist.

Die entsprechende Info aus der OpenClonk-Wiki ist nicht falsch - die Ports entsprechend freizuschalten kann durchaus sinnvoll sein, ist aber auch nicht unbedingt notwendig.

Aber wir sind hier sowieso eigentlich bei LegacyClonk, wofür du nicht mich überzeugen musst. Vielleicht baut’s ja jemand dafür.

Das sollte auf alle Fälle immer das höchstpriorisierte Ziel sein, sofern es irgendwie möglich ist.

Abgesehen davon hat es sich als unglaublich schwer herausgestellt, einem relativ ahnungslosen Clonk-Neuling zu erklären wie man Ports weiterleitet, damit er mit seinen Freunden zusammenspielen kann.
Dabei bekommen wir da wohl auch nur den Teil mit, der es in den IRC schafft.

Das einzige was mir an der „Hole-Punching wirds schon richten“-Einstellung nicht gefällt ist, dass es meines Wissens nach als unmöglich angesehen wird, zwischen zwei symmetrischen (hoffentlich habe ich den richtigen Begriff in Erinnerung) NATs zu punchen und generell ein symmetrisches NAT auf Host-Seite alles ziemlich verkompliziert.

Ich weiß zwar nicht wie das im Allgemeinen aussieht, aber angenommen ich hab meine manuellen Experimente sinnvoll durchgeführt und richtig interpretiert, sind sowohl das NAT das der Router vom A1-Festnetzanschluss zuhause macht (Port-Forwarding geht aber), sowie das NAT, über das mein mobiles Internet läuft symmetrische NATs.

Allerdings hab ich noch nicht probiert ob OCs-Hole-Punching bei diesen NATs funktioniert.
Das werde ich eventuell irgendwann noch nachholen.

Hmm da habt ihr auch wieder recht.

Gehe ich richtig in der Annahme, dass mit IPv6 Unterstützung das NATten wegfiele und somit in einem SoHo-Netzwerk die einzige Hürde die lokale Firewall wäre? Ich hab halt etwas Bauchschmerzen eine Verbindungstechnik zu nutzen, die bei manchen funktioniert und bei manchen nicht.

Ja, genau. Kein NAT mehr, es muss nur noch die Firewall überwunden werden, was aber zumindest für UDP exakt genauso funktioniert wie die NAT-Durchquerung. TCP dürfte mit IPv6 sogar auch machbar sein, das habe ich aber noch nicht implementiert. (Mit IPv4 braucht man da Heuristiken zur Portvorhersage.)

Du hast aber recht, dass es kein Wunderheilmittel ist. Ich würde es eher als eine Ergänzung sehen, die es zusätzlichen Spielern ermöglicht, online zu spielen (eben die Spieler, bei denen die NAT-Durchquerung nicht klappt, aber die einen IPv6-Anschluss haben). Diese Gruppe ist zugegeben aktuell nicht groß, das wird sich aber mit der Zeit bestimmt ändern (IPv6-Verwendung steigt, während die IPv4-Adressen knapper werden).

Jetzt sind wir auf einem Nenner :slight_smile:
Ist es technisch möglich, dass LC Blockierregeln der Firewall für eingehende Verbindungen erkennt? Weil das wäre dann die letzte Hürde, die ich noch sähe.

Keine Ahnung, ob das aktuell immer noch so ist: Unter Windows hat sich CR immer aufgehängt (OpenGL), wenn die Firewall was wollte. Dann musste man den Prozess blind per cmd killen und die Firewallregel bestätigen.

Featurewunsch #7 von Funni: Autorenfeld in den Einstellungen.
Da die Registrierprüffunktion außer Kraft gesetzt ist, gibt es keinen Autor mehr, insbesondere beim Abspeichern von Spielständen. Ein Feld in den Einstellungen zum Eingeben eines Autornamens wäre nicht schlecht. Standard könnte der Benutzername des Rechners sein. Da der Editor davon nicht betroffen ist, kann das ja hinten angestellt werden.

Featurewunsch #8 von Funni: Auto-Nicht-Bereit
Aus aktuellem Anlass: Wenn man aus dem Spiel für eine Zeit von sagen wir mal 20 Sekunden raustabbt oder der Bildschrimschoner reingeht sollte der Client als nicht mehr Bereit gekennzeichnet sein.

Auch könnte die Runde automatisch starten sobald alle Teilnehmer “Bereit” aktiviert haben, den Host zum Abbrechen des Timers und /start 0 zu zwingen ist unnötig und kann von der Engine abgenommen werden.

1 „Gefällt mir“

Featurewunsch #9 von Funni: Hintergrundbild des Packs auf allen Clients…
…sobald sie das Pack geladen haben. Sollte doch machbar sein.

EDIT: Steht bereits auf @Fulgen’s Todoliste

Dann braucht der Host aber auch einen Bereit button und Clients ohne Spieler dürfen nicht beachtet werden.

Steht auf meiner Todoliste.

das kann man daran koppeln ob der Timer zum Rundenstart aktiv ist oder nicht - nur wenn ein Timer läuft, würde das Bereit-Signal aller Clienten den sofortigen Start auslösen.

Der Host benötigt keinen Bereit-Button - da er den Timer angestoßen hat ist er offensichtlich bereit.
Dafür könnte beim Host der Runde starten-Button blinken wenn bei inaktivem Timer alle Clienten Bereitschaft signalisieren.

Auf Nicht-Legacy Clonk-Spieler braucht man dabei keine Rücksicht nehmen da man mit ihnen sowieso nicht spielen kann.

Ahso, hatte das so verstanden, dass der Timer automatisch startet. Dann ist meine Aussage natürlich murks, aber trotzdem dürften Clients ohne Spieler nicht beachtet werden oder? Der Host startet ja nicht sofort, sodass jeder Zeit zum joinen haben sollte.

wenn ein Timer läuft, würde das Bereit-Signal aller Clienten den sofortigen Start auslösen.

Was ist dann der Sinn des Timers?

Wird (gibt es schon?) es eine offizielle Servervariante (also ohne X11-Context, etc.), oder muss man die sich selber bauen? Da hätte ich nämlich den Wunsch, dass die Ein-/Ausgabe vielleicht in so was wie JSON, … kodiert ist. Würde Dinge einfacher machen z.B. bei Usernamen mit Doppelpunkten…

Muss man selber bauen (in CMake USE_CONSOLE aktivieren).

Ein eigenes Format für Serverbuildausgaben gibt es bereits, ist allerdings noch in keinem öffentlich Repository zu finden, weil es erst besprochen werden muss.

Gut dann mal schauen, wie ich es in einen Docker-Container rein bekomme.

Denkt an so was wie eine Ping aufruf und Rückgabe des momentanen Framecounters, damit man schauen kann, ob ein Script steck geblieben ist/der Server abgestürzt ist.

Featurewunsch #10 von Funni:
Erkennung der Spracheinstellung des Betriebssystems und Frage nach Wechsel zur Betriebsystemsprache (z.B. beim Start), sollte diese in zukünftigen Versionen verfügbar sein.

Hinweistext jeweils in alter und neuer Sprache, mit “nicht mehr anzeigen”-option, die einen Registrywert setzt und in den Einstellungen zurücksetzbar ist.

Wie sieht es mit einem Skalierungsmodus aus, wenn man Clonk auf höher auflösenden Displays spielt (alles was irgendwie größer ist als 1080p), oder das Display auch ein physisch kleiner wird, wird doch alles recht klein und muss die auflösung runter stellen, wodurch das bild meist nur unscharf wird oder auch ein beim Anwendungswechsel ein umschalten der Auflösung ausgelöst wird.

ich würde gerne Clonk einfach in der nativen Auflösung betreiben können und das Spiel einfach in einem 2x-Faktor.
Hier wäre auch eine Trennung von Spiel und Nutzeroberfläche wünschenswert, sodass das Spiel und die drumherum liegende UI unabhängig voneinander skalieren, damit z.B. das Hauptmenü oder die Kontextmenüs pixelgenau angezeigt werden während das gesamte Ingamegeschehen in zweifacher Skalierung läuft

Das gibt es schon in der neuesten Version: LegacyClonk ist da! (Community-Update für Clonk Rage)