Po 7 miesiącach prac rozwojowych opublikowano wydanie darmowego silnika gier Godot 3.3, odpowiedniego do tworzenia gier 2D i 3D. Silnik obsługuje łatwy do nauki język programowania logiki gier, graficzne środowisko do projektowania gier, system wdrażania gier jednym kliknięciem, szerokie możliwości animacji i symulacji fizycznych procesów, wbudowany debugger oraz system wykrywania wąskich gardeł w wydajności. Kod silnika gier, środowiska projektowania gier oraz powiązanych narzędzi rozwojowych (silnik fizyczny, serwer dźwięku, backendy renderowania 2D/3D itp.) jest rozpowszechniany na podstawie licencji MIT.
Kod źródłowy silnika został udostępniony w 2014 roku przez studio OKAM, po dziesięciu latach rozwoju komercyjnego produktu profesjonalnego poziomu, który był wykorzystywany do tworzenia i publikowania wielu gier na PC, konsole do gier i 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 Linuxa, Windowsa i macOS.
W oddzielnej gałęzi rozwijany jest nowy backend renderowania oparty na API graficznym Vulkan, który zostanie oferowany w następnej wersji Godot 4.0, zamiast obecnych backendów renderowania przez OpenGL ES 3.0 i OpenGL 3.3 (wsparcie dla OpenGL ES i OpenGL będzie zachowane poprzez zapewnienie działania starego backendu OpenGL ES 2.0/OpenGL 2.1 na nowej architekturze renderowania opartej na Vulkanie). Przejście z Godot 3.x na Godot 4.0 będzie wymagać przerobienia aplikacji z powodu naruszenia zgodności na poziomie API, ale gałąź Godot 3.x będzie miała zapewniony długi cykl wsparcia, którego czas trwania będzie zależał od zapotrzebowania użytkowników na ściśle określone API.
Gałąź Godot 3.3 jest całkowicie zgodna z Godot 3.2 i kontynuuje rozwój stabilnych wydań silnika, dla których zapewniony będzie długi cykl wsparcia. Początkowo zamiast Godot 3.3 planowano wydanie aktualizacji 3.2.4, ale wersje 3.2.x były postrzegane przez użytkowników jako poprawki, mimo że z gałęzi 4.0 przeniesiono nowe funkcje, dlatego projekt przeszedł na klasyczny schemat semantycznego wersjonowania. W szczególności aktualizacja trzeciej cyfry oznaczać będzie teraz jedynie poprawki, druga — wprowadzenie nowych funkcji, a pierwsza — zmiany wpływające na zgodność. Gałąź 3.x.x będzie wspierana równolegle z 4.x.x, dopóki Godot 4.x nie zostanie całkowicie ustabilizowany i dostosowany do całego aktualnego sprzętu.
Godot 3.3 wyróżnia się wprowadzeniem następujących nowości:
- Przygotowano wersję edytora, działającą w przeglądarce internetowej.

- Dodano możliwość eksportowania gier na platformę Android w formacie AAB (Android App Bundle), oprócz pakietów APK. Format AAB pozwala na pobranie tylko tych natywnych bibliotek, które są potrzebne do pracy na aktualnym urządzeniu (np. armeabi-v7a lub arm64-v8a). Dla platformy Android zaimplementowano również możliwość osadzania w aplikacjach elementów opartych na silniku Godot w formie subkomponentów (subview), wykorzystujących część okna. Dodano także wsparcie dla obszarów martwych ekranu (zaokrągleń i wycięć pod kamerę), zdarzeń myszy oraz wejścia z zewnętrznej klawiatury.

- Zaproponowano nowe API do tworzenia i dystrybucji wtyczek na platformę iOS, umożliwiające przeniesienie wtyczek (ARKit, GameCenter, InAppStore) do osobnego repozytorium i rozwijanie ich niezależnie od silnika Godot. Wcześniej to API zostało wdrożone na platformie Android.
- Ulepszono narzędzia eksportu gier dla Web (platforma HTML5). Dodano obsługę wielowątkowości i skryptów GDNative dla gier uruchamianych w przeglądarkach, jednak ze względu na ograniczenia platformy HTML5 ich implementacja jest niekompatybilna z wersjami dla gier natywnych. Ponadto implementacja wątków jest związana z API SharedArrayBuffer, które nie jest dostępne we wszystkich przeglądarkach. Udostępniono trzy osobne tryby eksportu — Regular, Threads i GDNative. W profilu wielowątkowym dodatkowo dodano wsparcie dla API AudioWorklet, co pozwala osiągnąć lepszą jakość wyjścia dźwięku bez blokady głównego wątku. Znacznie poprawiono wsparcie dla kontrolerów i wirtualnych klawiatur.

- Dodano wsparcie dla budowy gier na nowym sprzęcie Apple wyposażonym w chip ARM M1. Dodano wsparcie dla dołączania podpisów cyfrowych do plików wykonywalnych generowanych dla macOS.
- Z gałęzi 4.0 przeniesiono zmodernizowane API do organizacji wielowątkowości, które wykorzystuje możliwości standardu C++14, zwiększono niezawodność działania na różnych platformach oraz przeprowadzono optymalizację wydajności.
- Z gałęzi 4.0 przeniesiono optymalizację wykorzystującą strukturę BVH (Bounding Volume Hierarchy) zamiast metody Octree do dynamicznego podziału przestrzeni podczas renderowania. BVH jest teraz używane domyślnie i rozwiązuje wiele problemów z wydajnością.
- Wykorzystano zunifikowaną implementację 2D batching (Batching, optymalizacja mająca na celu zmniejszenie wywołań renderowania poprzez uwzględnienie wzajemnego usytuowania obiektów), która może być stosowana zarówno dla OpenGL ES 3, jak i OpenGL ES 2. Sama optymalizacja teraz obejmuje więcej obiektów, w tym linie i wielokąty.
- Dodano nowe narzędzie do tworzenia map oświetlenia (lightmapper), które wykorzystuje metodę śledzenia ścieżki i obsługuje redukcję szumów za pomocą biblioteki oidn (Open Image Denoise). Nowy lightmapper używa do obliczeń CPU i rozwiązuje większość problemów z jakością, które były charakterystyczne dla starszego przetwarzania. Dodatkowo przygotowano wersję lightmappera, która wykorzystuje GPU, ale jest zależna od API Vulkan i pojawi się dopiero w gałęzi 4.0.

- Z gałęzi Godot 4.0 przeniesiono wiele usprawnień związanych z renderowaniem, takich jak szybkie programowe skinowanie, zoptymalizowane transformacje ukrytych obiektów 3D, konfigurowana liczba źródeł światła dla każdego obiektu oraz ulepszona renderowanie cieni za pomocą filtra PCF.

- W silniku symulacji procesów fizycznych poprawiono obsługę różnych typów kolizji.
- Do edytora dodano pełne możliwości kopiowania i wklejania węzłów, umożliwiające przenoszenie między różnymi scenami.
- Ulepszono tryb inspekcji, który zapewnia wizualne wyróżnienie subzasobów.

- Dodano wsparcie dla ustalania domyślnych ustawień dla importowanych zasobów.

- Przeprowadzono prace nad zwiększeniem wygody pracy w edytorze 3D, w tym dodano nieskończoną, dynamiczną siatkę 3D oraz znacznie poprawiono realizację obrotu i zaznaczania za pomocą gizmo (wskaźnik osi współrzędnych).

- W narzędziach do pracy zespołowej dodano zabezpieczenia przed wprowadzaniem zmian w scenach, które są już otwarte przez innych użytkowników (wyświetlane jest ostrzeżenie, jeśli podczas zapisywania wykryte zostaną nowsze wersje otwartych plików).
- Ulepszono import z plików w formacie FBX.

- Dodano wtyczkę OpenXR z obsługą o tej samej nazwie do tworzenia aplikacji rzeczywistości wirtualnej i rozszerzonej. Do portu HTML5 do tworzenia gier opartych na technologiach rzeczywistości wirtualnej dodano wsparcie dla specyfikacji WebXR.

- Dodano obsługę przesyłania i odtwarzania dźwięku w formacie MP3 (wcześniej nieobsługiwany z powodu patentów).
- W GraphEdit dodano wsparcie miniaturki całej struktury (minimap), wyświetlanej w prawym dolnym rogu, umożliwiającej natychmiastowe objęcie wzrokiem wszystkich węzłów.

Źródło: opennet.ru











