Release candidate: Godot 3.5 RC 3
von: Rémi Verschelde - 1 Juni 2022
Originaltext: Link
Asynchronous shader compilation + caching (ubershader) (GH-53411)
Eine lang erwartete Lösung für das Stottern bei der Shader-Kompilierung unter OpenGL, mit freundlicher Genehmigung von Pedro J. Estébanez (RandomShaper)!
Dieses neue System verwendet einen "Ubershader" (großer Shader, der alle Funktionen unterstützt, langsam, aber beim Start kompiliert), um zunächst alle Shader auszufüllen, während die effizienteren und materialspezifischen Shader asynchron kompiliert und für zukünftige Durchläufe zwischengespeichert werden.
Das bedeutet, dass die Materialien beim ersten Durchlauf für ein oder zwei Sekunden etwas anders aussehen können, aber es sollte keine Kompilierungsverzögerungen mehr geben. Bitte testen Sie dies gründlich und lassen Sie uns wissen, wie es sich in Ihren Projekten bewährt.
Add NavigationServer with obstacle avoidance using RVO2 (GH-48395)
Jake Young (Duroxxigar) hat das überarbeitete und stark verbesserte Navigationssystem zurückportiert, das Andrea Catania (AndreaCatania) bereits 2020 für Godot 4.0 implementiert hatte! Und dann wurden viele alte und neue Navigationsprobleme von smix8 und Pawel Lampe (Scony) behoben.
Der neue NavigationServer unterstützt die Hindernisvermeidung mit der RVO2-Bibliothek, und Navigationsnetze können nun zur Laufzeit gebacken werden. Die gesamte API ist jetzt viel flexibler als früher.
Bei der Rückportierung wurde versucht, die API-Kompatibilität im Rahmen des Möglichen zu erhalten, aber das zugrundeliegende Verhalten wird sich ändern, vor allem um viel mehr Funktionen und Flexibilität zu bieten. Wir gehen davon aus, dass alle Benutzer gerne auf den neuen NavigationServer umsteigen werden, aber bitte melden Sie Probleme, wenn Sie beim Upgrade von 3.4 Verhaltensänderungen zum Schlechteren feststellen.
Physics interpolation (3D) (GH-52846)
Während die Physik in Godot mit einer festen Tickrate abläuft, können die Frames je nach der Hardware des Spielers mit einer Vielzahl von Frame-Raten angezeigt werden. Dies kann zu einem Problem führen, wenn die Bewegung von Objekten (die in der Regel auf Physik-Ticks auftreten) nicht mit den gerenderten Frames übereinstimmt, was zu unschönen Rucklern führt.
Dank der Expertise von lawnjelly gibt es jetzt eine nette neue Option, die in den Projekteinstellungen versteckt ist. Schalten Sie physics/common/physics_interpolation ein, und Godot wird nun automatisch Objekte auf gerenderten Frames interpolieren, so dass sie super glatt aussehen.
Um davon zu profitieren, sollten Sie Ihre Objekte bewegen und Ihre Spiellogik in _physics_process() ausführen. Dies stellt sicher, dass euer Spiel auf allen Rechnern gleich läuft. Alle Details sind in den aktualisierten Dokumenten zu finden.
Fixed Timestep Interpolation ist vorerst nur für 3D verfügbar, aber wir planen, nach anfänglichem Feedback und Bugfixing der 3D-Version, 2D-Unterstützung hinzuzufügen.
OccluderShapePolygon (3D) (GH-57361)
Nach dem OccluderShapeSphere in Version 3.4 bietet lawnjelly nun mit dem OccluderShapePolygon eine anpassungsfähigere und einfachere Möglichkeit, um grundlegende Verdeckungen zu beseitigen. Fügen Sie einen Occluder-Knoten zu Ihrer Szene hinzu und wählen Sie ein OccluderShapePolygon. Dieses sollte zunächst als Quad angezeigt werden.
Sie können das Polygon mit der Node-Transformation verschieben, die Ecken ziehen, um es neu zu formen, und Punkte löschen. Alles, was sich hinter dem Polygon befindet, wird aus der Ansicht entfernt.
Es ist wirklich so einfach, sie an einer beliebigen Stelle in Ihrem Spiel-Level zu platzieren. Lesen Sie die aktualisierte Dokumentation für Details.
Android editor port (GH-57747)
Vor zwei Jahren (!) begann thebestnom mit der Arbeit an einer Android-Portierung des Godot-Editors (GH-36776). Da der Godot-Editor mit Godot selbst gebaut wird, war es nicht allzu schwierig, sich vorzustellen, den Editor mit einigen Änderungen am Buildsystem für Android zu kompilieren. Aber es war eine Menge Arbeit nötig, um diese kompilierte Version auf einem Android-Gerät vernünftig zum Laufen zu bringen, mit verbesserter Maus- und Tastaturunterstützung, besserer Toucheingabe und der Möglichkeit, das Projekt über dem Editor wie auf dem Desktop laufen zu lassen.
Mit vielen Tests von interessierten Nutzern ging es langsam, aber stetig voran, und unsere Android-Maintainerin Fredia Huya-Kouadio (m4gr3d) gab dieser Arbeit den letzten Schliff, um sie für Godot 3.5 (GH-57747) zusammenzuführen. Die aktuelle Version hat nicht viele mobile-spezifische Änderungen, so dass sie nur auf einem Tablet mit Tastatur und Maus wirklich benutzbar ist - aber die Grundlage ist da, um sie zu verbessern, und wir sind an Ihrem Feedback und Ihren Ideen interessiert, wie man das Godot-Erlebnis noch mobilfreundlicher machen kann!
Von nun an finden Sie Builds des Android-Editors als
Dank hilfreicher Beiträge von Dan Edwards (Gromph) und Péter Magyar (Relintai) konnte Fredia auch den Modus für niedrige Prozessorauslastung unter Android (GH-59606) beheben, den der Editor-Port verwendet. Es sollte jetzt für Benutzer, die Nicht-Spiel-Anwendungen oder Nicht-Echtzeit-Spiele auf Android machen und wollen die Lebensdauer der Batterie zu bewahren gut funktionieren.
New Label3D and TextMesh backported from Godot 4.0 (GH-61276, GH-61281)
Lang erwartet, bietet Godot jetzt einen Label3D-Knoten, um Text in 3D-Szenen anzuzeigen. Und für fortgeschrittene Anwendungsfälle gibt es jetzt auch TextMesh, um 3D-Meshes aus Schriftglyphen zu generieren, so dass Sie Word Art zu Ihren Szenen hinzufügen können ;)
Beide Funktionen wurden von unserem Text-Rendering-Experten bruvzg im Master-Zweig für Godot 4.0 implementiert und in 3.5 zurückportiert. Sie wurden erst spät in den Release-Prozess (3.5 RC 2) integriert, sollten aber in sich geschlossen sein und daher die Stabilität anderer Funktionen nicht beeinträchtigen. Testen Sie sie auf jeden Fall und melden Sie jeden Fehler oder jede Unannehmlichkeit mit der Implementierung. weitere Beschreibung
New SceneTreeTween backported from Godot 4.0 (GH-60581)
Tomasz Chabora (KoBeWi) hat die Tween-Klasse in Godot 4.0 komplett überarbeitet, um sie viel leistungsfähiger und flexibler zu machen. Die ersten Tester schienen es zu mögen, und Haoyu Qiu (timothyqiu) beschloss, die Funktion als SceneTreeTween in Godot 3.5 zurückzuportieren (um das bereits vorhandene Tween beizubehalten und so die Kompatibilität zu wahren). Sie haben nun also zwei getrennte Tween-Implementierungen und können entweder die ursprüngliche 3.x-Implementierung weiter verwenden oder die neue API von 4.0 übernehmen.
Scene unique nodes (GH-60527)
Um die häufige Aufgabe des Zugriffs auf bestimmte Knoten aus Skripten zu erleichtern, fügte Juan Linietsky (reduz) das Konzept der "eindeutigen Szenennamen" für Knoten im Master-Zweig (GH-60298) hinzu, und Tomasz hat es für 3.5 zurückportiert. Knoten mit einem eindeutigen Szenennamen können innerhalb ihrer Szene einfach referenziert werden, indem ein neuer %-Namenspräfix verwendet wird, etwa so: get_node("%MyUniqueNode"). Dies ist besonders nützlich für die GUI, wenn Sie einen bestimmten Kontrollknoten finden müssen, der sich im Szenenbaum verschieben kann, wenn Sie Dinge umgestalten.
Add push, pull, fetch and improved diff view to VCS UI (GH-53900)
Die Arbeit von Meru Patel (Janglee123) vom Google Summer of Code 2020 wurde von Twarit Waikar (ChronicallySerious), einem ehemaligen Teilnehmer des GSoC 2019, fortgesetzt und aktualisiert.
What is it? Viele neue Funktionen für die Integration von Versionskontrollsystemen (VCS) in den Godot-Editor, wie z.B. Push-, Pull- und Fetch-Operationen, sowie eine sehr schöne Diff-Ansicht UI. Alle diese Funktionen wurden in das offizielle Git-Integrations-Plugin implementiert. Auf der Seite Releases finden Sie die neueste Version des Plugins 2.x mit Unterstützung für Godot 3.5.
Und mehr!
- 3D: Hinzufügen der Renderpriorität für Label3D-Knoten und Sprite3D-Materialien (GH-61276).
- 3D: Hinzufügen von TextMesh und Aufzeigen von dynamischen Schriftvektorumrissen (GH-61281).
- Android: Erste Portierung des Godot-Editors (GH-57747).
- Android: Behebung von Flackerproblemen bei niedrigem Prozessormodus (GH-59606).
- Android: Aktualisierung der Standard-Anzeigeskala des Editors, Größenänderung der Fenster möglich (GH-59868, GH-59861, GH-59880).
- Android: Korrektur der Logik zum Neustart der Godot-Anwendung (GH-61332).
- Animation: Option zum Einfügen von Animationen als Duplikat hinzugefügt (GH-60226).
- Animation: Neues SceneTreeTween zurückportiert von Godot 4.0 (GH-60581).
- Animation: Fix AnimatedSprite gibt animation_finished bei Änderung der Abspielrichtung nicht aus (GH-61085).
- Audio: Ermöglicht die Konfiguration des Schleifenmodus beim WAV-Import (GH-59170).
- Audio: Instanz-Audiostreams vor AudioServer::lock-Aufruf (GH-59413).
- Audio: Fix Absturz in AudioServer beim Umschalten von Audiogeräten mit unterschiedlicher Anzahl von Audiokanälen (GH-59778).
- C#: Android AAB Export lädt keine nativen Bibliotheken mehr (GH-57420).
- Kern: Hinzufügen von eindeutigen Szenenknoten (GH-60527).
- Kern: Hinzufügen von GradientTexture2D (GH-54824).
- Kern: Anheften von Eigenschaftswerten zulassen + Konsistente Eigenschaftsvorgaben (GH-52943).
- Kern: Unterstützung des tiefen Vergleichs von Array und Dictionary (GH-42625).
- Kern: Sichtbarkeit zu CanvasLayer hinzufügen (GH-57900).
- Kern: Hinzufügen eines Signals, um zu benachrichtigen, wenn Kinderknoten den Baum betreten oder verlassen (GH-57541).
- Kern: Hinzufügen einer Füllmethode zu Array und Pool*Array (GH-60426).
- Kern: OS.move_to_trash() freigeben (GH-60542).
- Kern: Crash-Handler: Verwendung von print_error, um Backtrace in Protokolle aufzunehmen (GH-60782).
- Kern: AStar/AStar2D mit Nullpunktgewicht zulassen (GH-60812).
- Kern: Hinzufügen von Suchmethoden für Pool-Arrays (GH-60856).
- Kern: Interpolationsmodi zu Gradient hinzufügen (GH-60982).
- Debugger: Korrektur der Inspektion von verschachtelten Dictionaries/Arrays (GH-60737).
- Fehlersuchprogramm: Hinzufügen der --debug-server Kommandozeilenoption, um auf eingehende Verbindungen zu warten (GH-60819).
- Editor: Hinzufügen von Push, Pull, Fetch und verbesserter Diff-Ansicht zur VCS UI (GH-53900).
- Editor: Verbesserte ColorPicker Voreinstellungen (GH-54439).
- Editor: Hinzufügen der Option, nur wichtige Aktualisierungen neu zu zeichnen (GH-53463).
- Editor: Verbesserte Bereichsauswahl im Ansichtsfenster des 3D-Editors (GH-58252).
- Editor: Eigenschaftspfade und Kategorien übersetzbar machen (GH-58634).
- Editor: Hinzufügen eines Umschalters für den Eigenschaftsnamenstil zum Inspektor (GH-59313).
- Editor: Hinzufügen einer Inspektorvorschau für BitMap (GH-60700).
- Editor: Erstellen von Onready-Variablen beim Fallenlassen von Knoten und Halten der Strg-Taste (GH-60879).
- Editor: Wechselt nur zum Knoten, wenn der Knoten gezogen wird (GH-61162).
- Exportieren: Verbessertes Laden und Exportieren von eingebetteten PCKs (GH-60580).
- GDScript: Korrektur der Variablentypeninferenz bei Freigabe (GH-57851).
- GDScript: Erzwingt keine Standardwerte für den Export-Hinweistyp (GH-58686).
- GDScript: Aktivieren von Methodentyp-Informationen bei Release-Builds (GH-59793).
- GUI: FlowContainer hinzufügen (GH-57960).
- GUI: Ausrichtungsoptionen für Schaltflächensymbole hinzufügen (GH-57771).
- GUI: Typvariationen zum Thema hinzufügen (GH-57942).
- GUI: Unterstützung für WOFF2-Schriftarten und Brotli-Decoder hinzugefügt (GH-59522).
- GUI: Hinzufügen einer Skew Eigenschaft zu StyleBoxFlat (GH-60592).
- GUI: Verschiedene Verbesserungen an OptionButton (GH-61102).
- HTML5: Aktivieren des mbedTLS-Moduls für das Crypto-Objekt (GH-61402).
- Eingabe: Erlaubt das Zuordnen von Scancodes zum aktuellen Layout (GH-56015).
- Internationalisierung: Hinzufügen von Unterstützung für binäre MO-Übersetzungsdateien (GH-59522).
- Linux: window_maximized funktioniert nicht mehr zuverlässig (GH-59767).
- Linux: Lesen und Speichern von Joypad-Ereignissen in einem separaten Thread (GH-56126).
- macOS: Implementiert Ad-hoc-Signierung von Linux/Windows (GH-51550).
- Navigation: Hinzufügen von NavigationServer mit Hindernisvermeidung durch RVO2 (GH-48395).
- Navigation: Viele Korrekturen und Verbesserungen für den neuen NavigationServer (Thema:Navigation PRs).
- Netzwerken: Hinzufügen von Proxy-Unterstützung für HTTPClient und den Editor (GH-55988).
-
Physik: Hinzufügen einer festen Zeitschritt-Interpolation für 3D (GH-52846).
- Das 2D-Äquivalent wird zu einem späteren Zeitpunkt hinzugefügt.
-
Physik: Geschoss: KinematicBody Compound Shape Kollisionen behoben (GH-56801).
- Behebt viele Probleme mit KinematicBody-Kollisionen am Schnittpunkt von Meshes bei der Verwendung von Bullet. Dies wurde relativ spät integriert (3.5 RC 2), bitte testen Sie es unbedingt.
- Rendering: Asynchrone Shader-Kompilierung + Zwischenspeicherung (ubershader) (GH-53411).
- Rendering: Hinzufügen der Eigenschaft material_overlay zu MeshInstance (GH-50823).
- Rendering: Schnelleres Zeichnen von Linien im Editor - Path2D und draw_line (GH-54377).
- Rendering: Hinzufügen von OccluderShapePolygon (GH-57361).
- Rendering: Hinzufügen von Unterstützung für das Speichern mehrerer Bilder in BakedLightmap (GH-58102).
- Rendering: Binden von Mesh-Merge-Funktionalität in MeshInstance (GH-57661).
- Rendering: GLES2: Entpacken von Blend Shape Arrays wenn nötig (GH-60829).
- Rendering: GLES3: Entbinden des Vertex-Puffers vor der Berechnung von Blend Shapes (GH-60832).
- Rendering: Portale: Anzeige von Rasterkarten im globalen Modus (GH-60851).
- Rendering: Fix Viewport mit transparentem Hintergrund, der zu schwarzem Hintergrund wird, wenn FXAA oder Debanding aktiviert ist (GH-54585).
- Shader: Viele Verbesserungen von Master zurückportiert (GH-56794).
- UWP: Fix für den Export von GDNative DLLs (GH-61262).
- VisualShader: Hinzufügen von Hinweisen und Standardwerten zu den Uniform Nodes (GH-56466).
- Windows: Verbessertes Konsolenhandling und Ausführen (GH-55987).
- Dies ändert die Handhabung der Editor-Konsole so, dass sie der auf Unix-Systemen (Linux und macOS) entspricht. Godot wird also nicht standardmäßig mit einer Konsole geöffnet, aber Sie können die Konsolenausgabe sehen, wenn Sie ihn selbst von einer Konsole aus starten. Sie können ein Batch-Skript oder eine Verknüpfung erstellen, um Godot automatisch von einer Konsole zu starten, wie in früheren Versionen.
- Windows: Implementierung einer begrenzten Unterstützung für Surrogatpaare (bessere UTF-8-Unterstützung, Emoji-Schriftarten) (GH-54625).
- Windows: Versuchen Sie, die Ausgabe von OS::execute() in Unicode zu konvertieren (GH-60920).
- Aktualisierungen der Bibliotheken von Drittanbietern: bullet 3.24, freetype 2.12.1, pcre2 10.40, CA Zertifikate (2022-03-31).
- Aktualisierungen der Klassenreferenzen und Übersetzungen.
All dies muss gründlich getestet werden, um sicherzustellen, dass sie in der kommenden Version 3.5-Stable wie vorgesehen funktionieren.