Po czterech latach prac opublikowano wydanie otwartego silnika gier Godot 4.0, który nadaje się do tworzenia gier 2D i 3D. Silnik obsługuje łatwy do nauczenia język do definiowania logiki gry, graficzne środowisko do projektowania gier, system wdrażania gier za jednym kliknięciem, szerokie możliwości animacji i symulacji procesów fizycznych, wbudowany debuger oraz system identyfikacji wąskich gardeł wydajności. Kod silnika gier, środowiska projektowania gier oraz związanych z nim narzędzi developerskich (silnik fizyczny, serwer dźwięku, backendy renderowania 2D/3D itp.) jest rozpowszechniany na licencji MIT.
Źródła silnika zostały otwarte w 2014 roku przez studio OKAM, po dziesięciu latach rozwoju produktu komercyjnego profesjonalnego poziomu, który był wykorzystywany do tworzenia i publikacji wielu gier na PC, konsole oraz urządzenia mobilne. Silnik obsługuje wszystkie popularne platformy stacjonarne i mobilne (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), a także rozwój gier dla Web. Gotowe do uruchomienia binarne wersje zostały przygotowane dla Linux, Android, Windows oraz macOS.
W gałęzi Godot 4.0 zawarto około 12 tysięcy zmian i naprawiono 7 tysięcy błędów. W pracach nad silnikiem i pisaniu dokumentacji wzięło udział około 1500 osób. Wśród kluczowych zmian:
- Zaproponowano dwa nowe backendy renderowania (sklastryzowany i mobilny) oparte na API graficznym Vulkan, które zastąpiły backendy wykonujące renderowanie przez OpenGL ES i OpenGL. Dla starszych i słabszych urządzeń zintegrowano backend wspierający zgodność oparty na OpenGL, wykorzystujący nową architekturę renderowania. Dla dynamicznego renderowania o niższej rozdzielczości wykorzystano technologię supersamplingu AMD FSR (FidelityFX Super Resolution), która używa algorytmów skalowania przestrzennego i rekonstrukcji detali, aby zredukować utratę jakości obrazu przy powiększeniu oraz konwersji do wyższej rozdzielczości. Zrealizowano silnik renderowania oparty na Direct3D 12, który poprawi wsparcie dla platform Windows i Xbox.

- Dodano możliwość pracy z interfejsem w trybie wieloekranowym (różne panele i części interfejsu można odczepić jako osobne okna).

- Dodano nowe narzędzie do edycji interfejsu użytkownika oraz nowy widget do projektowania wizualnego.

- Dodano nowy edytor motywów.

- Całkowicie przepisano system zarządzania oświetleniem i cieniami, który wykorzystuje technologię globalnego oświetlenia w trybie rzeczywistym SDFGI (Signed Distance Field Global Illumination). Znacząco poprawiono jakość renderowania cieni.

- Węzeł GIProbe, używany do wypełniania sceny odbitym światłem, został zastąpiony węzłem VoxelGI, optymalnym do przetwarzania oświetlenia w trybie rzeczywistym w scenach z małymi lub średnimi wnętrzami. Dla mniej wydajnego sprzętu pozostawiono opcję wstępnego renderowania światła i cieni przy użyciu map oświetlenia, które teraz wykorzystują GPU do przyspieszenia ich renderowania.

- Wprowadzono nowe techniki optymalizacji renderingu. Dodano automatyczne przycinanie okluzji (occlusion culling), które dynamicznie identyfikuje i usuwa modele ukryte za innymi powierzchniami, aby zwiększyć wydajność renderingu i zmniejszyć obciążenie CPU oraz GPU.

- Dodano tryb SSIL (Screen Space Indirect Lighting), który pozwala poprawić jakość renderingu na wysokowydajnym sprzęcie poprzez lepsze przetwarzanie ciemnych obszarów i oświetlenia pośredniego. Dodatkowo, wprowadzono dodatkowe ustawienia symulacji rozproszonego oświetlenia pośredniego za pomocą techniki SSAO (Screen Space Ambient Occlusion), takie jak wybór poziomu wpływu światła bezpośredniego.
- Proponowane są realistyczne jednostki oświetlenia, które umożliwiają regulację intensywności światła i wykorzystanie do zarządzania jasnością końcowej sceny standardowych ustawień aparatu, takich jak przysłona, czas naświetlania i ISO.
- Dodano nowe narzędzia do edytowania poziomów w grach 2D. Wprowadzono radykalne zmiany w procesie tworzenia gier 2D. Dodano nowy edytor map kafelkowych (tilemap), który obsługuje warstwy, automatyczne wypełnianie krajobrazu, losowe rozmieszczanie roślin, kamieni i różnych obiektów, elastyczne wybieranie obiektów. Ujednolicono pracę z mapami kafelkowymi i zestawami fragmentów do budowy mapy (tileset). Zapewniono automatyczne rozszerzanie fragmentów w zestawie, aby wyeliminować luki między sąsiednimi fragmentami. Dodano nową funkcję rozmieszczania obiektów na scenie, którą można na przykład wykorzystać do dodawania postaci do komórek siatki kafelkowej.
- W przypadku renderowania 2D wprowadzono możliwość korzystania z grup powierzchni, co pozwala na mieszanie nakładających się elementów powierzchni, na przykład można połączyć kilka sprite'ów i zmieszać je z tłem, jakby były jednym elementem. Dodano właściwość Clip Children, która umożliwia używanie dowolnego elementu 2D jako maski. Do silnika 2D dodano także opcję umożliwiającą korzystanie z metody wygładzania MSAA (Multisample Anti-Aliasing) w celu poprawy jakości obrazów i uzyskania gładszych krawędzi.

- Poprawiono pracę z oświetleniem i cieniami w grach 2D. Znacząco zwiększono wydajność przy użyciu wielu źródeł światła. Dodano możliwość symulacji trójwymiarowości poprzez zmianę poziomu oświetlenia na mapach normalnych, a także tworzenie takich efektów wizualnych jak długie cienie, poświaty i wyraźne kontury.

- Dodano efekt objętościowej mgły, wykorzystujący technikę tymczasowej reprojekcji, aby uzyskać realistyczny wygląd i wysoką wydajność.

- Dodano shadery chmur, które pozwalają dynamicznie generować chmury zmieniające się w czasie rzeczywistym.

- Wprowadzono wsparcie dla „dekal”, metody projektowania materiału na powierzchnię.
- Dodano efekty oparte na cząsteczkach stosowane w całej przestrzeni gry, wykorzystujące GPU i obsługujące przyciągacze, kolizje, smugi i emitery.
- Rozszerzono możliwości interfejsu do wizualnego edytowania shaderów.

- Rozszerzono język shaderów, w którym dodano wsparcie dla struktur, dyrektyw preprocesora, podmiany shaderów (operator include), zjednoczonych tablic oraz użycia "varying" do przekazywania danych z fragmentu do oświetlenia.
- Dodano możliwość wykorzystania shaderów obliczeniowych, korzystających z GPU do przyspieszania algorytmów.
- W języku skryptowym GDScript ulepszono system statycznej typizacji, wprowadzono nową składnię definiowania właściwości, dodano słowa kluczowe await i super, wprowadzono operacje map/reduce, zrealizowano nowy system adnotacji, dodano możliwość używania znaków unicode w nazwach zmiennych oraz funkcji. Dodano narzędzie do automatycznego generowania dokumentacji. Zwiększono wydajność i stabilność GDScript runtime. W środowisku programistycznym umożliwiono jednoczesne wyświetlanie wielu błędów oraz dodano nowe ostrzeżenia dotyczące typowych problemów.

- Rozszerzono możliwości tworzenia logiki gry w języku C#. Dodano wsparcie dla platformy .NET 6 oraz języka C# 10. Dla wartości skalarnych wykorzystano typy 64-bitowe. Wiele interfejsów API zostało przetłumaczonych z typów int i float na long i double. Umożliwiono definiowanie sygnałów w formie zdarzeń C#. Dodano możliwość tworzenia rozszerzeń GDExtensions w języku C#.
- Dodano eksperymentalne wsparcie dla rozszerzeń (GDExtension), które można wykorzystać do rozszerzenia możliwości silnika bez jego rekompilacji i bez wprowadzania zmian w kodzie.
- Zaproponowano domyślnie własny silnik symulacji procesów fizycznych Godot Physics, zoptymalizowany do rozwiązywania problemów typowych dla gier komputerowych, oraz doprowadzony do parytetu funkcjonalności z wcześniej używanym silnikiem Bullet (na przykład w Godot Physics dodano obsługę nowych form kolizji, wsparcie dla map wysokości oraz możliwość używania węzłów SoftBody do symulacji odzieży). Przeprowadzono optymalizację wydajności i rozszerzono zastosowanie wielowątkowości z podziałem obciążenia na różne rdzenie CPU podczas symulacji procesów fizycznych w środowiskach 2D i 3D. Rozwiązano wiele problemów z symulacją.
- Zaproponowano nowy system renderowania tekstu, który daje większą kontrolę nad przycinaniem i łamaniem tekstu, a także zapewnia wysoką ostrość przy wszelkich rozdzielczościach ekranu.
- Rozszerzono narzędzia do lokalizacji i pracy nad tłumaczeniem.
- Dodano oddzielny dialog do importowania zasobów 2D i 3D, wspierający podgląd oraz zmianę ustawień importowanej sceny, materiałów i właściwości fizycznych.

- Do edytora dodano nowe widgety, takie jak panel cofania zmian oraz nowy dialog wyboru koloru i aktualizacji palety.

- Zaktualizowano interfejs inspekcji, panelu administracyjnego scena i edytor skryptów. Ulepszono podświetlenie składni, dodano możliwość wyświetlania wielu kursorów oraz zapewniono narzędzia do edytowania formatów JSON i YAML.
- Rozszerzono możliwości edytora animacji, w którym dodano wsparcie dla mieszania figur oraz usprawniono procesy wykorzystujące krzywe Béziera. Przepisano kod dla animacji 3D, wprowadzając wsparcie dla kompresji w celu zmniejszenia wykorzystania pamięci. Przepisano system mieszania animacji i tworzenia efektów przejściowych. Rozszerzono możliwości tworzenia złożonych animacji. W celu przechowywania i ponownego wykorzystania stworzonych animacji zaproponowano biblioteki animacji.

- Dodano tryb tworzenia filmów, wykonujący renderowanie sceny klatka po klatce w najwyższej jakości do tworzenia klipów i nagrywania wideo.
- Rozszerzono wsparcie dla hełmów 3D i platform wirtualnej rzeczywistości. Wbudowano wsparcie dla standardu OpenXR, definiującego uniwersalne API do tworzenia aplikacji wirtualnej i rozszerzonej rzeczywistości. Na Windows i Linux zapewniono wsparcie dla wszystkich popularnych hełmów 3D, w tym hełmów SteamVR, Oculus i Monado.
- Zwiększono stabilność podsystemu organizacji gier sieciowych oraz uproszczono proces tworzenia gier wieloosobowych.
- Rozszerzono możliwości systemu dźwiękowego, wbudowano wsparcie dla polifonii, dodano API do syntezatora mowy oraz zrealizowano możliwość pętlowania dźwięku.
- Zapewniono możliwość uruchomienia interfejsu Godot na tabletach Android oraz w przeglądarkach internetowych.

- Dodano nowy system budowania gier dla różnych architektur CPU. Teraz można na przykład zbudować dla Raspberry Pi, Microsoft Volterra, Surface Pro X, Pine Phone, VisionFive, ARM Chromebook i Asahi Linux.
- W API wprowadzono zmiany, które naruszają zgodność. Przejście z Godot 3.x na Godot 4.0 będzie wymagało przepisania aplikacji, jednak dla gałęzi Godot 3.x zapewniono długi cykl wsparcia, którego czas trwania będzie zależał od zainteresowania użytkowników starym API.

Źródło: opennet.ru

















