Tworzenie gier w Godot Engine — omówienie wyglądu i podstawowych elementów silnika

Z racji tego, że poprzedni wpis o premierze i nowościach cieszył się całkiem dużym zainteresowaniem, to postanowiłem teraz opisać i przybliżyć nieco wygląd i podstawowe elementy Godota 3.1.

Dla tych co nie czytali TEGO WPISU przypomnę, że Godot Engine jest silnikiem do tworzenia gier, udostępnionym na licencji MIT umożliwiającej na używanie silnika bez żadnych opłat i obostrzeń.

Pierwsze Uruchomienie

Aby uruchomić Godota należy najpierw go pobrać. W tym celu udajemy się na stronę Godota - https://godotengine.org/download i pobieramy wersję Standard zgodną z wersją naszego systemu operacyjnego(przeważnie 64bit)

Aby uruchomić Godota należy posiadać kartę graficzną obsługującą OpenGL ES 2 (OpenGL 2.1)

UWAGA
Godot używa znacznej ilości rozszerzeń OpenGL i opiera się na ich poprawnym działaniu, więc przed jego uruchomieniem, upewnij się, że posiadasz najnowsze dostępne sterowniki do karty graficznej - najlepiej ze strony jej producenta.

UWAGA 2
Znaczna część kart graficznych Intela i AMD sprzed 2013 roku jest już niewspierana na Windowsie i zawiera znane błędy, które mogą powodować błędne działanie Godota. Jednym z rozwiązań jest użycie systemu Linux, którego wbudowana otwartoźródłowa biblioteka Mesa oferuje zwykle lepszą obsługę tych kart graficznych oraz niekiedy zapewnia wyższą dostępną wersję OpenGL oraz Vulkan niż na Windowsie.
Osobiście polecam Linux Mint Mate albo Zorin OS Lite, które wyglądem przypominają Windowsa i zużywają niewielkie ilości zasobów systemowych.sfas

Po pobraniu należy rozpakować archiwum np. za pomocą 7-zip. Naszym oczom powinien ukazać się jeden plik, który należy uruchomić aby pokazał się pusty menedżer projektów.

Na początek zalecam zmienić język na angielski, za pomocą przycisku po prawej stronie u góry. Uruchamiamy ponownie menedżer projektów.

Teraz tworzymy nowy projekt za pomocą przycisku „New project” i wybieramy wersję GLES jaką zamierzamy używać.

GLES 2 - oferuje domyślnie bardzo dobrą wydajność i jest dostępny na większości urządzeń, nie wspiera jednak wszystkich rodzajów węzłów(node - podstawowy obiekt w silniku) takich jak GIProbes, Particles(efekty cząsteczkowe na GPU, GLES 2 wspiera tylko je na CPU)

GLES 3 - oferuje nowoczesne lecz zasobożerne funkcje, powinien być używany gdy bardziej zależy nam na jakości niż na kompatybilności ze starszym sprzętem.

Wygląd Programu

Edytor Godota składa się z czterech głównych części:

- Głównego obszaru roboczego znajdującego się pośrodku ekranu. Obejmuje on obszar do umieszczania i modyfikacji węzłów 2D i 3D oraz edytor skryptów(kolor fioletowy)

- 8 miejsc na panele, ustawione są po 4 po obu stronach obszaru roboczego(jeśli w pionie jest zajęty jeden panel, to rozciągany jest on na całą wysokość edytora, a jeśli w pionie nie ma żadnego zajętego panelu, to nie jest on wcale wyświetlany)(kolor czerwony, zielony i żółty)

- Rozsuwanego panelu na dole, zawierającego debuger wraz z narzędziami do analizowania działania programu oraz narzędzia do edycji Animacji czy Dźwięku(kolor niebieski)

- Górnej belki zawierającej menu Godota, przycisków do zmiany aktualnego trybu(2D, 3D, edytor skryptów) oraz przycisku do zmiany aktualnej wersji GLES edytora(kolor szary)

- Na samej górze widzimy pasek menu zawierający opcje do zarządzania projektem, jego eksportem, opcje projektu i edytora, niektóre opcje do debugowania, informacje o Godocie i jego autorach oraz przycisk do zmiany aktualnie uruchomionej wersji GLES edytora.

- Po lewej stronie na górze widzimy panel scen(scene dock) zawierający drzewo sceny(scene tree). Wyświetla on węzeł(node) wraz z jego dziećmi oraz ikonami pokazującymi czy do konkretnego węzła przyporządkowano skrypt lub też zablokowano jego poruszanie się. Wyświetlane są na również pomocnicze linie ułatwiające rozpoznawanie bezpośrednich rodziców danego węzła.

- Domyślnie ukryty za zakładką Import panel importu(import dock), znajduje się w tym samym miejscu co panel scen. W zależności od typu naszej gry(2D lub 3D) możemy chcieć użyć opcji importu obrazów po to by otrzymać potrzebne tekstury różniące się zajętością pamięci VRAM, jakością wyświetlenia czy czasem potrzebnym na ich użycie.

- Niżej znajduje się panel systemu plików(file system dock) w którym możemy zarządzać plikami naszego projektu. Musimy mieć na uwadze, że wyświetlane są tutaj(istnieją już propozycje zmiany) tylko pliki, które Godot może obsłużyć np. PNG, JPG, GD(skrypt Godota) czy DAE(model 3D). Pliki projektu należy przenosić tylko i wyłącznie wewnątrz tego panelu a nie w systemowej przeglądarce plików, gdyż podczas przenoszenia w tym panelu, Godot aktualizuje wszystkie odniesienia do tego pliku, zapewniając poprawne odnajdywanie zależności do przenoszonych plików.

- Po prawej stronie widzimy rozciągający się na całą wysokość edytora panel inspektora(inspector dock). Jest to jeden z najważniejszych elementów edytora mogący wyświetlać właściwości danego węzła lub zasobu(resource). Wraz z premierą wersji 3.1, umożliwiono w nim modyfikację zasobów, bezpośrednio z węzła zawierającego te zasoby.

- Kolejnym panelem, kryjącym się pod zakładką Node jest panel sygnałów i grup. W nim to możemy przyporządkować każdy z węzłów do danych grup. Co ważniejsze można w nim graficznie przyporządkować sygnał dla danego węzła dzięki czemu można beż konieczności pisania kodu połączyć dwa węzły pewnym zdarzeniem np. kolizją dwóch ciał i zapewnić im potrzebne informacje o sobie lub kolizji.

- Na dole możemy zauważyć niewielki nierozwinięty pasek na którym znajdują się licząc od lewej:

- Output służący do wypisywania na ekranie komunikatów, błędów, czy wiadomości pisanych przez użytkownika.

- Debugger - służy do analizowania błędów i ostrzeżeń na które się Godot natknął przy analizowaniu naszych skryptów. Można również za jego pomocą analizować linijka po linijce wartości konkretnych obiektów. W zakładce znajduje się również profiler oraz różnorakie „monitory” służące do, jak sama nazwa wskazuje, monitorowania różnych statystyk np. ilości aktualnie używanej pamięci lub ilości narysowanych węzłów.

- Audio, Animation i inne - Są to zakładki potrzebne do edytowania elementów takich jak dźwięk, animacje czy tilemapy(niektóre są dostępne tylko podczas edytowania konkretnych węzłów)

- Na środku widzimy główny obszar edytora zwanym obszarem roboczym(viewport).

Domyślnie Godot uruchamia się w trybie i przestrzeni 3D ukazując siatkę 100 na 100 jednostek.

W zależności od rodzaju tworzonej gry, może być konieczna zmiana przestrzeni na 2D za pomocą przycisku znajdującego się nad tym obszarem, która w przeciwieństwie do niektórych innych silników graficznych, operuje na pikselach.

Trzeci przycisk przenosi nas do edytora skryptów(Script Editor). Wbudowany w silnik, zawiera, wiele przydatnych narzędzi takich jak zawijanie wierszy, auto uzupełnianie kodu czy kolorowanie składni.

Ostatnią zakładką jest biblioteka zasobów(Assets Library). Możemy za jego pomocą pobierać różne projekty, zasoby lub wtyczki które możemy użyć zgodnie z ich licencją.

Podstawowe rodzaje węzłów

- Node - Jest to podstawowy typ węzła, który jest bazą dla wszystkich innych. Dla trybu 3D głównym węzłem od którego dziedziczą wszystkie inne jest Spatial, dla 2D - Node2D a dla UI - Control

- (CPU)Particles - rodzaj węzła, którego celem jest wyświetlanie cząsteczek. W zależności od rodzaju jest cząsteczki obliczane są na procesorze - CPUParticles(2D) dostępne GLES 2 i 3, lub na karcie graficznej - Particles(2D) dostępne tylko na GLES 3. Stosowany jest do wyświetlania takich elementów jak ogień, śnieg, czy gwizady.

- Sprite - rodzaj węzła, który umożliwia wyświetlanie obrazów.

- Tilemap - 2D, Gridmap - 3D - węzły, które z części lub całości obrazów lub danych siatek tworzą mapę obiektów, które można wykorzystać do stworzenia własnych struktur np. map poziomów do gier.

- Area(2D) - Jest to określony przez użytkownika obszar umożliwiając wykrywanie innych obszarów lub ciał. Może być używany np. do zadawania obrażeń jednostkom znajdujących się na danym terytorium.

- PhysicsBody(2D) - RigidBody(2D), KinematicBody(2D), StaticBody(2D) - jest to grupa węzłów, zapewniających możliwość wykrywania kolizji między sobą. W zależności od rodzaju, możemy nimi sterować bezpośrednio przez kod(RigidBody) lub za pomocą przykładania do nich sił, które to oblicza silnik fizyki.

- CSG - 3D - grupa węzłów, umożliwiających proste tworzenie zaawansowanych brył poprzez operacje dodawania i odejmowania od siebie brył prostych takie jak kula, walec czy sześcian.

- Navigation(2D) - węzeł odpowiedzialny za znajdowanie najkrótszej ścieżki pomiędzy wyznaczonymi punktami.

- Timer - rodzaj węzła mogący odmierzać czas oraz za pomocą sygnałów informować o zakończeniu odliczania inny węzeł.

- Control, TextureButton, Label - są to rodzaje węzłów używane przez użytkowników do tworzenia graficznego interfejsu użytkownika np. pasek życia, licznik punktów.

Unity3D vs Godot

Godot nie bez podstawy jest porównywany do Unity. Posiadają bardzo wiele cech wspólnych ze sobą lecz różnice są znaczące. Oto niektóre z ich cech:

- Platformy do uruchomienia edytora

Godot: Windows, macOS, X11(Linux, *BSD)

Unity: Windows, macOS, Linux(nieoficjalny)

Godot w przeciwieństwie do Unity posiada oficjalny port swojego silnika na GNU/Linux oraz BSD, dzięki czemu ilość problemów jakich doświadczają użytkownicy na tym systemie, w stosunku do wersji nieoficjalnej silnika Unity, powinna być znacząco mniejsza.

- Platformy do uruchomienia gry

Godot: Windows, macOS, X11,Android, iOS,WebAssembly, Konsole(czyt. Niżej),Oculus Rift, SteamVR

Unity: Windows, macOS, Linux, Android, iOS, Windows Phone, Tizen, WebAssembly lub asm.js, PS4, PS Vita, Xbox One, Xbox 360, Wii U, Nintendo 3DS, Oculus Rift, SteamVR, Google Cardboard, Playstation VR, Gear VR, HoloLens, Android TV, Samsung SMART TV, tvOS

Jak widać Unity wspiera dużo więcej platform, na które można tworzyć gry, od Godota. Ma to związek zarówno z umowami jakie zawiera Unity, jak i licencją narzędzi SDK na poszczególne platformy, które są niekompatybilne z licencją MIT Godota. Ze względu na te ograniczenia licencyjne oraz potrzebę posiadania kont deweloperskich, programiści tworzący gry w Godocie muszą napisać własne narzędzia do przeportowania gry lub skorzystać z usług firm zewnętrznych(np. Lone Wolf Technology)

- Licencja i Koszt

Godot: Licencja MIT, darmowy do dowolnego użytku

Unity: Własna restrykcyjna licencja, darmowy do $100K, $25($35) miesięcznie Plus, $125 miesięcznie Pro

Godot ze względu na licencję MIT, jest całkowicie darmowy, zarówno do własnych projektów, jak i projektów komercyjnych. Projekt utrzymuje się z dobrowolnych wpłat.

Unity posiada okrojoną(choćby i przez brak czarnego motywu) darmową wersję(do $100k), wersję Plus z miesięczynm abonamentem $25 lub $35(w zależności od sposobu płatności) oraz wersję Plus kosztującą miesięcznie $125. Unity posiada również restrykcyjną licencję ściśle określającą co deweloper może robić ze SWOJĄ grą, a czego nie może.

Jeszcze w tym roku narzędzie Spatial OS(przeznaczone do tworzenia serwerów multiplayer w chmurze) we wpisie blogowym opisało problem wynikający ze zmiany licencji Unity, która to kompletnie blokowała działanie tego narzędzia. Według Unity blokada była spowodowana naruszeniami licencyjnymi. W wyniku tego incydentu, część deweloperów przeniosła się do konkurencyjnych rozwiązań.

Z racji posiadania licencji MIT, Godot jest bezpieczniejszym wyborem w kwestii licencji od Unity.

- Waga programu

Godot: 50-60MB Edytor, 600MB wszystkie szablony eksportu, nie wymaga instalacji

Unity: 1,9 GB Edytor, 10,4 GB wszystkie szablony eksportu(11,6GB z Visual Studio), wymagana jest instalacja, wymaga konta Unity

Olbrzymia waga Unity, jest jego jedną z największych wad. Naszpikowany funkcjami edytor(z których większość nigdy nie zostanie przez wielu użyta) zajmuje prawie 2GB miejsca na dysku. Dołączając do tego konieczność posiadania zewnętrznego IDE(Unity nie posiada wbudowanego) oraz szablonów eksportu, jego rozmiar na dysku może oscylować nawet wokół 11,5 GB. Kłopotliwe jest również uruchamianie własnych projektów na innych komputerach, ponieważ na każdym musimy zainstalować Unity oraz zalogować się swoje konto, bo bez tego nie będzie można uruchomić edytora.

Dużo prościej wygląda sprawa z Godotem, w którym możemy przenosić plik wykonywalny na różne komputery i uruchamiać go natychmiast, bez konieczności instalacji.

Podsumowanie

Możliwości Godota we wspomaganiu użytkownika w tworzeniu gier są ogromne i jedyne co jest potrzebne to odrobina zapału i podstawowa znajomość edytora. Myślę że tym wpisem przynajmniej częściowo przybliżyłem wielu do wykonania drugiego punktu.

Zamierzam w najbliższej przyszłości przygotować prosty poradnik o tworzeniu gry w Godocie, której kod zamieszczę na Githubie na licencji GPL 3.

W razie różnych problemów radzę zajrzeć do QA Godota - https://godotengine.org/qa

lub w razie znalezienia błędów z silnikiem zgłosić je na stronie - https://github.com/godotengine/godot/issues/