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 - це "Вільне програмне забезпечення з відкритим вихідним кодом <https://en.wikipedia.org/wiki/Free_and_open source_software>", доступне за ліцензією MIT, схваленою OSI <https://opensource.org/licenses/MIT>. Це означає, що воно вільне так само, як "свобода слова" і "безкоштовне пиво."

Коротко:

  • Ви можете вільно отримати Godot і користуватися ним для будь-яких потреб, особистих, некомерційних, комерційних або інших.

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

Весь вміст цієї супровідної документації публікується під ліцензією Creative Commons Attribution 3.0 (CC BY 3.0) із зазначенням авторства "Juan Linietsky, Ariel Manzur та спільнота Godot Engine."

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

Докладнішу інформацію можна знайти у файлах COPYRIGHT.txt, а також LICENSE.txt та LOGO_LICENSE.txt у репозиторії Godot.

Також див. сторінку ліцензії на вебсайті Godot.

Які платформи підтримуються Godot?

Для редактора:

  • Windows

  • macOS

  • Лінукс, *BSD

  • Android (експериментальний)

  • Web (експериментальний)

Для експорту ваших ігор:

  • Windows

  • macOS

  • Лінукс, *BSD

  • Android

  • iOS

  • Інтернет

Підтримуються як 32-, так і 64-розрядні двійкові файли, де це має сенс, причому за замовчуванням використовується 64-розрядність. Офіційні збірки macOS підтримують Apple Silicon нативно, а також x86_64.

Деякими користувачами повідомлялося про успішне збирання та використання Godot на заснованих на ARM системах із ядром Linux, зокрема на Raspberry Pi.

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

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

Примітка

Godot 3 також підтримував Universal Windows Platform (UWP). Порт цієї платформи було вилучено у версії Godot 4 через відсутність підтримки, а також через те, що вона була застарілою для Microsoft. Він все ще доступний у поточному стабільному випуску Godot 3 для зацікавлених користувачів.

Підтримку яких мов програмування передбачено у Godot?

Офіційно підтримуваними мовами для Godot є GDScript, C# та C++. Дивіться підкатегорії для кожної мови у розділі scripting.

Якщо ви лише робите перші кроки з Godot або у розробці ігор загалом, - рекомендуємо мову GDScript для вивчення та використання, так як це рідна мова для Godot. Хоча скриптові мови програмування як правило менш продуктивні ніж низькорівневі в довгостроковій перспективі, для прототипування, розробки Мінімально Життєзданих Продуктів (MVPs) та фокусі на Time-To-Market (TTM), GDScript забезпечить швидкий, дружній та надійний спосіб для розробки ваших ігор.

Зверніть увагу, що підтримка C# все ще відносно нова, тому ви можете зіткнутися з деякими проблемами на цьому шляху. Підтримка C# також наразі відсутня на веб-платформі. Наша дружня і працьовита спільнота розробників завжди готова вирішувати нові проблеми по мірі їх виникнення, але оскільки це проект з відкритим вихідним кодом, ми рекомендуємо вам спочатку провести певну перевірку самостійно. Пошук в обговореннях відкритих питань - це чудовий спосіб розпочати пошук та усунення несправностей.

Що стосується нових мов, підтримка можлива через третіх осіб за допомогою GDExtensions. (Див. питання про плагіни нижче). Наразі ведеться робота, наприклад, над неофіційними прив'язками Годо до Python та Nim.

Що таке GDScript і чому я повинен, це використовувати?

GDScript - це інтегрована мова сценаріїв Godot. Вона була створена з нуля, щоб максимізувати потенціал Godot з найменшою кількістю коду, що дозволяє як початківцям, так і досвідченим розробникам використовувати сильні сторони Godot якнайшвидше. Якщо ви коли-небудь писали щось на мові Python, то ви відчуєте себе як вдома. Приклади та повний огляд можливостей GDScript можна знайти у GDScript scripting guide.

Є кілька причин використовувати GDScript, особливо коли ви створюєте прототип, перебуваєте на стадії альфа/бета-версії проекту або не створюєте наступну AAA-версію. Найважливішою причиною є загальне зменшення складності.

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

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

Більш детальну інформацію про те, як зручніше працювати з GDScript або динамічно типізованими мовами, можна знайти в посібнику GDScript: Вступ до мов динамічного типу.

Що мотивувало за створення GDScript?

На початку свого існування рушій використовував скриптову мову Lua. Lua може бути швидкою завдяки LuaJIT, але створення прив'язок до об'єктно-орієнтованої системи (за допомогою запасних варіантів) було складним і повільним і займало величезну кількість коду. Після деяких експериментів з Python, це також виявилося складним для вбудовування.

Основними причинами створення власної скриптової мови для Godot були:

  1. У більшості віртуальних машин для скриптів немає хорошої підтримки потоків виконання, а Godot використовує потоки (Lua, Python, Squirrel, JS, AS та ін.).

  2. У більшості скриптових віртуальних машин немає хорошої підтримки розширення класів, а адаптація до способу роботи Godot дуже неефективна (Lua, Python, JavaScript).

  3. Багато існуючих мов мають жахливі інтерфейси для зв'язування з C++, що призводить до великої кількості коду, помилок, вузьких місць і загальної неефективності (Lua, Python, Squirrel, JavaScript тощо). Ми хотіли зосередитися на хорошому движку, а не на великій кількості інтеграцій.

  4. Відсутність власних векторних типів (Vector3, Transform3D тощо), що призводить до значного зниження продуктивності при використанні користувацьких типів (Lua, Python, Squirrel, JavaScript, ActionScript тощо).

  5. Збирач сміття призводить до зупинки або надмірного використання пам'яті (Lua, Python, JavaScript, ActionScript та ін.).

  6. Складність інтеграції з редактором коду для забезпечення завершення коду, редагування в реальному часі тощо (всі).

GDScript був розроблений, щоб скоротити вищезазначені проблеми та багато іншого.

Які формати 3D-моделей підтримує Godot?

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

Чи будуть [Пропрієтарні закриті SDK, такі як FMOD, GameWorks тощо] підтримуватися в Godot?

Метою Godot є створення вільного та відкритого рушія з ліцензією MIT, який є модульним та розширюваним. Спільнота розробників рушія не планує підтримувати будь-які сторонні, закриті/пропрієтарні SDK, оскільки інтеграція з ними суперечить принципам Godot.

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

Щоб дізнатись, як може бути надана підтримка вашого SDK, перегляньте запитання про плагіни вище.

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

Як я можу розширити Godot?

Як створювати плаґіни (додатки) до редактора Godot, перегляньте на Плаґіни редактора та інструментарій скриптів.

Також, дивіться офіційний блог про GDExtension, спосіб розробки власних розширень для Godot:

Ви також можете ознайомитися з реалізацією GDScript, модулями Godot, а також з інтеграцією фізичного рушія Jolt <https://github.com/godot-jolt/godot-jolt>`__ для Godot. Це буде гарною відправною точкою для ознайомлення з тим, як інтегрується з Godot інша бібліотека сторонніх розробників.

Як встановити редактор Godot на мою систему (щоб була інтеграція з робочим столом)?

Оскільки насправді вам не потрібно встановлювати Godot у вашій системі, щоб запустити його, це означає, що інтеграція з робочим столом не виконується автоматично. Є два способи подолати це. Ви можете встановити Godot з Steam (всі платформи), Scoop (Windows), Homebrew (macOS), або Flathub (Linux). Тоді кроки необхідні для інтеграції з робочим столом будуть виконані автоматично.

Крім того, ви можете вручну зробити необхідні кроки:

Windows

  • Перемістіть виконуваний файл Godot у стабільне місце (тобто за межі теки Завантаження), щоб ви випадково не перемістили його та не зламали ярлик.

  • Клацніть правою кнопкою мишки виконуваний файл Godot і виберіть команду Створити ярлик.

  • Перемістіть створений ярлик до %APPDATA%\Microsoft\Windows\Меню Пуск\Програми. Це загальне для всіх користувачів місце для ярликів, які з'являться у меню "Пуск". Ви також можете закріпити Godot на панелі завдань, клацнувши виконуваний файл правою кнопкою миші і вибравши Закріпити на панелі завдань.

macOS

Перетягніть витягнутий застосунок Godot до /Applications/Godot.app, а потім перетягніть її до Панелі, якщо хочете. Spotlight зможе знайти Godot, якщо він знаходиться в /Applications, або ~/Applications.

Linux

  • Перемістіть бінарний файл Godot у стабільне місце (тобто за межі теки Завантаження), щоб ви випадково не перемістили його та не зламали ярлик у.

  • Перейменуйте та перемістіть бінарний файл Godot у місце, на яке вказує змінна середовища PATH. Як правило, це /usr/local/bin/godot, або /usr/bin/godot. Для цього потрібні права адміністратора, але це також дозволяє вам запустити Godot з термінала ввівши godot.

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

  • Збережіть цей файл .desktop <https://raw.githubusercontent.com/godotengine/godot/master/misc/dist/linux/org.godotengine.Godot.desktop>`__ у ``$HOME/.local/share/applications/. Якщо у вас є права адміністратора, ви також можете зберегти файл .desktop у /usr/local/share/applications, щоб зробити ярлик доступним для всіх користувачів.

Чи є редактор Godot портативним застосунком?

У своїй конфігурації за замовчуванням Godot є наполовину-портативним. Його виконуваний файл може працювати з будь-якого місця (включаючи місця, де не можна записувати) і ніколи не вимагає привілеїв адміністратора.

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

Якщо потрібна справжня портативність (наприклад, для використання на USB-накопичувачі), виконайте наступні кроки Автономний режим.

Чому Godot використовує Vulkan, або OpenGL, замість Direct3D?

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

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

У довгостроковій перспективі ми можемо розробити Direct3D 12 рендеринг для Godot (переважно для Xbox), але Vulkan і OpenGL залишаться бекендами рендерингу за замовчуванням на всіх платформах, включно з Windows.

Чому Godot зберігає невеликий набір основних функцій?

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

Є кілька причин для цього:

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

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

  • Збереження малого розміру редактора. Не кожен має швидке підключення до Інтернету. Можливість завантажити редактор Godot, розпакувати його та запустити менш ніж за 5 хвилин, робить Godot доступнішим для розробників у всіх країнах.

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

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

Як слід створювати активи для обробки різних роздільних здатностей та співвідношення сторін?

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

Найпоширеніший і найправильніший спосіб досягти цього - використовувати єдину базову роздільну здатність для гри і лише обробляти різні співвідношення сторін екрана. Це здебільшого потрібно для 2D, оскільки в 3D це просто питання вертикального або горизонтального FOV камери.

  1. Виберіть єдину базову роздільну здатність для вашої гри. Навіть якщо є пристрої з роздільною здатністю до 1440p і пристрої з роздільною здатністю до 400p, звичайне апаратне масштабування у вашому пристрої подбає про це з мінімальними витратами на продуктивність або взагалі без них. Найпоширеніші варіанти - близько 1080p (1920x1080) або 720p (1280x720). Майте на увазі, що чим вища роздільна здатність, тим більші ваші ресурси, тим більше пам'яті вони займають і тим довше завантажуються.

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

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

  4. Для користувацьких інтерфейсів використовуйте закріплення, щоб визначити, де елементи керування повинні залишатися, а де рухатися. Якщо користувацькі інтерфейси (UI) складніші, ознайомтеся з інформацією про контейнери (Containers).

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

Коли наступний реліз?

Коли він буде готовий! Додаткову інформацію дивіться в Коли наступний реліз?.

Яку версію Godot використовувати для нового проекту?

Ми рекомендуємо використовувати Godot 4.x для нових проектів, але залежно від набору функцій, який вам потрібен, може бути краще використовувати 3.x. Дивіться Яку версію використовувати для нового проекту? для отримання додаткової інформації.

Чи варто мені оновити свій проект, щоб використовувати нові версії Godot?

Деякі нові версії безпечніші для оновлення, ніж інші. Загалом, рішення про необхідність оновлення залежить від обставин вашого проекту. Докладнішу інформацію можна знайти на сторінці Should I upgrade my project to use new engine versions?.

Я хотів би зробити свій внесок! З чого почати?

Чудово! Як проект з відкритим вихідним кодом, Godot процвітає завдяки інноваціям та амбіціям таких розробників, як ви.

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

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

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

У мене є чудова ідея для Godot. Як я можу поділитися нею?

We are always looking for suggestions about how to improve the engine. User feedback is the main driving force behind our decision-making process, and limitations that you might face while working on your project are a great data point for us when considering engine enhancements.

If you experience a usability problem or are missing a feature in the current version of Godot, start by discussing it with our community. There may be other, perhaps better, ways to achieve the desired result that community members could suggest. And you can learn if other users experience the same issue, and figure out a good solution together.

If you come up with a well-defined idea for the engine, feel free to open a proposal issue. Try to be specific and concrete while describing your problem and your proposed solution — only actionable proposals can be considered. It is not required, but if you want to implement it yourself, that's always appreciated!

If you only have a general idea without specific details, you can open a proposal discussion. These can be anything you want, and allow for a free-form discussion in search of a solution. Once you find one, a proposal issue can be opened.

Please, read the readme document before creating a proposal to learn more about the process.

Чи можливо використовувати Godot для створення не ігрових застосунків?

Так! Godot має об'ємну вбудовану систему інтерфейсу користувача, і невеликий розмір, що робить його непоганою альтернативою для таких фреймворків, як Electron, чи Qt.

При створенні не ігрового застосунку не забудьте увімкнути low-processor mode в Параметрах Проєкту щоб зменшити використання CPU і GPU.

Загляньте в Material Maker і Pixelorama для прикладів застосунків із відкритим кодом, зроблених за допомогою Godot.

Чи можливо використовувати Godot як бібліотеку ?

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

Вам подобаються графічні бібліотеки ? Зверніть увагу на популярний графічний рушій. Пам'ятайте, що звичайні рушії зазвичай мають меншу спільноту у порівнянні з Godot. У зв'зку з цим у вас можуть виникнути проблеми з пошуком відповідей на ваші запитання.

Який набір інструментів користувальницького інтерфейсу використовує Godot?

Godot не використовує стандартний набір інструментів GUI, як GTK, Qt або wxWidgets. Натомість Godot використовує власний набір інструментів користувальницького інтерфейсу, відтворений за допомогою OpenGL ES або Vulkan. Цей набір інструментів представлений у вигляді вузлів керування, які використовуються для візуалізації редактора (який написаний на C++). Ці вузли управління також можуть бути використані в проєктах на будь-якій скриптовій мові, що підтримується Godot.

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

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

Чому Godot використовує систему збірки SCons?

Godot uses the SCons build system. There are no plans to switch to a different build system in the near future. There are many reasons why we have chosen SCons over other alternatives. For example:

  • Godot can be compiled for a dozen different platforms: all PC platforms, all mobile platforms, many consoles, and WebAssembly.

  • Developers often need to compile for several of the platforms at the same time, or even different targets of the same platform. They can't afford reconfiguring and rebuilding the project each time. SCons can do this with no sweat, without breaking the builds.

  • SCons will never break a build no matter how many changes, configurations, additions, removals etc.

  • Godot's build process is not simple. Several files are generated by code (binders), others are parsed (shaders), and others need to offer customization (modules). This requires complex logic which is easier to write in an actual programming language (like Python) rather than using a mostly macro-based language only meant for building.

  • Godot build process makes heavy use of cross-compiling tools. Each platform has a specific detection process, and all these must be handled as specific cases with special code written for each.

Please try to keep an open mind and get at least a little familiar with SCons if you are planning to build Godot yourself.

Чому Godot не використовує STL (Standard Template Library)?

Як і багато інших бібліотек (наприклад, Qt), Godot не використовує STL (за деякими винятками, такими як примітиви потоків). Ми вважаємо, що STL є чудовою універсальною бібліотекою, але у нас були особливі вимоги до Godot.

  • Шаблони STL створюють дуже великі символи, що призводить до величезних бінарних файлів. Натомість ми використовуємо кілька шаблонів із дуже короткими назвами.

  • Більшість наших контейнерів задовольняють особливі потреби, наприклад Vector, який використовує копіювання при записі, яке ми використовуємо для передачі даних, або систему RID, яка вимагає O (1) часу доступу для продуктивності. Аналогічно, наші реалізації хеш-карт призначені для безшовних інтеграції з внутрішніми типами двигунів.

  • В наші контейнери вбудована функція відстеження використання пам'яті, яка допомагає краще здійснювати контроль за використанням пам'яті.

  • Для великих масивів ми використовуємо пам'ять у вигляді пулів, які відображаються або на попередньо виділений буфер, або на віртуальну пам'ять.

  • Ми використовуємо наш власний тип String, так як надається STL є занадто простим і не має належної підтримки інтернаціоналізації.

Чому Godot не використовує винятки?

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

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

Does Godot use an ECS (Entity Component System)?

Godot does not use an ECS and relies on inheritance instead. While there is no universally better approach, we found that using an inheritance-based approach resulted in better usability while still being fast enough for most use cases.

That said, nothing prevents you from making use of composition in your project by creating child Nodes with individual scripts. These nodes can then be added and removed at run-time to dynamically add and remove behaviors.

More information about Godot's design choices can be found in this article.

Чому Godot не змушує користувачів впроваджувати DOD (Data-Oriented Design)?

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

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

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

Якщо гра має обробляти таку велику кількість об'єктів, ми рекомендуємо використовувати C++ та GDExtensions для завдань, що вимагають високої продуктивності, та GDScript (або C#) для решти гри.

Як я можу підтримати розвиток Godot, або зробити свій внесок?

Див. Способи участі у розробці.

Хто працює над Godot? Як я можу зв'язатися з вами?

Дивіться відповідну сторінку на вебсайті Godot.