Godot - filozofia projektowania

Now that you've gotten your hands wet, let's talk about Godot's design.

Wszystkie silniki do gier różnią się i nadają się do różnych projektów. Oferują one nie tylko szereg funkcji, ale również unikalną konstrukcję każdego silnika. Prowadzi to do różnych sposobów formowania struktur gier. Wszystko to wynika z filozofii ich projektowania.

Ta strona ma pomóc Ci zrozumieć, jak działa Godot, zaczynając od niektórych jego głównych filarów. Nie jest to lista dostępnych funkcji, ani porównanie silnika. Aby wiedzieć, czy którykolwiek z silników może być odpowiedni do twojego projektu, musisz wypróbować go na własną rękę i zrozumieć jego konstrukcję oraz ograniczenia.

Zobacz Discover Godot 3, the Free game engine, jeśli szukasz przeglądu funkcji Godota.

Object-oriented design and composition

Godot, dzięki elastycznemu systemowi scen i hierarchii węzłów, opiera się na projektowaniu zorientowanym obiektowo. Próbuje trzymać się z dala od ścisłych wzorców programowania, aby zaoferować intuicyjny sposób tworzenia struktur gier.

For one, Godot lets you compose or aggregate scenes. It's like nested prefabs: you can create a BlinkingLight scene and a BrokenLantern scene that uses the BlinkingLight. Then, create a city filled with BrokenLanterns. Change the BlinkingLight's color, save, and all the BrokenLanterns in the city will update instantly.

Ponadto można dziedziczyć z każdej sceny.

Scena Godota może być bronią, postacią, przedmiotem, drzwiami, poziomem, częścią poziomu... wszystkim, czym chcesz. Działa jak klasa w czystym kodzie, z wyjątkiem tego, że możesz ją zaprojektować za pomocą edytora, używając tylko kodu lub łącząc obydwa rozwiązania.

Różni się on od prefabów, które można znaleźć w wielu silnikach 3D, ponieważ możesz dziedziczyć i rozszerzać te sceny. Możesz utworzyć Magika, która rozszerzy twoją postać. Zmodyfikuj postać w edytorze, a Magik również się zaktualizuje. Pomaga to w budowaniu projektów tak, aby ich struktura odpowiadała projektowi gry.

image0

Zauważ też, że Godot oferuje wiele odmiennych typów obiektów zwanych węzłami, każdy o określonym przeznaczeniu. Węzły są częścią drzewa i zawsze dziedziczą od swoich rodziców aż do klasy węzła. Chociaż silnik posiada elementy takie jak obszar kolizji(collision shape), są one wyjątkiem, a nie normą.

image1

Sprite to Node2D, CanvasItem i Node. Posiada wszystkie właściwości i cechy trzech klas rodzicielskich, takie jak transformacje lub możliwość rysowania niestandardowych kształtów i renderowania za pomocą niestandardowego shadera.

Pakiet all-inclusive

Godot stara się dostarczać własne narzędzia na podstawowe zadania. Posiada dedykowany obszar roboczy do skryptów, edytor animacji, edytor tilemap, edytor shaderów, debugger, profiler, możliwość ładowania gry lokalnie i na zdalnych urządzeniach itp.

image2

Celem jest zaoferowanie pełnego pakietu do tworzenia gier dla użytkowników. Możesz nadal pracować z programami zewnętrznymi, pod warunkiem, że jest do nich zaimportowana wtyczka. Możesz też taką utworzyć, na przykład Tiled Map Importer.

To również częściowo dlatego Godot oferuje własne języki programowania GDscript i VisualScript, wraz z C#. Są one przeznaczone dla programistów i projektantów gier i są ściśle zintegrowane z silnikiem i edytorem.

GDscript umożliwia pisanie prostego kodu przy użyciu składni podobnej do Pythona, ale wykrywa typy i oferuje jakość jak w języku statycznym oraz auto uzupełnianie. Jest również zoptymalizowany pod kątem kodu z wbudowanymi typami, takimi jak wektory i kolory.

Zauważ, że z GDNative, można pisać wysokiej jakości kod używając języków kompilowanych, takich jak C, C++, Rust, lub Python (używając kompilatora Cython) bez konieczności ponownej kompilacji silnika.

image3

VisualScript jest językiem programowania opartym na węzłach, który dobrze integruje się z edytorem. Możesz przeciągać i upuszczać węzły lub zasoby na wykres, aby utworzyć nowe bloki kodu.

Zauważ, że obszar roboczy 3D nie zawiera tak wielu narzędzi, jak obszar roboczy 2D. Będziesz potrzebował zewnętrznych programów lub dodatków do edycji terenów, złożonych animacji postaci itd. Godot dostarcza kompletne API rozszerzające funkcjonalność edytora za pomocą kodu gry. Zobacz Edytor Godot jest również grą Godot poniżej.

image4

Dodatek do Godot'a 2 stworzony przez kubecz3k. Umożliwia wizualne zarządzanie stanami i przejściami

Otwarto-źródłowy

Godot oferuje w pełni otwartą bazę kodu źródłowego na licencji MIT. Oznacza to, że wszystkie technologie, które są z nią dostarczane muszą być również otwarte. W większości są one stworzone od podstaw przez deweloperów.

Każdy może podłączyć prawnie zastrzeżone narzędzia na potrzeby swoich projektów - po prostu nie będzie ich dystrybuował wraz z silnikiem. Może to być Google AdMob albo FMOD. Każde z nich może być dostarczane jako wtyczki innych producentów.

Z drugiej strony, otwarta baza kodowa oznacza, że możesz uczyć się i rozszerzać możliwości silnika do własnych potrzeb. Możesz również łatwo debugować gry, ponieważ Godot będzie wypisywał błędy na stosie (stack trace), nawet jeśli pochodzą one z samego silnika.

Informacja

This does not affect the work you do with Godot in any way: there's no strings attached to the engine or anything you make with it.

Tworzony przez społeczność

Godot jest tworzony przez społeczność, dla społeczności i dla wszystkich twórców gier. To potrzeby użytkowników i otwarte dyskusje są inspiracją dla twórców silnika. Nowe funkcje wprowadzane przez głównych deweloperów zazwyczaj koncentrują się na tym, co wspomoże prace większości użytkowników.

Mimo to, choć kilku głównych programistów pracuje nad projektem w pełnym wymiarze godzin, projekt ten w chwili jego tworzenia ma ponad 600 osób. Te osoby często pracują nad funkcjami, których mogą potrzebować sami, więc z każdym wydaniem silnika zauważysz poprawę we wszystkich aspektach silnika.

Edytor Godot jest również grą Godot

Edytor Godot działa na silniku gry. Wykorzystuje on własny system UI, może ładować na bieżąco kod i sceny podczas testowania projektów lub uruchamiać kod gry w edytorze. Oznacza to, że możesz używać tego samego kodu i scen dla swoich gier, lub budować wtyczki i rozszerzać możliwości edytora.

This leads to a reliable and flexible UI system, as it powers the editor itself. With the tool keyword, you can run any game code in the editor.

image5

RPG in a Box is a voxel RPG editor made with Godot 2. It uses Godot's UI tools for its node-based programming system and for the rest of the interface.

Put the tool keyword at the top of any GDScript file and it will run in the editor. This lets you import and export plugins, create plugins like custom level editors, or create scripts with the same nodes and API you use in your projects.

Osobny silnik 2D i 3D

Godot offers dedicated 2D and 3D rendering engines. As a result, the base unit for 2D scenes is pixels. Even though the engines are separate, you can render 2D in 3D, 3D in 2D, and overlay 2D sprites and interfaces over your 3D world.