Po pięciu miesiącach rozwoju opublikowano wersję darmowego silnika gier Godot 4.2, odpowiedniego do tworzenia gier 2D i 3D. Silnik obsługuje łatwy do nauki język do definiowania logiki gry, graficzne środowisko do projektowania gier, system jednoczesnego wdrażania gier, szerokie możliwości animacji i symulacji procesów fizycznych, wbudowany debuger i system identyfikacji wąskich gardeł wydajności. Kod silnika gier, środowiska projektowania gier oraz towarzyszących narzędzi rozwojowych (silnik fizyczny, serwer dźwięku, backendy renderowania 2D/3D itd.) jest udostępniany 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.
Główne zmiany:
- Dla twórców gier 2D dodano wsparcie dla wymuszonego całkowitego skalowania, pozwalającego uzyskać kwadratową siatkę pikseli, niezależnie od rzeczywistego współczynnika proporcji. Umożliwiono uzyskiwanie barycentrycznych współrzędnych normalnych z punktów przecięcia obiektu z promieniem. Dodano metody Rotate_toward i Angle_difference do poprawnej obsługi rotacji i kątów. W węzłach Line2D dodano właściwość „closed” do tworzenia zamkniętych linii z ciągłym wypełnieniem.

- Przeprowadzono prace mające na celu zwiększenie niezawodności systemu animacji. Przebudowano i ujednolicono węzły AnimationPlayer oraz AnimationTree, a wspólne części zostały wydzielone do klasy pośredniej AnimationMixer. Dodano opcję dla deterministycznego miksowania. W podglądzie animacji dodano tryb kalki (onion skinning), który obejmuje wyświetlanie półprzezroczystych nakładek z poprzednimi i następującymi klatkami animacji.

- Możliwości „zapekiwania” siatki nawigacyjnej (baking, konwersja do formy statycznej) dla 2D zbliżone są do możliwości wcześniej dostępnych w nawigacji 3D, na przykład dla siatek 2D wdrożono wsparcie dla pracy z ciałami fizycznymi, instancjami siatek wielokątnych, prostymi wielokątami i mapami kafli (tilemap). W serwery 2D i 3D dodano wsparcie dla wielowątkowego zapekiwania siatek.

- Przeprowadzono refaktoryzację kodu do pracy z kafelkami i mapami kafelków. Zoptymalizowano operacje grupowania bloków i sortowania w osi Y, co znacząco skróciło czas aktualizacji kafelków. Udoskonalono wygodę tworzenia map kafelków i ich użytkowania. Dodano narzędzie do obracania i przekręcania kafelków przy ich umieszczaniu. Ulepszono narzędzia do edytowania wielokątów i scen kafelkowych.

- W edytorze skryptów GDScript pojawiła się możliwość tworzenia nazwanych obszarów kodu do zwijania bloków podczas edycji i uproszczenia nawigacji. W debugerze skryptów dodano pełne wsparcie dla kodu wielowątkowego, stosu wykonania i punktów przerwania. W skryptach opartych na C#/.NET wprowadzono wsparcie dla platform Android (wymaga .NET 7.0+) i iOS (wymaga .NET 8.0). W skryptach GDScript rozszerzono wsparcie dla statycznie typowanego kodu, dodano obsługę literalnych ciągów r-string (surowy ciąg), a także rozszerzono możliwości operatora match.

- W widoku 3D poprawiono wsparcie zarządzania transformacją w stylu Blendera, używając myszy i skrótów klawiszowych. Rozszerzone informacje wizualne w widoku 3D są teraz pokazywane tylko dla wybranych obiektów. Dodano dodatkowe wskaźniki dla takich elementów, jak dekale i objętość mgły. Ulepszono pracę z gizmo — każdą stronę obiektów bryłowych można teraz oddzielnie rozszerzać w oknie podglądu.

- Udoskonalone menu kontekstowe i podpowiedzi w panelach «Inspekcja» i «Sygnaly». W edytorze motywów dodano podpowiedzi opisujące właściwości. W panelu pracy z systemem plików dodano możliwość wizualnego wyróżniania katalogów poprzez przypisanie im różnych kolorów. Przeprojektowano interfejs edytora zasobów gradientów. W edytorze obszarów tekstur zunifikowano pracę ze wszystkimi obsługiwanymi zasobami, w tym stylami i atlasami.

- W bibliotece zasobów ulepszono wyświetlanie wyników wyszukiwania i dodano możliwość wyboru innego katalogu do instalacji dodatku lub zasobu.

- W menedżerze projektów przeprojektowano rozmieszczenie podstawowych elementów sterujących i zmodernizowano interfejs importu projektu.

- Zwiększono możliwości tworzenia wtyczek do edytora. Zapewniono dostęp do wszystkich funkcji edytora poprzez klasę EditorInterface. Wprowadzono wygodne metody do bezpośredniego uzyskiwania dostępu do widoków 2D i 3D. Dodano możliwość wyświetlania okna dialogowego z ostrzeżeniem o niezapisanych zmianach.
- Kontynuowano rozwój eksperymentalnego systemu rozszerzeń GDExtension, który umożliwia korzystanie z języków niskiego poziomu, takich jak C++, jako języków skryptowych do gier, bez przebudowy silnika i wprowadzania zmian w kodzie. Dodano możliwość korzystania z GDExtensions podczas eksportu do Web.
- W interfejsie użytkownika zmieniono obsługę fokusu. Wprowadzono możliwość przenoszenia fokusu na poszczególne zakładki w panelu zakładek, w tym podczas nawigacji za pomocą klawiatury. Węzły sterujące (Control) zyskały metodę do wyszukiwania następnego sąsiedniego elementu, na który można przenieść fokus. Zdecydowanie przeprojektowano węzły budowy grafów (GraphEdit i GraphNode). Zwiększono możliwości dostosowywania paska narzędzi głównego węzła GraphEdit.

- Dodano możliwość zmiany typu importu zasobów w locie z automatycznym aktualizowaniem scen i zasobów, które nie wymagają ponownego uruchamiania edytora. Rozszerzono dostępne opcje importu oraz dodano możliwość zmiany właściwości fizycznych importowanych obiektów, a także parametrów cieni i widoczności. Dodano możliwość podglądu animacji w oknie dialogowym importu. Rozszerzono wsparcie dla importu zasobów z Blendera w formacie GLTF. Dodano wsparcie dla importu obrazów w formacie KTX.

- Wprowadzone zostały optymalizacje ukierunkowane na zwiększenie wydajności renderowania. W celu przyspieszenia działania na urządzeniach mobilnych dokonano podziału barier rastrowych na komponenty wierzchołkowe i fragmentowe. Przyspieszono generację tekstur szumowych. Dodano wstępne przejście do obliczania głębokości. Skrócono czas ładowania i kompilacji shaderów. Zoptymalizowano przechowywanie siatek wielokątowych w pamięci. Dodano wsparcie dla kompresji siatek wielokątowych w celu zmniejszenia przepustowości podczas ich przesyłania.
- Dodano możliwość tworzenia własnych obiektów tekstur (przykład zastosowania shaderów obliczeniowych do tworzenia tekstury z efektem wody).
- Dodano API do wywoływania kodu w wątku renderingu, co może być potrzebne, na przykład, kiedy trzeba zsynchronizować shader obliczeniowy z renderingiem.
- Dodano wsparcie dla wersji 2.2 technologii supersamplingowej AMD FSR (FidelityFX Super Resolution), przy użyciu algorytmów skalowania przestrzennego i rekonstrukcji detali w celu ograniczenia utraty jakości obrazu podczas skalowania i przekształcania do wyższej rozdzielczości.
- Proponowany jest nowy tłumik hałasu JNLM, wykorzystujący mapy oświetleniowe (lightmapper) i shadery obliczeniowe. JNLM jest znacznie szybszy od wcześniej stosowanej biblioteki usuwania szumów OIDN (Open Image Denoise), ale w niektórych sytuacjach ustępuje jakością.
- Do metod renderowania Forward+ i Mobile dodano wsparcie dla 2D-renderingu w rozszerzonym dynamycznym zakresie jasności (HDR), co pozwala na realizację niektórych efektów 3D w grach 2D, takich jak świecenie. Do metody renderowania Compatibility dodano wsparcie dla trójwymiarowych cieni.
- Dla macOS i Windows wprowadzono nowy sterownik renderingu OpenGL, korzystający z warstwy ANGLE, która przekłada wywołania OpenGL na API Direct3D 11 i Metal.
- System symulacji cząstek został przerobiony, aby uprościć utrzymanie i rozszerzenie kontroli ruchu cząstek. Teraz można animować i dziedziczyć prędkość ruchu, a także zmieniać ilość emitowanych cząstek. Dodano narzędzie do przekształcania kodu generującego cząstki korzystającego z CPU na równoważny kod do wykorzystania GPU.
- Dodano wsparcie dla natywnych dla Linuxa, macOS i Windows dialogów wyboru plików, jak również możliwość kopiowania i wklejania obrazów za pomocą schowka.
- Architektura Godot dla platformy Android została przerobiona, aby pozbyć się powiązania z komponentem Android Fragment, co pozwoliło skrócić czas uruchamiania aplikacji i gier oraz zrealizować możliwość pracy z wieloma oknami.
- Udało się zorganizować oficjalne linuxowe wersje edytora Godot na 32- i 64-bitowe platformy ARM.
Źródło: opennet.ru











