Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Філософія архітектури Godot

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

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

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

Будь ласка, подивіться Що таке Godot. Пояснення за 5 хвилин, якщо ви шукаєте огляд функцій рушія.

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

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

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

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

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

Це відрізняється від збірних даних (префабів), які ви знайдете в деяких тривимірних редакторах, тому що ви можете успадкувати та розширити ці сцени. Ви можете створити сцену Чаклун, яка буде успадкована та розширена з вашої сцени Персонаж. Змініть Персонаж у редакторі, і Чаклун також оновиться. Це допомагає вам будувати свої проєкти так, щоб їх структура відповідала архітектурі гри.

image0

Також зауважте, що Godot пропонує безліч різних типів об'єктів, які називаються вузлами, кожен з певним призначенням. Вузли є частиною дерева і завжди успадковуються від батьків аж до класу Node (Вузол). Хоча редактор має такі компоненти, як форми зіткнення, які використовують батьківське фізичне тіло, більшість вузлів працюють незалежно один від одного.

Іншими словами, вузли Godot не працюють як компоненти в деяких інших ігрових рушіях.

image1

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

Повний пакет

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

image2

Наша мета - запропонувати повний пакет для створення ігор та безперервного користувацького досвіду. Ви все ще можете працювати із зовнішніми програмами, якщо у Godot є плагін імпорту для них. Або ви можете створити його, наприклад, Tiled Map Importer.

Частково тому Godot пропонує власну мову програмування GDScript разом із C#. GDScript розроблена для потреб розробників ігор та геймдизайнерів і тісно інтегрована в рушій та редактор.

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

Зверніть увагу, що за допомогою GDExtension ви можете писати високопродуктивний код, використовуючи скомпільовані мови, такі як C, C++, Rust, D, Haxe або Swift, без перекомпіляції рушія.

Зауважте, що в робочій області 3D немає такої кількості інструментів, як у робочій області 2D. Вам знадобляться зовнішні програми, або додатки, для редагування місцевості, анімації складних персонажів тощо. Godot пропонує повний API для розширення функціональності редактора за допомогою ігрового коду. Дивіться Редактор Godot — це гра Godot нижче.

image4

Плагін редактора State Machine (Машина станів) у Godot 2 від kubecz3k. Він дозволяє візуально керувати станами та переходами.

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

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

Будь-хто може підключити пропрієтарні інструменти для потреб своїх проектів — вони просто не будуть поставлятися разом із рушієм. Наприклад Google AdMob або FMOD. Натомість будь-який з них може бути підключений як зовнішній плагін.

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

Примітка

Це жодним чином не впливає на роботу, яку ви виконуєте з Godot: до рушія чи будь-чого, що ви з ним робите, немає жодних умов.

Керований спільнотою

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

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

Редактор Godot - це гра Godot

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

Це призводить до надійної та гнучкої системи інтерфейсу користувача, оскільки він живить сам редактор. За допомогою анотації @tool ви можете запустити будь-який ігровий код у редакторі.

image5

RPG in Box - це редактор вокселів RPG , створений з Godot 2. Він використовує інструменти інтерфейсу Godot для своєї програми програмування на основі вузлів та для решти інтерфейсу.

Додайте анотацію @tool у верхній частині будь-якого GDScript-файлу, і він буде запущений у редакторі. Це дозволить вам імпортувати та експортувати плагіни, створювати плагіни на кшталт користувацьких редакторів рівнів або створювати скрипти з тими самими вузлами та API, які ви використовуєте у своїх проектах.

Примітка

Редактор повністю написаний на C++ і статично скомпільований у двійковий файл. Це означає, що ви не можете імпортувати його як типовий проект, який має файл project.godot.

Окремі 2D та 3D рушії

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