Download: Windows x64 (experimentell), Windows x86, Linux x64, Linux x86, macOS (experimentell)
Objektskalierung
Vergleichsbild ist in Arbeit.
Hochauflösende Objektgrafiken in Clonk? Geht das?
Jetzt schon! Durch die neue DefCore-Eigenschaft Scale
kann nun ein Skalierungsfaktor in Prozent bestimmt werden, in dem die Objektgrafiken vorliegen. Der Wert gibt an, bei welchem Spielskalierungsfaktor die Objektgrafik in Originalgröße dargestellt wird.
Soll heißen:
Scale=100
bedeutet, dass die Objektgrafik bei 100% Spielskalierung (in den Optionen einstellbar) in Originalgröße gerendert wird. Bei höheren Spielskalierungen muss sie entsprechend raufskaliert werden. Dies ist das momentane und das Standardverhalten aller Objekte.Scale=200
skaliert die Objektgrafik bei 100% Spielskalierung auf die Hälfte. Bei 200% Spielskalierung wird sie jedoch in Originalgröße dargestellt, wodurch die Unschärfe des Skalierens entfällt.
Werte sind nicht auf ganze Zahlen (100%, 200%, 400%, …) beschränkt, allerdings können bei unschönen Werten Skalierungsartefakte auftreten.
Länge, Breite, ActMap-Angaben können wie gewohnt in den Maßen angegeben werden, die das Objekt im Spiel haben soll. Eine Ausnahme besteht in der SolidMask – da die Pixel exakt den Pixeln der Grafik entsprechen müssen, müssen **nur** die Offsets in Grafikkoordinaten angegeben werden.
Neue Soundengine
Bisher wurde für Sounds auf Windows FMOD und auf anderen Plattformen SDL_mixer 1.2 verwendet. Dies brachte einige Probleme mit sich, etwa den MIDI-Bug mit FMOD, verschiedene SDL-Unschönheiten und, dass kein Windows-LC-Archiv komplett out-of-the-box läuft, weil zuerst fmod.dll aus dem CR-Archiv kopiert werden muss, da diese aus Lizenzgründen nicht mitgeliefert werden darf.
Ab 346 wird standardmäßig für alle Plattformen SDL2_mixer verwendet, wie bereits in 344 versucht wurde. Dies bringt eine kleine Klangänderung mit sich – wie stark, hängt von den Ohren der befragten Person und den verwendeten Sounds ab.
Im Gegensatz zum letzten Versuch gibt es allerdings für Windows-Nutzer die Möglichkeit, weiterhin FMOD zu verwenden, indem die fmod.dll aus Clonk Rage in den Clonk-Ordner eingefügt wird. Für alle bestehenden Installationen müsste dies also ohne zusätzlichen Aufwand bereits der Fall sein.
Wenn FMOD korrekt geladen wird, erscheint beim Ladebildschirm noch vor dem Hauptmenü die Nachricht Using dynamically loaded FMod for sound.
Sollte allerdings SDL2_mixer verwendet werden und es bei Szenarien mit sehr vielen Sounds zu Problemen kommt, weil die mit 32-Bit zur Verfügung stehenden 2 GB RAM nicht ausreichen, kann auf die (momentan experimentelle) 64 Bit-Version ausgewichen werden.
Achtung: Die fmod.dll von Clonk Rage funktioniert nur mit der 32-Bit-Version.
Für die 64-Bit-Version ist zwar dieselbe Funktionalität möglich, allerdings müsste dafür die 64 Bit-Version fmod64.dll vorhanden sein.
Verbesserung des authentischen Clonk-Planet-Erlebnisses
Die Landschaft von Szenarien, deren Versionsnummer kleiner als 4.6.5 ist, wird nun standardmäßig ohne 3D-Materialschattierung dargestellt, um dem Originalverhalten näherzukommen. EntwicklerInnen können die Materialschatterierung für ihre Szenarien über die Einstellung ShadeMaterials
der [Landscape]
– Sektion der Scenario.txt
ändern. Ein Wert von true
schaltet es ein, ein Wert von false
aus.
Weiters wurden einige Bugs gefixt, die zu Scriptfehlern in alten Szenarien führten, etwa in der Clonk Planet – Forschungsstation.
Weitere neue Script- und Objektfeatures
- Mittels der DefCore-Eigenschaft
BaseAutoSell
kann nun gesteuert werden, ob ein Objekt in der Basis automatisch verkauft wird oder nicht. Standardwert istfalse
, außer das Objekt hat die IDGOLD
, damit Goldobjekte von Drittanbietern nicht kaputtgehen. - Mittels der DefCore-Eigenschaft
HideHUDElements
können nun bestimmte Elemente des Clonk-HUDs am linken Bildschirmrand in Crewmemberobjekten verborgen werden. Bitmaske. Mögliche Werte:
Name | Wert | Versteckt |
Portrait | 1 | Clonkportrait |
Captain | 2 | Kapitänssymbol |
Name | 4 | Clonkname |
Rank | 8 | Rangname |
RankImage | 16 | Rangsymbol |
All | 31 | Alles davon |
- Neuer Scriptoperator
??
. Ist der erste Operandnil
, wird der zweite Operand zurückgegeben, ansonsten der erste. - Neuer Scriptoperator
??=
. Setzt den ersten Operanden auf den zweiten, wenn der erstenil
ist.
Weitere Features
- Der Netzwerkstack versucht nun nicht mehr, sich mit Nulladressen zu verbinden, was technisch nicht möglich ist; dadurch erzeugte Nachrichten müllen das Log nun nicht mehr voll.
- Auf UNIX-Systemen werden etwaige auftretende Signale nach der Ausgabe des Stacktraces wieder ausgelöst, wodurch der Crashhandler des Systems aufgerufen wird.
- Die Lobby zeigt nun die Anzahl der Spieler in der Lobby sowie der maximal möglichen Spielerzahl in der Titelleiste der Spielerliste an.
- Vorladen ist nun standardmäßig aktiviert und nicht mehr in der experimentellen Phase. Wir bedanken uns bei allen Spielerinnen und Spielern, die Feedback geliefert haben.
/sound
fällt nun auf die Dateiendung.ogg
zurück, wenn kein Sound mit passendem Namen und Endung.wav
gefunden werden kann.Alt + Enter
öffnet im laufenden Spiel nun die Chateingabe für Nachrichten über dem Clonk.- Leere Chateingabzeilen werden beim Drücken der passenden Tastenkombinationen entsprechend ausgefüllt, ohne sie davor schließen zu müssen.
- experimenteller macOS-Support wie schon in 344
- experimentelle 64-Bit-Windows-Anwendung
Bugfixes
- Bei Fehlern während des Spielstarts wird nun anstelle eines nicht existierenden Stringtable-Eintrages namens
IDS_PRC_FAIL
eine passende Fehlermeldung angezeigt. - Mit etwas Glück ist ein bei Netzwerkspielen und insbesonders in Lobbies auftretender Crash behoben. (Technischer Hintergrund:
StdStrBuf::AppendFormatV
mit seinen verschiedenen Implementierungen für Windows und Linux wurde durch eine neue Implementierung mittels variadic templates anstelle vonva_list
erstellt. Damit tritt auch der Bug, dass über den Stack hinausgelesen wird, da die Argumentliste bei mehrfachenvsnprintf
– Aufrufen nicht kopiert wird, nicht mehr auf, danke an Sharkigator aka Foaly fürs Melden und den Pull Request.) - Die Performance von die Landschaft modifizierenden Funktionen wie
SetLandscapePixel
undDrawMaterialQuad
wurde drastisch verbessert;SetLandscapePixel
sollte nun etwa 10 – 20 Mal so schnell sein wie davor. (Technischer Hintergrund: Zur Landschaftsbearbeitung muss Clonk die Landschaft aus dem GPU-Speicher in den Hauptspeicher laden. Bisher wurde immer die ganze Landschaft geladen, egal, wie groß die Änderung war; mit 346 wird nur der benötigte Bereich geladen.) - Fälle, in denen Maps ihre Schlüssel referenziert haben, wurden entfernt.
- Kann weder ein UDP-Socket erstellt noch der Referenzserver gestartet werden, crasht das Spiel nicht mehr. (Technischer Hintergrund: Schlug die Referenzservererstellung fehl, wurde fälschlicherweise die Fehlermeldung des UDP-Sockets abgefragt.)
- Die Landschaft zählt nun keine Pixel von ungültigen Materialien mehr.
- Verlässt man die Lobby direkt am Anfang vom Vorladen, crasht das Spiel nicht mehr durch das versuchte Laden einer ungültigen Ressource.
- Der Bereit-Dialog kann nun nicht mehr mit Ja bestätigt werden, wenn alle Ressourcen noch nicht vollständig herunterladen wurden.
-
Hit(int xdir, int ydir)
wird nur noch in Objektdefinitionen ab Clonk Rage mit Argumenten abgerufen, da der Callback davor diese Parameter nicht hatte, was etwa in der Clonk Planet – Forschungsstation zu Scriptfehlern geführt hat. Local(0)
in Szenarien aus Clonk Planet – Zeiten wird nun wieder korrekt geladen. (Technische Hintergrund: Der Wert wurde als Integer geladen, anstelle automatisch bestimmt zu werden.)- Das Spiel crasht unter Windows nicht mehr, wenn ein Fehler direkt beim Programmstart auftritt.
- Der Referenzserver antwortet nun mit HTTP 405 Method Not Allowed, wenn eine nicht unterstützte HTTP-Requestmethode verwendet wird.
- Die Kompilieroption
USE_STAT
funktioniert wieder. - Aufnahmen werden nun gleich abgespielt, egal, ob mit oder ohne Vorladen aufgenommen wurde.
- Updateknopf aus der Netzwerkliste entfernt. Die Architektur des Updatesystems hat zu Crashes geführt, wenn der Updateserver zu langsam geantwortet hat. (Technischer Hintergrund: Bis eine Antwort erhalten wird, wird die Mainloop im Netzwerkdialog ausgeführt. Verlässt man die Netzwerkliste, bevor eine Antwort erhalten worden ist, wird diese gelöscht; bei Erhalt der Antwort wird die Ausführung somit in einem gelöschten Objekt fortgesetzt.)
- Temporäre Standalone-Dateien des Netzwerks werden nun korrekt gelöscht.
- Lokal verfügbare, entpackte Ressourcen können nun nicht mehr in der Lobby gespeichert werden.
- Startet der Host ein Netzwerkspiel mit entpackten Objektdefinitionen, verwendet er trotzdem die dadurch gepackten Versionen, um Desyncs durch andere Ladereihenfolgen vorzubeugen.
- Jump and Run – Controls bleiben nicht mehr in gedrücktem Zustand, wenn die Taste während eines offenen Menüs / Dialogs losgelassen wird.
- Neustartspielerwiederherstellungsinformationen werden nicht mehr gelöscht, wenn der „Spiel beenden“ – Dialog aufgerufen wird, aber mit Nein zum Spiel zurückgekehrt wird.