header YouTube
Clonk Livestream auf Twitch.tv!

Clonkspot

LegacyClonk [330]-[337] (alte Versionen)

Zur besseren Übersichtlichkeit finden sich aktuelle Versionen in diesem neuen Thread.

TL;DR: LegacyClonk-Schnellinstallationsanleitung für Windows

LegacyClonk (kurz LC) ist ein Fanprojekt basierend auf Clonk Rage.
LegacyClonk erhält Updates und soll weiterhin mit den bestehenden Clonk-Rage-Spielinhalten kompatibel bleiben.

Es sollen möglichst viele Bugs und Unschönheiten behoben werden und nette Zusatzfeatures eingebaut werden, die das Leben erleichtern, ohne dass das Spielgeschehen beeinflusst wird.

Ideen und Wünsche für neue Features können hier vorgeschlagen werden.

Installation

Bei Problemen bitte diesen Thread (vorallem den ersten Post) genau lesen.
Auch bei erfolgreicher Installation würden wir uns über eine Abstimmung bei der Umfrage in demselben Post freuen.

Zum Installieren muss bereits das originale Clonk Rage oder eine vorige Version von LegacyClonk installiert sein.
Das Update ändert fast alle Dateien der Clonk-Rage-Installation, weshalb die Installation danach nicht mehr ohne weiteres mit der originalen Clonk.exe funktioniert. Wer beide Versionen betreiben will sollte sich Clonk Rage ein zweites mal installieren.

Es kann sowohl von beliebigen LC-Versionen, als auch direkt von Clonk Rage auf die aktuellste LC-Version aktualisiert werden.
Wird allerdings von LC [330] aus aktualisiert, muss danach die Sprache manuell von LD auf „normales“ Deutsch zurückgestellt werden. Die Language.c4g die für LC [330] installiert wurde kann danach gelöscht werden.
Wird von Clonk Rage aus aktualisiert, müssen entweder manuell die Einstellungen neu gesetzt werden oder die Einstellungen je nach Betriebssystem entsprechend manuell kopiert werden.

Zum Aktualisieren auf LC die jeweils gewünschte Version (weiter unten verlinkt) herunterladen und dann den folgenden Installationsanweisungen folgen.

Sobald irgendeine Version von LC installiert ist, kann auch die integrierte Update-Funktion über den Menüpunkt „Info“ verwendet werden. Die integrierte Update-Funktion verwendet allerdings zur Zeit nur HTTP. Wer sich wirklich sicher sein will sollte das Update manuell herunterladen und installieren.

Manuelle Installation

Achtung: Ab Version [332] kann es aufgrund von Änderungen bei c4group sein, dass der Update-Vorgang 2x durchgeführt werden muss, bis er fehlerfrei durchläuft.

Windows

Systemanforderungen:

Warnung: Einige Antivirus-Programme erkennen Clonk.exe möglicherweise als Virus oder warnen dass es unbekannt ist. Der Sourcecode ist hier verfügbar.

Die heruntergeladene Update-Datei mit Doppelklick öffnen.
Je nach Installationsort kann es sein, dass Administratorrechte notwendig sind.

Bei Problemen bei der Installation kann `lc_windows_updater_xxx.bat´ (siehe Downloads) eventuell hilfreich sein. Dazu die bat-Datei und die passende (selbe Versionsnummer) Update-Datei (c4u) in den Clonk-Ordner speichern und die bat-Datei ausführen. Wenn Clonk mit Administratorrechten ausgeführt werden muss, muss die bat-Datei ebenfalls mit Administratorrechten ausgeführt werden.
An dieser Stelle danke an @Funni, der die verbesserte Update-bat-Datei ab [332] gemacht hat.

Um die Konfiguration von Clonk Rage nach LegacyClonk zu übernehmen, muss der Registry-Eintrag HKEY_CURRENT_USER\Software\RedWolf Design\Clonk Rage nach HKEY_CURRENT_USER\Software\LegacyClonk Team\LegacyClonk kopiert werden.

Linux

Systemanforderungen:
Die vorkompilierte Engine wird mit Ubuntu 18.04 (bionic) kompiliert.
Folgende Pakete, oder ähnliche für andere Distributionen, sind notwendig:
zlib1g libgl1-mesa libjpeg libpng16-16 libssl libglu1-mesa libglew libsdl1.2 libsdl-mixer1.2 libfreetype6 freeglut3 libxpm

Zum Installieren des heruntergeladenen Updates muss in einem Terminal in den Clonk-Ordner gewechselt werden:
$ cd clonk-ordner
Danach muss das Update mit clonk installiert werden:
$ ./clonk pfad-zu-update.c4u

Sollte eine 64 bit-Installation vorhanden sein, so sind beim ersten Update von Clonk Rage aus einige Dinge zu beachten. Weitere Updates von LC zu neueren Versionen können danach ohne weiteres normal installiert werden.

  • Zum Installieren des Updates muss ./clonk64 anstatt ./clonk verwendet werden. Sollte aufgrund von Fehlern ein zweiter Durchlauf notwendig sein, muss beim zweiten Durchgang dann das bereits aktualisierte ./clonk verwendet werden.
  • Die Updates für 32 und 64 bit sind bei LC getrennt. Deshalb gibt es keine Unterscheidung mehr zwischen clonk und clonk64 sowie c4group und c4group64. Deshalb müssen bereits bestehende Verknüpfungen und ähnliches aktualisiert werden, damit sie clonk bzw. c4group verwenden.

Kurz gesagt: Nach dem Update sind architekturunabhängig clonk und c4group zu verwenden.

Um die Konfiguration von Clonk Rage zu übernehmen muss ~/.clonk/rage/config nach ~/.legacyclonk/config kopiert werden.

Mac

Zurzeit gibt es aufgrund fehlender Expertise kein funktionierendes Update-Paket für Mac, obwohl die Kompilierung der Clonk-Anwendung an sich für Mac funktioniert.
Bei Interesse bitte bei DerTod im IRC melden oder hier eine entsprechende Antwort posten.

Downloads

Entwicklerdokumentation

Die Entwicklerdokumentation findet sich wie üblich hier auf Clonkspot. Sie wird bei LC-Änderungen aktualisiert.

Die wichtigsten Änderungen

Die folgenden Änderungen sind nur die wichtigsten.
Eine vollständige Liste der Änderungen kann aus dem git-log entnommen werden.

[337]

Dies ist ein reines Bugfix-Release. Es behebt Script-Errors von [336] und verbessert die Wahl der Cursorgröße.

[336 - 4.9.10.8]

Update der Spielinhalte

Mit diesem Update werden die Standard-Spielinhalte auf Version 4.9.10.8 mit aktualisiert.
Hauptsächlich wird dadurch die 4K-Version des Tiefsee-Loaders installiert.
Es werden aber alle Pakete aktualisiert und um COPYING-Dateien (enthalten eine Auflistung von wem welche Dateien stammen) erweitert. Dieser Schritt ist wichtig, damit wir in Zukunft unseren eigenen vollständigen Installer und ein Archiv mit dem kompletten Spiel anbieten können.

Skalierungsverbesserungen

Viele Ungereimtheiten der Skalierung wurden behoben und verbessert:

  • Cursor werden in nativer Auflösung angezeigt. Dazu gibt es zusätzlich neue größere Cursorgrafiken
  • Schrift wird in nativer Auflösung angezeigt (ist aber unter Umständen trotzdem nicht 100 % scharf)
  • Die Dicke von Linien wird mitskaliert. z.B. bei Leitungen oder Tooltip-Rahmen
  • Die SolidMask-Anzeige wurde gefixt
  • Streifen zwischen zwischen sich wiederholenden Grafiken wurden behoben
  • Von anderen Grafiken hereinragende Pixel wurden behoben

Strg+F fokussiert das Suchfeld in der Szenarioliste

Escape bei ausgewähltem Suchfeld fokussiert die Szenarioliste

Escape schließt den F4-Dialog und /chart

2 neue Layouts für das Upperboard

Zusätzlich zum normalen Upperboard gibts jetzt noch 2 neue Varianten:

Automatische Liga-Anmeldung

Es gibt jetzt eine einfache Form der automatischen Liga-Anmeldung.
Dazu wird der Benutzername dauerhaft gespeichert und das Passwort so lange bis LC beendet wird.
Damit trotzdem ohne Beenden von Clonk der eingeloggte Spieler gewechselt werden kann, wird beim Entfernen des Spielers in der Lobby das Passwort „vergessen“, wodurch die Login-Daten geändert werden können.

Beim Beitreten über veraltete Referenzen wird der Titel jetzt richtig angezeigt

Wenn man im richtigen Moment einem Spiel beitritt, während gerade von einem Szenario auf ein anderes gewechselt wurde passierte es, dass in der Lobby oben noch der alte Titel stand, was öfters für Verwirrung sorgte.
Veraltete Referenzen (Einträge in der Spieleliste vom Netzwerkmodus) lassen sich leider nicht ohne weiteres Vermeiden. Dafür wird jetzt aber der Titel nochmal aktualisiert, sobald man in der Lobby ankommt.

Bessere OpenGL-Performance

Die neuen 4K-Loader haben eine Stelle im Code aufgedeckt, die für Hardware von heute unnötig viel Overhead erzeugt hat.
Von der Optimierung profitieren nicht nur die Loader sondern alle großen Grafiken, wodurch auch im laufenden Spiel die CPU-Auslastung wesentlich gesenkt wird. Allerdings muss für die momentane Implementierung von FoW (Fog of War) die alte aufwändigere Variante verwendet werden, wodurch der Vorteil bei aktiviertem FoW verloren geht.

60 FPS im Menü

Das Menü, also alles außerhalb vom eigentlichen Spielmodus, wie Hauptmenü, Lobby, Szenarioliste, etc. laufen jetzt mit 60 FPS, was ein deutlich flüssigeres und angenehmeres Bedienen ermöglicht.

Gleichzeitig löst sich dadurch das Problem, dass von SetGameSpeed() gesetzte FPS über ein Szenario hinaus erhalten bleiben, da die FPS im Menü auf 60 und bei Spielstart auf 36 gesetzt werden.

Kompatibilitätsprobleme mit nicht-#strict-3-Scripten behoben

In einigen Szenarien gab es mit [335] leider ein paar Fehlermeldungen die aufgrund eines Implementierungsfehlers von #strict 3 auftraten, die die uns selber aufgefallen sind sind jetzt behoben.

?-Modifier für C4Script für „Safe Navigation“

Vor Operatoren für Zugriffe auf Variablen von Maps, Arrays und Objekten sowie Funktionsaufrufe kann jetzt ein ? gesetzt werden: ?. ?[] ?-> ?->~

Der Modifier sorgt dafür, dass bei Zugriff auf nil kein Error ausgelöst wird sondern stattdessen der ganze Ausdruck nil zurückliefert. Weitere Informationen dazu finden sich in der Doku.

Script-Überladung der Clonk-Wechsel-Tasten

Es ist jetzt ohne weitere Hacks möglich, das Drücken der Clonk-Wechsel-Tasten per Callback abzufangen und den Clonk-Wechsel zu unterdrücken, um andere Aktionen auszulösen.

Dazu gibt es wie gewohnt alle möglichen Varianten von ControlCursor{Left,Toggle,Right}.

DefCore-Einstellung HideHUDBars

Über den DefCore-Eintrag HideHUDBars können einzelne oder mehrere Statusleisten (Lebensenergie, Zauberenergie und Luft) von Objekten ausgeblendet werden. Das ist zum Beispiel sinnvoll, wenn Objekte ihr eigenes HUD anbieten.

[335]

Dies ist bis auf 2 Ausnahmen ein reines Bug-Fix-Release, da sich bei der großen Anzahl an doch eher größeren Änderungen in [334] doch einige eher kritischere Fehler einschlichen.

Behoben wurden 2 Bugs die bei Verwendung von IPv6 auftraten, ein Crash in GetPath() (was mithilfe von System.c4g GetPathLength() ersetzt), ein kleiner Fehler in der #strict 3-Implementierung der in alten Scripts unter Umständen fälschlicherweise Errors auslöste, ungewünschter Lag im Infoscreen und doch noch ein Bug in der Zeilenumbrechung, der sich einschlich.

Außerdem wurde der Netzwerk-Paket-Log deaktiviert, damit die Fehlermeldungsbox bei Verbindungsabbrüchen nicht so ewig lädt.

Als kleines Extra ist jetzt auch der IRC-Chat verwendbar, während man als Client auf den Dialog „Warte auf Spielstart“ starrt.

[334]

Versenden von Spieldaten (c4d, c4s, …) optimiert

Bereits bei nur leicht erhöhten Pings war das Versenden der Spieldaten (in der Lobby) nur sehr träge und hat den verfügbaren Upload oft bei weitem nicht ausgenützt.
Jetzt werden „aggressiver“ mehr Daten verschickt, um dies auszugleichen.
Ein Nebeneffekt davon ist, dass unter Umständen die Pings während des Ladens sehr hoch werden können.

Bereitschafts-Checkbox-Text ändert sich zu „lädt noch“, solange sie deaktiviert ist

Um es hoffentlich endlich offensichtlich genug zu machen, ändert sich jetzt die Beschriftung der Bereit-Checkbox zu „lädt noch“, solange sie deshalb nicht aktivierbar ist.

IPv6-Support (und Puncher)

LC hat jetzt den vollständigen IPv6-Support und netpuncher aus OpenClonk backported bekommen.
Kurz gesagt, kann man mit LC jetzt auch über IPv6 hosten und beitreten, vorausgesetzt beide Parteien haben bereits IPv6 vom Internetanbieter bekommen.

Bei IPv6 gibt es prinzipbedingt kein Port Forwarding mehr im originalen Sinn.
Erfahrungsgemäß haben aber IPv6-aktivierte Router eine Firewall aktiviert, bei der trotzdem die entsprechenden Ports freigeschaltet werden müssen, um über IPv6 hosten zu können.

Leute mit DSLite (die die bis jetzt nicht mehr über IPv4 hosten konnten) müssen aber bitte bedenken, dass ihnen dann auch nur andere Spieler beitreteten können die ebenfalls bereits IPv6 haben.
Andererseits können Hosts mit echtem Dual Stack wirklich alle beitreten, vorausgesetzt Port Forwarding und IPv6-Firewall sind richtig konfiguriert.

Gleichzeitig verwendet LC jetzt den gleichen netpuncher wie OpenClonk, wodurch es einigen Hosts auch über IPv4 möglich sein sollte zu hosten, bei denen es vorher wegen nicht möglichem Port Forwarding (auch zB bei DSLite).
Tests haben allerdings bereits gezeigt, dass auch der netpuncher leider kein Allheilmittel ist. Im Zweifelsfall müssen auch DSLite-Kunden Port Forwarding im Router einstellen, um die Chancen zu erhöhen.

neues Logo

Dank @AniProGuy hat LC jetzt endlich sein eigenes richtiges Logo im vollen und im Icon-Format.

Logo

Windows: Gamma wird beim Minimieren zurückgesetzt

Entfernen von internen Scripts

Eigentlich ist es nur ein Implementierungsdetail, aber mit schwerwiegenden Folgen.
Bis jetzt war es durch eine minimale Änderung im Source-Code über sogenannte „interne Scripts“ möglich, egal ob als Host oder als Client, egal ob der Debug-Modus aktiviert ist, egal ob Liga aktiviert ist, unsichtbar zu Scripten.

Diese „internen Scripts“ wurden entfernt und alle legitimen Verwendungen in der Engine durch entsprechende eigene Pakete ersetzt. Dadurch ist es jetzt unmöglich (zumindest über diesen Weg) als Client und unsichtbar zu scripten, ohne dass es das Szenario vorsieht.

Zeilenumbruch von formatiertem Text endgültig behoben

Durch das Aktivieren von weißem Chat und Timestamps wurde deutlich sichtbar, dass bei automatischen Zeilenumbrüchen die Textformatierung (Farbe, kursiv) in den fortgesetzten Zeilen verloren gingen.

Der Versuch dies bereits in [333] zu beheben ist leider gescheitert, aber diesmal sollte es wirklich passen.

höher aufgelöste Loader

Durch @Funni’s Initiative haben wir von matthes einige Loader in 4K neu gerendert zugeschickt bekommen.
Durch vernachlässigte Pflege von Plugins gab es allerdings leider ein paar Renderfehler, die @Funni noch händisch korrigiert hat, auch wenn es leider nicht perfekt ist.

Wir sind weiterhin auf der Suche nach Grafikern die uns bei diesem Problem mit Bildbearbeitungskenntnissen helfen könnten.

Momentan sind der Goldmine-Loader (der Hintergrund vom Hauptmenü) und der Loader in der Wasserhöhle neu.

C4Script-Neuerungen

In dieser Version gibt es viele neue Features für C4Script, die nur darauf warten ausprobiert zu werden. Die Dokumentation dazu muss aber erst noch aktualisiert werden.
Bei der Verwendung aber bitte damit rechnen, dass es noch zu unentdeckten Bugs kommen könnte.

#strict 3

Eine Weiterentwicklung von #strict 2, die zumindest aus unserer Sicht viele Macken in C4Script korrigieren und neue Features erlaubt.
#strict 3 wird höchstwahrscheinlich in Zukunft noch weitere Änderungen erfahren, wir werden aber versuchen zur ersten (hier vorgestellten) Version von #strict 3 abwärtskompatibel zu bleiben, sodass im Nachhinein Scripte nicht erneut angepasst werden müssen.

Neue Scripte sollten definitiv als Ziel #strict 3 anstreben.

nil

Möglicherweise bereits aus OpenClonk bekannt, gibt es jetzt einen expliziten Wert für „nichts“.
Der große Vorteil ist, dass sich so typmäßig 0, false, NONE untereinander und von nil unterscheiden lassen.

Da 0, false und NONE jetzt jeweils ihrem zugehörigen Typen entsprechen, sind diese nicht mehr zu string, object, array oder (auch neu) map konvertieren. Für die Übergabe von Argumenten von gerade genannten Typen muss also anstelle von 0 (auch false und NONE) immer nil verwendet werden.

Da nil auch ungleich 0, false und NONE ist, muss um auf das Nicht-Vorhanden-Sein eines Werts zu überprüfen dieser mit nil verglichen werden.
Also if(foo == nil) anstelle von if(foo == 0) und anderen Varianten. Analog dasselbe für !=.
Eine schwächere Version besteht darin if(foo) bzw. if(!foo) zu machen, was eher der alten Bedeutung entspricht, da nil, 0, false und NONE alle false sind, wenn sie zu einem bool konvertiert werden.

Maps

Die Details werden weiter unten erklärt.
Zum Verwenden von Syntax für maps muss #strict 3 aktiv sein.

Access Modifiers

Mit #strict 3 bekommen access modifiers (public, protected, private) endlich ihre Bedeutung zurück.

Bislang war es so, dass Funktionsaufrufe mit -> die Zugriffsberechtigungen ignoriert haben.
Zumindest ich bin dadurch übergegegangen gar keine Berechtigungen mehr festzulegen.

Jetzt ist es so, dass diese Berechtigungen auch mit -> überprüft werden, falls sowohl das Script das den Aufruf ausführt, als auch das Script in dem die aufgerufene Funktion stehen beide #strict 3 sind.
Dadurch, dass wirklich beide #strict 3 sein müssen, sollten alle Interaktionen mit älteren Scripts weiterhin funktionieren.

Die Standardberechtigung ist wie üblich public, falls nichts angegeben wird.

Maps (auch als Hash oder assoziatives Array bekannt)

Ebenfalls ähnlich zu OpenClonks proplists, aber dennoch nicht ganz, sind maps eine lang ersehnte Datenstruktur für C4Script.
Mit Maps können Werte beliebigen Typs als Schlüssel verwendet werden, um zugehörige Daten zu speichern.

Eine Beschreibung zu Maps findet sich in der Doku.

Direkt modifizierende Operatoren können nicht mehr crashen

Auch erst vor kurzem beim Einbauen des ..=-Operators fiel mir auf, dass man mit += und vielen weiteren Operatoren die das Argument direkt modifizieren ganz leicht die Engine crashen lassen konnte.

Beispiel:

/script Global(0) = "Hallo"
/script Global(0) += 1

Durch zusätzliche Checks (und genaue Fehlermeldungen) ist dies mit [334] unabhängig vom verwendeten #strict-Level behoben.

SetLength endgültig gefixt

Ein Crash in SetLength wurde bereits in [333] vermeintlich gefixt, tatsächlich aber nur auf einen anderen Spezialfall verschoben.

Jetzt sollte es wirklich komplett richtig funktionieren.

Array-Append-Operator []

Durch Leerlassen der []-Klammern kann ein neues Element an das Ende das Arrays angehängt werden.
Beispiel: arr[] = 1337 ist äquivalent zum vorher üblichen arr[GetLength(arr)] = 1337.

Array-Zugriff auf Strings

Mithilfe vom []-Array-Zugriff können jetzt die einzelnen Zeichen eines Strings direkt als String extrahiert werden. Momentan ist aber nur Lese-Zugriff möglich, ein Versuch einen derartigen Wert zu verändern endet in einem Error.

Außerdem können negative Indizes verwendet werden, um auf Zeichen von hinten zuzugreifen.

Beispiel: "Hallo"[0] -> "H", "Hallo"[-1] -> "o"
Betragsmäßig zu große Indizes liefern nil / 0.

Ergänzte Kombinationsoperatoren <<=, >>=, **=

Mit der sonst üblichen Bedeutung von anderen kombinierten Zuweisungsoperatoren gibt es jetzt auch <<=, >>= und **= als Gegenstück zu <<, >> und **.

Konkatenierungsoperator .. und ..=

Der ..-Operator bietet gleich mehrere neue Möglichkeiten. ..= ist wie üblich der kombinierte Zuweisungsoperator.

Falls einer der Operanden ein String ist, konkateniert (= zusammenfügen) .. die zwei Strings.
Falls nötig wird dazu der zweite Operand zu einem String konvertiert, falls dieser ein int oder eine ID ist.
Ansonsten gibt es einen Error.

Falls beide Operanden Arrays sind, werden die Arrays zusammengefügt.

Falls beide Operanden Maps sind, werden diese gewissermaßen zusammengefügt. die Beschreibung und ein Beispiel dazu sind in der Beschreibung von Maps enthalten.

Beispiele:
"Hallo" .. " " .. "Welt" -> "Hallo Welt"
10 .. " %" -> "10 %"
[0, 42] .. [1337, 1] -> [0, 42, 1337, 1]

[333]

Fixes für Windows

  • /alert funktioniert wieder
  • das Problem, dass bei manchen Leuten beim Minimieren und Wiederherstellen nur mehr ein weißes/graues Bild da war, ist behoben
  • windowseigener „Ding“- Sound bei manchen Shortcuts ist eliminiert
  • Absturz (nur beim ersten Mal sichtbar) beim Beenden von LC behoben
  • c4group.exe wird ab jetzt, also sobald bereits mindestens Version [333] vorhanden ist, geupdated, insofern das Update über Clonk.exe (dazu zählt auch Doppelklick auf die Update-Datei und Verwenden der bat-Datei) gemacht wird

/script ist jetzt bei aktiviertem Debug-Modus im Einzelspielermodus in allen Szenarien möglich

Bis jetzt durfte man nur in Netzwerkspielen oder in eigens erstellten Szenarien per /script scripten.
Diese (sinnlose?) Beschränkung ist jetzt entfernt.

/nodebug als Client

/nodebug kann jetzt wieder wie früher als Client verwendet werden, um Hosts beim Cheaten zu hindern.

LoadScenarioSection kann jetzt die aktuelle Sektion neu laden

Mit LoadScenarioSection kann die aktuell aktive Sektion neu geladen werden, indem die aktuelle Sektion nochmal geladen wird.
Vorher führte dies nur zu einer Warnung, dass die Sektion schon aktiv ist.

(Seltener) Crash in Script-Funktion SetLength behoben

Danke an @Bratkartoffl fürs aufdecken

[332]

Verbesserter Vollbild- und Fenstermodus

Die Maus ist nun auch bei aktivierter Skalierung ohne jegliche Probleme verwendbar. Außerdem sind Benachrichtigungen - etwa die Windows 10-Toasts - sowie Firewallfenster einwandfrei sicht- und bedienbar. Auch /console geht wieder problemlos.

Neues Script-Callback InitializeDef

protected func InitializeDef(string section): Wird in jeder Definition vor dem Szenario-Initialize-Aufruf bzw. beim Sectionwechsel aufgerufen bevor Objekte erstellt werden. Kann dazu verwendet werden, um etwa statische Variablen zu setzen.
section gibt dabei die neue Section an - ist der Wert 0, wird die Hauptsection geladen.

Farbcode nein, Farbcode ja

Die Szenarioliste zeigt keine ungeparsten Farbcodes mehr an, dafür wird der Titel auf dem Loader in Farbe dargestellt.

Suchfunktion

Es gibt nun eine Suchfunktion für die Szenarienliste.

[331]

Neuer Vollbild- und Fenstermodus

Im Vollbild-Modus wird immer die aktuell eingestellte Auflösung verwendet.
Außerdem sollte gerade unter Windows das Minimieren und Wiederherstellen besser und schneller funktionieren.
Damit das Bild trotz eventuell höherer Auflösung nicht zu klein ist, gibt es anstatt der Auflösungswahl eine Option um die Skalierung einzustellen.

Der Fenstermodus kann jetzt ebenfalls direkt in den Optionen eingestellt werden.
Die Fenstergröße kann jetzt auch verändert werden, allerdings passt sich der Inhalt nur an, wenn man sich im laufenden Spiel befindet oder der Dialog gewechselt wird.

Weißer Chat und Zeitstempel

Der weiße Chat ist jetzt auch für die Lobby aktivierbar und für die Lobby und Nachrichten im Spiel können Zeitstempel eingeblendet werden.

Der weiße Chat für Ingame kann weiterhin über das Spielmenü eingestellt werden, der weiße Chat für die Lobby und die Zeitstempel finden sich jetzt auch in den Optionen.

Checkbox für Gamma

In den Problembehebungsoptionen im Tab Grafik gibt es jetzt die Möglichkeit Gamma zu deaktivieren.

Ladestatusanzeige für die Lobby

In der Lobby ist jetzt sichtbar, wie viel die anderen Mitspieler bereits von den Spieldaten geladen haben.
Diese Anzeige funktioniert nur, falls eine direkte Verbindung zum Client besteht (eine direkte Verbindung besteht, wenn der Ping sichtbar ist). Ist dies nicht der Fall, wird kein Ladestatus angezeigt.

[330]

Einige Desyncs zwischen Linux/Mac und Windows wurden gefixt

Backport der „Bereit“-Checkbox für die Lobby aus OC (zeigt zusätzlich an wenn ein Client dieses Feature nicht unterstützt)


Comic Universe hat in diesem Screenshot die offizielle Engine, die das Feature nicht unterstützt.
Tod’s Laptop ist noch nicht bereit und Tod’s Laptop2 ist schon bereit.
Die Bereitschaftsanzeige ist nur eine Unterstützung für den Host. Er kann auch starten obwohl nicht alle bereit angehakt haben.

Eine Option um die Chatnachrichten im laufenden Spiel weiß einzufärben


Die Option für den „weißen Chat“ findet sich im Ingame-Spielermenü unter Optionen -> Anzeige -> Weißer Chat. (Hat noch kein eigenes Icon.)

Für Hosts ein Neustart-Button im „Runde abbrechen“-Dialog (der der beim Drücken von Escape erscheint)

neustart-esc

Für Hosts beim Game-Over-Dialog ein Neustart-Button, und falls das Szenario SetNextMission verwendet wird das als zusätzlicher Button realisiert. Weiterspielen ist also jetzt immer möglich!


Da hier das erste Tutorial gespielt wurde, sind alle 4 Buttons sichtbar.
Falls SetNextMission nicht verwendet wurde sind nur die ersten 3 Buttons sichtbar.

Neuer Credits-Screen (dynamisch generiert, anstatt eines statischen Hintergrundbilds)

Vorbereitungen für automatische Updates

Nur noch OpenGL

Vorerst unterstützt LC nur noch OpenGL (also kein DirectX mehr), da wir zurzeit keinen haben der das richtig pflegen kann. In späteren Updates könnte allerdings DirectX wieder zurück kommen, falls OpenGL zu viele Probleme bereitet.

Viel Spaß beim Ausprobieren

Bei Problemen, Unklarheiten oder Rückfragen, insbesondere bei Mac oder Linux (aber auch unter Windows) meldet euch am besten im IRC in #legacyclonk, oder direkt bei mir (DerTod) oder Fulgen oder hier im Forum (Antwort braucht aber länger).
Rechnet aber im IRC damit, dass wir unter Umständen gerade keine Zeit haben oder offline sind (im Falle von offline sind wir auf away gesetzt), am ehesten antworten wir ab späterem Nachmittag.
Wartet also auf jeden Fall länger auf eine Antwort als nur ein paar Minuten.

Bei offensichtlichen Bugs und anderen Dingen die alle interessieren könnten, meldet diese allerdings bitte hier im Forum (könnt uns aber eventuell im IRC darauf hinweisen, damit wir es schneller sehen), damit Bug-Informationen und ähnliches für alle ersichtlich sind.

An dieser Stelle möchte ich mich recht herzlich bei @AniProGuy, @Alx und @Peder bedanken, die mir beim Testen der Windows-Version geholfen haben und einige Fehler aufgedeckt haben.
Außerdem möchte ich mich bei @Luchs bedanken, der uns bezüglich Clonkspot unterstützt.

Natürlich möchte ich mich auch bei matthes und dem ehemaligem Entwickler-Team bedanken, dass sie Clonk gemacht haben, und matthes dafür, dass er doch noch den kompletten Code Open Source gemacht hat.

Abschließend möchte ich mich auch noch beim OpenClonk-Team bedanken, da sie sehr viel Arbeit geleistet haben die uns beim Code-Aufräumen geholfen hat, und wir auch manche Features/Commits davon backported haben.

Dieses Update wird euch vom LegacyClonk-Team, aktuell bestehend aus @Jan, @Fulgen, @Kanibal und @Der_Tod bereitgestellt.

FAQ

Bringt OpenGL irgendwelche Nachteile?

Unter Linux und Mac macht es sowieso keinen Unterschied, da es dort sowieso immer nur OpenGL gab.

Unter Windows wurde die OpenGL-Implementierung mit [332] bereits deutlich verbessert, es kann aber trotzdem sein dass es sich etwas anders verhält als von DirectX gewohnt.

Es lagt dauerhaft leicht, mit durchschnittlich 30 FPS

Bei manchen Grafikkarten-Treibern scheint dies aufzutreten, wenn in den Einstellungen des Grafiktreibers VSync aktiviert ist. Die Lösung ist also, global oder für Clonk VSync zu deaktivieren.
Vermutlich wird durch aktiviertes VSync im Treiber doppelt synchronisiert, weil Clonk das separat macht, was bei einem 60 Hz-Bildschirm zu 30 FPS führt.

Bekannte Bugs

[336]

  • Neue Inkompatibilitäten aufgrund von #strict 3: wird in Kürze behoben (Diesmal wegen System.c4g, nicht wegen der Engine)

  • Kein echter Bug: Die Wahl der Cursor-Größe ist nicht sinnvoll: wird in Kürze behoben

[330] - [336]

  • Unter Linux können Spielerportraits unter Umständen nicht geändert werden
15 Like

Increase default MaxLoadFileSize to 100MB

Na endlich!

@Der_Tod schreib doch bitte rein, dass man vorher die Änderungen an der fmod.dll von @Jan Ladestatusanzeige rückgängig machen muss.
Ansonsten erscheint die Fehlermeldung:

Die Anwendung konnte nicht korrekt gestartet werden (0xc0000142). Klicken Sie auf “OK”, um die Anwendung zu schließen.

1 Like

Geplante Neuerungen für Version 331

Folgende Features habe ich geplant selber zu implementieren, weshalb es wahrscheinlich ist, dass sie es alle ins nächste Update schaffen.
Je nachdem wie viel Zeit die restlichen Entwickler haben, ist es auch möglich dass noch mehr Features dazukommen, wenn sie rechtzeitig fertig werden.

Überarbeiteter Vollbildmodus

Vorallem unter Windows ist der Vollbildmodus der OpenGL-Implementierung richtig merkwürdig.
Der Vollbildmodus wird aber generell durch einen moderneren Ansatz ersetzt.

Anstatt die Auflösung umzustellen und ein explizites Vollbildfenster zu erstellen, wird die beim Start eingestellte Auflösung beibehalten.
Damit nicht manche Leute Probleme haben, weil alles zu klein ist, gibt es anstatt der Auflösungsauswahl eine Möglichkeit um den Skalierungsfaktor einzustellen.

Vorerst wird einfach nur alles skaliert, ohne mögliche Grafiken und Texte in höherer Auflösung zu zeichnen. Es wird also zumindest vorerst nur einen Teil meines High-DPI-Featurevorschlags erfüllen. Trotzdem sollte es bereits ausreichen, damit LC auch auf High-DPI-Bildschirmen, wenn auch nicht mit bestmöglicher Qualität, in nativer Auflösung spielbar wird.

Im Endeffekt wird dadurch ein Verhalten erzielt, das von normalen Fenstern gewohnt ist, anstatt ein störrisches alles verdeckendes Clonk-Fenster zu haben, das außerdem verzögerungsfreies Minimieren und Wiederherstellen erlaubt.
Gleichzeitig sollte dadurch als Nebeneffekt ein etwas besserer Fenstermodus dabei herauskommen.

Checkbox für Gamma

Man konnte immer schon in der Registry Gamma deaktivieren.
Das soll in Zukunft auch ganz bequem über die normalen Grafikoptionen möglich sein.

Weißer Chat für die Lobby

Analog zum weißen Ingame-Chat eine zusätzliche Option um auch den Lobby-Chat weiß zu färben.

Timestamps für den Chat

Die Überschrift ist ein Link, der zu einer genaueren Beschreibung des Features führt.

Ladestatusanzeige

@Jan hat schon vor Ewigkeiten eine Ladestatusanzeige gebaut, mit der jeder in der Lobby sehen kann wie viel die Mitspieler bereits geladen haben.
Bei längerer Benutzung fiel mir allerdings auf, dass die Anzeige manchmal 100% anzeigt obwohl es nicht stimmt.
Deshalb ist es vorgesehen es für LC so zu ändern, dass in diesem Fall kein Ladestatus angezeigt wird.

Beim Wechseln zwischen Desktop und Clonk [332], wird der Bildschirm weiß. Das lässt sich nur durch Esc verändern, wodurch man dann z.B. die Lobby verlässt.

Das Problem löst sich auch, indem man alt+c drückt um den Chat zu öffnen :)

Probier bitte mal mit dem: https://github.com/legacyclonk/LegacyClonk/releases/download/continuous-v332_fullscreen-workaround/LegacyClonk.zip

Kannst einfach nur die Clonk.exe daraus in den Clonk-Ordner extrahieren.

Sag dann bitte Bescheid wie es sich verhält.

Habe gleichen Bug, funktioniert bei mir mit dieser Version.

Sehr gut, alle die das Problem haben können derweil diese Version verwenden.
Mit [333] wird der dann generell behoben sein.

@Bratkartoffl und @Ninja könnt ihr bitte mal mit dieser Version testen und Bescheid sagen: https://github.com/legacyclonk/LegacyClonk/releases/download/continuous-v332_fullscreen-workaround/LegacyClonk.zip (gleicher Link, aber der Inhalt wurde geändert)

Die vorige Variante war nämlich die Holzhammermethode, da ich raten musste was das Problem ist.
Das wäre jetzt ein saubererer Ansatz, den ich für [333] verwenden würde.

Edit: Es scheint zu funktionieren.

Der Link funktioniert bei mir nicht. (Not Found)

Link geht jetzt.

Ja der Link funktioniert jetzt. Mir ist es jetzt beim Wechseln zwischen Desktop und Spiel 2x passiert, dass das Symbol aus der Taskleiste verschwunden ist und ich nichtmehr zurück ins Spiel komme :)

Oh, kompilieren ging ja erfrischend unproblematisch

3 Like

Wow, gut zu wissen, danke! Könntest du eventuell schauen, ob der Autobuild läuft?

Hallo zusammen!
Ich bin per Zufall auf euer Projekt “Legacy Clonk” gestoßen und war sofort angefixt!

Allerdings habe ich ein Problem unter Arch Linux. Wenn ich mein Clonk Rage mittels
./clonk64 lc_332_linux64.c4u
patche, läuft bei mir wohl etwas schief. Ich kann Clonk dann nicht mehr starten. Das hier ist mein Terminal-Output:
[16:24:04] No valid key file found.
[16:24:04] Command line:
[16:24:04] “”
[16:24:04] Clonk Rage
[16:24:04] Version: 4.9.10.7 [330] linux
[16:24:04] No valid key file found.
[16:24:04] Size of GammaRamp is 2048, not 256
[16:24:04] Using OpenGL…
[16:24:04] XF86VidModeExtension version is 2.2
[16:24:04] No Gamepad found
[16:24:04] Grafik wird geladen…
[16:24:04] SDL_mixer runtime version is 1.2.12 (compiled with 1.2.8)
[16:24:05] Fehler bei Grafikdatei StartupAboutBG: Datei nicht gefunden oder ungültig.
[16:24:05] FATALER FEHLER: Fehler beim Grafiksystem.
[16:24:05] Spiel deinitialisiert.
[16:24:05] Engine heruntergefahren.

Ich weiß nicht genau, was mit es mit dieser Key File auf sich hat, aber ich denke, dass der Fehler im Grafiksystem liegt. Habe versucht, Clonk Rage unter Ubuntu 18.04 zu patchen und da erhalte ich dasselbe Problem.

Könnte mit dem Key File der Regi-Key gemeint sein?

Das Update ist teilweise fehlgeschlagen, die Binary ist bei dir noch die von 330 - die Spieldaten aber von 332. Da du Arch Linux verwendest und somit die Libraries neuer sind (hab Arch, deswegen weiß ichs), empfehle ich dir, den Branch v332 selber zu kompilieren.

Die Keyfile ist, wie @Sam richtig angemerkt hat, der Regkey - da dieser seit CR [32x] und somit auch in LC nicht mehr gebraucht wird, ist diese Nachricht irrelevant.

Super, vielen lieben Dank @Fulgen! So klappt es!
Einzig und allein die Spielericons sind nicht auswählbar, obwohl sie sich in ~/.legacyclonk befinden. Klicke ich im Spiel eines an, kommt eine Fehlermeldung mit “no error” am Ende :grin: