Nach fünf Monaten Entwicklung wurde die Veröffentlichung der freien Spiel-Engine Godot 4.2 bekannt gegeben, die sich für die Erstellung von 2D- und 3D-Spielen eignet. Die Engine unterstützt eine einfach zu erlernende Sprache zur Festlegung der Spiel-Logik, eine grafische Umgebung zur Spielplanung, ein Ein-Klick-Deployment-System, umfangreiche Animations- und physikalische Simulationsmöglichkeiten, einen integrierten Debugger sowie eine Leistungsanalyse. Der Code der Spiel-Engine, der Umgebung zur Spielplanung und der zugehörigen Entwicklungsmittel (Physik-Engine, Sound-Server, Backends für 2D/3D-Rendering usw.) wird unter der MIT-Lizenz veröffentlicht.
Der Quellcode der Engine wurde 2014 von dem Studio OKAM freigegeben, nach zehn Jahren der Entwicklung eines proprietären Produkts auf professionellem Niveau, das für die Entwicklung und Veröffentlichung vieler Spiele für PC, Spielkonsolen und mobile Geräte verwendet wurde. Die Engine unterstützt alle gängigen Desktop- und Mobilplattformen (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX) sowie die Entwicklung von Spielen für das Web. Funktionsbereite Binärversionen wurden für Linux, Android, Windows und macOS erstellt.
Hauptänderungen:
- Für Entwickler von 2D-Spielen wurde die Unterstützung für verpflichtende ganzzahlige Skalierung hinzugefügt, die es ermöglicht, ein quadratisches Pixelgitter unabhängig vom tatsächlichen Seitenverhältnis zu erhalten. Die Möglichkeit, baryzentrische Koordinaten der Normalen aus den Schnittpunkten eines Objekts mit einem Strahl zu erhalten, wurde bereitgestellt. Die Methoden Rotate_toward und Angle_difference wurden hinzugefügt, um die Verarbeitung von Drehungen und Winkeln zu verbessern. Im Line2D-Knoten wurde die Eigenschaft „closed“ hinzugefügt, um geschlossene Linien mit kontinuierlicher Füllung zu erstellen.

- Es wurden Arbeiten zur Erhöhung der Zuverlässigkeit des Animationssystems durchgeführt. Die Knoten AnimationPlayer und AnimationTree wurden überarbeitet und vereinheitlicht, wobei die gemeinsamen Teile in eine Zwischenschicht AnimationMixer ausgegliedert wurden. Eine Option für deterministisches Mischen wurde hinzugefügt. Im Animationsvorschau-Modus wurde ein Zwiebelschalenmodus (onion skinning) integriert, der halbtransparente Überlagerungen der vorherigen und folgenden Animationsrahmen anzeigt.

- Die Möglichkeiten des „Bauens“ von Navigationsgittern (baking, Umwandlung in eine statische Form) für 2D wurden den früheren Möglichkeiten in der 3D-Navigation angenähert, zum Beispiel unterstützten 2D-Netze die Arbeit mit physischen Körpern, Instanzen von polygonalen Netzen, einfachen Polygonen und Kachelkarten (tilemap). In Server 2D- und 3D-Navigation wurde die Unterstützung für die mehrfädige Verarbeitung des Backens von Meshes hinzugefügt.

- Es wurde eine Refaktorierung des Codes für die Arbeit mit Kacheln und Kachelkarten durchgeführt. Die Gruppierungs- und Sortieroperationen entlang der Y-Achse wurden optimiert, was die Aktualisierungszeit der Kacheln erheblich verkürzt hat. Es wurde daran gearbeitet, die Erstellung und Verwendung von Kachelkarten zu erleichtern. Ein Werkzeug zum Drehen und Wenden von Kacheln beim Platzieren wurde hinzugefügt. Die Werkzeuge zur Bearbeitung von Polygonen und Kachelszenen wurden verbessert.

- Im GDScript-Skripteditor gibt es jetzt die Möglichkeit, benannte Codebereiche zu erstellen, um Blöcke während der Bearbeitung zusammenzuklappen und die Navigation zu erleichtern. Der Skriptedebugger unterstützt nun vollständig Multi-Threading-Code, den Ausführungsstack und Haltepunkte. In C#/.NET-Skripten wurde die Unterstützung für die Plattformen Android (benötigt .NET 7.0+) und iOS (benötigt .NET 8.0) implementiert. In GDScript-Skripten wurde die Unterstützung für statisch typisierten Code erweitert und die Unterstützung für r-Strings (raw strings) hinzugefügt, sowie die Möglichkeiten des match-Operators verbessert.

- Im 3D-Viewport wurde die Unterstützung für die Transformation im Blender-Stil verbessert, wobei Maus und Tastenkombinationen verwendet werden. Die Anzeige erweiterter visueller Informationen im 3D-Viewport erfolgt nun nur für ausgewählte Objekte. Zusätzliche Indikatoren für Elemente wie Decals und volumetrischen Nebel wurden hinzugefügt. Die Arbeit mit Gizmos wurde verbessert — jede Seite voluminöser Formen kann jetzt separat im Ansichtsfenster erweitert werden.

- Die kontextmenüs und Tooltipps in den Bereichen «Inspektor» und «Signale» wurden verbessert. Im Themeneditor wurden Hinweise zu den Eigenschaften hinzugefügt. Im Datei-Manager gibt es nun die Möglichkeit, Verzeichnisse visuell hervorzuheben, indem man ihnen verschiedene Farben zuweist. Die Benutzeroberfläche des Gradientenressourceneditors wurde überarbeitet. Im Texturregion-Editor wurde die Arbeit mit allen unterstützten Ressourcen, einschließlich Stilen und Atlanten, vereinheitlicht.

- In der Asset-Bibliothek wurde die Anzeige der Suchergebnisse verbessert und es wurde die Möglichkeit hinzugefügt, ein anderes Verzeichnis für die Installation eines Add-ons oder einer Ressource auszuwählen.

- Im Projektmanager wurde die Anordnung der Hauptelemente überarbeitet und die Oberfläche für den Projektimport modernisiert.

- Die Möglichkeiten zur Entwicklung von Plugins für den Editor wurden erweitert. Der Zugriff auf die gesamte Funktionalität des Editors erfolgt nun über die Klasse EditorInterface. Praktische Methoden für den direkten Zugriff auf 2D- und 3D-Viewport wurden implementiert. Eine Ausgabe-Option für einen Dialog mit einer Warnung vor nicht gespeicherten Änderungen wurde hinzugefügt.
- Die Entwicklung des experimentellen Erweiterungssystems GDExtension wurde fortgesetzt, das die Verwendung von Low-Level-Sprachen wie C++ als Skriptsprache für Spiele ermöglicht, ohne den Engine neu zu kompilieren oder den Code zu ändern. Die Möglichkeit zur Verwendung von GDExtensions beim Export nach Web wurde hinzugefügt.
- Die Benutzeroberfläche hat Änderungen in der Fokusverwaltung erfahren. Es wurde die Möglichkeit implementiert, den Fokus auf bestimmte Tabs in der Tab-Leiste zu übertragen, auch bei der Navigation mit der Tastatur. Die Steuerelemente (Control) erhielten eine Methode zur Suche nach dem nächsten benachbarten fokussierbaren Element. Die Knoten für die Grafikerstellung (GraphEdit und GraphNode) wurden umfassend überarbeitet. Die Anpassungsmöglichkeiten für die Werkzeugleiste des Hauptknotens GraphEdit wurden erweitert.

- Es wurde die Möglichkeit hinzugefügt, den Importtyp von Assets zur Laufzeit zu ändern, mit automatischer Aktualisierung von Szenen und Ressourcen, die keinen Neustart des Editors erfordert. Die verfügbaren Importparameter wurden erweitert und die Anpassung physikalischer Eigenschaften importierter Objekte sowie der Schattierungs- und Sichtbarkeitsparameter wurde ermöglicht. Eine Vorschaufunktion für Animationen im Importdialog wurde hinzugefügt. Die Unterstützung für den Import von Assets aus Blender im GLTF-Format wurde erweitert. Die Unterstützung für den Import von Bildern im KTX-Format wurde hinzugefügt.

- Optimierungen wurden vorgenommen, um die Rendering-Leistung zu steigern. Um die Leistung auf mobilen Geräten zu verbessern, wurden die Rasterbarrieren in Vertex- und Fragmentkomponenten unterteilt. Die Generierung von rauschenden Texturen wurde beschleunigt. Ein Vorabpass zur Berechnung der Tiefe wurde hinzugefügt. Die Lade- und Kompilierungszeiten von Shadern wurden verkürzt. Der Speicherbedarf für polygonale Netze wurde optimiert. Die Unterstützung für die Kompression polygonaler Netze zur Reduzierung der Bandbreite beim Transfer wurde hinzugefügt.
- Die Möglichkeit zur Erstellung eigener Texturobjekte wurde hinzugefügt (Beispiel für die Verwendung von Compute-Shaders zur Erstellung einer Textur mit Wasseffekt).
- Eine API zum Aufruf von Code im Render-Thread wurde hinzugefügt, was beispielsweise erforderlich sein kann, wenn der Compute-Shader mit dem Rendering synchronisiert werden muss.
- Unterstützung für die Version 2.2 der AMD FSR-Technologie (FidelityFX Super Resolution) wurde hinzugefügt, die Algorithmen für räumliches Upscaling und Detailrekonstruktion verwendet, um den Qualitätsverlust bei der Vergrößerung und Umwandlung in eine höhere Auflösung zu reduzieren.
- Ein neuer Rauschunterdrücker JNLM wurde vorgeschlagen, der Lichtkarten (lightmapper) und Compute-Shader verwendet. JNLM ist deutlich schneller als die zuvor verwendete Rauschunterdrückungsbibliothek OIDN (Open Image Denoise), hat jedoch in einigen Situationen eine geringere Qualität.
- Die Rendering-Methoden Forward+ und Mobile haben Unterstützung für 2D-Rendering im erweiterten dynamischen Bereich (HDR) erhalten, was die Umsetzung bestimmter 3D-Effekte wie Leuchten in 2D-Spielen ermöglicht. In die Rendering-Methode Compatibility wurde Unterstützung für dreidimensionale Schatten integriert.
- Für macOS und Windows wurde ein neuer OpenGL-Rendering-Treiber vorgestellt, der die ANGLE-Schicht verwendet, die OpenGL-Aufrufe in die Direct3D 11- und Metal-APIs übersetzt.
- Das Partikelsimulation-System wurde überarbeitet, um die Wartung zu vereinfachen und die Kontrolle über die Bewegung von Partikeln zu erweitern. Es ist jetzt möglich, die Bewegungsgeschwindigkeit zu animieren und zu vererben sowie die Anzahl der emittierten Partikel zu ändern. Ein Tool zum Konvertieren des CPU-basierten Partikelerzeugungscodes in einen äquivalenten GPU-Code wurde hinzugefügt.
- Die Unterstützung für native Dateiauswahldialoge unter Linux, macOS und Windows wurde hinzugefügt, ebenso wie die Möglichkeit, Bilder über die Zwischenablage zu kopieren und einzufügen.
- Die Architektur von Godot für die Android-Plattform wurde überarbeitet, wodurch die Bindung an die Android-Komponente Fragment entfernt wurde. Dies hat die Startzeit von Anwendungen und Spielen verkürzt und die Möglichkeit geschaffen, mit mehreren Fenstern zu arbeiten.
- Die offiziellen Linux-Baue des Godot-Editors für 32- und 64-Bit ARM-Plattformen wurden eingerichtet.
Quelle: opennet.ru











