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

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

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

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

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

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

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

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

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

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

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

image0

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

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

image1

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

Повний пакет

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

image2

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

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

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

Зауважте, що за допомогою GDNative ви можете писати високоефективний код, використовуючи компільовані мови, такі як C, C++, Rust, або Python (використовуючи компілятор Cython), без перекомпіляції рушія.

image3

VisualScript - мова програмування на основі вузлів, яка добре інтегрується в редактор. Ви можете перетягувати вузли, або ресурси, в граф для створення нових блоків коду.

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

image4

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

Попередження

«З Godot 4.0 буде повністю видалене ядро VisualScript. <https://godotengine.org/article/godot-4-will-discontinue-visual-scripting>`__ Тому не рекомендується створювати нові проекти за допомогою візуальних скриптів у Godot. У майбутніх випусках Godot 4.x VisualScript може бути повторно реалізований як розширення.

Хоча Godot 3.x підтримуватиме VisualScript, ми рекомендуємо спробувати GDScript, особливо якщо ви маєте намір перенести свій проект на Godot 4.

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

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-світу.