Nach vier Jahren Entwicklung wurde die Veröffentlichung der freien Spiel-Engine Godot 4.0 bekannt gegeben, die für die Erstellung von 2D- und 3D-Spielen geeignet ist. Die Engine unterstützt eine leicht zu erlernende Sprache für die Programmierung von Spiel-Logik, eine grafische Umgebung zur Spieleentwicklung, ein Ein-Klick-Deployment-System, umfangreiche Animations- und Physik-Simulationsmöglichkeiten, einen integrierten Debugger und ein System zur Erkennung von Performance-Engpässen. Der Code der Spiel-Engine, der Entwicklungsumgebung und der zugehörigen Entwicklungstools (Physik-Engine, Audio-Server, Backends für 2D/3D-Rendering usw.) wird unter der MIT-Lizenz verbreitet.
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.
In den Godot 4.0-Branch wurden etwa 12.000 Änderungen eingefügt und 7.000 Fehler behoben. Rund 1500 Personen haben an der Entwicklung der Engine und dem Schreiben der Dokumentation mitgearbeitet. Zu den wichtigsten Änderungen gehören:
- Es wurden zwei neue Rendering-Backends (clusterbasiert und mobil) auf Basis der Grafik-API Vulkan angeboten, die die Backends ablösen, die Rendering über OpenGL ES und OpenGL durchführen. Für alte und leistungsschwache Geräte wurde ein Kompatibilitäts-Backend auf Basis von OpenGL integriert, das eine neue Rendering-Architektur verwendet. Für dynamisches Rendering mit niedrigerer Auflösung wurde die AMD FSR-Technologie (FidelityFX Super Resolution) eingesetzt, die Algorithmen für räumliches Upscaling und Detailrekonstruktion nutzt, um den Qualitätsverlust bei der Skalierung und Umwandlung in höhere Auflösungen zu minimieren. Eine Rendering-Engine auf Basis von Direct3D 12 wurde implementiert, die die Unterstützung für die Plattformen Windows und Xbox verbessert.

- Die Möglichkeit, in einem Multi-Window-Modus mit der Benutzeroberfläche zu arbeiten, wurde hinzugefügt (verschiedene Panels und Teile der Benutzeroberfläche können als separate Fenster angehängt werden).

- Ein neuer Benutzeroberflächen-Editor und ein neues visuelles Design-Widget wurden hinzugefügt.

- Ein neuer Editor für Themen wurde hinzugefügt.

- Das Beleuchtungs- und Schattensystem wurde vollständig neu geschrieben, wobei die Echtzeit-Technologie der globalen Beleuchtung SDFGI (Signed Distance Field Global Illumination) verwendet wird. Die Qualität des Schattens wurde erheblich verbessert.

- Der GIProbe-Knoten, der zur Beleuchtung der Szene mit reflektiertem Licht verwendet wurde, wurde durch den VoxelGI-Knoten ersetzt, der für die Echtzeitanwendung von Licht in Szenen mit kleinen oder mittleren Innenräumen optimiert ist. Für schwächere Hardware bleibt die Möglichkeit der Vorab-Renderung von Licht und Schatten mithilfe von Lichtkarten erhalten, deren Rendering jetzt durch die GPU beschleunigt wird.

- Neue Techniken zur Renderoptimierung wurden implementiert. Es wurde eine automatische Okklusionsabdeckung (occlusion culling) hinzugefügt, die dynamisch Modelle identifiziert und entfernt, die hinter anderen Oberflächen verborgen sind, um die Renderleistung zu steigern und die CPU- und GPU-Auslastung zu reduzieren.

- Der Modus SSIL (Screen Space Indirect Lighting) wurde hinzugefügt, der die Rendering-Qualität auf leistungsstarker Hardware durch verbesserte Verarbeitung dunkler Bereiche und indirekter Beleuchtung erhöht. Darüber hinaus wurden zusätzliche Einstellungen zur Simulation von diffusem indirektem Licht mithilfe der SSAO-Technik (Screen Space Ambient Occlusion) bereitgestellt, wie z.B. die Wahl des Einflussgrades des direkten Lichts.
- Es wurden realistische Beleuchtungseinheiten vorgeschlagen, die es ermöglichen, die Lichtintensität zu korrigieren und die Standardkameraeinstellungen wie Blende, Belichtungszeit und ISO zur Steuerung der Helligkeit der finalen Szene zu nutzen.
- Neue Werkzeuge zur Bearbeitung von Levels für 2D-Spiele wurden hinzugefügt. Es wurden drastische Änderungen im Entwicklungsprozess von 2D-Spielen vorgenommen. Ein neuer Tilemap-Editor wurde hinzugefügt, der die Unterstützung von Schichten, automatischen Landschaftsfüllungen, randomisierter Platzierung von Pflanzen, Steinen und verschiedenen Objekten sowie flexible Objektauswahl bietet. Die Arbeit mit Tilemaps und Fragmentsets zur Erstellung von Karten (tileset) wurde vereinheitlicht. Eine automatische Erweiterung der Fragmente im Set wurde eingerichtet, um Lücken zwischen benachbarten Fragmenten zu vermeiden. Darüber hinaus wurde eine neue Funktion zur Platzierung von Objekten in der Szene hinzugefügt, die beispielsweise zur Hinzufügung von Charakteren in die Zellen des Tile-Netzes verwendet werden kann.
- Bei der 2D-Darstellung wurde die Möglichkeit implementiert, Gruppen von Leinwänden zu nutzen, die es ermöglichen, überlappende Elemente zu mischen. Beispielsweise können mehrere Sprites zusammengefasst und mit dem Hintergrund gemischt werden, als wären diese Sprites ein einziges Element. Die Eigenschaft Clip Children wurde hinzugefügt, die es ermöglicht, jedes 2D-Element als Maske zu verwenden. Der 2D-Engine wurde auch eine Option hinzugefügt, die die Verwendung von MSAA (Multisample Anti-Aliasing) zur Verbesserung der Bildqualität und zur Schaffung glatterer Kanten ermöglicht.

- Die Arbeit mit Licht und Schatten in 2D-Spielen wurde verbessert. Die Leistung bei der Verwendung mehrerer Lichtquellen wurde erheblich gesteigert. Es wurde die Möglichkeit hinzugefügt, Dreidimensionalität durch Veränderung des Lichtniveaus auf Normalmaps zu simulieren, sowie die Erstellung visueller Effekte wie lange Schatten, Heiligenscheine und klare Konturen.

- Ein volumetrischer Nebeleffekt wurde hinzugefügt, der die Technik der temporalen Rekonstruktion nutzt, um ein realistisches Aussehen bei hoher Leistung zu erreichen.

- Cloud-Shader wurden hinzugefügt, die es ermöglichen, Wolken dynamisch zu generieren, die sich in Echtzeit ändern.

- Die Unterstützung für „Decals“, eine Methode zur Projektion von Materialien auf Oberflächen, wurde implementiert.
- Es wurden Effekte auf Basis von Partikeln hinzugefügt, die im gesamten Spielraum anwendbar sind und die GPU nutzen. Diese unterstützen Attraktoren, Kollisionen, Nachläufe und Emittern.
- Die Möglichkeiten der Benutzeroberfläche für die visuelle Bearbeitung von Shadern wurden erweitert.

- Die Shader-Sprache wurde erweitert und unterstützt jetzt Strukturen, Präprozessor-Makros, Shader-Inklusion (include-Anweisung), einheitliche Arrays und die Verwendung von „varying“ zur Datenübertragung vom Fragment-Handler zum Beleuchtungs-Handler.
- Die Möglichkeit zur Anwendung von Compute-Shadern wurde hinzugefügt, die die GPU zur Beschleunigung von Algorithmen nutzt.
- Im Skriptsprache GDScript wurde das System der statischen Typisierung verbessert, eine neue Syntax zur Definition von Eigenschaften hinzugefügt, die Schlüsselwörter await und super eingeführt, map/reduce-Operationen implementiert, ein neues Annotationssystem realisiert, die Nutzung von Unicode-Zeichen in Variablen- und Funktionsnamen ermöglicht. Ein Werkzeug zur automatischen Generierung von Dokumentationen wurde hinzugefügt. Die Leistung und Stabilität der GDScript-Laufzeitumgebung wurde verbessert. In der Entwicklungsumgebung wurde die Möglichkeit geschaffen, mehrere Fehler gleichzeitig anzuzeigen, und es wurden neue Warnungen für typische Probleme hinzugefügt.

- Die Möglichkeiten zur Entwicklung von Spiel-Logik in C# wurden erweitert. Die Unterstützung für die Plattform .NET 6 und die Sprache C# 10 wurde hinzugefügt. Für Skalare Werte werden 64-Bit-Typen verwendet. Viele APIs wurden von den Typen int und float auf long und double umgestellt. Die Möglichkeit zur Definition von Signalen in Form von C#-Ereignissen wurde bereitgestellt. Zudem wurde die Entwicklung von GDExtensions in C# ermöglicht.
- Die experimentelle Unterstützung für Erweiterungen (GDExtension) wurde hinzugefügt, die zur Erweiterung der Engine-Funktionalitäten verwendet werden können, ohne die Engine neu zu kompilieren oder den Code zu ändern.
- Standardmäßig wird jetzt die eigene Simulationsengine Godot Physics angeboten, die für die Lösung von Aufgaben, die im Bereich von Computerspielen typisch sind, optimiert und hinsichtlich der Funktionalität auf Parität mit der zuvor verwendeten Bullet-Engine gebracht wurde (z.B. wurde in Godot Physics die Verarbeitung neuer Kollisionsformen, die Unterstützung von Höhendatenkarten und die Möglichkeit zur Nutzung von SoftBody-Knoten zur Simulation von Kleidung hinzugefügt). Die Leistung wurde optimiert, und die Anwendung von Multithreading zur Verteilung der Last auf verschiedene CPU-Kerne bei der Simulation physikalischer Prozesse in 2D- und 3D-Umgebungen wurde erweitert. Viele Probleme mit der Simulation wurden gelöst.
- Ein neues Textdarstellungssystem wurde vorgeschlagen, das mehr Kontrolle über das Abschneiden und Umbrechen von Text bietet und zudem eine hohe Schärfe bei allen Bildschirmauflösungen gewährleistet.
- Die Werkzeuge zur Lokalisierung und zur Arbeit an Übersetzungen wurden erweitert.
- Ein separater Dialog zum Import von 2D- und 3D-Ressourcen wurde hinzugefügt, der eine Vorschau und Änderung der Einstellungen für die importierte Szene, Materialien und physikalische Eigenschaften unterstützt.

- Im Editor wurden neue Widgets hinzugefügt, darunter ein Panel zum Rückgängigmachen von Änderungen sowie ein neuer Farbauswahl- und Farbpaletten-Update-Dialog.

- Die Benutzeroberfläche der Inspektion wurde aktualisiert, Steuerungspanel die Szene und der Skripteditor. Die Syntaxhervorhebung wurde verbessert, die Möglichkeit zur Anzeige mehrerer Cursorn hinzugefügt und Werkzeuge zum Bearbeiten von JSON- und YAML-Formaten bereitgestellt.
- Die Funktionen des Animationseditors wurden erweitert, der nun die Unterstützung für das Mischen von Formen bietet und die Prozesse auf Basis von Bézier-Kurven verbessert wurden. Der Code für die 3D-Animation wurde neu geschrieben und unterstützt jetzt Komprimierung zur Reduzierung des Speicherverbrauchs. Das System zum Mischen von Animationen und Erstellen von Übergangseffekten wurde überarbeitet. Die Möglichkeiten zur Erstellung komplexer Animationen wurden erweitert. Zur Speicherung und Wiederverwendung erstellter Animationen wurden Animationsbibliotheken vorgeschlagen.

- Ein Film-Erstellungsmodus wurde hinzugefügt, der eine Bild-für-Bild-Wiedergabe der Szene in höchster Qualität zum Erstellen von Intros und Videoaufnahmen ermöglicht.
- Die Unterstützung für 3D-Headsets und Plattformen der virtuellen Realität wurde erweitert. In den Hauptbestand des Engines wurde die Unterstützung des OpenXR-Standards integriert, der eine universelle API für die Erstellung von Virtual-Reality- und Augmented-Reality-Anwendungen definiert. In Windows und Linux wird die Unterstützung aller gängigen 3D-Headsets gewährleistet, einschließlich SteamVR-, Oculus- und Monado-Headsets.
- Die Stabilität des Untermoduls für die Organisation von Netzwerkspielen wurde verbessert und der Entwicklungsprozess für Mehrspieler-Spiele vereinfacht.
- Die Möglichkeiten des Soundsystems wurden erweitert, die Unterstützung für Polyfonie integriert, eine API für Sprachsynthese hinzugefügt und die Möglichkeit zum Loopen von Audio realisiert.
- Die Möglichkeit, die Godot-Oberfläche auf Android-Tablets und im Webbrowser zu starten, wurde sichergestellt.

- Ein neues System zum Erstellen von Spielen für verschiedene CPU-Architekturen wurde hinzugefügt. Beispielsweise kann jetzt eine Kompilierung für Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebook und Asahi Linux durchgeführt werden.
- Im API wurden Änderungen vorgenommen, die die Kompatibilität beeinträchtigen. Der Wechsel von Godot 3.x zu Godot 4.0 erfordert eine Überarbeitung der Anwendungen, jedoch wird für den Godot-3.x-Zweig ein langer Unterstützungzyklus gewährleistet, dessen Dauer von der Nachfrage nach der alten API durch die Benutzer abhängt.

Quelle: opennet.ru

















