Godot - filozofia projektowania

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

Every game engine is different and fits different needs. Not only do they offer a range of features, but the design of each engine is unique. This leads to different workflows and different ways to form your games’ structures. This all stems from their respective design philosophies.

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.

A Godot scene could be a Weapon, a Character, an Item, a Door, a Level, part of a level… anything you’d like. It works like a class in pure code, except you’re free to design it by using the editor, using only the code, or mixing and matching the two.

It’s different from prefabs you find in several 3D engines, as you can then inherit from and extend those scenes. You may create a Magician that extends your Character. Modify the Character in the editor and the Magician will update as well. It helps you build your projects so that their structure matches the game’s design.

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 Node(Węzeł). 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 lets you write simple code using Python-like syntax, yet it detects types and offers a static language’s quality of auto-completion. It is also optimized for gameplay code with built-in types like Vectors and Colors.

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.

Należy zauważyć, ż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 The Godot editor is a Godot game poniżej.

image4

A State Machine editor plugin in Godot 2 by kubecz3k. It lets you manage states and transitions visually.

Open source

Godot offers a fully open source codebase under the MIT license. This means all the technologies that ship with it have to be Free (as in freedom) as well. For the most part, they’re developed from the ground up by contributors.

Anyone can plug in proprietary tools for the needs of their projects — they just won’t ship with the engine. This may include Google AdMob, or FMOD. Any of these can come as third-party plugins instead.

On the other hand, an open codebase means you can learn from and extend the engine to your heart’s content. You can also debug games easily, as Godot will print errors with a stack trace, even if they come from the engine itself.

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 is made by its community, for the community, and for all game creators out there. It’s the needs of the users and open discussions that drive the core updates. New features from the core developers often focus on what will benefit the most users first.

That said, although a handful of core developers work on it full-time, the project has over 600 contributors at the time of writing. Benevolent programmers work on features they may need themselves, so you’ll see improvements in all corners of the engine at the same time in every major release.

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.