Godot's design philosophy

Тепер, коли ви "набили руку", давайте поговоримо про дизайн Godot.

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.

Ця сторінка тут для того, щоб допомогти вам зрозуміти як Godot працює, починаючи з самих основ. Це не список доступних можливостей, також це не порівняння різних двигунів. Щоб зрозуміти, чи добре підходить якийсь движок в проект, його необхідно спробувати і зрозуміти його архітектуру і обмеження.

Будь ласка подивіться Відкриття Godot 3, вільний ігровий движок <https://youtu.be/4v3qge-3CqQ> _, якщо ви шукаєте огляд можливостей движка.

Об'єктно-орієнтована дизайн і композиція

Godot включає в себе об'єктно-орієнтована дизайн з його гнучкою системою сцен і ієрархією вузлів. Він намагається триматися подалі від суворих шаблонів програмування, щоб запропонувати інтуїтивний спосіб структурування вашої гри.

По-перше, Godot дозволяє вам складати (або збирати) сцени. Це як вкладені префаб: ви можете створити мерехтливе світло і сцену зі зламаним ліхтарем, який використовує мерехтливе світло. Потім створити місто наповнений такими ліхтарями. Потім поміняти колір мерехтіння, зберегти об'єкт, і всі ліхтарі тут же оновляться.

Більш того, ви можете ** успадковувати ** від цієї сцени.

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

Also note that Godot offers many different types of objects called nodes, each with a specific purpose. Nodes are part of a tree and always inherit from their parents up to the Node class. Although the engine does feature components like collision shapes, they're the exception, not the norm.

image1

Sprite успадковується від класів Node2D, CanvasItem і Node. Завдяки цьому він має їх властивості та особливості, що дозволяє йому, наприклад, виконувати перетворення, малювати довільні фігури або використовувати сторонні шейдери.

Комплексний

Godot надає свої власні інструменти для задоволення найбільш поширених потреб. Він має вбудований редактор коду, редактор анімації, редактор tilemap, редактор шейдеров, відладчик, профілювальник, можливість перезавантаження на ходу локально і на віддалених пристроях і багато іншого.

image2

Мета полягає в тому, щоб запропонувати повний пакет для створення ігор і безперервного навчання. Ви можете працювати з зовнішніми програмами, якщо для них є плагін імпорту. Або ви можете створити його, наприклад, Tiled Map Importer <https://github.com/vnen/godot-tiled-importer>.

That is also partly why Godot offers its own programming languages GDscript and VisualScript, along with C#. They're designed for the needs of game developers and game designers, and they're tightly integrated in the engine and the editor.

GDscript дозволяє писати простий код, використовуючи Python-подібний синтаксис, він виявляє типи і пропонує якісне автоматичне завершення статичного мови. Він також оптимізований для ігрового коду з вбудованими типами, такими як вектори і кольору.

Note that with GDNative, you can write high-performance code using compiled languages like C, C++, Rust, or Python (using the Cython compiler) without recompiling the engine.

image3

VisualScript is a node-based programming language that integrates well in the editor. You can drag and drop nodes or resources into the graph to create new code blocks.

Note that the 3D workspace doesn't feature as many tools as the 2D workspace. You'll need external programs or add-ons to edit terrains, animate complex characters, and so on. Godot provides a complete API to extend the editor's functionality using game code. See The Godot editor is a Godot game below.

image4

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

Відкритий код

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.

Примітка

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.

Community-driven

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.

The Godot editor is a Godot game

The Godot editor runs on the game engine. It uses the engine's own UI system, it can hot-reload code and scenes when you test your projects, or run game code in the editor. This means you can use the same code and scenes for your games, or build plugins and extend the editor.

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.

Окремі 2D та 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.