Czekania nadszedł kres, oto nadchodzi Godot Engine 3.1

Dzisiaj ma miejsce premiera darmowego i otwartoźródłowego silnika do tworzenia gier Godot Engine. Ten niewymagający instalacji silnik, ważący po rozpakowaniu nieco ponad 60MB, oferuje wypełnione funkcjami środowisko do tworzenia różnorakich programów. Pośród swoich braci o otwartym kodzie źródłowym wyróżnia się m.in. tym, że posiada graficzny interfejs użytkownika oraz ogromną społeczność dzięki czemu ostatnio stał się trzecim najszybciej rozwijającym się otwartoźródłowym projektem na Githubie. Co ważne, działa on natywnie na Linuxie, Windowsie i macOS.

Na początek trochę historii

Godot Engine został stworzony w 2007r. przez dwie osoby: Juana 'reduz' Linetsky oraz Ariela 'punto' Manzur. W lutym 2014r. po kilku latach prac nad nim, kod źródłowy został udostępniony na otwartej i bardzo liberalnej licencji MIT. Jeszcze w grudniu tego samego roku doczekał się pierwszej stabilnej wersji 1.0. Niecały rok później projekt przystąpił do Software Freedom Conservancy. Na początku 2016r. miała miejsce premiera wersji 2.0 przynosząca między innymi możliwość modyfikowania wielu scen i lepsze tworzenie ich instancji oraz ulepszoną przeglądarkę plików. Projekt otrzymał wsparcie finansowe w wysokości 44,000$ w celu implementacji obsługi Web Sockets, WebAssembly, WebGL 2.0 czy chociażby wsparcia dla języka C#. W sierpniu autorzy rozpoczęli zbiórkę, poprzez serwis Patreon, dzięki czemu w chwili obecnej otrzymują nieco ponad 9000$ miesięcznie na rozwój silnika. 29 stycznia 2018r została wydana wersja 3.0, która przyniosła wsparcie dla C#, przepisany silnik 3D, silnik fizyki Bullet, wsparcie VR i wiele innych. Nieco ponad rok później ma miejsce premiera wersji 3.1, którą zajmę się w tym wpisie.

Nowości

Nowy Wygląd Edytora

Pierwszą i od razu rzucającą się w oczy zmianą jest nowy domyślny wygląd edytora. Wiele osób narzekało na niewielki panel inspektora, w którym ze względu na rozmiar, ciężko było cokolwiek znaleźć. W najnowszej wersji Godota, inspektor zajmuje całą wysokość edytora, a panel scen i importu został przesunięty na lewą stronę, zmuszając do skurczenia się panelu przeglądarki plików.

Dodatkowo do przeglądarki plików został dodany podgląd plików w widoku drzewa, pozwalającego na wygodne przechodzenie między folderami przy zajęciu minimalnej ilości miejsca. W każdej chwili można wrócić do poprzedniego wyglądu, za pomocą dedykowanego do tego przycisku.

Znajdujące się już w wersji 3.0 pomocnicze linie pomagające w orientacji w drzewie scen, określające relację rodzic <-> dziecko, zostały w najnowszej wersji Godota domyślnie włączone.

(Ponowne) Wsparcie dla OpenGL ES 2.0

Jedną z najważniejszych zmian jest ponowne zapewnienie wsparcia dla OpenGL ES 2.0 porzuconego wraz z wersją 3.0 silnika. Dzięki obsłudze starszej wersji OpenGL ES, oferującej uproszczone lecz mniej zasobożerne funkcje niż jego wersja 3.0, silnik oraz gry stworzone z jego pomocą, znowu będą mogły się uruchomić na starszym sprzęcie, a w szczególności na słabszych smartfonach oraz komputerach. Zmiana ta podyktowana jest również zbyt wolnym rozpowszechnianiem się urządzeń obsługujących OpenGL ES w wersji 3.0 i jego tragiczną obsługą w sterownikach wielu producentów sprzętu(zwłaszcza mobilnego).

Opcjonalne Typowanie i system ostrzeżeń dla GDScript

Godot 3.1 przynosi wiele usprawnień wydajnościowych dla własnego języka programowania GDScript, wzorowanego na Pythonie. Od tej wersji wbudowany w silnik edytor tekstu, domyślnie ostrzega użytkownika w sytuacjach gdy np. stworzy zmienną której nigdy nie użyje, będzie próbował wykonać konwersję stratną albo napisze instrukcje, których program nie wykona - np. po instrukcji return.

Kolejną zmianą jest umożliwienie użytkownikom określania typów danych dla zmiennych, dzięki czemu daje on lepszą kontrolę nad kodem oraz podpowiedzi możliwych do użycia zmiennych i funkcji, związanych z typem danego obiektu. W kolejnych wersjach planowane jest również zwiększenia wydajności języka jeśli zmienne będą miały nadany typ.

Ciekawą zmianą jest wprowadzenie możliwości dodania własnej klasy poprzez słowo kluczowe class_name. Poprzez nie, mamy możliwość używania własnych klas, w identyczny sposób w jaki używamy tych wbudowanych. Dodatkowo została dodana możliwość przypisania ikony własnej klasie, ułatwiając nam poruszanie się po menu tworzenia węzłów.

OpenSimplex Noise

OpenSimplex Noise jest kolejnym ułatwiającym pracę i życie programistów narzędziem. Jest to algorytm do generacji szumów będący wolnym od patentów odpowiednikiem algorytmu Simplex Noise. Szumy generowane przez niego mogą zostać wykorzystane w różnoraki sposób, począwszy od losowego rozmieszczenia jednostek wroga na mapie aż do proceduralnego tworzenia otwartych światów tj. Minecraft.

Możemy również wykorzystać ten algorytm, do stworzenia tekstury szumu, która może zostać wykorzystana do zanikania obiektów lub choćby jako Normal Map. Użycie takiej tekstury jest bardzo proste, wystarczy, że w inspektorze stworzymy ją i za pomocą odpowiednich suwaków ustawimy jej parametry takie jak wielkość czy ziarno.

Dokumentacja i dema

Wraz z nową wersją Godota, różnych ulepszeń doczekała się również jego dokumentacja. Oprócz poprawy błędów, uzupełnienia brakujących elementów i tworzenia zupełnie nowych działów, została dodana możliwość tłumaczenia dokumentacji. Na chwilę obecną język polski jest na 3 miejscu ze względu ilość przetłumaczonych tekstów. Przetłumaczone na nasz język jest około 93% programu i ponad 32% dokumentacji.

Usprawnieniu doczekały się również oficjalne dema, których większość część została zaktualizowana do obsługi najnowszej wersji silnika. Prawdziwymi perełkami jednak są projekty udostępniane przez użytkowników, którzy jeszcze używali Godota w wersjach niestabilnych i przygotowywali do niego masę poradników oraz udostępniali kody źródłowe swoich gier. Również autor silnika, reduz, przygotował na tę okazję projekt Third Person Shooter, dostępny wraz z kodem źródłowym, świetnie pokazujący możliwości silnika.

Graficzny edytor shaderów

Graficzny edytor shaderów powraca po krótkiej nieobecności w wersji 3.0. Znacząco ułatwia tworzenie shaderów dla osób niezaznajomionych z ich pisaniem w formie kodu, które stanowi wyzwanie nawet dla zaawansowanych użytkowników. W stosunku do poprzedniej wersji: posiada automatyczną konwersję pomiędzy Vec3(Vector3) a Skalarem, łatwiejsze ustawienie wejścia dla lepszej organizacji grafu, możliwość rozszerzanie go poprzez skrypty oraz podgląd niektórych elementów(tj. obrazy).

Edytor Animacji

Istotną zmianą w tej wersji Godota jest przepisanie od podstaw edytora animacji. Ten liczący ponad 10 lat element, z czasem ciągle ulepszany, doczekał się momentu w którym jedyną sensowną drogą rozwoju stało się jego całkowite przepisanie.

Najbardziej widoczne zmiany zostały poczynione w interfejsie, który teraz zajmuje mniej miejsca. Wiele elementów zostało wrzuconych do różnego rodzaju menu albo kompletnie wyrzuconych, chociażby przyciski do przesuwania ścieżek w górę i w dół, które zostały zastąpione przez zwykłe przeciąganie ścieżek wewnątrz edytora.

Podczas tworzenia animacji, przydatny będzie również podgląd niektórych typów klatek kluczowych tj. sprity. Dodatkowo takie klatki kluczowe, od czasu przebudowania Inspektora, mogą być w nim edytowane.

Dodano również możliwość grupowania ścieżek i ich filtrację, dzięki czemu przy bardziej zaawansowanych projektach, zrozumienie działania skomplikowanych animacji i wprowadzenie stosownych zmian, będzie wymagało mniejszego nakładu czasu i pracy. Wysłuchane zostały prośby o możliwość kopiowania i wklejania ścieżek i odbywa się to poprzez wyskakujące okienko.

Inne zmiany

Soft Body i Cloak - Symulacja takich elementów jak peleryny, obrusy, flagi i innych "miękkich" ciał
Skeleton Inverse Kinematic - Odwrotna Kinematyka dostosowująca szkielet do danego położenia
Ragdoll - Wsparcie dla symulacji opadania ciał
Constructive solid geometry - Technika tworzenia bryły z innychbrył za pomocą operacji dodawania, odejmowania ich od siebie oraz wyznaczania ich części wspólnych
Axis Handling - Obsługa więcej niż 2 stanów(wciśnięty lub też nie) klawisza, gałki od pada itp.
C# - Nie wymaga już konkretnej wersji mono, umożliwiono eksport na platformy Windows, Linux i macOS oraz poprawiono masę błędów

Podsumowanie

Jak widać rozwój Godota nie stoi w miejscu i z każdą kolejną wersją staje się coraz bardziej widoczny na rynku tworzenia gier. Zbiórka na Patreonie zapewnia twórcom stałe źródło dochodu, dzięki czemu mogą w całości zaangażować się w rozwój silnika. Kolejne miesiące zapowiadają się ciekawie, ponieważ planowane jest w tym czasie zaimplementowane takich funkcji jak obsługa kolizji cząsteczek, wykorzystanie wielu rdzeni dla siatek nawigacji czy oczekiwane przez wielu wsparcie dla API Vulkana, które będzie prawdopodobnie wprowadzone w wersji 4.0 silnika.

Godot ma szansę zgarnąć ogromną część rynku jako silnik otwartoźródłowych gier, który był przez lata bardzo rozdrobniony. Póki co na ten krok zdecydowali się twórcy strategii czasu rzeczywistego - Unknown Horizons. Godot nadaje się również do tworzenia różnorakich programów typu Wonderdraft, które pomaga w wykonywaniu map do gier. Wielu polskich twórców postanowiło tworzyć w Godocie gry takie jak Tanks of Freedom czy będące jeszcze w fazie produkcji RivenTails: Defense oraz AV: Rings of Saturn.

Na koniec pragnę przypomnieć, że Godot jest tworzony przez społeczność, więc każda pomoc tj. zgłaszanie błędów, wsparcie pieniężne, tworzenie poprawek do silnika czy tłumaczenie programu i dokumentacji, będzie bardzo mile widziane. 

Linki

Strona główna Godota - https://godotengine.org/
Dokumentacja - https://docs.godotengine.org/en/latest/
Zbiórka na Patreon - https://www.patreon.com/godotengine