Blog (9)
Komentarze (258)
Recenzje (6)

Godot Engine 3.2 - Jakość przede wszystkim

@synaptykGodot Engine 3.2 - Jakość przede wszystkim31.01.2020 16:37

Niecałe dwa dni temu odbyła się premiera nowej wersji Godota - lekkiego i otwartego silnika do tworzenia gier, działającego natywnie i bez konieczności instalacji na Linuxie, Windowsie i macOS.

Od czasu wydania wersji 3.1 projekt zyskał środki na zatrudnienie trzeciego dewelopera, otrzymał $50000 od Mozilli na implementację mechanizmów związanych z sieciową stroną silnika oraz w dalszym ciągu Microsoft na swój koszt zatrudnia dewelopera ulepszającego obsługę C# w Godocie. Mimo, że wszyscy oczekujemy na wersję 4.0, której główną atrakcją ma być wsparcie dla Vulkan API oraz szereg niskopoziomowych optymalizacji zwłaszcza dla 3D, to premiera wersji 3.2 Godota, stanowi duży krok w jego rozwoju, mimo, że nie była planowana na tak duże wydanie, przy którym pracowało aż 450 osób, z czego około 300 pierwszy raz.

Zmiany

Pseudo efekt 3D w 2D

W związku z coraz częstszym wykorzystywaniem w grach 2D trójwymiarowych warstw, Godot doczekał się wsparcia dla pseudo 3D w całości działającego w przestrzeni 2D(w przeciwieństwie do gier tj. Hollow Knight czy Rayman Origins). Aby uzyskać taki efekt, należy użyć węzła CanvasLayer z włączoną opcją "Follow Viewport" oraz ustawioną właściwością "Scale".

Dokumentacja

Niegdyś niekompletna i przestarzała, dziś olbrzymia i obfitująca w różnorakie przykłady. Od czasu wydania Godota 3.1, stopień opisu klas i metod wzrósł z poziomu 73% do ponad 90%. Ponad dwieście osób w ponad 7000 commitach pracowało nad tym by dokumentacja, oferowała zarówno podstawową jak i zaawansowaną wiedzę dla użytkowników. Od teraz również jest możliwe pobranie dokumentacji w formie offline(kiedyś też była taka opcja, która niestety nie działała tak jak powinna) na stronie https://archive.hugo.pro/builds/godot/master/docs/godot-docs-html-nigh...

Dodanie WebRTC

Jednym z celów hojnej dotacji Mozilli, było zaimplementowanie w Godocie standardu WebRTC. WebRTC jest technologią stworzoną przez Google, która ma zapewnić pewną i bezpieczną komunikację czasu rzeczywistego pomiędzy użytkownikami. Opiera się ona na idei bezpośredniej komunikacji pomiędzy nimi bez potrzeby ciągłego korzystania z serwera(mimo to serwer jest używany na początku komunikacji). Pomoże ona w tworzeniu gier w przeglądarce z minimalnym opóźnieniem(WebRTC korzysta z UDP) oraz pozwoli na bezpośrednie połączenie się dwóch graczy ze sobą, za pomocą specjalnego tunelu. Część pracy została już wykonana podczas poprzedniego GSoC.

Wsparcie dla plików FBX

Jedną z bardziej pożądanych przez użytkowników funkcji, była możliwość importu modeli 3D zapisanych we własnościowych formatach takich jak FBX czy MMD Rozwiązaniem tych problemów okazało się włączenie do silnika biblioteki Assimp, która jest odpowiedzialna za ich import. Do tej pory Godot wspierał standardy DAE(COLLADA), GLTF 2 oraz OBJ(WaveFront)

Obsługa atlasów

Obsługa atlasów będących zbiorami wielu obrazów w jednym pliku, powraca po krótkiej nieobecności w wersji 3.0 i 3.1. Ich użycie w wielu przypadkach skutkuje zwiększeniem wydajności, mniejszym użyciem pamięci VRAM i zmniejszonym czasem ładowania. Atlasy powinny być używane gdy w plikach z animacjami znajduje się dużo pustych przestrzeni lub podczas optymalizacji gry.

C# na Androidzie i w przeglądarce

Mimo zapewnień i ogromu pracy włożonego we wsparcie dla C# w Godocie, nie udało się zapewnić dla niego pełnej funkcjonalności we wcześniejszych wersjach silnika.  Jednak tym razem dzięki kolejnym dotacjom Microsoftu, które to były przeznaczone na zatrudnienie dewelopera do rozwijania tego języka w Godocie, silnik będzie w tej wersji posiadał możliwość eksportu projektu na Androida oraz do przeglądarki.  W przeglądarce wsparcie dla C# zostało przygotowane korzystając z WebAssembly, które jest rekomendowaną technologią przez konsorcjum WWW.

Blokada części funkcji w edytorze

Blokada pewnych elementów w edytorze zapewne przyda się wielu osobom, firmom oraz organizacjom, którym nie potrzebne są wszystkie elementy UI. Można na tę chwilę zablokować: - edytor 3D, edytor skryptów, sklep z zasobami - panele importu, systemu plików czy sygnałów - edytowanie węzłów i scen w Drzewie Scen(Scene Tree) - wyświetlanie części typów węzłów np. AnimatedScene2D czy Area - niektóre z typów zasobów jak GradientTexture - wyświetlanie ustawień wybranych dla wybranych klas Profile z wyłączonymi poszczególnymi elementami możemy modyfikować, eksportować i importować.

Nowy system wtyczek na Androida

Tworzenie i testowanie gier na Androidzie wymagało(i ciągle) wymaga jedynie pojedynczego kliknięcia, dzięki czemu możemy w czasie rzeczywistym sprawdzać parametry gry, reagować na błędy i inne sytuacje. Dużym problemem dla niektórych użytkowników było dodawanie wtyczek dla Androida, które wymagało od użytkownika rekompilacji całego silnika. Reduz, główny programista, przygotował do tego celu nowy system budowania szablonów eksportu, dzięki czemu wtyczki są dołączane do pliku apk w locie. Dzięki zmianom, wtyczki mogą być instalowane w prosty sposób, tak jak na komputerach np. poprzez pobranie plików z Asset Library.

Profiler sieci

Kolejną z nowości sfinansowaną przez zewnętrzną firmę(tym razem przez IMVU) jest dodanie nowego profilera sieci. Domyślnie znajduje się w zakładce Debugger i jest odpowiedzialny za zbieranie, analizowanie i wyświetlanie danych, które zostały przesłane za pomocą multiplayer API. Zbiera w czasie rzeczywistym takie informacje jak aktualną ilość wysyłanych i pobieranych danych w ciągu sekundy, zlicza RPC, które może pomóc w znalezieniu węzłów korzystających nadmiernie z połączenia sieciowego.

Własne poprawki

Jako, że często korzystam z oprogramowania open source na co dzień, to postanowiłem wesprzeć społeczność poprawkami, które i mnie i innym się przydadzą, na tyle na ile moje umiejętności pozwalały Oto niektóre z Naprawa wycieków pamięci - np. #30155, #30576, #31768 - Godot używa mieszanki smart pointerów(własnej implementacji, nie z biblioteki) jak i zwykłych wskaźników, przez co czasami występują wycieki pamięci(rzadko, ale jednak). Do wyszukiwania wycieków korzystałem z systemu Ubuntu, gdyż posiada darmowe narzędzi niedostępnych na innych platformach) oraz najpierw z Valgrinda, który jednak gdy okazał się zbyt wolny, a potem przesiadłem się na Leak Sanitizer, który wymagał jedynie dodania dodatkowych argumentów do kompilacji `scons p=x11 -j6 use_lsan=yes` a działał kilkakrotnie szybciej. Zapobieganie wyłączaniu się Godota - np. #32569, #29947, #32563 - Podczas wykonywania pewnych funkcji edytor albo program wyłączały się niespodziewanie, dlatego stworzyłem projekt The worst godot test project w którym to testuję z grubsza każdą możliwą funkcję z różnymi parametrami. Póki co do tej poru pomógł mi on znaleźć ponad 100 błędów w Godocie. Przycisk do usuwania wszystkich niedostępnych projektów - #25713 - Podczas gdy zmienimy lokalizację projektu, menedżer projektów ciągle przechowuje informację o jego lokalizacji. Ten PR wprowadza przycisk, który to umożliwia za pomocą pojedynczego kliknięcia usunąć wszystkie nieprawidłowe projekty. Dodanie opisu dla niektórych błędów - #32051 - w tym PR część błędów w stylu `core/node_path.cpp:215 - Condition ' !data ' is true. returned: StringName()` zostało zamienionych na `You can't use Node Path without data` Zapobieganie przepełnieniu zmiennych - #31513 - Niebezpiecznie jest pozwalać na to, by wartość przypisana do zmiennej została ucięta z powodu jej zbyt małej pojemności. Taka zmienna może posiadać wtedy wartość, która nie będzie zgodna z naszymi oczekiwaniami. Ten patch wyświetla błąd, gdy ze zmiennej string chcemy stworzyć liczbę całkowitą nie mieszczącą się w swoim zakresie. Usuwanie niepotrzebnego kodu - #30126, #30576, #30716 - W tych PR użyłem kilku statycznych analizatorów, które to pomogły usunąć zduplikowany kod, oczyścić jego strukturę i oczywiście naprawić błędy, które zwykłe osoby łatwo mogły przeoczyć. Dla Godota bardzo dobre okazały się darmowe narzędzia do sprawdzania kodu C++ - CppCheck, PVS Studio(darmowa licencja tygodniowa), Coverity Scan(Online), LGTM(również online) oraz Clang Static Analyzer(jako wtyczka do QTCreator).

Jak widać moje umiejętności w posługiwaniu się C++ nie są zbyt duże(większość moich PR ma zaledwie kilka linijek), w związku z czym w razie znalezienia jakiegoś prostego błędu w silniku, polecam sprawdzić swoje własne umiejętności programistyczne podczas próby jego naprawy, gdyż nie wymagają one jakiś gigantycznych umiejętności.

Inne

Convex Decomposition - https://godotengine.org/article/godot-3-2-adds-support-convex-decompos... Generacja dźwięków i analiza ich spektrum - https://godotengine.org/article/godot-32-will-get-new-audio-features Poprawki do wizualnego edytora shaderów - https://godotengine.org/article/major-update-for-visual-shader-in-godo... Ulepszenie ARVR - https://godotengine.org/article/godot-3-2-arvr-update Wbudowany mini serwer WWW i SSL dla Sockets - https://godotengine.org/article/websocket-ssl-testing-html5-export

To tylko część z nowości, obszerny opis zmian można znaleźć tutaj

Google Summer of Code

Korzystając z Google Summer of Code, twórcy Godota, skorzystali z pomocy ośmiu studentów, którzy za swoją pracę otrzymają wynagrodzenie w ramach tego programu.  Z tego co widzę, część z nich została włączona w wydanie 3.2 a część zostanie dodana w następnej wersji Godota.

Integracja systemu kontroli wersji(VCS) - Twarit Waikar

Jedną z bardziej przydatnych opcji, która została zaimplementowana w Godocie 3.2 jest obsługa systemów kontroli wersji. Na tę chwilę Twarit zaimplementował jedynie niepełną obsługę GIT, w której można przeglądać zmiany i je commitować ale jeszcze nie pushować.  Dostępna jest w osobnej zakładce menu znajdującym się na górze ekranu.  Umożliwia, tak jak większość programów do obsługi systemu kontroli wersji GIT, wyświetlanie listy zmienionych, utworzonych i usuniętych plików wraz z ich zawartością. Wtyczkę można pobrać ze strony - https://github.com/godotengine/godot-git-plugin/releases

Serwer języka GDScript - Ankit Priyarup

Dotychczas jedyną sensowną opcją na pisanie skryptów w języku GDScript pozostawało pisanie ich we wbudowanym edytorze skryptów.  Dzięki pracy Ankit, zewnętrzne programy(tj. Sublime, VSCodium czy VSCode) posiadające dużo większe predyspozycje do tworzenia i modyfikowania kodu niż wbudowany edytor tekstu, doczekały się możliwości podpowiadania nazw zmiennych, funkcji i ich parametrów.  Aby korzystać z funkcji auto uzupełniania, konieczne jest jedynie zainstalowanie wtyczki w danym programie(na chwilę obecną znalazłem jedynie wtyczkę do VScodium, VSCode - https://github.com/godotengine/godot-vscode-plugin/releases).

Statyczny analizator dla GDScript - Suhas Prasanna

Zaimplementowany w Godocie system ostrzeżeń, do tej pory działał póki co jedynie w obrębie jednego pliku. Aby zredukować liczbę możliwych błędów, Suhas stworzył statyczny analizator, który może działać pomiędzy wieloma skryptami. Na tę chwilę potrafi wykrywać sytuacje, w których za pomocą get_node() użytkownik będzie chciał pobrać nieistniejący węzeł, znaleźć przypisanie do węzła skryptu dziedziczącego po błędnym typie czy wykryć w sygnałach użycie argumentów o niewłaściwej kolejności. Jego obsługa jeszcze nie została włączona do wersji 3.2 oraz interfejs nie został jeszcze ukończony, lecz możliwe, że statyczny analizator będzie obecny w kolejnych wydaniach poprawkowych(np. 3.2.3).

Inne

Przepisanie mappera świateł - Joan Fons Sanchez Interaktywna Muzyka - Daniel Matarov Implementacja Motion Matching - Aditya Abhiram Asynchroniczny buforowany dostęp do plików - Raghav Shankar Poprawki dla graficznego edytora skryptów - Swarnim Arun

Przyszłość

Mimo, że to wydanie obfitowało w szereg zmian i nowości(czego sami twórcy nie zaplanowali), to w kolejnych miesiącach i wydaniach Godot wzbogaci się w szereg przydatnych funkcji i nowości: - Wsparcie dla Vulkan API(4.0) - GDScript kompilowany do C++(? 4.1+) - Natywne wsparcie dla Waylanda na Linuxie(?) - Eksport sceny z Godota do pliku GLTF 2.0(4.0) - Dodanie ARCore(4.0) - Dynamiczna i nieskończona siatka 3D(4.0) - Automatyczne poprawianie wyglądu kodu(4.1)

Oczywiście silnik można pobrać za darmo bez konieczności instalacji ze strony - https://godotengine.org/download/

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.